]> jspc29.x-matter.uni-frankfurt.de Git - trb3.git/commitdiff
Unknown Address instead of Timeout when writing to read-only registers
authorManuel Penschuck <manuel.penschuck@stud.uni-frankfurt.de>
Sun, 24 Nov 2013 16:33:09 +0000 (17:33 +0100)
committerManuel Penschuck <manuel.penschuck@stud.uni-frankfurt.de>
Sun, 24 Nov 2013 16:33:09 +0000 (17:33 +0100)
cts/source/cts.vhd
cts/source/cts_trigger.vhd [changed mode: 0644->0755]

index 3e4a66b0d397cda2c1a4c7abed66aa0487ba4ea6..6cd5823ba011ec214d093cb8e3874290a2a92ad8 100644 (file)
@@ -888,7 +888,7 @@ begin
                if i = addr then
                   cts_regio_dataready_out_i <= cts_regio_read_enable_in_i;
                   cts_regio_data_out_i <= cts_status_registers_i(i);
-                  cts_regio_unknown_addr_out_i <= '0';
+                  cts_regio_unknown_addr_out_i <= cts_regio_write_enable_in_i;
                end if;
             end loop;
          
@@ -899,11 +899,13 @@ begin
                transfer_debug_limits_i     <= '1';
                
                cts_regio_write_ack_out_i   <= '1';
+               cts_regio_unknown_addr_out_i <= '0';
             end if;
             
             if addr = 16#09# and cts_regio_write_enable_in_i = '1' then
                ro_configuration_i <= cts_regio_data_in_i(ro_configuration_i'RANGE);
                cts_regio_write_ack_out_i   <= '1';
+               cts_regio_unknown_addr_out_i <= '0';
             end if;
          
             if addr = 16#0c# and cts_regio_write_enable_in_i = '1' then
@@ -911,6 +913,7 @@ begin
                throttle_enabled_i   <= cts_regio_data_in_i(throttle_threshold_i'LENGTH);
                stop_triggers_i      <= cts_regio_data_in_i(31);
                cts_regio_write_ack_out_i   <= '1';
+               cts_regio_unknown_addr_out_i <= '0';
             end if;
 
             eb_regio_updated_i <= '0';
@@ -923,6 +926,7 @@ begin
                eb_regio_updated_i <= '1';
                
                cts_regio_write_ack_out_i <= '1';
+               cts_regio_unknown_addr_out_i <= '0';
             end if;
          end if;
       end if;
old mode 100644 (file)
new mode 100755 (executable)
index eab26c1..dbd39f9
@@ -368,7 +368,7 @@ begin
 
 -- Trigger Channel Masking         
             if addr = ref_addr then
-               REGIO_UNKNOWN_ADDR_OUT <= '0';
+               REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                REGIO_DATA_OUT <= CTS_BLOCK_HEADER(id => 16#00#, len => 1);
             end if;
@@ -390,7 +390,7 @@ begin
             
 -- Trigger Channel Counters
             if addr = ref_addr then
-               REGIO_UNKNOWN_ADDR_OUT <= '0';
+               REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                REGIO_DATA_OUT <= CTS_BLOCK_HEADER(id => 16#01#, len => 32);
             end if;
@@ -398,7 +398,7 @@ begin
             
             for i in 0 to channel_counters_i'HIGH loop
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   
                   REGIO_DATA_OUT <= std_logic_vector( channel_counters_i(i) );
@@ -406,7 +406,7 @@ begin
                ref_addr := ref_addr + 1;
 
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   
                   REGIO_DATA_OUT <= std_logic_vector( channel_edge_counters_i(i) );
@@ -416,7 +416,7 @@ begin
             
 -- Input Module Configuration            
             if addr = ref_addr then
-               REGIO_UNKNOWN_ADDR_OUT <= '0';
+               REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                REGIO_DATA_OUT <= CTS_BLOCK_HEADER(
                   id => 16#10#,
@@ -445,7 +445,7 @@ begin
 
 -- Trigger Input Counters
             if addr = ref_addr then
-               REGIO_UNKNOWN_ADDR_OUT <= '0';
+               REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                REGIO_DATA_OUT <= CTS_BLOCK_HEADER(id => 16#11#, len => 2*ITL_NUM);
             end if;
@@ -453,7 +453,7 @@ begin
             
             for i in 0 to ITL_NUM - 1 loop
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   
                   REGIO_DATA_OUT <= std_logic_vector( trigger_input_counters_i(i) );
@@ -461,7 +461,7 @@ begin
                ref_addr := ref_addr + 1;
 
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   
                   REGIO_DATA_OUT <= std_logic_vector( trigger_input_edge_counters_i(i) );
@@ -472,7 +472,7 @@ begin
 -- COIN CONFIGURATION
             if TRIGGER_COIN_COUNT > 0 then
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   REGIO_DATA_OUT <= CTS_BLOCK_HEADER(
                      id => 16#20#,
@@ -503,7 +503,7 @@ begin
 -- ADDON MULTIPLEXER
             if TRIGGER_ADDON_COUNT > 0 then
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   REGIO_DATA_OUT <= CTS_BLOCK_HEADER(
                      id => 16#12#,
@@ -535,7 +535,7 @@ begin
 -- TRIGGER_PULSER_COUNT CONFIGURATION
             if TRIGGER_PULSER_COUNT > 0 then
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   REGIO_DATA_OUT <= CTS_BLOCK_HEADER(
                      id => 16#30#,
@@ -566,7 +566,7 @@ begin
 -- Pseudo Random Pulser
             if TRIGGER_RAND_PULSER /= 0 then
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   REGIO_DATA_OUT <= CTS_BLOCK_HEADER(
                      id   => 16#50#,
@@ -598,7 +598,7 @@ begin
 -- External Trigger
             if EXTERNAL_TRIGGER_ID /= X"00" then
                if addr = ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                   REGIO_DATA_OUT <= CTS_BLOCK_HEADER(
                      id => to_integer(unsigned(EXTERNAL_TRIGGER_ID)),
@@ -612,7 +612,7 @@ begin
              
              -- status register
                if addr=ref_addr then
-                  REGIO_UNKNOWN_ADDR_OUT <= '0';
+                  REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                   REGIO_DATAREADY_OUT    <= REGIO_READ_ENABLE_IN;
                   REGIO_DATA_OUT         <= EXT_STATUS_IN;
                end if;
@@ -635,7 +635,7 @@ begin
             
 -- Trigger Type Assoc
             if addr = ref_addr then
-               REGIO_UNKNOWN_ADDR_OUT <= '0';
+               REGIO_UNKNOWN_ADDR_OUT <= REGIO_WRITE_ENABLE_IN;
                REGIO_DATAREADY_OUT <= REGIO_READ_ENABLE_IN;
                REGIO_DATA_OUT <= CTS_BLOCK_HEADER(
                   id => 16#40#,