x393
1.0
FPGAcodeforElphelNC393camera
crc.v
Go to the documentation of this file.
1
39
/* same as for a scrambler, @ doc p.561 **/
40
// TODO make it parallel, make another widths support
41
module
crc
#(
42
parameter
DATA_BYTE_WIDTH
=
4
43
)
44
(
45
input
wire
clk
,
46
input
wire
rst
,
47
48
input
wire
val_in
,
49
input
wire
[
DATA_BYTE_WIDTH
*
8
-
1
:
0
]
data_in
,
50
output
wire
[
DATA_BYTE_WIDTH
*
8
-
1
:
0
]
crc_out
51
);
52
53
reg
[
31
:
0
]
crc
;
54
wire
[
31
:
0
]
crc_bit
;
55
reg
[
31
:
0
]
new_bit
;
56
57
always
@ (
posedge
clk
)
58
crc
<=
rst
?
32'h52325032
:
val_in
?
new_bit
:
crc
;
59
60
assign
crc_bit
=
crc
^
data_in
;
61
assign
crc_out
=
crc
;
62
63
always
@ (*)
64
begin
65
new_bit
[
31
] =
crc_bit
[
31
] ^
crc_bit
[
30
] ^
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
27
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
66
crc_bit
[
23
] ^
crc_bit
[
15
] ^
crc_bit
[
11
] ^
crc_bit
[
9
] ^
crc_bit
[
8
] ^
crc_bit
[
5
];
67
new_bit
[
30
] =
crc_bit
[
30
] ^
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
24
] ^
crc_bit
[
23
] ^
68
crc_bit
[
22
] ^
crc_bit
[
14
] ^
crc_bit
[
10
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
4
];
69
new_bit
[
29
] =
crc_bit
[
31
] ^
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
25
] ^
crc_bit
[
23
] ^
70
crc_bit
[
22
] ^
crc_bit
[
21
] ^
crc_bit
[
13
] ^
crc_bit
[
9
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
3
];
71
new_bit
[
28
] =
crc_bit
[
30
] ^
crc_bit
[
28
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
crc_bit
[
22
] ^
72
crc_bit
[
21
] ^
crc_bit
[
20
] ^
crc_bit
[
12
] ^
crc_bit
[
8
] ^
crc_bit
[
6
] ^
crc_bit
[
5
] ^
crc_bit
[
2
];
73
new_bit
[
27
] =
crc_bit
[
29
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
crc_bit
[
23
] ^
crc_bit
[
21
] ^
74
crc_bit
[
20
] ^
crc_bit
[
19
] ^
crc_bit
[
11
] ^
crc_bit
[
7
] ^
crc_bit
[
5
] ^
crc_bit
[
4
] ^
crc_bit
[
1
];
75
new_bit
[
26
] =
crc_bit
[
31
] ^
crc_bit
[
28
] ^
crc_bit
[
26
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
crc_bit
[
23
] ^
crc_bit
[
22
] ^
76
crc_bit
[
20
] ^
crc_bit
[
19
] ^
crc_bit
[
18
] ^
crc_bit
[
10
] ^
crc_bit
[
6
] ^
crc_bit
[
4
] ^
crc_bit
[
3
] ^
77
crc_bit
[
0
];
78
new_bit
[
25
] =
crc_bit
[
31
] ^
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
22
] ^
crc_bit
[
21
] ^
crc_bit
[
19
] ^
crc_bit
[
18
] ^
79
crc_bit
[
17
] ^
crc_bit
[
15
] ^
crc_bit
[
11
] ^
crc_bit
[
8
] ^
crc_bit
[
3
] ^
crc_bit
[
2
];
80
new_bit
[
24
] =
crc_bit
[
30
] ^
crc_bit
[
28
] ^
crc_bit
[
27
] ^
crc_bit
[
21
] ^
crc_bit
[
20
] ^
crc_bit
[
18
] ^
crc_bit
[
17
] ^
81
crc_bit
[
16
] ^
crc_bit
[
14
] ^
crc_bit
[
10
] ^
crc_bit
[
7
] ^
crc_bit
[
2
] ^
crc_bit
[
1
];
82
new_bit
[
23
] =
crc_bit
[
31
] ^
crc_bit
[
29
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
20
] ^
crc_bit
[
19
] ^
crc_bit
[
17
] ^
83
crc_bit
[
16
] ^
crc_bit
[
15
] ^
crc_bit
[
13
] ^
crc_bit
[
9
] ^
crc_bit
[
6
] ^
crc_bit
[
1
] ^
crc_bit
[
0
];
84
new_bit
[
22
] =
crc_bit
[
31
] ^
crc_bit
[
29
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
24
] ^
crc_bit
[
23
] ^
crc_bit
[
19
] ^
85
crc_bit
[
18
] ^
crc_bit
[
16
] ^
crc_bit
[
14
] ^
crc_bit
[
12
] ^
crc_bit
[
11
] ^
crc_bit
[
9
] ^
crc_bit
[
0
];
86
new_bit
[
21
] =
crc_bit
[
31
] ^
crc_bit
[
29
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
24
] ^
crc_bit
[
22
] ^
crc_bit
[
18
] ^
87
crc_bit
[
17
] ^
crc_bit
[
13
] ^
crc_bit
[
10
] ^
crc_bit
[
9
] ^
crc_bit
[
5
];
88
new_bit
[
20
] =
crc_bit
[
30
] ^
crc_bit
[
28
] ^
crc_bit
[
26
] ^
crc_bit
[
25
] ^
crc_bit
[
23
] ^
crc_bit
[
21
] ^
crc_bit
[
17
] ^
89
crc_bit
[
16
] ^
crc_bit
[
12
] ^
crc_bit
[
9
] ^
crc_bit
[
8
] ^
crc_bit
[
4
];
90
new_bit
[
19
] =
crc_bit
[
29
] ^
crc_bit
[
27
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
crc_bit
[
22
] ^
crc_bit
[
20
] ^
crc_bit
[
16
] ^
91
crc_bit
[
15
] ^
crc_bit
[
11
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
3
];
92
new_bit
[
18
] =
crc_bit
[
31
] ^
crc_bit
[
28
] ^
crc_bit
[
26
] ^
crc_bit
[
24
] ^
crc_bit
[
23
] ^
crc_bit
[
21
] ^
crc_bit
[
19
] ^
93
crc_bit
[
15
] ^
crc_bit
[
14
] ^
crc_bit
[
10
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
2
];
94
new_bit
[
17
] =
crc_bit
[
31
] ^
crc_bit
[
30
] ^
crc_bit
[
27
] ^
crc_bit
[
25
] ^
crc_bit
[
23
] ^
crc_bit
[
22
] ^
crc_bit
[
20
] ^
95
crc_bit
[
18
] ^
crc_bit
[
14
] ^
crc_bit
[
13
] ^
crc_bit
[
9
] ^
crc_bit
[
6
] ^
crc_bit
[
5
] ^
crc_bit
[
1
];
96
new_bit
[
16
] =
crc_bit
[
30
] ^
crc_bit
[
29
] ^
crc_bit
[
26
] ^
crc_bit
[
24
] ^
crc_bit
[
22
] ^
crc_bit
[
21
] ^
crc_bit
[
19
] ^
97
crc_bit
[
17
] ^
crc_bit
[
13
] ^
crc_bit
[
12
] ^
crc_bit
[
8
] ^
crc_bit
[
5
] ^
crc_bit
[
4
] ^
crc_bit
[
0
];
98
new_bit
[
15
] =
crc_bit
[
30
] ^
crc_bit
[
27
] ^
crc_bit
[
24
] ^
crc_bit
[
21
] ^
crc_bit
[
20
] ^
crc_bit
[
18
] ^
crc_bit
[
16
] ^
99
crc_bit
[
15
] ^
crc_bit
[
12
] ^
crc_bit
[
9
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
5
] ^
crc_bit
[
4
] ^
100
crc_bit
[
3
];
101
new_bit
[
14
] =
crc_bit
[
29
] ^
crc_bit
[
26
] ^
crc_bit
[
23
] ^
crc_bit
[
20
] ^
crc_bit
[
19
] ^
crc_bit
[
17
] ^
crc_bit
[
15
] ^
102
crc_bit
[
14
] ^
crc_bit
[
11
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
4
] ^
crc_bit
[
3
] ^
103
crc_bit
[
2
];
104
new_bit
[
13
] =
crc_bit
[
31
] ^
crc_bit
[
28
] ^
crc_bit
[
25
] ^
crc_bit
[
22
] ^
crc_bit
[
19
] ^
crc_bit
[
18
] ^
crc_bit
[
16
] ^
105
crc_bit
[
14
] ^
crc_bit
[
13
] ^
crc_bit
[
10
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
5
] ^
crc_bit
[
3
] ^
106
crc_bit
[
2
] ^
crc_bit
[
1
];
107
new_bit
[
12
] =
crc_bit
[
31
] ^
crc_bit
[
30
] ^
crc_bit
[
27
] ^
crc_bit
[
24
] ^
crc_bit
[
21
] ^
crc_bit
[
18
] ^
crc_bit
[
17
] ^
108
crc_bit
[
15
] ^
crc_bit
[
13
] ^
crc_bit
[
12
] ^
crc_bit
[
9
] ^
crc_bit
[
6
] ^
crc_bit
[
5
] ^
crc_bit
[
4
] ^
109
crc_bit
[
2
] ^
crc_bit
[
1
] ^
crc_bit
[
0
];
110
new_bit
[
11
] =
crc_bit
[
31
] ^
crc_bit
[
28
] ^
crc_bit
[
27
] ^
crc_bit
[
26
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
crc_bit
[
20
] ^
111
crc_bit
[
17
] ^
crc_bit
[
16
] ^
crc_bit
[
15
] ^
crc_bit
[
14
] ^
crc_bit
[
12
] ^
crc_bit
[
9
] ^
crc_bit
[
4
] ^
112
crc_bit
[
3
] ^
crc_bit
[
1
] ^
crc_bit
[
0
];
113
new_bit
[
10
] =
crc_bit
[
31
] ^
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
26
] ^
crc_bit
[
19
] ^
crc_bit
[
16
] ^
crc_bit
[
14
] ^
114
crc_bit
[
13
] ^
crc_bit
[
9
] ^
crc_bit
[
5
] ^
crc_bit
[
3
] ^
crc_bit
[
2
] ^
crc_bit
[
0
];
115
new_bit
[
9
] =
crc_bit
[
29
] ^
crc_bit
[
24
] ^
crc_bit
[
23
] ^
crc_bit
[
18
] ^
crc_bit
[
13
] ^
crc_bit
[
12
] ^
crc_bit
[
11
] ^
116
crc_bit
[
9
] ^
crc_bit
[
5
] ^
crc_bit
[
4
] ^
crc_bit
[
2
] ^
crc_bit
[
1
];
117
new_bit
[
8
] =
crc_bit
[
31
] ^
crc_bit
[
28
] ^
crc_bit
[
23
] ^
crc_bit
[
22
] ^
crc_bit
[
17
] ^
crc_bit
[
12
] ^
crc_bit
[
11
] ^
118
crc_bit
[
10
] ^
crc_bit
[
8
] ^
crc_bit
[
4
] ^
crc_bit
[
3
] ^
crc_bit
[
1
] ^
crc_bit
[
0
];
119
new_bit
[
7
] =
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
crc_bit
[
23
] ^
crc_bit
[
22
] ^
crc_bit
[
21
] ^
120
crc_bit
[
16
] ^
crc_bit
[
15
] ^
crc_bit
[
10
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
5
] ^
crc_bit
[
3
] ^
121
crc_bit
[
2
] ^
crc_bit
[
0
];
122
new_bit
[
6
] =
crc_bit
[
30
] ^
crc_bit
[
29
] ^
crc_bit
[
25
] ^
crc_bit
[
22
] ^
crc_bit
[
21
] ^
crc_bit
[
20
] ^
crc_bit
[
14
] ^
123
crc_bit
[
11
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
5
] ^
crc_bit
[
4
] ^
crc_bit
[
2
] ^
124
crc_bit
[
1
];
125
new_bit
[
5
] =
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
24
] ^
crc_bit
[
21
] ^
crc_bit
[
20
] ^
crc_bit
[
19
] ^
crc_bit
[
13
] ^
126
crc_bit
[
10
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
5
] ^
crc_bit
[
4
] ^
crc_bit
[
3
] ^
crc_bit
[
1
] ^
127
crc_bit
[
0
];
128
new_bit
[
4
] =
crc_bit
[
31
] ^
crc_bit
[
30
] ^
crc_bit
[
29
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
crc_bit
[
20
] ^
crc_bit
[
19
] ^
129
crc_bit
[
18
] ^
crc_bit
[
15
] ^
crc_bit
[
12
] ^
crc_bit
[
11
] ^
crc_bit
[
8
] ^
crc_bit
[
6
] ^
crc_bit
[
4
] ^
130
crc_bit
[
3
] ^
crc_bit
[
2
] ^
crc_bit
[
0
];
131
new_bit
[
3
] =
crc_bit
[
31
] ^
crc_bit
[
27
] ^
crc_bit
[
25
] ^
crc_bit
[
19
] ^
crc_bit
[
18
] ^
crc_bit
[
17
] ^
crc_bit
[
15
] ^
132
crc_bit
[
14
] ^
crc_bit
[
10
] ^
crc_bit
[
9
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
3
] ^
crc_bit
[
2
] ^
133
crc_bit
[
1
];
134
new_bit
[
2
] =
crc_bit
[
31
] ^
crc_bit
[
30
] ^
crc_bit
[
26
] ^
crc_bit
[
24
] ^
crc_bit
[
18
] ^
crc_bit
[
17
] ^
crc_bit
[
16
] ^
135
crc_bit
[
14
] ^
crc_bit
[
13
] ^
crc_bit
[
9
] ^
crc_bit
[
8
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
2
] ^
136
crc_bit
[
1
] ^
crc_bit
[
0
];
137
new_bit
[
1
] =
crc_bit
[
28
] ^
crc_bit
[
27
] ^
crc_bit
[
24
] ^
crc_bit
[
17
] ^
crc_bit
[
16
] ^
crc_bit
[
13
] ^
crc_bit
[
12
] ^
138
crc_bit
[
11
] ^
crc_bit
[
9
] ^
crc_bit
[
7
] ^
crc_bit
[
6
] ^
crc_bit
[
1
] ^
crc_bit
[
0
];
139
new_bit
[
0
] =
crc_bit
[
31
] ^
crc_bit
[
30
] ^
crc_bit
[
29
] ^
crc_bit
[
28
] ^
crc_bit
[
26
] ^
crc_bit
[
25
] ^
crc_bit
[
24
] ^
140
crc_bit
[
16
] ^
crc_bit
[
12
] ^
crc_bit
[
10
] ^
crc_bit
[
9
] ^
crc_bit
[
6
] ^
crc_bit
[
0
];
141
end
142
143
144
145
146
147
endmodule
148
crc
Definition:
crc.v:41
crc.14613DATA_BYTE_WIDTH
14613DATA_BYTE_WIDTH4
Definition:
crc.v:42
crc.14621new_bit
14621new_bitreg[31:0]
Definition:
crc.v:55
crc.14618crc_out
wire [DATA_BYTE_WIDTH*8 - 1:0] 14618crc_out
Definition:
crc.v:50
crc.14620crc_bit
14620crc_bitwire[31:0]
Definition:
crc.v:54
crc.14615rst
wire 14615rst
Definition:
crc.v:46
crc.14619crc
14619crcreg[31:0]
Definition:
crc.v:53
crc.14617data_in
wire [DATA_BYTE_WIDTH*8 - 1:0] 14617data_in
Definition:
crc.v:49
crc.14614clk
wire 14614clk
Definition:
crc.v:45
crc.14616val_in
wire 14616val_in
Definition:
crc.v:48
x393_sata
host
crc.v
Generated by
1.8.12