x393
1.0
FPGAcodeforElphelNC393camera
huffman_merge_code_literal.v
Go to the documentation of this file.
1
40
`timescale 1ns/1ps
41
42
module
huffman_merge_code_literal
(
43
input
clk
,
44
input
in_valid
,
45
input
[
15
:
0
]
huff_code
,
46
input
[
3
:
0
]
huff_code_len
,
// 0 means 16
47
input
[
10
:
0
]
literal
,
48
input
[
3
:
0
]
literal_len
,
49
output
reg
out_valid
,
// latency 5 from input
50
output
reg
[
26
:
0
]
out_bits
,
// latency 5 from input
51
output
reg
[
4
:
0
]
out_len
// latency 5 from input
52
);
53
reg
[
10
:
0
]
lit0
;
54
reg
[
10
:
0
]
lit1
;
55
reg
[
10
:
0
]
lit2
;
56
reg
[
15
:
0
]
huff0
;
// SR-s will be extracted?
57
reg
[
15
:
0
]
huff1
;
58
reg
[
15
:
0
]
huff2
;
59
reg
[
26
:
0
]
data3
;
60
reg
[
3
:
0
]
llen0
;
61
reg
[
3
:
0
]
llen1
;
62
reg
[
3
:
0
]
llen2
;
63
reg
[
4
:
0
]
olen3
;
64
reg
[
3
:
0
]
hlen0
;
65
reg
[
3
:
0
]
hlen1
;
66
reg
[
4
:
0
]
hlen2
;
67
reg
[
3
:
0
]
hlen2m1
;
68
reg
[
1
:
0
]
hlen3m1
;
69
reg
[
3
:
0
]
valid
;
70
71
always
@ (
posedge
clk
)
begin
72
// input layer 0
73
lit0
<=
literal
;
74
llen0
<=
literal_len
;
75
huff0
<=
huff_code
;
76
hlen0
<=
huff_code_len
;
77
valid
[
0
] <=
in_valid
;
78
// layer 1
79
casex
(
llen0
[
3
:
2
])
80
2'b1x
:
lit1
<=
lit0
;
81
2'b01
:
lit1
<= {
lit0
[
6
:
0
],
4'b0
};
82
2'b00
:
lit1
<= {
lit0
[
2
:
0
],
8'b0
};
83
endcase
84
llen1
<=
llen0
;
85
huff1
<=
huff0
;
86
hlen1
<=
hlen0
;
87
valid
[
1
] <=
valid
[
0
];
88
// layer 2
89
case
(
llen1
[
1
:
0
])
90
2'b11
:
lit2
<=
lit1
;
91
2'b10
:
lit2
<= {
lit1
[
9
:
0
],
1'b0
};
92
2'b01
:
lit2
<= {
lit1
[
8
:
0
],
2'b0
};
93
2'b00
:
lit2
<= {
lit1
[
7
:
0
],
3'b0
};
94
endcase
95
llen2
<=
llen1
;
96
huff2
<=
huff1
;
97
hlen2
<= {~(|
hlen1
),
hlen1
};
98
hlen2m1
<=
hlen1
-
1
;
// s0
99
valid
[
2
] <=
valid
[
1
];
100
// layer 3
101
olen3
<=
hlen2
+
llen2
;
102
case
(
hlen2m1
[
3
:
2
])
103
2'b11
:
data3
<= {
huff2
[
15
:
0
],
lit2
[
10
:
0
]};
104
2'b10
:
data3
<= {
huff2
[
11
:
0
],
lit2
[
10
:
0
],
4'b0
};
105
2'b01
:
data3
<= {
huff2
[
7
:
0
],
lit2
[
10
:
0
],
8'b0
};
106
2'b00
:
data3
<= {
huff2
[
3
:
0
],
lit2
[
10
:
0
],
12'b0
};
107
endcase
108
hlen3m1
<=
hlen2m1
[
1
:
0
];
109
valid
[
3
] <=
valid
[
2
];
110
//layer4
111
out_len
<=
olen3
;
112
case
(
hlen3m1
[
1
:
0
])
113
2'b11
:
out_bits
<=
data3
;
114
2'b10
:
out_bits
<= {
data3
[
25
:
0
],
1'b0
};
115
2'b01
:
out_bits
<= {
data3
[
24
:
0
],
2'b0
};
116
2'b00
:
out_bits
<= {
data3
[
23
:
0
],
3'b0
};
117
endcase
118
out_valid
<=
valid
[
3
];
119
end
120
121
122
endmodule
123
huffman_merge_code_literal.2546olen3
2546olen3reg[4:0]
Definition:
huffman_merge_code_literal.v:63
huffman_merge_code_literal.2544llen1
2544llen1reg[3:0]
Definition:
huffman_merge_code_literal.v:61
huffman_merge_code_literal.2537lit1
2537lit1reg[10:0]
Definition:
huffman_merge_code_literal.v:54
huffman_merge_code_literal.2539huff0
2539huff0reg[15:0]
Definition:
huffman_merge_code_literal.v:56
huffman_merge_code_literal.2532literal_len
[ 3:0] 2532literal_len
Definition:
huffman_merge_code_literal.v:48
huffman_merge_code_literal.2533out_valid
reg 2533out_valid
Definition:
huffman_merge_code_literal.v:49
huffman_merge_code_literal.2552valid
2552validreg[3:0]
Definition:
huffman_merge_code_literal.v:69
huffman_merge_code_literal.2531literal
[10:0] 2531literal
Definition:
huffman_merge_code_literal.v:47
huffman_merge_code_literal.2547hlen0
2547hlen0reg[3:0]
Definition:
huffman_merge_code_literal.v:64
huffman_merge_code_literal.2528in_valid
2528in_valid
Definition:
huffman_merge_code_literal.v:44
huffman_merge_code_literal.2540huff1
2540huff1reg[15:0]
Definition:
huffman_merge_code_literal.v:57
huffman_merge_code_literal.2527clk
2527clk
Definition:
huffman_merge_code_literal.v:43
huffman_merge_code_literal.2541huff2
2541huff2reg[15:0]
Definition:
huffman_merge_code_literal.v:58
huffman_merge_code_literal.2550hlen2m1
2550hlen2m1reg[3:0]
Definition:
huffman_merge_code_literal.v:67
huffman_merge_code_literal.2545llen2
2545llen2reg[3:0]
Definition:
huffman_merge_code_literal.v:62
huffman_merge_code_literal.2551hlen3m1
2551hlen3m1reg[1:0]
Definition:
huffman_merge_code_literal.v:68
huffman_merge_code_literal.2549hlen2
2549hlen2reg[4:0]
Definition:
huffman_merge_code_literal.v:66
huffman_merge_code_literal.2534out_bits
reg [26:0] 2534out_bits
Definition:
huffman_merge_code_literal.v:50
huffman_merge_code_literal.2536lit0
2536lit0reg[10:0]
Definition:
huffman_merge_code_literal.v:53
huffman_merge_code_literal
Definition:
huffman_merge_code_literal.v:42
huffman_merge_code_literal.2538lit2
2538lit2reg[10:0]
Definition:
huffman_merge_code_literal.v:55
huffman_merge_code_literal.2548hlen1
2548hlen1reg[3:0]
Definition:
huffman_merge_code_literal.v:65
huffman_merge_code_literal.2535out_len
reg [ 4:0] 2535out_len
Definition:
huffman_merge_code_literal.v:51
huffman_merge_code_literal.2542data3
2542data3reg[26:0]
Definition:
huffman_merge_code_literal.v:59
huffman_merge_code_literal.2529huff_code
[15:0] 2529huff_code
Definition:
huffman_merge_code_literal.v:45
huffman_merge_code_literal.2530huff_code_len
[ 3:0] 2530huff_code_len
Definition:
huffman_merge_code_literal.v:46
huffman_merge_code_literal.2543llen0
2543llen0reg[3:0]
Definition:
huffman_merge_code_literal.v:60
compressor_jp
huffman_merge_code_literal.v
Generated by
1.8.12