ROD firmware  1.0.5
ATLAS l1-calo - ROD_eFEX and ROD_jFEX firmware for the L1Calo ROD board

Back to ROD documentation
osum_crc9d32.vhd
1 ----------------------------------------------------------------------------------
2 -- Company:
3 -- Engineer:
4 --
5 -- Create Date: 23.01.2018 16:50:51
6 -- Design Name:
7 -- Module Name: osum_crc9d32 - RTL
8 -- Project Name:
9 -- Target Devices:
10 -- Tool Versions:
11 -- Description:
12 --
13 -- Dependencies:
14 --
15 -- Revision:
16 -- Revision 0.01 - File Created
17 -- Additional Comments:
18 --
19 ----------------------------------------------------------------------------------
20 
21 
22 library ieee;
23 use ieee.std_logic_1164.all;
24 use ieee.numeric_std.all;
25 
26 -- 1+x^1+x^3+x^4+x^5+x^6+x^7+x^9;
27 
28 entity osum_crc9d32 is
29  port(
30  clock : in std_logic;
31 
32  crc_start : in std_logic;
33  d_in : in std_logic_vector(31 downto 0);
34 
35  crc_out : out std_logic_vector(8 downto 0));
36 
37 end osum_crc9d32;
38 
39 architecture behavioral of osum_crc9d32 is
40 
41  signal crc_r : std_logic_vector(8 downto 0) := (others => '0');
42  signal crc_s : std_logic_vector(8 downto 0) := (others => '0');
43 
44 begin
45 
46  crc_s <= B"1_1111_1111" when crc_start = '1' else crc_r;
47  crc_out <= crc_r;
48 
49  process(clock)
50  begin
51  if clock'event and clock = '1' then
52  crc_r(0) <= crc_s(0) xor crc_s(2) xor crc_s(3) xor crc_s(6) xor crc_s(8) xor d_in(0) xor d_in(2) xor d_in(3) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(8) xor d_in(9) xor d_in(10) xor d_in(11) xor d_in(15) xor d_in(18) xor d_in(19) xor d_in(20) xor d_in(21) xor d_in(22) xor d_in(23) xor d_in(25) xor d_in(26) xor d_in(29) xor d_in(31);
53  crc_r(1) <= crc_s(1) xor crc_s(2) xor crc_s(4) xor crc_s(6) xor crc_s(7) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(2) xor d_in(4) xor d_in(5) xor d_in(12) xor d_in(15) xor d_in(16) xor d_in(18) xor d_in(24) xor d_in(25) xor d_in(27) xor d_in(29) xor d_in(30) xor d_in(31);
54  crc_r(2) <= crc_s(2) xor crc_s(3) xor crc_s(5) xor crc_s(7) xor crc_s(8) xor d_in(1) xor d_in(2) xor d_in(3) xor d_in(5) xor d_in(6) xor d_in(13) xor d_in(16) xor d_in(17) xor d_in(19) xor d_in(25) xor d_in(26) xor d_in(28) xor d_in(30) xor d_in(31);
55  crc_r(3) <= crc_s(0) xor crc_s(2) xor crc_s(4) xor d_in(0) xor d_in(4) xor d_in(5) xor d_in(8) xor d_in(9) xor d_in(10) xor d_in(11) xor d_in(14) xor d_in(15) xor d_in(17) xor d_in(19) xor d_in(21) xor d_in(22) xor d_in(23) xor d_in(25) xor d_in(27);
56  crc_r(4) <= crc_s(1) xor crc_s(2) xor crc_s(5) xor crc_s(6) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(2) xor d_in(3) xor d_in(7) xor d_in(8) xor d_in(12) xor d_in(16) xor d_in(19) xor d_in(21) xor d_in(24) xor d_in(25) xor d_in(28) xor d_in(29) xor d_in(31);
57  crc_r(5) <= crc_s(0) xor crc_s(7) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(4) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(10) xor d_in(11) xor d_in(13) xor d_in(15) xor d_in(17) xor d_in(18) xor d_in(19) xor d_in(21) xor d_in(23) xor d_in(30) xor d_in(31);
58  crc_r(6) <= crc_s(0) xor crc_s(1) xor crc_s(2) xor crc_s(3) xor crc_s(6) xor d_in(0) xor d_in(1) xor d_in(3) xor d_in(9) xor d_in(10) xor d_in(12) xor d_in(14) xor d_in(15) xor d_in(16) xor d_in(21) xor d_in(23) xor d_in(24) xor d_in(25) xor d_in(26) xor d_in(29);
59  crc_r(7) <= crc_s(0) xor crc_s(1) xor crc_s(4) xor crc_s(6) xor crc_s(7) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(3) xor d_in(4) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(8) xor d_in(9) xor d_in(13) xor d_in(16) xor d_in(17) xor d_in(18) xor d_in(19) xor d_in(20) xor d_in(21) xor d_in(23) xor d_in(24) xor d_in(27) xor d_in(29) xor d_in(30) xor d_in(31);
60  crc_r(8) <= crc_s(1) xor crc_s(2) xor crc_s(5) xor crc_s(7) xor crc_s(8) xor d_in(1) xor d_in(2) xor d_in(4) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(8) xor d_in(9) xor d_in(10) xor d_in(14) xor d_in(17) xor d_in(18) xor d_in(19) xor d_in(20) xor d_in(21) xor d_in(22) xor d_in(24) xor d_in(25) xor d_in(28) xor d_in(30) xor d_in(31);
61 
62 -- crc_r(0) <= crc_s(0) xor crc_s(2) xor crc_s(3) xor crc_s(6) xor crc_s(8) xor d_in(0) xor d_in(2) xor d_in(3) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(8) xor d_in(9) xor d_in(10) xor d_in(11) xor d_in(15) xor d_in(18) xor d_in(19) xor d_in(20) xor d_in(21) xor d_in(22) xor d_in(23) xor d_in(25) xor d_in(26) xor d_in(29) xor d_in(31);
63 -- crc_r(1) <= crc_s(1) xor crc_s(2) xor crc_s(4) xor crc_s(6) xor crc_s(7) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(2) xor d_in(4) xor d_in(5) xor d_in(12) xor d_in(15) xor d_in(16) xor d_in(18) xor d_in(24) xor d_in(25) xor d_in(27) xor d_in(29) xor d_in(30) xor d_in(31);
64 -- crc_r(2) <= crc_s(2) xor crc_s(3) xor crc_s(5) xor crc_s(7) xor crc_s(8) xor d_in(1) xor d_in(2) xor d_in(3) xor d_in(5) xor d_in(6) xor d_in(13) xor d_in(16) xor d_in(17) xor d_in(19) xor d_in(25) xor d_in(26) xor d_in(28) xor d_in(30) xor d_in(31);
65 -- crc_r(3) <= crc_s(0) xor crc_s(2) xor crc_s(4) xor d_in(0) xor d_in(4) xor d_in(5) xor d_in(8) xor d_in(9) xor d_in(10) xor d_in(11) xor d_in(14) xor d_in(15) xor d_in(17) xor d_in(19) xor d_in(21) xor d_in(22) xor d_in(23) xor d_in(25) xor d_in(27);
66 -- crc_r(4) <= crc_s(1) xor crc_s(2) xor crc_s(5) xor crc_s(6) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(2) xor d_in(3) xor d_in(7) xor d_in(8) xor d_in(12) xor d_in(16) xor d_in(19) xor d_in(21) xor d_in(24) xor d_in(25) xor d_in(28) xor d_in(29) xor d_in(31);
67 -- crc_r(5) <= crc_s(0) xor crc_s(7) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(4) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(10) xor d_in(11) xor d_in(13) xor d_in(15) xor d_in(17) xor d_in(18) xor d_in(19) xor d_in(21) xor d_in(23) xor d_in(30) xor d_in(31);
68 -- crc_r(6) <= crc_s(0) xor crc_s(1) xor crc_s(2) xor crc_s(3) xor crc_s(6) xor d_in(0) xor d_in(1) xor d_in(3) xor d_in(9) xor d_in(10) xor d_in(12) xor d_in(14) xor d_in(15) xor d_in(16) xor d_in(21) xor d_in(23) xor d_in(24) xor d_in(25) xor d_in(26) xor d_in(29);
69 -- crc_r(7) <= crc_s(0) xor crc_s(1) xor crc_s(4) xor crc_s(6) xor crc_s(7) xor crc_s(8) xor d_in(0) xor d_in(1) xor d_in(3) xor d_in(4) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(8) xor d_in(9) xor d_in(13) xor d_in(16) xor d_in(17) xor d_in(18) xor d_in(19) xor d_in(20) xor d_in(21) xor d_in(23) xor d_in(24) xor d_in(27) xor d_in(29) xor d_in(30) xor d_in(31);
70 -- crc_r(8) <= crc_s(1) xor crc_s(2) xor crc_s(5) xor crc_s(7) xor crc_s(8) xor d_in(1) xor d_in(2) xor d_in(4) xor d_in(5) xor d_in(6) xor d_in(7) xor d_in(8) xor d_in(9) xor d_in(10) xor d_in(14) xor d_in(17) xor d_in(18) xor d_in(19) xor d_in(20) xor d_in(21) xor d_in(22) xor d_in(24) xor d_in(25) xor d_in(28) xor d_in(30) xor d_in(31);
71  end if;
72  end process;
73 
74 end architecture behavioral;