13 use IEEE.STD_LOGIC_1164.
ALL;
14 use IEEE.NUMERIC_STD.
ALL;
15 use IEEE.STD_LOGIC_UNSIGNED.
ALL;
16 use IEEE.STD_LOGIC_ARITH.CONV_STD_LOGIC_VECTOR;
26 datai : in arr_4Xword(max_cps-1 downto 0);
53 -- signal declarations
59 signal datai_r : arr_4Xword(max_cps-1 downto 0);
82 signal calc_par : calc_parity_type(max_cps-1 downto 0);
83 signal par_err : calc_parity_type(max_cps-1 downto 0);
103 signal BCID_r : (11 downto 0);
115 --first register all data locally, and everything except data_i doublr reg
116 --data_i_r will have parity error added synchroneously below
119 if rising_edge(clk) then
148 par_err_i: for i in 0 to max_cps-1 generate
149 par_err_j: for j in 0 to 3 generate
165 if rising_edge(clk) then
175 calc_par_cbla_mux0 : parity_gen -- parity calc. (cbla,mux0)
184 -- overflow added by Pawel Plucinski 2015-08-21
185 calc_par_cbla_mux1 : parity_gen -- parity calc. (cbla,mux1)
190 din => din_cbla_ro_r & din_cbl_r
(47 downto 24),
194 calc_par_cblb_mux0 : parity_gen -- parity calc. (cblb,mux0)
204 -- overflow added by Pawel Plucinski 2015-08-21
205 calc_par_cblb_mux1 : parity_gen -- parity calc. (cblb,mux1)
210 din => din_cblb_ro_r & din_cbl_r
(95 downto 72),
214 calc_par_cblc_mux0 : parity_gen -- parity calc. (cblc,mux0)
223 -- overflow added by Pawel Plucinski 2015-08-21
224 calc_par_cblc_mux1 : parity_gen -- parity calc. (cblc,mux1)
229 din => din_cblc_ro_r & din_cbl_r
(143 downto 120),
236 if rising_edge(clk) then
252 gen_daq_data: for i_source in 0 to max_cps-1 generate
254 end generate gen_daq_data;
257 -- multiplicity remote, cbla
267 -- multiplicity remote, cblb
277 -- multiplicity remote, cblc
287 -- multiplicity local
298 -- multiplicity global
316 data_in_daq(19)(95 downto 85) <= (others=>'0');
-- zero
318 gen_cpm_occupied_map: for i_cpm in 0 to max_cps-1 generate
321 if rising_edge(clk) then
322 if datai_r(i_cpm)(15 downto 0) > 0 then
332 -- CPM multiplicity calc.
334 gen_cpm_ntobs: for i_cpm in 0 to max_cps-1 generate
336 ntobs_low(i_cpm) <= Rxpos_sort(conv_integer(datai_r(i_cpm)(7 downto 0)))(7 downto 5);
337 ntobs_high(i_cpm) <= Rxpos_sort(conv_integer(datai_r(i_cpm)(15 downto 8)))(7 downto 5);
343 if rising_edge(clk) then
345 cpm_mult(3*i_cpm+2 downto 3*i_cpm) <= "111";
std_logic par_err_cbla_mux0
out data_in_daqarr_96 (19 downto 0)
ntobstot_type (max_cps - 1 downto 0) ntobs_tot
ntobsA_type (max_cps - 1 downto 0) ntobs_high
std_logic par_calc_cbla_mux1
out BCID_delayedstd_logic_vector (11 downto 0)
in BCID_instd_logic_vector (11 downto 0)
parity_gen calc_par_icalc_par_i
arr_4Xword (max_jems - 1 downto 0) datai_r
std_logic par_calc_cbla_mux0
ntobsA_type (max_cps - 1 downto 0) ntobs_low
std_logic par_calc_cblb_mux0
std_logic par_calc_cblb_mux1
std_logic_vector (11 downto 0) BCID_r
calc_parity_type (max_jems - 1 downto 0) par_err
calc_parity_type (max_jems - 1 downto 0) calc_par
std_logic par_err_cbla_mux1
in dataiarr_4Xword (max_jems - 1 downto 0)
std_logic par_err_cblb_mux1
in dinstd_logic_vector (width - 1 downto 0)
std_logic par_err_cblb_mux0
arr_4Xword (max_jems - 1 downto 0) datai_corr