1 |
2 |
eexuke |
//--------------------------------------------------------------------------------------------------
|
2 |
|
|
// Design : nova
|
3 |
|
|
// Author(s) : Ke Xu
|
4 |
|
|
// Email : eexuke@yahoo.com
|
5 |
|
|
// File : bitstream_gclk_gen.v
|
6 |
|
|
// Generated : Jan 9,2005
|
7 |
|
|
// Copyright (C) 2008 Ke Xu
|
8 |
|
|
//-------------------------------------------------------------------------------------------------
|
9 |
|
|
// Description
|
10 |
|
|
// Gated clock generation module for bitstream controller
|
11 |
|
|
//-------------------------------------------------------------------------------------------------
|
12 |
|
|
|
13 |
|
|
// synopsys translate_off
|
14 |
|
|
`include "timescale.v"
|
15 |
|
|
// synopsys translate_on
|
16 |
|
|
`include "nova_defines.v"
|
17 |
|
|
|
18 |
|
|
module bitstream_gclk_gen (clk,reset_n,freq_ctrl0,freq_ctrl1,parser_state,nal_unit_state,slice_layer_wo_partitioning_state,
|
19 |
|
|
slice_header_state,slice_data_state,seq_parameter_set_state,pic_parameter_set_state,residual_state,cavlc_decoder_state,
|
20 |
|
|
mb_num,TotalCoeff,start_code_prefix_found,pc_2to0,deblocking_filter_control_present_flag,
|
21 |
|
|
disable_deblocking_filter_idc,end_of_one_residual_block,
|
22 |
|
|
Intra4x4PredMode_mbAddrB_cs_n,mvx_mbAddrB_cs_n,mvy_mbAddrB_cs_n,mvx_mbAddrC_cs_n,mvy_mbAddrC_cs_n,
|
23 |
|
|
LumaLevel_mbAddrB_cs_n,ChromaLevel_Cb_mbAddrB_cs_n,ChromaLevel_Cr_mbAddrB_cs_n,
|
24 |
|
|
trigger_CAVLC,blk4x4_rec_counter,end_of_DCBlk_IQIT,end_of_one_blk4x4_sum,end_of_MB_DEC,disable_DF,bs_dec_counter,
|
25 |
|
|
|
26 |
|
|
gclk_parser,gclk_nal,gclk_slice,gclk_sps,gclk_pps,
|
27 |
|
|
gclk_slice_header,gclk_slice_data,gclk_residual,gclk_cavlc,
|
28 |
|
|
gclk_Intra4x4PredMode_mbAddrB_RF,
|
29 |
|
|
gclk_mvx_mbAddrB_RF,gclk_mvy_mbAddrB_RF,gclk_mvx_mbAddrC_RF,gclk_mvy_mbAddrC_RF,
|
30 |
|
|
gclk_LumaLevel_mbAddrB_RF,gclk_ChromaLevel_Cb_mbAddrB_RF,gclk_ChromaLevel_Cr_mbAddrB_RF,gclk_bs_dec,
|
31 |
|
|
end_of_one_frame);
|
32 |
|
|
input clk;
|
33 |
|
|
input reset_n;
|
34 |
|
|
input freq_ctrl0;
|
35 |
|
|
input freq_ctrl1;
|
36 |
|
|
input [1:0] parser_state;
|
37 |
|
|
input [2:0] nal_unit_state;
|
38 |
|
|
input [1:0] slice_layer_wo_partitioning_state;
|
39 |
|
|
input [3:0] slice_header_state;
|
40 |
|
|
input [3:0] slice_data_state;
|
41 |
|
|
input [3:0] seq_parameter_set_state;
|
42 |
|
|
input [3:0] pic_parameter_set_state;
|
43 |
|
|
input [3:0] residual_state;
|
44 |
|
|
input [3:0] cavlc_decoder_state;
|
45 |
|
|
input [6:0] mb_num;
|
46 |
|
|
input [4:0] TotalCoeff;
|
47 |
|
|
input start_code_prefix_found;
|
48 |
|
|
input [2:0] pc_2to0;
|
49 |
|
|
input deblocking_filter_control_present_flag;
|
50 |
|
|
input [1:0] disable_deblocking_filter_idc;
|
51 |
|
|
input end_of_one_residual_block;
|
52 |
|
|
input Intra4x4PredMode_mbAddrB_cs_n;
|
53 |
|
|
input mvx_mbAddrB_cs_n;
|
54 |
|
|
input mvy_mbAddrB_cs_n;
|
55 |
|
|
input mvx_mbAddrC_cs_n;
|
56 |
|
|
input mvy_mbAddrC_cs_n;
|
57 |
|
|
input LumaLevel_mbAddrB_cs_n;
|
58 |
|
|
input ChromaLevel_Cb_mbAddrB_cs_n;
|
59 |
|
|
input ChromaLevel_Cr_mbAddrB_cs_n;
|
60 |
|
|
input trigger_CAVLC;
|
61 |
|
|
input [4:0] blk4x4_rec_counter;
|
62 |
|
|
input end_of_DCBlk_IQIT;
|
63 |
|
|
input end_of_one_blk4x4_sum;
|
64 |
|
|
input end_of_MB_DEC;
|
65 |
|
|
input disable_DF;
|
66 |
|
|
input [1:0] bs_dec_counter;
|
67 |
|
|
|
68 |
|
|
output gclk_parser;
|
69 |
|
|
output gclk_nal;
|
70 |
|
|
output gclk_slice;
|
71 |
|
|
output gclk_sps;
|
72 |
|
|
output gclk_pps;
|
73 |
|
|
output gclk_slice_header;
|
74 |
|
|
output gclk_slice_data;
|
75 |
|
|
output gclk_residual;
|
76 |
|
|
output gclk_cavlc;
|
77 |
|
|
output gclk_Intra4x4PredMode_mbAddrB_RF;
|
78 |
|
|
output gclk_mvx_mbAddrB_RF;
|
79 |
|
|
output gclk_mvy_mbAddrB_RF;
|
80 |
|
|
output gclk_mvx_mbAddrC_RF;
|
81 |
|
|
output gclk_mvy_mbAddrC_RF;
|
82 |
|
|
output gclk_LumaLevel_mbAddrB_RF;
|
83 |
|
|
output gclk_ChromaLevel_Cb_mbAddrB_RF;
|
84 |
|
|
output gclk_ChromaLevel_Cr_mbAddrB_RF;
|
85 |
|
|
output gclk_bs_dec;
|
86 |
|
|
output end_of_one_frame;
|
87 |
|
|
|
88 |
|
|
//Input pin freq_ctrl0 & freq_ctrl1 can be used to adjust frequency after the chip is fabricated
|
89 |
|
|
reg [16:0] cycles_per_frame;
|
90 |
|
|
always @ (freq_ctrl0 or freq_ctrl1)
|
91 |
|
|
case ({freq_ctrl1,freq_ctrl0})
|
92 |
|
|
2'b00:cycles_per_frame <= `cycles_per_frame0;
|
93 |
|
|
2'b01:cycles_per_frame <= `cycles_per_frame1;
|
94 |
|
|
2'b11:cycles_per_frame <= `cycles_per_frame3;
|
95 |
|
|
default:cycles_per_frame <= `cycles_per_frame2;
|
96 |
|
|
endcase
|
97 |
|
|
|
98 |
|
|
//---------------------------------------------------------------------------------
|
99 |
|
|
// decoding rate control
|
100 |
|
|
//---------------------------------------------------------------------------------
|
101 |
|
|
reg [16:0] frame_cycle_counter;
|
102 |
|
|
reg end_of_one_frame;
|
103 |
|
|
always @ (posedge clk)
|
104 |
|
|
if (reset_n == 1'b0)
|
105 |
|
|
begin
|
106 |
|
|
frame_cycle_counter <= 0;
|
107 |
|
|
end_of_one_frame <= 1'b0;
|
108 |
|
|
end
|
109 |
|
|
else if (parser_state == `start_code_prefix)
|
110 |
|
|
begin
|
111 |
|
|
frame_cycle_counter <= 0;
|
112 |
|
|
end_of_one_frame <= 1'b0;
|
113 |
|
|
end
|
114 |
|
|
else if (frame_cycle_counter < cycles_per_frame)
|
115 |
|
|
begin
|
116 |
|
|
frame_cycle_counter <= frame_cycle_counter + 1;
|
117 |
|
|
end_of_one_frame <= 1'b0;
|
118 |
|
|
end
|
119 |
|
|
else
|
120 |
|
|
begin
|
121 |
|
|
frame_cycle_counter <= 0;
|
122 |
|
|
end_of_one_frame <= 1'b1;
|
123 |
|
|
end
|
124 |
|
|
//PPS and SPS doesn't need rate control,so after PPS/SPS decoding,bitstream parser should continue
|
125 |
|
|
//without waiting for "end_of_one_frame" signal when parser_state == rst_parser.
|
126 |
|
|
//PPS_SPS_complete is used to identify whether next nal_unit to be decoded is PPS/SPS or normal frame
|
127 |
|
|
reg PPS_SPS_complete;
|
128 |
|
|
always @ (posedge gclk_slice or negedge reset_n)
|
129 |
|
|
if (reset_n == 1'b0)
|
130 |
|
|
PPS_SPS_complete <= 1'b0;
|
131 |
|
|
else if (slice_layer_wo_partitioning_state == `slice_header)
|
132 |
|
|
PPS_SPS_complete <= 1'b1;
|
133 |
|
|
|
134 |
|
|
//1.gclk_parser
|
135 |
|
|
wire parser_ena;
|
136 |
|
|
reg l_parser_ena;
|
137 |
|
|
wire gclk_parser;
|
138 |
|
|
assign parser_ena = (
|
139 |
|
|
(parser_state == `rst_parser && (!PPS_SPS_complete || (PPS_SPS_complete && end_of_one_frame))) ||
|
140 |
|
|
(parser_state == `start_code_prefix && start_code_prefix_found == 1'b1) ||
|
141 |
|
|
(nal_unit_state == `rbsp_trailing_one_bit && pc_2to0 == 3'b000) ||
|
142 |
|
|
nal_unit_state == `rbsp_trailing_zero_bits)? 1'b1:1'b0;
|
143 |
|
|
always @ (clk or parser_ena)
|
144 |
|
|
if (!clk) l_parser_ena <= parser_ena;
|
145 |
|
|
assign gclk_parser = l_parser_ena & clk;
|
146 |
|
|
|
147 |
|
|
//2.gclk_nal
|
148 |
|
|
//including rate control for end of one frame
|
149 |
|
|
wire nal_ena;
|
150 |
|
|
reg l_nal_ena;
|
151 |
|
|
wire gclk_nal;
|
152 |
|
|
assign nal_ena = (parser_state == `nal_unit && (
|
153 |
|
|
nal_unit_state == `rst_nal_unit ||
|
154 |
|
|
nal_unit_state == `forbidden_zero_bit_2_nal_unit_type ||
|
155 |
|
|
(((slice_data_state == `skip_run_duration && end_of_MB_DEC)|| slice_data_state == `mb_num_update)
|
156 |
|
|
&& mb_num == 98) ||
|
157 |
|
|
seq_parameter_set_state == `vui_parameter_present_flag_s ||
|
158 |
|
|
pic_parameter_set_state == `deblocking_filter_control_2_redundant_pic_cnt_present_flag ||
|
159 |
|
|
nal_unit_state == `rbsp_trailing_one_bit ||
|
160 |
|
|
nal_unit_state == `rbsp_trailing_zero_bits))? 1'b1:1'b0;
|
161 |
|
|
always @ (clk or nal_ena)
|
162 |
|
|
if (!clk) l_nal_ena <= nal_ena;
|
163 |
|
|
assign gclk_nal = l_nal_ena & clk;
|
164 |
|
|
|
165 |
|
|
//3.gclk_slice:for slice_layer_wo_partitioning_state FSM
|
166 |
|
|
wire slice_ena;
|
167 |
|
|
reg l_slice_ena;
|
168 |
|
|
wire gclk_slice;
|
169 |
|
|
assign slice_ena = (
|
170 |
|
|
(nal_unit_state == `slice_layer_non_IDR_rbsp || nal_unit_state == `slice_layer_IDR_rbsp) &&
|
171 |
|
|
(slice_layer_wo_partitioning_state == `rst_slice_layer_wo_partitioning ||
|
172 |
|
|
(slice_header_state == `slice_qp_delta_s && deblocking_filter_control_present_flag == 1'b0) ||
|
173 |
|
|
(slice_header_state == `disable_deblocking_filter_idc_s && disable_deblocking_filter_idc == 2'b01) ||
|
174 |
|
|
slice_header_state == `slice_beta_offset_div2_s ||
|
175 |
|
|
(((slice_data_state == `skip_run_duration && end_of_MB_DEC) || slice_data_state == `mb_num_update)
|
176 |
|
|
&& mb_num == 98)))? 1'b1:1'b0;
|
177 |
|
|
always @ (clk or slice_ena)
|
178 |
|
|
if (!clk) l_slice_ena <= slice_ena;
|
179 |
|
|
assign gclk_slice = l_slice_ena & clk;
|
180 |
|
|
|
181 |
|
|
//4.gclk_sps
|
182 |
|
|
wire sps_ena;
|
183 |
|
|
reg l_sps_ena;
|
184 |
|
|
wire gclk_sps;
|
185 |
|
|
assign sps_ena = (nal_unit_state == `seq_parameter_set_rbsp)? 1'b1:1'b0;
|
186 |
|
|
always @ (clk or sps_ena)
|
187 |
|
|
if (!clk) l_sps_ena <= sps_ena;
|
188 |
|
|
assign gclk_sps = l_sps_ena & clk;
|
189 |
|
|
|
190 |
|
|
//5.gclk_pps
|
191 |
|
|
wire pps_ena;
|
192 |
|
|
reg l_pps_ena;
|
193 |
|
|
wire gclk_pps;
|
194 |
|
|
|
195 |
|
|
assign pps_ena = (nal_unit_state == `pic_parameter_set_rbsp)? 1'b1:1'b0;
|
196 |
|
|
always @ (clk or pps_ena)
|
197 |
|
|
if (!clk) l_pps_ena <= pps_ena;
|
198 |
|
|
assign gclk_pps = l_pps_ena & clk;
|
199 |
|
|
|
200 |
|
|
//6.gclk_slice_header
|
201 |
|
|
wire slice_header_ena;
|
202 |
|
|
reg l_slice_header_ena;
|
203 |
|
|
wire gclk_slice_header;
|
204 |
|
|
assign slice_header_ena = (slice_layer_wo_partitioning_state == `slice_header)? 1'b1:1'b0;
|
205 |
|
|
always @ (clk or slice_header_ena)
|
206 |
|
|
if (!clk) l_slice_header_ena <= slice_header_ena;
|
207 |
|
|
assign gclk_slice_header = l_slice_header_ena & clk;
|
208 |
|
|
|
209 |
|
|
//7.gclk_slice_data
|
210 |
|
|
//including rate control for skipped macroblock:skip_run_duration
|
211 |
|
|
//including rate control for normal macroblock:mb_num_update
|
212 |
|
|
wire slice_data_ena;
|
213 |
|
|
reg l_slice_data_ena;
|
214 |
|
|
wire gclk_slice_data;
|
215 |
|
|
assign slice_data_ena = (slice_layer_wo_partitioning_state == `slice_data && (
|
216 |
|
|
(slice_data_state != `skip_run_duration && slice_data_state != `residual) ||
|
217 |
|
|
(slice_data_state == `skip_run_duration && end_of_MB_DEC == 1'b1) ||
|
218 |
|
|
(slice_data_state == `residual && end_of_MB_DEC == 1'b1)))? 1'b1:1'b0;
|
219 |
|
|
always @ (clk or slice_data_ena)
|
220 |
|
|
if (!clk) l_slice_data_ena <= slice_data_ena;
|
221 |
|
|
assign gclk_slice_data = l_slice_data_ena & clk;
|
222 |
|
|
|
223 |
|
|
//8.gclk_residual
|
224 |
|
|
wire residual_ena;
|
225 |
|
|
reg l_residual_ena;
|
226 |
|
|
wire gclk_residual;
|
227 |
|
|
|
228 |
|
|
assign residual_ena = (slice_data_state == `residual &&
|
229 |
|
|
(residual_state == `rst_residual ||
|
230 |
|
|
|
231 |
|
|
((residual_state == `Intra16x16DCLevel_s || residual_state == `ChromaDCLevel_Cb_s
|
232 |
|
|
|| residual_state == `ChromaDCLevel_Cr_s) &&
|
233 |
|
|
((end_of_one_residual_block == 1 && TotalCoeff == 0) || end_of_DCBlk_IQIT)) ||
|
234 |
|
|
|
235 |
|
|
((residual_state == `Intra16x16ACLevel_s || residual_state == `Intra16x16ACLevel_0_s
|
236 |
|
|
|| residual_state == `LumaLevel_s || residual_state == `LumaLevel_0_s)
|
237 |
|
|
&& blk4x4_rec_counter == 15 && end_of_one_blk4x4_sum == 1) ||
|
238 |
|
|
(residual_state == `ChromaACLevel_Cb_s && blk4x4_rec_counter == 19 && end_of_one_blk4x4_sum == 1) ||
|
239 |
|
|
(residual_state == `ChromaACLevel_Cr_s && blk4x4_rec_counter == 23 && end_of_one_blk4x4_sum == 1) ||
|
240 |
|
|
(residual_state == `ChromaACLevel_0_s && blk4x4_rec_counter == 23 && end_of_one_blk4x4_sum == 1)))? 1'b1:1'b0;
|
241 |
|
|
|
242 |
|
|
always @ (clk or residual_ena)
|
243 |
|
|
if (!clk) l_residual_ena <= residual_ena;
|
244 |
|
|
assign gclk_residual = l_residual_ena & clk;
|
245 |
|
|
|
246 |
|
|
//9.gclk_cavlc
|
247 |
|
|
wire cavlc_ena;
|
248 |
|
|
reg l_cavlc_ena;
|
249 |
|
|
wire gclk_cavlc;
|
250 |
|
|
assign cavlc_ena = (slice_data_state == `residual && (cavlc_decoder_state != `rst_cavlc_decoder ||
|
251 |
|
|
(cavlc_decoder_state == `rst_cavlc_decoder && trigger_CAVLC)))? 1'b1:1'b0;
|
252 |
|
|
|
253 |
|
|
always @ (clk or cavlc_ena)
|
254 |
|
|
if (!clk) l_cavlc_ena <= cavlc_ena;
|
255 |
|
|
assign gclk_cavlc = l_cavlc_ena & clk;
|
256 |
|
|
|
257 |
|
|
//----------------------------------------------------------------------
|
258 |
|
|
//gclk for bitstream controller register file
|
259 |
|
|
//----------------------------------------------------------------------
|
260 |
|
|
//1.gclk_Intra4x4PredMode_mbAddrB_RF
|
261 |
|
|
reg l_Intra4x4PredMode_mbAddrB_RF_ena;
|
262 |
|
|
wire gclk_Intra4x4PredMode_mbAddrB_RF;
|
263 |
|
|
always @ (clk or Intra4x4PredMode_mbAddrB_cs_n)
|
264 |
|
|
if (!clk) l_Intra4x4PredMode_mbAddrB_RF_ena <= ~Intra4x4PredMode_mbAddrB_cs_n;
|
265 |
|
|
assign gclk_Intra4x4PredMode_mbAddrB_RF = clk & l_Intra4x4PredMode_mbAddrB_RF_ena;
|
266 |
|
|
|
267 |
|
|
//2.gclk_mvx_mbAddrB_RF
|
268 |
|
|
reg l_mvx_mbAddrB_RF_ena;
|
269 |
|
|
wire gclk_mvx_mbAddrB_RF;
|
270 |
|
|
always @ (clk or mvx_mbAddrB_cs_n)
|
271 |
|
|
if (!clk) l_mvx_mbAddrB_RF_ena <= ~mvx_mbAddrB_cs_n;
|
272 |
|
|
assign gclk_mvx_mbAddrB_RF = clk & l_mvx_mbAddrB_RF_ena;
|
273 |
|
|
|
274 |
|
|
//3.gclk_mvy_mbAddrB_RF
|
275 |
|
|
reg l_mvy_mbAddrB_RF_ena;
|
276 |
|
|
wire gclk_mvy_mbAddrB_RF;
|
277 |
|
|
always @ (clk or mvy_mbAddrB_cs_n)
|
278 |
|
|
if (!clk) l_mvy_mbAddrB_RF_ena <= ~mvy_mbAddrB_cs_n;
|
279 |
|
|
assign gclk_mvy_mbAddrB_RF = clk & l_mvy_mbAddrB_RF_ena;
|
280 |
|
|
|
281 |
|
|
//4.gclk_mvx_mbAddrC_RF
|
282 |
|
|
reg l_mvx_mbAddrC_RF_ena;
|
283 |
|
|
wire gclk_mvx_mbAddrC_RF;
|
284 |
|
|
always @ (clk or mvx_mbAddrC_cs_n)
|
285 |
|
|
if (!clk) l_mvx_mbAddrC_RF_ena <= ~mvx_mbAddrC_cs_n;
|
286 |
|
|
assign gclk_mvx_mbAddrC_RF = clk & l_mvx_mbAddrC_RF_ena;
|
287 |
|
|
|
288 |
|
|
//5.gclk_mvy_mbAddrC_RF
|
289 |
|
|
reg l_mvy_mbAddrC_RF_ena;
|
290 |
|
|
wire gclk_mvy_mbAddrC_RF;
|
291 |
|
|
always @ (clk or mvy_mbAddrC_cs_n)
|
292 |
|
|
if (!clk) l_mvy_mbAddrC_RF_ena <= ~mvy_mbAddrC_cs_n;
|
293 |
|
|
assign gclk_mvy_mbAddrC_RF = clk & l_mvy_mbAddrC_RF_ena;
|
294 |
|
|
//----------------------------------------------------------------------
|
295 |
|
|
//gclk for CAVLC_decoder related regfiles
|
296 |
|
|
//----------------------------------------------------------------------
|
297 |
|
|
//1.gclk_LumaLevel_mbAddrB_RF
|
298 |
|
|
reg l_LumaLevel_mbAddrB_RF_ena;
|
299 |
|
|
wire gclk_LumaLevel_mbAddrB_RF;
|
300 |
|
|
always @ (clk or LumaLevel_mbAddrB_cs_n)
|
301 |
|
|
if (!clk) l_LumaLevel_mbAddrB_RF_ena <= ~LumaLevel_mbAddrB_cs_n;
|
302 |
|
|
assign gclk_LumaLevel_mbAddrB_RF = clk & l_LumaLevel_mbAddrB_RF_ena;
|
303 |
|
|
|
304 |
|
|
//2.gclk_ChromaLevel_Cb_mbAddrB_RF
|
305 |
|
|
reg l_ChromaLevel_Cb_mbAddrB_RF_ena;
|
306 |
|
|
wire gclk_ChromaLevel_Cb_mbAddrB_RF;
|
307 |
|
|
always @ (clk or ChromaLevel_Cb_mbAddrB_cs_n)
|
308 |
|
|
if (!clk) l_ChromaLevel_Cb_mbAddrB_RF_ena <= ~ChromaLevel_Cb_mbAddrB_cs_n;
|
309 |
|
|
assign gclk_ChromaLevel_Cb_mbAddrB_RF = clk & l_ChromaLevel_Cb_mbAddrB_RF_ena;
|
310 |
|
|
|
311 |
|
|
//3.gclk_ChromaLevel_Cr_mbAddrB_RF
|
312 |
|
|
reg l_ChromaLevel_Cr_mbAddrB_RF_ena;
|
313 |
|
|
wire gclk_ChromaLevel_Cr_mbAddrB_RF;
|
314 |
|
|
always @ (clk or ChromaLevel_Cr_mbAddrB_cs_n)
|
315 |
|
|
if (!clk) l_ChromaLevel_Cr_mbAddrB_RF_ena <= ~ChromaLevel_Cr_mbAddrB_cs_n;
|
316 |
|
|
assign gclk_ChromaLevel_Cr_mbAddrB_RF = clk & l_ChromaLevel_Cr_mbAddrB_RF_ena;
|
317 |
|
|
|
318 |
|
|
//----------------------------------------------------------------------
|
319 |
|
|
//gclk for boundary strength decoding
|
320 |
|
|
//----------------------------------------------------------------------
|
321 |
|
|
wire bs_dec_ena;
|
322 |
|
|
reg l_bs_dec_ena;
|
323 |
|
|
wire gclk_bs_dec;
|
324 |
|
|
|
325 |
|
|
assign bs_dec_ena = ((end_of_MB_DEC == 1'b1 && disable_DF == 1'b0) || bs_dec_counter != 0)? 1'b1:1'b0;
|
326 |
|
|
always @ (clk or bs_dec_ena)
|
327 |
|
|
if (!clk) l_bs_dec_ena <= bs_dec_ena;
|
328 |
|
|
assign gclk_bs_dec = l_bs_dec_ena & clk;
|
329 |
|
|
|
330 |
|
|
endmodule
|
331 |
|
|
|
332 |
|
|
|
333 |
|
|
|