CMX
CMX firmware code in-line documentation
 All Classes Namespaces Files Functions Variables
CMX_crate_cable_output_module.vhd
Go to the documentation of this file.
1 ----------------------------------------------------------------------------------
9 ----------------------------------------------------------------------------------
10 
11 library IEEE;
12 use IEEE.STD_LOGIC_1164.ALL;
13 use IEEE.NUMERIC_STD.ALL;
14 
15 library UNISIM;
16 use UNISIM.VComponents.all;
17 
18 library work;
20 use work.CMXpackage.all;
22 
23 
25 
26  port(
27  --data in to be sent out
28  data : in std_logic_vector( numbits_in_RTM_connector*2*num_RTM_cables - 1 downto 0);
29  --data to be sent out (connect this to the top level output ports)
30  ddr_data_out : out arr_RTM(num_RTM_cables-1 downto 0);
31  buf_clk40 : in std_logic;
32  buf_clk40_center : in std_logic;
33  pll_locked : in std_logic;
34  start_playback : in std_logic;
35  --inhibit signal for writing to the spy memories
36  spy_write_inhibit : in std_logic;
37  --VME control:
38  ncs : in std_logic;
39  rd_nwr : in std_logic;
40  ds : in std_logic;
41  addr_vme : in std_logic_vector (15 downto 0);
42  data_vme_in : in std_logic_vector (15 downto 0);
43  data_vme_out : out std_logic_vector (15 downto 0);
44  bus_drive : out std_logic
45  );
46 
47 end CMX_crate_cable_output_module;
48 
49 
50 architecture Behavioral of CMX_crate_cable_output_module is
51 
52  constant mem_select_addr_width : integer := addr_port_width(num_RTM_cables);
53 
55  generic (
56  numbits_in_cable_connector : integer);
57  port (
58  data : in std_logic_vector((numbits_in_cable_connector*2)-1 downto 0);
59  ddr_data_out : out std_logic_vector(numbits_in_cable_connector downto 0);
60  buf_clk40 : in std_logic;
61  buf_clk40_center : in std_logic;
62  buf_clk200 : in std_logic;
63  pll_locked : in std_logic;
64  del_array : in cable_del_array_type(numbits_in_cable_connector downto 0);
65  upload_delays : in std_logic);
67 
68  signal data_sdr : arr_RTM_sdr;
69  signal data_sdr_r_SYSTEM : arr_RTM_sdr;--need this for
70  --comparison to data
71  --from RAM
72 
73 
74 
75  component blk_mem_A8x52_B8x52_1clock is
76  port (
77  clka : IN STD_LOGIC;
78  ena : IN STD_LOGIC;
79  wea : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
80  addra : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
81  dina : IN STD_LOGIC_VECTOR(51 DOWNTO 0);
82  douta : OUT STD_LOGIC_VECTOR(51 DOWNTO 0);
83  clkb : IN STD_LOGIC;
84  enb : IN STD_LOGIC;
85  web : IN STD_LOGIC_VECTOR(0 DOWNTO 0);
86  addrb : IN STD_LOGIC_VECTOR(7 DOWNTO 0);
87  dinb : IN STD_LOGIC_VECTOR(51 DOWNTO 0);
88  doutb : OUT STD_LOGIC_VECTOR(51 DOWNTO 0));
89  end component blk_mem_A8x52_B8x52_1clock;
90 
91 
93  component Stretch_10 is
94  port (
95  unstretched_IN : in std_logic;
96  stretched_OUT : out std_logic;
97  clk : in std_logic);
98  end component Stretch_10;
99 
100  signal counter_reset_r_SYSTEM,counter_reset_rr_SYSTEM : std_logic_vector(numactchan-1 downto 0);
101 
102  signal data_from_vme_REG_RW_RTM_OUTPUT_COUNTER_RESET : std_logic_vector (15 downto 0); --actual value is
103  --ignored but
104  --supplied for sw check
105  signal data_to_vme_REG_RW_RTM_OUTPUT_COUNTER_RESET : std_logic_vector (15 downto 0);
106 
107 
108  signal all_null : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
109 
111  generic (
115  num_external_RAMS : positive);
116  port (
117  clk : in std_logic;
118  ncs : in std_logic;
119  rd_nwr : in std_logic;
120  ds : in std_logic;
121  addr_vme : in std_logic_vector (15 downto 0);
122  data_vme_in : in std_logic_vector (15 downto 0);
123  data_vme_out : out std_logic_vector (15 downto 0);
124  bus_drive : out std_logic;
125  mode_control : out std_logic_vector(3 downto 0);
126  ena : out std_logic;
127  wea : out std_logic;
128  addra : out std_logic_vector(7 DOWNTO 0);
129  mem_select_address : out std_logic_vector(addr_port_width(num_external_RAMS)-1 downto 0);
130  dina : out std_logic_vector;
131  douta : in std_logic_vector;
132  port_b_master_inhibit : out std_logic);
133  end component CMX_generic_spy_mem_control_FSM;
134 
135 
136 
137 
138  signal mode_control_RTM_OUTPUT_SPY_SYSTEM : std_logic_vector(3 downto 0);
139  signal ena_RTM_OUTPUT_SPY_SYSTEM : std_logic;
140  signal wea_RTM_OUTPUT_SPY_SYSTEM : std_logic;
141  signal addra_RTM_OUTPUT_SPY_SYSTEM : std_logic_vector(7 DOWNTO 0);
142  signal mem_select_address_RTM_OUTPUT_SPY_SYSTEM : std_logic_vector(addr_port_width(num_RTM_cables)-1 downto 0);
143  signal dina_RTM_OUTPUT_SPY_SYSTEM : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
144  signal douta_RTM_OUTPUT_SPY_SYSTEM : std_logic_vector(numbits_in_RTM_connector*2 - 1 downto 0);
146 
147  signal ena_rtm_output_spy_system_individual : std_logic_vector(num_RTM_cables-1 downto 0);
148  signal wea_rtm_output_spy_system_individual : arr_1(num_RTM_cables-1 downto 0);
150  signal enb_rtm_output_spy_system_individual : std_logic_vector(num_RTM_cables-1 downto 0);
151  signal web_rtm_output_spy_system_individual : arr_1(num_RTM_cables-1 downto 0);
152  signal addrb_rtm_output_spy_system_individual : arr_8(num_RTM_cables-1 downto 0);
155 
156  signal addrb_RTM_OUTPUT_SPY_SYSTEM_counter : arr_ctr_8bit(num_RTM_cables-1 downto 0);
157 
158  signal port_b_master_inhibit_rtm_output_spy_system_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
159  signal web_rtm_output_spy_system_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
160  signal enb_rtm_output_spy_system_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
161  signal port_b_master_inhibit_rtm_output_spy_system_split : std_logic_vector(num_RTM_cables-1 downto 0);
162  signal enb_rtm_output_spy_system_split : std_logic_vector(num_RTM_cables-1 downto 0);
163  signal web_rtm_output_spy_system_split : std_logic_vector(num_RTM_cables-1 downto 0);
164  signal enb_rtm_output_spy_system : std_logic;
165  signal web_rtm_output_spy_system : std_logic;
166 
167  signal spy_write_inhibit_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
168  signal spy_write_inhibit_rr_system : std_logic_vector(num_RTM_cables-1 downto 0);
169 
170  signal start_playback_r_system : std_logic_vector(num_RTM_cables-1 downto 0);
171  signal start_playback_rr_system : std_logic_vector(num_RTM_cables-1 downto 0);
172 
173 
174  component vme_local_switch is
175  port (
176  data_vme_up : out std_logic_vector (15 downto 0);
177  data_vme_from_below : in arr_16;
178  bus_drive_up : out std_logic;
179  bus_drive_from_below : in std_logic_vector);
180  end component vme_local_switch;
181 
182  signal data_vme_from_below : arr_16(4+9*num_RTM_cables+2 downto 0);
183  signal bus_drive_from_below : std_logic_vector(4+9*num_RTM_cables+2 downto 0);
184 
185 
186  component vme_inreg_notri is
187  generic (
188  ia_vme : integer;
189  width : integer);
190  port (
191  clk : in std_logic;
192  ncs : in std_logic;
193  rd_nwr : in std_logic;
194  ds : in std_logic;
195  addr_vme : in std_logic_vector (15 downto 0);
196  data_vme_in : in std_logic_vector (15 downto 0);
197  data_vme_out : out std_logic_vector (15 downto 0);
198  bus_drive : out std_logic;
199  data_from_vme : out std_logic_vector (width-1 downto 0);
200  data_to_vme : in std_logic_vector (width-1 downto 0);
201  read_detect : out std_logic;
202  write_detect : out std_logic);
203  end component vme_inreg_notri;
204 
206  generic (
207  ia_vme : integer;
208  width : integer);
209  port (
210  ncs : in std_logic;
211  rd_nwr : in std_logic;
212  ds : in std_logic;
213  addr_vme : in std_logic_vector (15 downto 0);
214  data_vme_in : in std_logic_vector (15 downto 0);
215  data_vme_out : out std_logic_vector (15 downto 0);
216  bus_drive : out std_logic;
217  data_from_vme : out std_logic_vector (width-1 downto 0);
218  data_to_vme : in std_logic_vector (width-1 downto 0));
219  end component vme_inreg_notri_async;
220 
221  component vme_outreg_notri is
222  generic (
223  ia_vme : integer;
224  width : integer);
225  port (
226  clk : in std_logic;
227  ncs : in std_logic;
228  rd_nwr : in std_logic;
229  ds : in std_logic;
230  addr_vme : in std_logic_vector (15 downto 0);
231  data_vme : out std_logic_vector (15 downto 0);
232  bus_drive : out std_logic;
233  data_to_vme : in std_logic_vector (width-1 downto 0);
234  read_detect : out std_logic);
235  end component vme_outreg_notri;
236 
237 
239  generic (
240  ia_vme : integer;
241  width : integer);
242  port (
243  ncs : in std_logic;
244  rd_nwr : in std_logic;
245  ds : in std_logic;
246  addr_vme : in std_logic_vector (15 downto 0);
247  data_vme : out std_logic_vector (15 downto 0);
248  bus_drive : out std_logic;
249  data_to_vme : in std_logic_vector (width-1 downto 0));
250  end component vme_outreg_notri_async;
251 
252 
253  signal data_to_vme_REG_RW_RTM_OUTPUT_SPY_SYSTEM_MEM_START_ADDRESS : std_logic_vector(15 downto 0);
254  signal data_from_vme_REG_RW_RTM_OUTPUT_SPY_SYSTEM_MEM_START_ADDRESS : std_logic_vector(15 downto 0);
255 
256 
257 
258  signal data_to_vme_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR_0 : arr_16(num_RTM_cables-1 downto 0);
259  signal data_to_vme_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR_1 : arr_16(num_RTM_cables-1 downto 0);
260 
261  signal bit_error_counter_system_next : arr_ctr_32bit(num_RTM_cables-1 downto 0);
262  signal bit_error_counter_system : arr_ctr_32bit(num_RTM_cables-1 downto 0);
263  signal bit_error_latch_system : arr_26(num_RTM_cables-1 downto 0);
264  signal bit_error_detect_system : arr_52(num_RTM_cables-1 downto 0);
265 
266  signal sdr_data_after_mux : arr_RTM_sdr;
267 
268 begin
269 
270  all_null<=(others=>'0');
271 
272 
273  vme_local_switch_inst: entity work.vme_local_switch
274  port map (
279 
280 
281 
283  generic map (
284  ia_vme => ADDR_REG_RW_RTM_OUTPUT_COUNTER_RESET ,
285  width => 16)
286  port map (
287  clk => buf_clk40 ,
288  ncs => ncs,
289  rd_nwr => rd_nwr,
290  ds => ds,
293  addr_vme => addr_vme,
294  read_detect => open,
299 
301 
303  port map (
306  clk => buf_clk40 );
307 
308 
309 
310  CMX_generic_spy_mem_control_FSM_inst_SYSTEM: entity work.CMX_generic_spy_mem_control_FSM
311  generic map (
312  ADDR_REG_RW_GENERIC_SPY_MEM_WORD => ADDR_REG_RW_RTM_OUTPUT_SPY_SYSTEM_MEM_WORD ,
313  ADDR_REG_RW_GENERIC_SPY_MEM_CONTROL => ADDR_REG_RW_RTM_OUTPUT_SPY_SYSTEM_MEM_CONTROL ,
314  ADDR_REG_RO_GENERIC_SPY_MEM_STATUS => ADDR_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_STATUS ,
315  num_external_RAMS => num_RTM_cables)
316  port map (
317  clk => buf_clk40,
318  ncs => ncs,
319  rd_nwr => rd_nwr,
320  ds => ds,
321  addr_vme => addr_vme,
333 
334 
335  channel_gen: for channel in 0 to num_RTM_cables-1 generate
336 
337 
338 
339  data_sdr(channel)<=data( (channel+1)*2*numbits_in_RTM_connector -1 downto channel*2*numbits_in_RTM_connector);
340 
341  --process to locally register the inhibit signal in system domain and yet again;
343  begin
344  if pll_locked/='1' then
345  spy_write_inhibit_r_SYSTEM(channel)<='0';
346  elsif rising_edge(buf_clk40) then
348  end if;
349  end process;
350  process(buf_clk40)
351  begin
352  if rising_edge(buf_clk40) then
354  end if;
355  end process;
356 
357 
358 
359 
361  generic map (
362  numbits_in_cable_connector => numbits_in_RTM_connector)
363  port map (
364  data => sdr_data_after_mux(channel),
365  ddr_data_out => ddr_data_out(channel),
366  buf_clk40 => buf_clk40,
368  buf_clk200 => '0',
370  del_array => (others=>(others =>'0')),
371  upload_delays => '0');
372 
373  --CMX_cable_clocked_80Mbps_input_module_inst: entity work.CMX_cable_clocked_80Mbps_input_module
374  -- generic map (
375  -- numbits_in_cable_connector => numbits_in_RTM_connector)
376  -- port map (
377  -- data => data_sdr(channel),
378  -- parity_error => parity_error_sig(channel),
379  -- forwarded_clock => forwarded_clock(channel),
380  -- ddr_data_in => ddr_data_in(channel),
381  -- buf_clk40 => buf_clk40,
382  -- buf_clk200 => '0',
383  -- pll_locked => pll_locked,
384  -- del_array => (others=>(others=>'0')),
385  -- upload_delays => '0');
386 
387 
388 
389  blk_mem_A8x52_B8x52_1clock_SYSTEM: blk_mem_A8x52_B8x52_1clock
390  port map (
391  clka => buf_clk40,
392  ena => ena_RTM_OUTPUT_SPY_SYSTEM_individual(channel),
393  wea => wea_RTM_OUTPUT_SPY_SYSTEM_individual(channel),
394  addra => addra_RTM_OUTPUT_SPY_SYSTEM ,
396  douta => douta_RTM_OUTPUT_SPY_SYSTEM_individual(channel),
397  clkb => buf_clk40,
398  enb => enb_RTM_OUTPUT_SPY_SYSTEM_individual(channel),
399  web => web_RTM_OUTPUT_SPY_SYSTEM_individual(channel),
400  addrb => addrb_RTM_OUTPUT_SPY_SYSTEM_individual(channel),
401  dinb => dinb_RTM_OUTPUT_SPY_SYSTEM_individual(channel),
402  doutb => doutb_RTM_OUTPUT_SPY_SYSTEM_individual(channel));
403 
404 
405  assert (1=0) report "crate cable output; mem_select_addr_width:"&integer'IMAGE(mem_select_addr_width)&", num_RTM_cables:"&integer'IMAGE(num_RTM_cables) severity NOTE;
406 
407 
408 
409  gen_sig_select_mux: if num_RTM_cables/=1 generate
410  assert (1=0) report "generating a mux for the memory signals" severity NOTE;
411  -- select the control signals based on the value of the mem_select_address_RTM_OUTPUT_SPY_SYSTEM
413  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
414 
416  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else '0';
417 
418  --this should generate a n-1 multiplexer with douta_RTM_OUTPUT_SPY_SYSTEM as output
419  --if there are moren than 1 rtm_output sources; if there is just one rtm_output source
420  --I expect the 1-1 'mux' will be optimized out.
422  =std_logic_vector(to_unsigned(channel,mem_select_addr_width)) else (others=>'Z');
423  end generate gen_sig_select_mux;
424  gen_no_sig_select_mux: if num_RTM_cables=1 generate
425  assert (1=0) report "no mux needed, only one output cable, connecting signals straight" severity NOTE;
429  end generate gen_no_sig_select_mux;
430 
431  dinb_RTM_OUTPUT_SPY_SYSTEM_individual(channel)<=data( ((channel+1)*numbits_in_RTM_connector*2)-1 downto ((channel)*numbits_in_RTM_connector*2) ) ;
433 
434 
435 
436 
438  begin
439  if pll_locked/='1' then
440  start_playback_r_SYSTEM(channel)<='0';
441  elsif rising_edge(buf_clk40) then
443  end if;
444  end process;
445  process(buf_clk40)
446  begin
447  if rising_edge(buf_clk40) then
448  --a local register (one copy for each of the memories)to ease timing
450  end if;
451  end process;
452 
453 
455  begin
456  if rising_edge(buf_clk40) then
457  if start_playback_rr_SYSTEM(channel)='0' then
459  else
460  addrb_RTM_OUTPUT_SPY_SYSTEM_counter(channel)<=unsigned(
462  end if;
463  end if;
464  end process;
465 
466 
467 
468  --create local registers for the master inhibit to aid timing closure
470  begin
471  if pll_locked='0' then
475  elsif rising_edge(buf_clk40) then
479  end if;
481 
484 
485 
489 
490 
491  --WTF
492  --select the data going out
493  sdr_data_after_mux(channel)<=data( (channel+1)*2*numbits_in_RTM_connector-1
494  downto channel*2*numbits_in_RTM_connector )
495  when mode_control_RTM_OUTPUT_SPY_SYSTEM/=CONST_DPR_CONTROL_PLAYBACK
497 
498  --this will make an error detection register that in turn will be used to
499  --generate a latch; also an no-error run length counter is made in this process
500 
501  process(buf_clk40)
502  begin
503  if rising_edge(buf_clk40) then
504  data_sdr_r_SYSTEM(channel)<=data_sdr(channel);
505  end if;
506  end process;
507 
509  begin
510  if rising_edge(buf_clk40) then
511  if counter_reset_rr_SYSTEM(channel)/='1' then
512  if bit_error_latch_system(channel)/=all_null or bit_error_counter_system(channel)=max_ctr32 then
514  else
516  end if;
517  else
518  bit_error_counter_system_next(channel)<=to_unsigned(0,32);
519  end if;
522  end if;
523  end process error_detect_process_system;
524 
525  gen_err_latch_bit_system: for i_bit in 0 to numbits_in_RTM_connector -1 generate
526  --resettable 'latch' (so not really a latch) that is set if there is an error
527  --on a given bit
528  process(buf_clk40)
529  begin
530  if rising_edge(buf_clk40) then
531  if counter_reset_rr_SYSTEM(channel)/='1' then
532  if bit_error_detect_system(channel)(i_bit)='1' or bit_error_detect_system(channel)(i_bit+numbits_in_RTM_connector)='1' then
533  bit_error_latch_system(channel)(i_bit)<='1';
534  end if;
535  else
536  bit_error_latch_system(channel)(i_bit)<='0';
537  end if;
538  end if;
539  end process;
540  end generate gen_err_latch_bit_system;
541 
542 
543 
544  -- create counter reset registers
545  --double register to close timing
546  process(buf_clk40)
547  begin
548  if rising_edge(buf_clk40) then
550  end if;
551  end process;
553  begin
554  if pll_locked/='1' then
555  counter_reset_r_SYSTEM(channel)<='0';
556  elsif rising_edge(buf_clk40) then
558  end if;
559  end process;
560 
561  --assign latches as data to the registers
562 
564  data_to_vme_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR_1(channel)(numbits_in_RTM_connector-16-1 downto 0)<=bit_error_latch_system(channel)(numbits_in_RTM_connector-1 downto 16);
565  data_to_vme_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR_1(channel)(15 downto numbits_in_RTM_connector-16)<=(others=>'0');
566 
568  generic map (
569  ia_vme => ADDR_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR+(4*channel),
570  width => 16)
571  port map (
572  addr_vme => addr_vme,
573  ncs => ncs,
574  rd_nwr => rd_nwr,
575  ds => ds,
577  data_vme => data_vme_from_below (2+2*channel),
578  bus_drive => bus_drive_from_below (2+2*channel));
579 
581  generic map (
582  ia_vme => ADDR_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR+(4*channel)+2,
583  width => 16)
584  port map (
585  addr_vme => addr_vme,
586  ncs => ncs,
587  rd_nwr => rd_nwr,
588  ds => ds,
590  data_vme => data_vme_from_below (2+2*channel+1),
591  bus_drive => bus_drive_from_below (2+2*channel+1));
592 
593 
594 
595  end generate channel_gen;
596 
597 
598 
599  --port enables - we enable B port when verifying, spying and playing back. Write
600  --is enabled only when spying
601  --no playback for the source spy
602 
603 
604  enb_RTM_OUTPUT_SPY_SYSTEM <='1' when mode_control_RTM_OUTPUT_SPY_SYSTEM=CONST_DPR_CONTROL_SPY
605  or mode_control_RTM_OUTPUT_SPY_SYSTEM=CONST_DPR_CONTROL_VERIFY
606  or mode_control_RTM_OUTPUT_SPY_SYSTEM=CONST_DPR_CONTROL_PLAYBACK
607  else '0';
608  web_RTM_OUTPUT_SPY_SYSTEM<='1' when mode_control_RTM_OUTPUT_SPY_SYSTEM=CONST_DPR_CONTROL_SPY else '0';
609 
610 
611 
612 
613 
614 
616  generic map (
617  ia_vme => ADDR_REG_RW_RTM_OUTPUT_SPY_SYSTEM_MEM_START_ADDRESS,
618  width =>16)
619  port map (
620  ncs => ncs,
621  rd_nwr => rd_nwr,
622  ds => ds,
623  addr_vme => addr_vme,
625  data_vme_out => data_vme_from_below (2+2*num_RTM_cables),
626  bus_drive => bus_drive_from_below (2+2*num_RTM_cables),
630 
631 
632 
633 end Behavioral;
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_output_spy_system_split
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_output_spy_system_r_system
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_output_spy_system_r_system
out read_detectstd_logic
in addr_vmestd_logic_vector (15 downto 0)
arr_52 (num_RTM_cables - 1 downto 0) bit_error_detect_system
vme_outreg_notri_async vme_outreg_reg_ro_rtm_output_spy_system_mem_check_error_0vme_outreg_reg_ro_rtm_output_spy_system_mem_check_error_0
arr_16 (4 + 9 * num_RTM_cables + 2 downto 0) data_vme_from_below)
out data_vmestd_logic_vector (15 downto 0)
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) douta_RTM_OUTPUT_SPY_SYSTEM)
out data_vme_outstd_logic_vector (15 downto 0)
_library_ UNISIMUNISIM
out stretched_OUTstd_logic
Definition: Stretch_10.vhd:23
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) all_null)
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR_0
Stretch_10 stretch_10_counter_resetstretch_10_counter_reset
std_logic_vector (num_RTM_cables - 1 downto 0) port_b_master_inhibit_rtm_output_spy_system_split
out data_from_vmestd_logic_vector (width - 1 downto 0)
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_system
std_logic_vector (15 downto 0) data_to_vme_REG_RW_RTM_OUTPUT_SPY_SYSTEM_MEM_START_ADDRESS
in data_vme_instd_logic_vector (15 downto 0)
arr_1 (num_RTM_cables - 1 downto 0) web_rtm_output_spy_system_individual
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_rr_system
in data_vme_from_belowarr_16
--! inputs from local registers and from
out data_from_vmestd_logic_vector (width - 1 downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) web_rtm_output_spy_system_split
out data_vmestd_logic_vector (15 downto 0)
in data_vme_instd_logic_vector (15 downto 0)
arr_1 (num_RTM_cables - 1 downto 0) wea_rtm_output_spy_system_individual
out write_detectstd_logic
out data_vme_outstd_logic_vector (15 downto 0)
in clkstd_logic
Definition: Stretch_10.vhd:24
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_output_spy_system_individual
in del_arraycable_del_array_type (numbits_in_cable_connector downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) spy_write_inhibit_r_system
arr_ctr_8bit (num_RTM_cables - 1 downto 0) addrb_RTM_OUTPUT_SPY_SYSTEM_counter
std_logic_vector (numactchan - 1 downto 0) counter_reset_r_SYSTEM
in data_to_vmestd_logic_vector (width - 1 downto 0)
out data_vme_upstd_logic_vector (15 downto 0)
--! connect this to
vme_inreg_notri vme_inreg_reg_rw_rtm_output_counter_resetvme_inreg_reg_rw_rtm_output_counter_reset
CMX_cable_clocked_80Mbps_output_module cmx_cable_clocked_80mbps_output_module_instcmx_cable_clocked_80mbps_output_module_inst
std_logic_vector (num_RTM_cables - 1 downto 0) ena_rtm_output_spy_system_individual
in addr_vmestd_logic_vector (15 downto 0)
in datastd_logic_vector (numbits_in_RTM_connector * 2 * num_RTM_cables - 1 downto 0)
out ddr_data_outstd_logic_vector (numbits_in_cable_connector downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) enb_rtm_output_spy_system_r_system
integer :=addr_port_width (num_RTM_cables) mem_select_addr_width
std_logic_vector (15 downto 0) data_from_vme_REG_RW_RTM_OUTPUT_SPY_SYSTEM_MEM_START_ADDRESS
in data_to_vmestd_logic_vector (width - 1 downto 0)
out bus_drive_upstd_logic
or of all bus drive requests from below
blk_mem_a8x52_b8x52_1clock blk_mem_a8x52_b8x52_1clock_systemblk_mem_a8x52_b8x52_1clock_system
std_logic_vector (15 downto 0) data_from_vme_REG_RW_RTM_OUTPUT_COUNTER_RESET
vme_outreg_notri_async vme_outreg_reg_ro_rtm_output_spy_system_mem_check_error_1vme_outreg_reg_ro_rtm_output_spy_system_mem_check_error_1
out ddr_data_outarr_RTM (num_RTM_cables - 1 downto 0)
arr_26 (num_RTM_cables - 1 downto 0) bit_error_latch_system
out mem_select_addressstd_logic_vector (addr_port_width (num_external_RAMS) - 1 downto 0)
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_rr_system
std_logic_vector (numbits_in_RTM_connector * 2 - 1 downto 0) dina_RTM_OUTPUT_SPY_SYSTEM)
in addr_vmestd_logic_vector (15 downto 0)
std_logic_vector (15 downto 0) data_to_vme_REG_RW_RTM_OUTPUT_COUNTER_RESET
std_logic_vector (numactchan - 1 downto 0) counter_reset_rr_SYSTEM
in data_to_vmestd_logic_vector (width - 1 downto 0)
arr_ctr_32bit (num_RTM_cables - 1 downto 0) bit_error_counter_system_next
out data_vme_outstd_logic_vector (15 downto 0)
arr_8 (num_RTM_cables - 1 downto 0) addrb_rtm_output_spy_system_individual
out bus_drivestd_logic
in addr_vmestd_logic_vector (15 downto 0)
in addr_vmestd_logic_vector (15 downto 0)
std_logic_vector (addr_port_width (num_RTM_cables) - 1 downto 0) mem_select_address_RTM_OUTPUT_SPY_SYSTEM
test registers
std_logic_vector (3 downto 0) mode_control_RTM_OUTPUT_SPY_SYSTEM
std_logic_vector (num_RTM_cables - 1 downto 0) start_playback_r_system
in datastd_logic_vector ((numbits_in_cable_connector * 2) - 1 downto 0)
in data_vme_instd_logic_vector (15 downto 0)
out read_detectstd_logic
std_logic_vector (4 + 9 * num_RTM_cables + 2 downto 0) bus_drive_from_below)
in data_to_vmestd_logic_vector (width - 1 downto 0)
in unstretched_INstd_logic
Definition: Stretch_10.vhd:22
vme_inreg_notri_async vme_inreg_reg_rw_rtm_output_spy_system_mem_start_addressvme_inreg_reg_rw_rtm_output_spy_system_mem_start_address
in bus_drive_from_belowstd_logic_vector
arr_16 (num_RTM_cables - 1 downto 0) data_to_vme_REG_RO_RTM_OUTPUT_SPY_SYSTEM_MEM_CHECK_ERROR_1