x393
1.0
FPGAcodeforElphelNC393camera
scrambler.v
Go to the documentation of this file.
1
39
/*
40
Algorithm is taken from the doc, p.565. TODO make it parallel
41
*/
42
// TODO another widths support
43
module
scrambler
#(
44
parameter
DATA_BYTE_WIDTH
=
4
45
)
46
(
47
input
wire
clk
,
48
input
wire
rst
,
49
50
input
wire
val_in
,
51
input
wire
[
DATA_BYTE_WIDTH
*
8
-
1
:
0
]
data_in
,
52
output
wire
[
DATA_BYTE_WIDTH
*
8
-
1
:
0
]
data_out
53
);
54
55
reg
[
15
:
0
]
now
;
56
reg
[
31
:
0
]
next
;
57
58
always
@ (
posedge
clk
)
59
now
<=
rst
?
16'hf0f6
:
val_in
?
next
[
31
:
16
] :
now
;
60
61
assign
data_out
=
val_in
?
data_in
^
next
:
data_in
;
62
63
always
@ (*)
64
/* if (rst)
65
next = 32'h0;
66
else**/
67
begin
68
next
[
31
] =
now
[
12
] ^
now
[
10
] ^
now
[
7
] ^
now
[
3
] ^
now
[
1
] ^
now
[
0
];
69
next
[
30
] =
now
[
15
] ^
now
[
14
] ^
now
[
12
] ^
now
[
11
] ^
now
[
9
] ^
now
[
6
] ^
now
[
3
] ^
now
[
2
] ^
now
[
0
];
70
next
[
29
] =
now
[
15
] ^
now
[
13
] ^
now
[
12
] ^
now
[
11
] ^
now
[
10
] ^
now
[
8
] ^
now
[
5
] ^
now
[
3
] ^
now
[
2
] ^
now
[
1
];
71
next
[
28
] =
now
[
14
] ^
now
[
12
] ^
now
[
11
] ^
now
[
10
] ^
now
[
9
] ^
now
[
7
] ^
now
[
4
] ^
now
[
2
] ^
now
[
1
] ^
now
[
0
];
72
next
[
27
] =
now
[
15
] ^
now
[
14
] ^
now
[
13
] ^
now
[
12
] ^
now
[
11
] ^
now
[
10
] ^
now
[
9
] ^
now
[
8
] ^
now
[
6
] ^
now
[
1
] ^
now
[
0
];
73
next
[
26
] =
now
[
15
] ^
now
[
13
] ^
now
[
11
] ^
now
[
10
] ^
now
[
9
] ^
now
[
8
] ^
now
[
7
] ^
now
[
5
] ^
now
[
3
] ^
now
[
0
];
74
next
[
25
] =
now
[
15
] ^
now
[
10
] ^
now
[
9
] ^
now
[
8
] ^
now
[
7
] ^
now
[
6
] ^
now
[
4
] ^
now
[
3
] ^
now
[
2
];
75
next
[
24
] =
now
[
14
] ^
now
[
9
] ^
now
[
8
] ^
now
[
7
] ^
now
[
6
] ^
now
[
5
] ^
now
[
3
] ^
now
[
2
] ^
now
[
1
];
76
next
[
23
] =
now
[
13
] ^
now
[
8
] ^
now
[
7
] ^
now
[
6
] ^
now
[
5
] ^
now
[
4
] ^
now
[
2
] ^
now
[
1
] ^
now
[
0
];
77
next
[
22
] =
now
[
15
] ^
now
[
14
] ^
now
[
7
] ^
now
[
6
] ^
now
[
5
] ^
now
[
4
] ^
now
[
1
] ^
now
[
0
];
78
next
[
21
] =
now
[
15
] ^
now
[
13
] ^
now
[
12
] ^
now
[
6
] ^
now
[
5
] ^
now
[
4
] ^
now
[
0
];
79
next
[
20
] =
now
[
15
] ^
now
[
11
] ^
now
[
5
] ^
now
[
4
];
80
next
[
19
] =
now
[
14
] ^
now
[
10
] ^
now
[
4
] ^
now
[
3
];
81
next
[
18
] =
now
[
13
] ^
now
[
9
] ^
now
[
3
] ^
now
[
2
];
82
next
[
17
] =
now
[
12
] ^
now
[
8
] ^
now
[
2
] ^
now
[
1
];
83
next
[
16
] =
now
[
11
] ^
now
[
7
] ^
now
[
1
] ^
now
[
0
];
84
85
next
[
15
] =
now
[
15
] ^
now
[
14
] ^
now
[
12
] ^
now
[
10
] ^
now
[
6
] ^
now
[
3
] ^
now
[
0
];
86
next
[
14
] =
now
[
15
] ^
now
[
13
] ^
now
[
12
] ^
now
[
11
] ^
now
[
9
] ^
now
[
5
] ^
now
[
3
] ^
now
[
2
];
87
next
[
13
] =
now
[
14
] ^
now
[
12
] ^
now
[
11
] ^
now
[
10
] ^
now
[
8
] ^
now
[
4
] ^
now
[
2
] ^
now
[
1
];
88
next
[
12
] =
now
[
13
] ^
now
[
11
] ^
now
[
10
] ^
now
[
9
] ^
now
[
7
] ^
now
[
3
] ^
now
[
1
] ^
now
[
0
];
89
next
[
11
] =
now
[
15
] ^
now
[
14
] ^
now
[
10
] ^
now
[
9
] ^
now
[
8
] ^
now
[
6
] ^
now
[
3
] ^
now
[
2
] ^
now
[
0
];
90
next
[
10
] =
now
[
15
] ^
now
[
13
] ^
now
[
12
] ^
now
[
9
] ^
now
[
8
] ^
now
[
7
] ^
now
[
5
] ^
now
[
3
] ^
now
[
2
] ^
now
[
1
];
91
next
[
9
] =
now
[
14
] ^
now
[
12
] ^
now
[
11
] ^
now
[
8
] ^
now
[
7
] ^
now
[
6
] ^
now
[
4
] ^
now
[
2
] ^
now
[
1
] ^
now
[
0
];
92
next
[
8
] =
now
[
15
] ^
now
[
14
] ^
now
[
13
] ^
now
[
12
] ^
now
[
11
] ^
now
[
10
] ^
now
[
7
] ^
now
[
6
] ^
now
[
5
] ^
now
[
1
] ^
now
[
0
];
93
next
[
7
] =
now
[
15
] ^
now
[
13
] ^
now
[
11
] ^
now
[
10
] ^
now
[
9
] ^
now
[
6
] ^
now
[
5
] ^
now
[
4
] ^
now
[
3
] ^
now
[
0
];
94
next
[
6
] =
now
[
15
] ^
now
[
10
] ^
now
[
9
] ^
now
[
8
] ^
now
[
5
] ^
now
[
4
] ^
now
[
2
];
95
next
[
5
] =
now
[
14
] ^
now
[
9
] ^
now
[
8
] ^
now
[
7
] ^
now
[
4
] ^
now
[
3
] ^
now
[
1
];
96
next
[
4
] =
now
[
13
] ^
now
[
8
] ^
now
[
7
] ^
now
[
6
] ^
now
[
3
] ^
now
[
2
] ^
now
[
0
];
97
next
[
3
] =
now
[
15
] ^
now
[
14
] ^
now
[
7
] ^
now
[
6
] ^
now
[
5
] ^
now
[
3
] ^
now
[
2
] ^
now
[
1
];
98
next
[
2
] =
now
[
14
] ^
now
[
13
] ^
now
[
6
] ^
now
[
5
] ^
now
[
4
] ^
now
[
2
] ^
now
[
1
] ^
now
[
0
];
99
next
[
1
] =
now
[
15
] ^
now
[
14
] ^
now
[
13
] ^
now
[
5
] ^
now
[
4
] ^
now
[
1
] ^
now
[
0
];
100
next
[
0
] =
now
[
15
] ^
now
[
13
] ^
now
[
4
] ^
now
[
0
];
101
end
102
103
104
endmodule
scrambler.15590DATA_BYTE_WIDTH
15590DATA_BYTE_WIDTH4
Definition:
scrambler.v:44
scrambler.15596now
15596nowreg[15:0]
Definition:
scrambler.v:55
scrambler.15594data_in
wire [DATA_BYTE_WIDTH*8 - 1:0] 15594data_in
Definition:
scrambler.v:51
scrambler
Definition:
scrambler.v:43
scrambler.15595data_out
wire [DATA_BYTE_WIDTH*8 - 1:0] 15595data_out
Definition:
scrambler.v:52
scrambler.15591clk
wire 15591clk
Definition:
scrambler.v:47
scrambler.15593val_in
wire 15593val_in
Definition:
scrambler.v:50
scrambler.15592rst
wire 15592rst
Definition:
scrambler.v:48
scrambler.15597next
15597nextreg[31:0]
Definition:
scrambler.v:56
x393_sata
host
scrambler.v
Generated by
1.8.12