eFEX firmware
1.7.3
ATLAS l1-calo - electron and tau feature extraction firmware for eFEX boards
Back to eFEX documentation
Infrastructure
process_Fpga_common
src
Data_Path
osum_crc9d32.vhd
1
library
ieee
;
2
use
ieee.std_logic_1164.
all
;
3
use
ieee.numeric_std.
all
;
4
5
-- 1+x^1+x^3+x^4+x^5+x^6+x^7+x^9;
6
7
entity
osum_crc9d32
is
8
generic
(
9
REVERSE_BIT_ORDER
:
boolean
:=
false
)
;
10
port
(
11
clock
:
in
std_logic
;
12
crc_start
:
in
std_logic
;
13
d_in
:
in
std_logic_vector
(
31
downto
0
)
;
14
crc_out
:
out
std_logic_vector
(
8
downto
0
)
)
;
15
16
end
osum_crc9d32
;
17
18
architecture
behavioral
of
osum_crc9d32
is
19
20
signal
d_in_s
:
std_logic_vector
(
31
downto
0
)
:=
(
others
=
>
'
0
'
)
;
21
signal
crc_r
:
std_logic_vector
(
8
downto
0
)
:=
(
others
=
>
'
0
'
)
;
22
signal
crc_s
:
std_logic_vector
(
8
downto
0
)
:=
(
others
=
>
'
0
'
)
;
23
24
begin
25
26
crc_s
<=
B
"1_1111_1111"
when
crc_start
=
'
1
'
else
crc_r
;
27
28
process
(clock)
29
begin
30
if
clock
'
event
and
clock
=
'
1
'
then
31
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_s
(
0
)
xor
d_in_s
(
2
)
xor
d_in_s
(
3
)
xor
d_in_s
(
5
)
xor
d_in_s
(
6
)
xor
d_in_s
(
7
)
xor
d_in_s
(
8
)
xor
d_in_s
(
9
)
xor
d_in_s
(
10
)
xor
d_in_s
(
11
)
xor
d_in_s
(
15
)
xor
d_in_s
(
18
)
xor
d_in_s
(
19
)
xor
d_in_s
(
20
)
xor
d_in_s
(
21
)
xor
d_in_s
(
22
)
xor
d_in_s
(
23
)
xor
d_in_s
(
25
)
xor
d_in_s
(
26
)
xor
d_in_s
(
29
)
xor
d_in_s
(
31
)
;
32
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_s
(
0
)
xor
d_in_s
(
1
)
xor
d_in_s
(
2
)
xor
d_in_s
(
4
)
xor
d_in_s
(
5
)
xor
d_in_s
(
12
)
xor
d_in_s
(
15
)
xor
d_in_s
(
16
)
xor
d_in_s
(
18
)
xor
d_in_s
(
24
)
xor
d_in_s
(
25
)
xor
d_in_s
(
27
)
xor
d_in_s
(
29
)
xor
d_in_s
(
30
)
xor
d_in_s
(
31
)
;
33
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_s
(
1
)
xor
d_in_s
(
2
)
xor
d_in_s
(
3
)
xor
d_in_s
(
5
)
xor
d_in_s
(
6
)
xor
d_in_s
(
13
)
xor
d_in_s
(
16
)
xor
d_in_s
(
17
)
xor
d_in_s
(
19
)
xor
d_in_s
(
25
)
xor
d_in_s
(
26
)
xor
d_in_s
(
28
)
xor
d_in_s
(
30
)
xor
d_in_s
(
31
)
;
34
crc_r
(
3
)
<=
crc_s
(
0
)
xor
crc_s
(
2
)
xor
crc_s
(
4
)
xor
d_in_s
(
0
)
xor
d_in_s
(
4
)
xor
d_in_s
(
5
)
xor
d_in_s
(
8
)
xor
d_in_s
(
9
)
xor
d_in_s
(
10
)
xor
d_in_s
(
11
)
xor
d_in_s
(
14
)
xor
d_in_s
(
15
)
xor
d_in_s
(
17
)
xor
d_in_s
(
19
)
xor
d_in_s
(
21
)
xor
d_in_s
(
22
)
xor
d_in_s
(
23
)
xor
d_in_s
(
25
)
xor
d_in_s
(
27
)
;
35
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_s
(
0
)
xor
d_in_s
(
1
)
xor
d_in_s
(
2
)
xor
d_in_s
(
3
)
xor
d_in_s
(
7
)
xor
d_in_s
(
8
)
xor
d_in_s
(
12
)
xor
d_in_s
(
16
)
xor
d_in_s
(
19
)
xor
d_in_s
(
21
)
xor
d_in_s
(
24
)
xor
d_in_s
(
25
)
xor
d_in_s
(
28
)
xor
d_in_s
(
29
)
xor
d_in_s
(
31
)
;
36
crc_r
(
5
)
<=
crc_s
(
0
)
xor
crc_s
(
7
)
xor
crc_s
(
8
)
xor
d_in_s
(
0
)
xor
d_in_s
(
1
)
xor
d_in_s
(
4
)
xor
d_in_s
(
5
)
xor
d_in_s
(
6
)
xor
d_in_s
(
7
)
xor
d_in_s
(
10
)
xor
d_in_s
(
11
)
xor
d_in_s
(
13
)
xor
d_in_s
(
15
)
xor
d_in_s
(
17
)
xor
d_in_s
(
18
)
xor
d_in_s
(
19
)
xor
d_in_s
(
21
)
xor
d_in_s
(
23
)
xor
d_in_s
(
30
)
xor
d_in_s
(
31
)
;
37
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_s
(
0
)
xor
d_in_s
(
1
)
xor
d_in_s
(
3
)
xor
d_in_s
(
9
)
xor
d_in_s
(
10
)
xor
d_in_s
(
12
)
xor
d_in_s
(
14
)
xor
d_in_s
(
15
)
xor
d_in_s
(
16
)
xor
d_in_s
(
21
)
xor
d_in_s
(
23
)
xor
d_in_s
(
24
)
xor
d_in_s
(
25
)
xor
d_in_s
(
26
)
xor
d_in_s
(
29
)
;
38
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_s
(
0
)
xor
d_in_s
(
1
)
xor
d_in_s
(
3
)
xor
d_in_s
(
4
)
xor
d_in_s
(
5
)
xor
d_in_s
(
6
)
xor
d_in_s
(
7
)
xor
d_in_s
(
8
)
xor
d_in_s
(
9
)
xor
d_in_s
(
13
)
xor
d_in_s
(
16
)
xor
d_in_s
(
17
)
xor
d_in_s
(
18
)
xor
d_in_s
(
19
)
xor
d_in_s
(
20
)
xor
d_in_s
(
21
)
xor
d_in_s
(
23
)
xor
d_in_s
(
24
)
xor
d_in_s
(
27
)
xor
d_in_s
(
29
)
xor
d_in_s
(
30
)
xor
d_in_s
(
31
)
;
39
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_s
(
1
)
xor
d_in_s
(
2
)
xor
d_in_s
(
4
)
xor
d_in_s
(
5
)
xor
d_in_s
(
6
)
xor
d_in_s
(
7
)
xor
d_in_s
(
8
)
xor
d_in_s
(
9
)
xor
d_in_s
(
10
)
xor
d_in_s
(
14
)
xor
d_in_s
(
17
)
xor
d_in_s
(
18
)
xor
d_in_s
(
19
)
xor
d_in_s
(
20
)
xor
d_in_s
(
21
)
xor
d_in_s
(
22
)
xor
d_in_s
(
24
)
xor
d_in_s
(
25
)
xor
d_in_s
(
28
)
xor
d_in_s
(
30
)
xor
d_in_s
(
31
)
;
40
41
end
if
;
42
end
process
;
43
44
if_rbo_g
:
45
if
REVERSE_BIT_ORDER
generate
46
din_for_g
:
47
for
i
in
0
to
31
generate
48
d_in_s
(
i
)
<=
d_in
(
31-
i
)
;
49
end
generate
;
50
crc_out_for_g
:
51
for
i
in
0
to
8
generate
52
crc_out
(
i
)
<=
crc_r
(
8-
i
)
;
53
end
generate
;
54
end
generate
;
55
56
if_not_rbo_g
:
57
if
not
REVERSE_BIT_ORDER
generate
58
d_in_s
<=
d_in
;
59
crc_out
<=
crc_r
;
60
end
generate
;
61
62
end
architecture
behavioral
;
osum_crc9d32.behavioral
Definition:
osum_crc9d32.vhd:18
osum_crc9d32
Definition:
osum_crc9d32.vhd:7
Generated on Tue Nov 11 2025 09:44:32 for eFEX firmware by
1.9.1