8 use IEEE.STD_LOGIC_1164.
ALL;
9 USE ieee.std_logic_arith.
all;
10 library infrastructure_lib;
11 use infrastructure_lib.all;
24 rxdata :in std_logic_vector(31 downto 0);
37 constant REVERSE_BIT_ORDER : boolean := FALSE;
38 signal start_rxcrc_i,crc_error_i : std_logic:='0';
39 signal rx_data_i,rxdata_reg0,rxdata_reg1,rxdata_reg2 : std_logic_vector(31 downto 0):= x"00000000";
40 signal rxdata_crc_in, rx_crc_i,rxdata_crc_reg : std_logic_vector(8 downto 0):= "000000000";
41 signal check_crc,latch_crc,crc_start_reg,crc_rdy_i : std_logic := '0';
43 type state_type is ( idle,wt,high_crc ) ;
44 signal current_state : state_type;
50 pipe_rxdata_crc:
process (
clk)
52 if clk' event and clk ='1' then
53 if latch_crc ='1' then
54 rxdata_crc_reg <= rxdata_crc_in;
60 pipe_rxdata:
process (
clk)
62 if clk' event and clk ='1' then
63 rxdata_reg0 <= rxdata after 1 ns ;
64 rxdata_reg1 <= rxdata_reg0 after 1 ns ;
65 crc_start_reg <= start_rxcrc_i after 1 ns;
71 REVERSE_BIT_ORDER => REVERSE_BIT_ORDER
)
75 crc_start => crc_start_reg
and mgt_enable ,
97 crc_error_i <= '1' when (rxdata_crc_reg /= rx_crc_i and (check_crc ='1')) else '0';
in clk std_logic
MGT rx clock of 160MHz.
in mgt_enable std_logic
mgt_enbable
in mgt_commdet std_logic
MGT commadet.
in rxdata std_logic_vector( 31 downto 0)
MGT rx data.
out crc_error std_logic
crc error
out check_crc std_logic
check crc ready
out start_crc std_logic
start calculating crc
in clk std_logic
MGT rx clock of 160MHz.
in rxdata std_logic_vector( 31 DOWNTO 0)
MGT TTC rx data.
in mgt_commdet std_logic
MGT commadet.
out latch_crc std_logic
latch crc data
out rxdata_crc_in std_logic_vector( 8 DOWNTO 0)
incoming data crc
out crc_data std_logic_vector( 31 DOWNTO 0)
crc input data