8 use IEEE.STD_LOGIC_1164.
ALL;
9 USE ieee.std_logic_arith.
all;
17 enable_mgt : in std_logic;
21 rxdata :in std_logic_vector(31 downto 0);
30 constant REVERSE_BIT_ORDER : boolean := TRUE;
32 signal start_rxcrc_i : std_logic := '0';
33 signal start_rxcrc_temp : std_logic := '0';
35 signal rx_data_i : std_logic_vector(31 downto 0);
36 signal rx_crc_i : std_logic_vector(8 downto 0) := (others => '0');
37 signal rx_crc_temp : std_logic_vector(8 downto 0) := (others => '0');
38 signal enable_i : std_logic;
39 signal crc_error_i : std_logic := '0';
41 type state_type is ( idle, high_crc ) ;
42 signal current_state : state_type;
43 signal count_40 :unsigned (2 downto 0) := "000";
47 pipe_start :
process(
clk)
48 variable count: unsigned(2 downto 0);
50 if clk' event and clk ='1' then
52 count := (others => '0');
62 pipe_rxdata:
process (
clk)
64 if clk' event and clk ='1' then
66 rx_data_i <= rxdata (31 downto 8) & x"00";
76 REVERSE_BIT_ORDER => REVERSE_BIT_ORDER
)
79 crc_start => start_rxcrc_i,
84 Check_crc:
process (
clk)
86 if clk' event and clk ='1' then
87 enable_i <= start_rxcrc_i;
88 if (start_rxcrc_i = '1' and enable_mgt = '1' and rx_crc_i /= "000000000") then
in clk std_logic
MGT rx clock.
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 crc error in 40MHz clock domain