x393
1.0
FPGAcodeforElphelNC393camera
varlen_encode393.v
Go to the documentation of this file.
1
44
//used the other edge of the clk2x
45
46
module
varlen_encode393
(
47
input
clk
,
// twice frequency - uses negedge inside
48
input
en
,
// will enable registers. 0 - freeze at once
49
input
start
,
// (not faster than each other cycle)
50
input
[
11
:
0
]
d
,
// 12-bit signed
51
output
reg
[
3
:
0
]
l
,
// [3:0] code length
52
output
reg
[
3
:
0
]
l_late
,
// delayed l (sync to q)
53
output
reg
[
10
:
0
]
q
);
// [10:0]code
54
55
reg
[
11
:
0
]
d1
;
56
reg
[
10
:
0
]
q0
;
57
reg
[
2
:
0
]
cycles
;
58
59
wire
this0
= |
d1
[
3
:
0
];
60
wire
this1
= |
d1
[
7
:
4
];
61
wire
this2
= |
d1
[
10
:
8
];
62
wire
[
1
:
0
]
codel0
= {|
d1
[
3
:
2
],
d1
[
3
] || (
d1
[
1
] & ~
d1
[
2
])};
63
wire
[
1
:
0
]
codel1
= {|
d1
[
7
:
6
],
d1
[
7
] || (
d1
[
5
] & ~
d1
[
6
])};
64
wire
[
1
:
0
]
codel2
= {|
d1
[
10
], (
d1
[
9
] & ~
d1
[
10
])};
65
wire
[
3
:
0
]
codel
=
this2
? {
2'b10
,
codel2
[
1
:
0
]} :
66
(
this1
? {
2'b01
,
codel1
[
1
:
0
]} :
67
(
this0
? {
2'b00
,
codel0
[
1
:
0
]} :
4'b1111
));
// after +1 will be 0;
68
69
always
@ (
negedge
clk
)
if
(
en
)
begin
70
cycles
[
2
:
0
] <= {
cycles
[
1
:
0
],
start
};
71
end
72
73
always
@ (
negedge
clk
)
if
(
en
&&
start
)
begin
74
d1
[
11
] <=
d
[
11
];
75
d1
[
10
:
0
] <=
d
[
11
]?-
d
[
10
:
0
]:
d
[
10
:
0
];
76
end
77
78
always
@ (
negedge
clk
)
if
(
en
&
cycles
[
0
])
begin
79
q0
[
10
:
0
] <=
d1
[
11
]?~
d1
[
10
:
0
]:
d1
[
10
:
0
];
80
l
<=
codel
[
3
:
0
]+
1
;
// needed only ASAP, valid only 2 cycles after start
81
end
82
83
always
@ (
negedge
clk
)
if
(
en
&
cycles
[
2
])
begin
84
q
[
10
:
0
] <=
q0
[
10
:
0
];
85
l_late
[
3
:
0
] <=
l
[
3
:
0
];
86
end
87
88
endmodule
varlen_encode393.3103this1
3103this1wire
Definition:
varlen_encode393.v:60
varlen_encode393.3105codel0
3105codel0wire[1:0]
Definition:
varlen_encode393.v:62
varlen_encode393.3104this2
3104this2wire
Definition:
varlen_encode393.v:61
varlen_encode393.3094start
3094start
Definition:
varlen_encode393.v:49
varlen_encode393.3093en
3093en
Definition:
varlen_encode393.v:48
varlen_encode393
Definition:
varlen_encode393.v:46
varlen_encode393.3102this0
3102this0wire
Definition:
varlen_encode393.v:59
varlen_encode393.3099d1
3099d1reg[11:0]
Definition:
varlen_encode393.v:55
varlen_encode393.3108codel
3108codelwire[3:0]
Definition:
varlen_encode393.v:65
varlen_encode393.3106codel1
3106codel1wire[1:0]
Definition:
varlen_encode393.v:63
varlen_encode393.3107codel2
3107codel2wire[1:0]
Definition:
varlen_encode393.v:64
varlen_encode393.3101cycles
3101cyclesreg[2:0]
Definition:
varlen_encode393.v:57
varlen_encode393.3092clk
3092clk
Definition:
varlen_encode393.v:47
varlen_encode393.3096l
reg [3:0] 3096l
Definition:
varlen_encode393.v:51
varlen_encode393.3100q0
3100q0reg[10:0]
Definition:
varlen_encode393.v:56
varlen_encode393.3095d
[11:0] 3095d
Definition:
varlen_encode393.v:50
varlen_encode393.3098q
reg [10:0] 3098q
Definition:
varlen_encode393.v:53
varlen_encode393.3097l_late
reg [3:0] 3097l_late
Definition:
varlen_encode393.v:52
compressor_jp
varlen_encode393.v
Generated by
1.8.12