AMC13
Firmwares for the different applications of the AMC13 uTCA board made at Boston University
Main Page
Design Unit List
Files
File List
All
Classes
Variables
src
common
AMC_if
cmsCRC64.vhd
1
----------------------------------------------------------------------------------
2
-- Company:
3
-- Engineer:
4
--
5
-- Create Date:
12
:
33
:
25
01/11/2012
6
-- Design Name:
7
-- Module Name: cmsCRC64 - Behavioral
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
library
IEEE
;
21
use
IEEE.STD_LOGIC_1164.
ALL
;
22
23
-- Uncomment the following
library
declaration
if
using
24
-- arithmetic functions
with
Signed
or
Unsigned
values
25
--use IEEE.NUMERIC_STD.
ALL
;
26
27
-- Uncomment the following
library
declaration
if
instantiating
28
-- any Xilinx primitives
in
this code.
29
--library UNISIM;
30
--use UNISIM.VComponents.
all
;
31
32
entity
cmsCRC64
is
33
Port
(
clk
:
in
STD_LOGIC
;
34
reset
:
in
STD_LOGIC
;
35
crc_init
:
in
STD_LOGIC
;
36
inject_err
:
in
STD_LOGIC
;
37
trailer
:
in
STD_LOGIC
;
38
crc_d
:
in
STD_LOGIC_VECTOR
(
63
downto
0
)
;
39
crc_ce
:
in
STD_LOGIC
;
40
crc
:
out
STD_LOGIC_VECTOR
(
15
downto
0
)
;
41
crc_err
:
out
STD_LOGIC
;
42
dout
:
out
STD_LOGIC_VECTOR
(
63
downto
0
)
;
43
dout_vld
:
out
STD_LOGIC
)
;
44
end
cmsCRC64
;
45
46
architecture
Behavioral
of
cmsCRC64
is
47
signal
c
:
std_logic_vector
(
15
downto
0
)
:=
(
others
=
>
'
1
'
)
;
48
signal
d
:
std_logic_vector
(
63
downto
0
)
:=
(
others
=
>
'
0
'
)
;
49
signal
d_q
:
std_logic_vector
(
63
downto
0
)
:=
(
others
=
>
'
0
'
)
;
50
signal
crc_ce_q
:
std_logic
:=
'
1
'
;
51
signal
trailer_q
:
std_logic
:=
'
1
'
;
52
begin
53
d
<=
crc_d
;
54
crc
<=
c
;
55
process
(clk)
56
begin
57
if
(
clk
'
event
and
clk
=
'
1
'
)
then
58
crc_ce_q
<=
crc_ce
and
not
reset
;
59
dout_vld
<=
crc_ce_q
and
not
reset
;
60
d_q
<=
d
;
61
dout
(
63
downto
32
)
<=
d_q
(
63
downto
32
)
;
62
dout
(
15
downto
0
)
<=
d_q
(
15
downto
0
)
;
63
trailer_q
<=
trailer
and
crc_ce
;
64
if
(
trailer_q
=
'
1
'
and
inject_err
=
'
0
'
)
then
65
dout
(
31
downto
16
)
<=
c
;
66
else
67
dout
(
31
downto
16
)
<=
d_q
(
31
downto
16
)
;
68
end
if
;
69
if
(
crc_init
=
'
1
'
)
then
70
crc_err
<=
'
0
'
;
71
elsif
(
trailer_q
=
'
1
'
and
d_q
(
31
downto
16
)
/=
c
)
then
72
crc_err
<=
'
1
'
;
73
else
74
crc_err
<=
'
0
'
;
75
end
if
;
76
if
(
crc_init
=
'
1
'
)
then
77
c
<=
(
others
=
>
'
1
'
)
;
78
elsif
(
crc_ce
=
'
1
'
)
then
79
c
(
0
)
<=
d
(
63
)
xor
d
(
62
)
xor
d
(
61
)
xor
d
(
60
)
xor
d
(
55
)
xor
d
(
54
)
xor
80
d
(
53
)
xor
d
(
52
)
xor
d
(
51
)
xor
d
(
50
)
xor
d
(
49
)
xor
d
(
48
)
xor
81
d
(
47
)
xor
d
(
46
)
xor
d
(
45
)
xor
d
(
43
)
xor
d
(
41
)
xor
d
(
40
)
xor
82
d
(
39
)
xor
d
(
38
)
xor
d
(
37
)
xor
d
(
36
)
xor
d
(
35
)
xor
d
(
34
)
xor
83
d
(
33
)
xor
d
(
32
)
xor
(
(
d
(
31
)
xor
d
(
30
)
xor
d
(
27
)
xor
d
(
26
)
xor
84
d
(
25
)
xor
d
(
24
)
xor
d
(
23
)
xor
d
(
22
)
xor
d
(
21
)
xor
d
(
20
)
xor
85
d
(
19
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
16
)
)
and
not
trailer
)
xor
d
(
15
)
xor
d
(
13
)
xor
86
d
(
12
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
7
)
xor
87
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
88
d
(
0
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
7
)
xor
89
c
(
6
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
3
)
xor
c
(
2
)
xor
c
(
1
)
xor
90
c
(
0
)
;
91
c
(
1
)
<=
d
(
63
)
xor
d
(
62
)
xor
d
(
61
)
xor
d
(
56
)
xor
d
(
55
)
xor
d
(
54
)
xor
92
d
(
53
)
xor
d
(
52
)
xor
d
(
51
)
xor
d
(
50
)
xor
d
(
49
)
xor
d
(
48
)
xor
93
d
(
47
)
xor
d
(
46
)
xor
d
(
44
)
xor
d
(
42
)
xor
d
(
41
)
xor
d
(
40
)
xor
94
d
(
39
)
xor
d
(
38
)
xor
d
(
37
)
xor
d
(
36
)
xor
d
(
35
)
xor
d
(
34
)
xor
95
d
(
33
)
xor
d
(
32
)
xor
(
(
d
(
31
)
xor
d
(
28
)
xor
d
(
27
)
xor
d
(
26
)
xor
96
d
(
25
)
xor
d
(
24
)
xor
d
(
23
)
xor
d
(
22
)
xor
d
(
21
)
xor
d
(
20
)
xor
97
d
(
19
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
16
)
)
and
not
trailer
)
xor
d
(
14
)
xor
d
(
13
)
xor
98
d
(
12
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
7
)
xor
99
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
100
c
(
15
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
8
)
xor
c
(
7
)
xor
c
(
6
)
xor
101
c
(
5
)
xor
c
(
4
)
xor
c
(
3
)
xor
c
(
2
)
xor
c
(
1
)
xor
c
(
0
)
;
102
c
(
2
)
<=
d
(
61
)
xor
d
(
60
)
xor
d
(
57
)
xor
d
(
56
)
xor
d
(
46
)
xor
d
(
42
)
xor
103
(
(
d
(
31
)
xor
d
(
30
)
xor
d
(
29
)
xor
d
(
28
)
xor
d
(
16
)
)
and
not
trailer
)
xor
d
(
14
)
xor
104
d
(
1
)
xor
d
(
0
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
9
)
xor
c
(
8
)
;
105
c
(
3
)
<=
d
(
62
)
xor
d
(
61
)
xor
d
(
58
)
xor
d
(
57
)
xor
d
(
47
)
xor
d
(
43
)
xor
106
d
(
32
)
xor
(
(
d
(
31
)
xor
d
(
30
)
xor
d
(
29
)
xor
d
(
17
)
)
and
not
trailer
)
xor
d
(
15
)
xor
107
d
(
2
)
xor
d
(
1
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
10
)
xor
c
(
9
)
;
108
c
(
4
)
<=
d
(
63
)
xor
d
(
62
)
xor
d
(
59
)
xor
d
(
58
)
xor
d
(
48
)
xor
d
(
44
)
xor
109
d
(
33
)
xor
d
(
32
)
xor
(
(
d
(
31
)
xor
d
(
30
)
xor
d
(
18
)
xor
d
(
16
)
)
and
not
trailer
)
xor
110
d
(
3
)
xor
d
(
2
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
11
)
xor
c
(
10
)
xor
111
c
(
0
)
;
112
c
(
5
)
<=
d
(
63
)
xor
d
(
60
)
xor
d
(
59
)
xor
d
(
49
)
xor
d
(
45
)
xor
d
(
34
)
xor
113
d
(
33
)
xor
d
(
32
)
xor
(
(
d
(
31
)
xor
d
(
19
)
xor
d
(
17
)
)
and
not
trailer
)
xor
d
(
4
)
xor
114
d
(
3
)
xor
c
(
15
)
xor
c
(
12
)
xor
c
(
11
)
xor
c
(
1
)
;
115
c
(
6
)
<=
d
(
61
)
xor
d
(
60
)
xor
d
(
50
)
xor
d
(
46
)
xor
d
(
35
)
xor
d
(
34
)
xor
116
d
(
33
)
xor
d
(
32
)
xor
(
(
d
(
20
)
xor
d
(
18
)
)
and
not
trailer
)
xor
d
(
5
)
xor
d
(
4
)
xor
117
c
(
13
)
xor
c
(
12
)
xor
c
(
2
)
;
118
c
(
7
)
<=
d
(
62
)
xor
d
(
61
)
xor
d
(
51
)
xor
d
(
47
)
xor
d
(
36
)
xor
d
(
35
)
xor
119
d
(
34
)
xor
d
(
33
)
xor
(
(
d
(
21
)
xor
d
(
19
)
)
and
not
trailer
)
xor
d
(
6
)
xor
d
(
5
)
xor
120
c
(
14
)
xor
c
(
13
)
xor
c
(
3
)
;
121
c
(
8
)
<=
d
(
63
)
xor
d
(
62
)
xor
d
(
52
)
xor
d
(
48
)
xor
d
(
37
)
xor
d
(
36
)
xor
122
d
(
35
)
xor
d
(
34
)
xor
(
(
d
(
22
)
xor
d
(
20
)
)
and
not
trailer
)
xor
d
(
7
)
xor
d
(
6
)
xor
123
c
(
15
)
xor
c
(
14
)
xor
c
(
4
)
xor
c
(
0
)
;
124
c
(
9
)
<=
d
(
63
)
xor
d
(
53
)
xor
d
(
49
)
xor
d
(
38
)
xor
d
(
37
)
xor
d
(
36
)
xor
125
d
(
35
)
xor
(
(
d
(
23
)
xor
d
(
21
)
)
and
not
trailer
)
xor
d
(
8
)
xor
d
(
7
)
xor
c
(
15
)
xor
126
c
(
5
)
xor
c
(
1
)
;
127
c
(
10
)
<=
d
(
54
)
xor
d
(
50
)
xor
d
(
39
)
xor
d
(
38
)
xor
d
(
37
)
xor
d
(
36
)
xor
128
(
(
d
(
24
)
xor
d
(
22
)
)
and
not
trailer
)
xor
d
(
9
)
xor
d
(
8
)
xor
c
(
6
)
xor
c
(
2
)
;
129
c
(
11
)
<=
d
(
55
)
xor
d
(
51
)
xor
d
(
40
)
xor
d
(
39
)
xor
d
(
38
)
xor
d
(
37
)
xor
130
(
(
d
(
25
)
xor
d
(
23
)
)
and
not
trailer
)
xor
d
(
10
)
xor
d
(
9
)
xor
c
(
7
)
xor
c
(
3
)
;
131
c
(
12
)
<=
d
(
56
)
xor
d
(
52
)
xor
d
(
41
)
xor
d
(
40
)
xor
d
(
39
)
xor
d
(
38
)
xor
132
(
(
d
(
26
)
xor
d
(
24
)
)
and
not
trailer
)
xor
d
(
11
)
xor
d
(
10
)
xor
c
(
8
)
xor
c
(
4
)
;
133
c
(
13
)
<=
d
(
57
)
xor
d
(
53
)
xor
d
(
42
)
xor
d
(
41
)
xor
d
(
40
)
xor
d
(
39
)
xor
134
(
(
d
(
27
)
xor
d
(
25
)
)
and
not
trailer
)
xor
d
(
12
)
xor
d
(
11
)
xor
c
(
9
)
xor
c
(
5
)
;
135
c
(
14
)
<=
d
(
58
)
xor
d
(
54
)
xor
d
(
43
)
xor
d
(
42
)
xor
d
(
41
)
xor
d
(
40
)
xor
136
(
(
d
(
28
)
xor
d
(
26
)
)
and
not
trailer
)
xor
d
(
13
)
xor
d
(
12
)
xor
c
(
10
)
xor
c
(
6
)
;
137
c
(
15
)
<=
d
(
63
)
xor
d
(
62
)
xor
d
(
61
)
xor
d
(
60
)
xor
d
(
59
)
xor
d
(
54
)
xor
138
d
(
53
)
xor
d
(
52
)
xor
d
(
51
)
xor
d
(
50
)
xor
d
(
49
)
xor
d
(
48
)
xor
139
d
(
47
)
xor
d
(
46
)
xor
d
(
45
)
xor
d
(
44
)
xor
d
(
42
)
xor
d
(
40
)
xor
140
d
(
39
)
xor
d
(
38
)
xor
d
(
37
)
xor
d
(
36
)
xor
d
(
35
)
xor
d
(
34
)
xor
141
d
(
33
)
xor
d
(
32
)
xor
(
(
d
(
31
)
xor
d
(
30
)
xor
d
(
29
)
xor
d
(
26
)
xor
142
d
(
25
)
xor
d
(
24
)
xor
d
(
23
)
xor
d
(
22
)
xor
d
(
21
)
xor
d
(
20
)
xor
143
d
(
19
)
xor
d
(
18
)
xor
d
(
17
)
xor
d
(
16
)
)
and
not
trailer
)
xor
d
(
15
)
xor
d
(
14
)
xor
144
d
(
12
)
xor
d
(
11
)
xor
d
(
10
)
xor
d
(
9
)
xor
d
(
8
)
xor
d
(
7
)
xor
145
d
(
6
)
xor
d
(
5
)
xor
d
(
4
)
xor
d
(
3
)
xor
d
(
2
)
xor
d
(
1
)
xor
146
d
(
0
)
xor
c
(
15
)
xor
c
(
14
)
xor
c
(
13
)
xor
c
(
12
)
xor
c
(
11
)
xor
147
c
(
6
)
xor
c
(
5
)
xor
c
(
4
)
xor
c
(
3
)
xor
c
(
2
)
xor
c
(
1
)
xor
148
c
(
0
)
;
149
end
if
;
150
end
if
;
151
end
process
;
152
153
end
Behavioral
;
154
Generated on Wed Apr 18 2018 10:55:27 for AMC13 by
1.8.1