⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rec_gclk_gen.v

📁 a H.264/AVC Baseline Decoder
💻 V
📖 第 1 页 / 共 2 页
字号:
//--------------------------------------------------------------------------------------------------// Design    : nova// Author(s) : Ke Xu// Email	   : eexuke@yahoo.com// File      : rec_gclk_gen.v// Generated : Jan 3, 2006// Copyright (C) 2008 Ke Xu                //-------------------------------------------------------------------------------------------------// Description // Gated clock generation module for reconstruction//-------------------------------------------------------------------------------------------------// synopsys translate_off`include "timescale.v"// synopsys translate_on`include "nova_defines.v"module rec_gclk_gen(clk,	//IQIT	end_of_NonZeroCoeff_CAVLC,OneD_counter,TwoD_counter,rescale_counter,	rounding_counter,residual_state,cavlc_decoder_state,	gclk_1D,gclk_2D,gclk_rescale,gclk_rounding,	//Intra pred	mb_num_h,mb_num_v,NextMB_IsSkip,	mb_type_general,blk4x4_rec_counter,blk4x4_sum_counter,blk4x4_intra_preload_counter,	blk4x4_intra_precompute_counter,blk4x4_intra_calculate_counter,	Intra4x4_predmode,Intra16x16_predmode,Intra_chroma_predmode,	gclk_intra_mbAddrA_luma,gclk_intra_mbAddrA_Cb,gclk_intra_mbAddrA_Cr,	gclk_intra_mbAddrB,gclk_intra_mbAddrC_luma,gclk_intra_mbAddrD,gclk_seed,	//Inter pred	blk4x4_inter_preload_counter,gclk_Inter_ref_rf,	//sum	Inter_blk4x4_pred_output_valid,gclk_pred_output,gclk_blk4x4_sum,	//Deblocking filter	end_of_MB_DEC,end_of_BS_DEC,DF_duration,	gclk_end_of_MB_DEC,gclk_DF,	//memory	Intra_mbAddrB_RAM_rd,Intra_mbAddrB_RAM_wr,gclk_Intra_mbAddrB_RAM,	rec_DF_RAM0_cs_n,gclk_rec_DF_RAM0,	rec_DF_RAM1_cs_n,gclk_rec_DF_RAM1,	DF_mbAddrA_RF_rd,DF_mbAddrA_RF_wr,gclk_DF_mbAddrA_RF,	DF_mbAddrB_RAM_rd,DF_mbAddrB_RAM_wr,gclk_DF_mbAddrB_RAM	);	input clk;	//IQIT	input end_of_NonZeroCoeff_CAVLC;	input [2:0] OneD_counter;	input [2:0] TwoD_counter;	input [2:0] rescale_counter;	input [2:0] rounding_counter;	input [3:0] residual_state;	input [3:0] cavlc_decoder_state;	output gclk_1D;	output gclk_2D;	output gclk_rescale;	output gclk_rounding;	//Intra pred	input [3:0] mb_num_h;	input [3:0] mb_num_v;	input NextMB_IsSkip;	input [3:0] mb_type_general;	input [4:0] blk4x4_rec_counter;	input [2:0] blk4x4_sum_counter;	input [2:0] blk4x4_intra_preload_counter;	input [3:0] blk4x4_intra_precompute_counter;	input [2:0] blk4x4_intra_calculate_counter;	input [3:0] Intra4x4_predmode;	input [1:0] Intra16x16_predmode;	input [1:0] Intra_chroma_predmode;	output gclk_intra_mbAddrA_luma;	output gclk_intra_mbAddrA_Cb;	output gclk_intra_mbAddrA_Cr;	output gclk_intra_mbAddrB; 	output gclk_intra_mbAddrC_luma;		output gclk_intra_mbAddrD;	output gclk_seed;	//Inter pred	input [5:0] blk4x4_inter_preload_counter;	output gclk_Inter_ref_rf;	//sum	input [1:0] Inter_blk4x4_pred_output_valid;	output gclk_pred_output;	output gclk_blk4x4_sum;	//DF	input end_of_MB_DEC;	input end_of_BS_DEC;	input DF_duration;	output gclk_end_of_MB_DEC;	output gclk_DF;	//memory	input Intra_mbAddrB_RAM_rd;	input Intra_mbAddrB_RAM_wr;	output gclk_Intra_mbAddrB_RAM;	input rec_DF_RAM0_cs_n;	output gclk_rec_DF_RAM0;	input rec_DF_RAM1_cs_n;	output gclk_rec_DF_RAM1;	input DF_mbAddrA_RF_rd,DF_mbAddrA_RF_wr;	output gclk_DF_mbAddrA_RF;	input DF_mbAddrB_RAM_rd,DF_mbAddrB_RAM_wr;	output gclk_DF_mbAddrB_RAM;		parameter rst_residual		    = 4'b0000;	parameter Intra16x16DCLevel_s	= 4'b0001;	parameter Intra16x16ACLevel_s	= 4'b0011;	parameter Intra16x16ACLevel_0_s = 4'b0010;	parameter LumaLevel_s			= 4'b0110;	parameter LumaLevel_0_s		    = 4'b0111;	parameter ChromaDCLevel_Cb_s    = 4'b0101;	parameter ChromaDCLevel_Cr_s	= 4'b0100;	parameter ChromaACLevel_Cb_s	= 4'b1100;	parameter ChromaACLevel_Cr_s	= 4'b1101;		parameter Intra4x4_Vertical 			= 4'b0000;	parameter Intra4x4_Horizontal 			= 4'b0001;	parameter Intra4x4_DC 					= 4'b0010;	parameter Intra4x4_Diagonal_Down_Left 	= 4'b0011;	parameter Intra4x4_Diagonal_Down_Right 	= 4'b0100;	parameter Intra4x4_Vertical_Right 		= 4'b0101;	parameter Intra4x4_Horizontal_Down 		= 4'b0110;	parameter Intra4x4_Vertical_Left 		= 4'b0111;	parameter Intra4x4_Horizontal_Up 		= 4'b1000;		parameter Intra16x16_Plane 			= 2'b11;	parameter Intra_chroma_Plane		= 2'b11;		parameter NumCoeffTrailingOnes_LUT = 4'b0010;	//-------------------------------------------------	//IQIT	//-------------------------------------------------	//gclk_end_of_one_residual_block	//reg l_end_of_one_residual_block;	//wire gclk_end_of_one_residual_block;	//always @ (clk or end_of_one_residual_block)	//	if (!clk) l_end_of_one_residual_block <= end_of_one_residual_block;	//assign gclk_end_of_one_residual_block = clk & l_end_of_one_residual_block;		//gclk_endof1NonZeroCoeffResBlk	//reg l_end_of_NonZeroCoeff_CAVLC;	//wire gclk_endof1NonZeroCoeffResBlk;	//always @ (clk or end_of_NonZeroCoeff_CAVLC)	//	if (!clk) l_end_of_NonZeroCoeff_CAVLC <= end_of_NonZeroCoeff_CAVLC;	//assign gclk_endof1NonZeroCoeffResBlk = clk & l_end_of_NonZeroCoeff_CAVLC;		//gclk_1D	wire OneD_en;	reg l_OneD_en;	wire gclk_1D;	assign OneD_en = (	//	trap DC case after CAVLC:residual_state is still available now 	(end_of_NonZeroCoeff_CAVLC == 1'b1 && cavlc_decoder_state != `NumCoeffTrailingOnes_LUT &&	(residual_state == `Intra16x16DCLevel_s || residual_state == `ChromaDCLevel_Cb_s || 	residual_state == `ChromaDCLevel_Cr_s)) ||      //	trap AC case after rescale:residual_state is still available now	((residual_state == `Intra16x16ACLevel_s || residual_state == `LumaLevel_s || residual_state == `ChromaACLevel_Cb_s ||	residual_state == `ChromaACLevel_Cr_s) && rescale_counter == 3'b100)	||	//	trap internal loop	OneD_counter != 0);	always @ (clk or OneD_en)		if (!clk) l_OneD_en <= OneD_en;	assign gclk_1D = clk & l_OneD_en; 		//gclk_2D	wire TwoD_en;	reg l_TwoD_en;	wire gclk_2D;	assign TwoD_en = ((OneD_counter == 3'b001 && residual_state != `ChromaDCLevel_Cb_s && residual_state != `ChromaDCLevel_Cr_s) 					|| TwoD_counter != 0);	always @ (clk or TwoD_en)		if (!clk) l_TwoD_en <= TwoD_en;	assign gclk_2D = clk & l_TwoD_en;		//gclk_rescale	wire rescale_en;	reg l_rescale_en;	wire gclk_rescale;	assign rescale_en = (	//trap AC after CAVLC except all zero coeffs case   	(end_of_NonZeroCoeff_CAVLC == 1'b1 && cavlc_decoder_state != `NumCoeffTrailingOnes_LUT && (   	residual_state == `Intra16x16ACLevel_s || residual_state == `LumaLevel_s ||    	residual_state == `ChromaACLevel_Cb_s  || residual_state == `ChromaACLevel_Cr_s)) ||    	//trap DC case after IDCT,chromaDC:after 1D-IDCT,lumaDC:after 2D-IDCT	((residual_state == `Intra16x16DCLevel_s && TwoD_counter == 3'b100) ||	((residual_state == `ChromaDCLevel_Cb_s || residual_state == `ChromaDCLevel_Cr_s) && OneD_counter == 3'b001)) ||	//trap internal loop	rescale_counter != 0);	always @ (clk or rescale_en)		if (!clk) l_rescale_en <= rescale_en;	and gc_rescale (gclk_rescale,clk,l_rescale_en);		//gclk_rounding	wire rounding_en;	reg l_rounding_en;	wire gclk_rounding;	assign rounding_en = (((residual_state == `Intra16x16ACLevel_s || residual_state == `LumaLevel_s ||	residual_state == `ChromaACLevel_Cb_s || residual_state == `ChromaACLevel_Cr_s) && TwoD_counter == 3'b100)	|| rounding_counter !=0)?1'b1:1'b0;	always @ (clk or rounding_en)		if (!clk) l_rounding_en <= rounding_en;	assign gclk_rounding = clk & l_rounding_en;	//-------------------------------------------------	//Intra pred	//-------------------------------------------------	//1.gclk_intra_mbAddrA_luma @ Intra_pred_reg_ctrl.v	//  For intra pred,update after every blk4x4 is summed	//  For inter pred,update after blk4x4 5,7,13,15 is summed	wire intra_mbAddrA_luma_ena;	reg l_intra_mbAddrA_luma_ena;	wire gclk_intra_mbAddrA_luma;	wire Is_LumaRightMostBlk4x4;		assign Is_LumaRightMostBlk4x4 = (blk4x4_rec_counter == 5 || blk4x4_rec_counter == 7 || 									blk4x4_rec_counter == 13 || blk4x4_rec_counter == 15);	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -