ROD firmware
1.0.5
ATLAS l1-calo - ROD_eFEX and ROD_jFEX firmware for the L1Calo ROD board
Back to ROD documentation
ROD
packet_processor
hdl
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
;
osum_crc9d32.behavioral
Definition:
osum_crc9d32.vhd:39
osum_crc9d32
Definition:
osum_crc9d32.vhd:28
Generated on Sat Dec 14 2024 13:33:14 for ROD firmware by
1.9.1