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

📄 iqit.v

📁 a H.264/AVC Baseline Decoder
💻 V
📖 第 1 页 / 共 3 页
字号:
		.D3(butterfly_D3),		.F0(butterfly_F0),		.F1(butterfly_F1),		.F2(butterfly_F2),		.F3(butterfly_F3),		.IsHadamard(IsHadamard)		); 		always @ (i4x4_CbCr or OneD_counter or TwoD_counter or blk4x4_rec_counter[3:0] or residual_state or res_AC 		or res_LumaDCBlk_IsZero or res_ChromaDCBlk_Cb_IsZero or res_ChromaDCBlk_Cr_IsZero		or DC_output[0]  or DC_output[1]  or DC_output[2]  or DC_output[3] 		or DC_output[4]  or DC_output[5]  or DC_output[6]  or DC_output[7]		or DC_output[8]  or DC_output[9]  or DC_output[10] or DC_output[11]		or DC_output[12] or DC_output[13] or DC_output[14] or DC_output[15]		or coeffLevel_ext_0  or coeffLevel_ext_1  or coeffLevel_ext_2  or coeffLevel_ext_3  		or coeffLevel_ext_4  or coeffLevel_ext_5  or coeffLevel_ext_6  or coeffLevel_ext_7  		or coeffLevel_ext_8  or coeffLevel_ext_9  or coeffLevel_ext_10 or coeffLevel_ext_11 		or coeffLevel_ext_12 or coeffLevel_ext_13 or coeffLevel_ext_14 or coeffLevel_ext_15		or OneD_output[0]  or OneD_output[1]  or OneD_output[2]  or OneD_output[3] 		or OneD_output[4]  or OneD_output[5]  or OneD_output[6]  or OneD_output[7]		or OneD_output[8]  or OneD_output[9]  or OneD_output[10] or OneD_output[11]		or OneD_output[12] or OneD_output[13] or OneD_output[14] or OneD_output[15]		or rescale_output[0]  or rescale_output[1]  or rescale_output[2]  or rescale_output[3])		if (OneD_counter != 0)			case (OneD_counter)				3'b100:				begin					case (residual_state)						`Intra16x16ACLevel_s:						if (res_LumaDCBlk_IsZero == 1'b1)              butterfly_D0 <= 0;					  else						  case (blk4x4_rec_counter[3:0])							  4'b0000: butterfly_D0 <= DC_output[0];                4'b0001: butterfly_D0 <= DC_output[1];                4'b0010: butterfly_D0 <= DC_output[2];                4'b0011: butterfly_D0 <= DC_output[3];                4'b0100: butterfly_D0 <= DC_output[4];                4'b0101: butterfly_D0 <= DC_output[5];                4'b0110: butterfly_D0 <= DC_output[6];                4'b0111: butterfly_D0 <= DC_output[7];                4'b1000: butterfly_D0 <= DC_output[8];                4'b1001: butterfly_D0 <= DC_output[9];                4'b1010: butterfly_D0 <= DC_output[10];                4'b1011: butterfly_D0 <= DC_output[11];                4'b1100: butterfly_D0 <= DC_output[12];                4'b1101: butterfly_D0 <= DC_output[13];                4'b1110: butterfly_D0 <= DC_output[14];                4'b1111: butterfly_D0 <= DC_output[15];              endcase            `ChromaACLevel_Cb_s:						if(res_ChromaDCBlk_Cb_IsZero)              butterfly_D0 <= 0;            else                 case (i4x4_CbCr)                2'b00:butterfly_D0 <= DC_output[0];                2'b01:butterfly_D0 <= DC_output[1];                2'b10:butterfly_D0 <= DC_output[2];                2'b11:butterfly_D0 <= DC_output[3];              endcase						`ChromaACLevel_Cr_s:						if(res_ChromaDCBlk_Cr_IsZero)              butterfly_D0 <= 0;					  else   					  	case (i4x4_CbCr)								2'b00:butterfly_D0 <= DC_output[4];						    2'b01:butterfly_D0 <= DC_output[5];						    2'b10:butterfly_D0 <= DC_output[6];						    2'b11:butterfly_D0 <= DC_output[7];					    endcase						default:	//luma DC,chroma DC,luma4x4 AC						butterfly_D0 <= (res_AC == 1'b1)? rescale_output[0]:coeffLevel_ext_0;					endcase					butterfly_D1 <= (res_AC == 1'b1)? rescale_output[1]:coeffLevel_ext_1;					butterfly_D2 <= (res_AC == 1'b1)? rescale_output[2]:coeffLevel_ext_5;					butterfly_D3 <= (res_AC == 1'b1)? rescale_output[3]:coeffLevel_ext_6;				end				3'b011:				begin					butterfly_D0 <= (res_AC == 1'b1)? rescale_output[0]:coeffLevel_ext_2;					butterfly_D1 <= (res_AC == 1'b1)? rescale_output[1]:coeffLevel_ext_4;					butterfly_D2 <= (res_AC == 1'b1)? rescale_output[2]:coeffLevel_ext_7;					butterfly_D3 <= (res_AC == 1'b1)? rescale_output[3]:coeffLevel_ext_12;				end				3'b010:				begin					butterfly_D0 <= (res_AC == 1'b1)? rescale_output[0]:coeffLevel_ext_3;					butterfly_D1 <= (res_AC == 1'b1)? rescale_output[1]:coeffLevel_ext_8;					butterfly_D2 <= (res_AC == 1'b1)? rescale_output[2]:coeffLevel_ext_11;					butterfly_D3 <= (res_AC == 1'b1)? rescale_output[3]:coeffLevel_ext_13;				end				3'b001:				begin				   //luma DC				   if (residual_state == `Intra16x16DCLevel_s)				      begin				         butterfly_D0 <= coeffLevel_ext_9;  butterfly_D1 <= coeffLevel_ext_10;				         butterfly_D2 <= coeffLevel_ext_14; butterfly_D3 <= coeffLevel_ext_15;				      end				   //chroma DC					else if (residual_state == `ChromaDCLevel_Cb_s || residual_state == `ChromaDCLevel_Cr_s)					   begin				         butterfly_D0 <= coeffLevel_ext_0; butterfly_D1 <= coeffLevel_ext_1;				         butterfly_D2 <= coeffLevel_ext_2; butterfly_D3 <= coeffLevel_ext_3;				      end				   //AC				   else				      begin				         butterfly_D0 <= rescale_output[0]; butterfly_D1 <= rescale_output[1];				         butterfly_D2 <= rescale_output[2]; butterfly_D3 <= rescale_output[3];				      end				end				default:				   begin					   butterfly_D0 <= 0; butterfly_D1 <= 0;					   butterfly_D2 <= 0; butterfly_D3 <= 0;				   end			endcase		else if (TwoD_counter != 0)			case (TwoD_counter)				3'b100:				begin					butterfly_D0 <= OneD_output[0];butterfly_D1 <= OneD_output[4];					butterfly_D2 <= OneD_output[8];butterfly_D3 <= OneD_output[12];				end				3'b011:				begin					butterfly_D0 <= OneD_output[1];butterfly_D1 <= OneD_output[5];					butterfly_D2 <= OneD_output[9];butterfly_D3 <= OneD_output[13];				end				3'b010:				begin					butterfly_D0 <= OneD_output[2]; butterfly_D1 <= OneD_output[6];					butterfly_D2 <= OneD_output[10];butterfly_D3 <= OneD_output[14];				end				3'b001:				begin					butterfly_D0 <= OneD_output[3]; butterfly_D1 <= OneD_output[7];					butterfly_D2 <= OneD_output[11];butterfly_D3 <= OneD_output[15];				end				default:				begin					butterfly_D0 <= 0; butterfly_D1 <= 0;					butterfly_D2 <= 0; butterfly_D3 <= 0;				end			endcase		else			begin				butterfly_D0 <= 0; butterfly_D1 <= 0;				butterfly_D2 <= 0; butterfly_D3 <= 0;			end		assign QP = (res_luma == 1'b1)? QPy:QPc;	mod6 mod6 (		.qp(QP),		.mod(QPmod6)		);		//	Specify LevelScale parameter: LevelScale_DC & LevelScale_AC 	always @ (rescale_counter or res_DC or QPmod6)		if (rescale_counter != 0 && res_DC == 1'b1)			case (QPmod6)				0:LevelScale_DC <= 10;				1:LevelScale_DC <= 11;				2:LevelScale_DC <= 13;				3:LevelScale_DC <= 14;				4:LevelScale_DC <= 16;				5:LevelScale_DC <= 18;				default:LevelScale_DC <= 0;			endcase		else			LevelScale_DC <= 0; 				always @ (rescale_counter or res_AC or QPmod6)		if (rescale_counter != 0 && res_AC == 1'b1)			case (rescale_counter)        3'b100,3'b010:	//1 & 3 row				case (QPmod6)					3'b000:begin	LevelScale_AC[0] <= 10; LevelScale_AC[1] <= 13; LevelScale_AC[2] <= 10; LevelScale_AC[3] <= 13;	end						3'b001:begin	LevelScale_AC[0] <= 11; LevelScale_AC[1] <= 14; LevelScale_AC[2] <= 11; LevelScale_AC[3] <= 14;	end					3'b010:begin	LevelScale_AC[0] <= 13; LevelScale_AC[1] <= 16; LevelScale_AC[2] <= 13; LevelScale_AC[3] <= 16;	end					3'b011:begin	LevelScale_AC[0] <= 14; LevelScale_AC[1] <= 18; LevelScale_AC[2] <= 14; LevelScale_AC[3] <= 18;	end					3'b100:begin	LevelScale_AC[0] <= 16; LevelScale_AC[1] <= 20; LevelScale_AC[2] <= 16; LevelScale_AC[3] <= 20;	end					3'b101:begin	LevelScale_AC[0] <= 18; LevelScale_AC[1] <= 23; LevelScale_AC[2] <= 18; LevelScale_AC[3] <= 23;	end					default:begin	LevelScale_AC[0] <= 0;  LevelScale_AC[1] <= 0;  LevelScale_AC[2] <= 0;  LevelScale_AC[3] <= 0;	 end				endcase        3'b011,3'b001:	//2 & 4 row				case (QPmod6)					3'b000:begin	LevelScale_AC[0] <= 13; LevelScale_AC[1] <= 16; LevelScale_AC[2] <= 13; LevelScale_AC[3] <= 16;	end						3'b001:begin	LevelScale_AC[0] <= 14; LevelScale_AC[1] <= 18; LevelScale_AC[2] <= 14; LevelScale_AC[3] <= 18;	end					3'b010:begin	LevelScale_AC[0] <= 16; LevelScale_AC[1] <= 20; LevelScale_AC[2] <= 16; LevelScale_AC[3] <= 20;	end					3'b011:begin	LevelScale_AC[0] <= 18; LevelScale_AC[1] <= 23; LevelScale_AC[2] <= 18; LevelScale_AC[3] <= 23;	end					3'b100:begin	LevelScale_AC[0] <= 20; LevelScale_AC[1] <= 25; LevelScale_AC[2] <= 20; LevelScale_AC[3] <= 25;	end					3'b101:begin	LevelScale_AC[0] <= 23; LevelScale_AC[1] <= 29; LevelScale_AC[2] <= 23; LevelScale_AC[3] <= 29;	end					default:begin	LevelScale_AC[0] <= 0;  LevelScale_AC[1] <= 0;  LevelScale_AC[2] <= 0;  LevelScale_AC[3] <= 0;	end				endcase				default:begin	LevelScale_AC[0] <= 0; LevelScale_AC[1] <= 0; LevelScale_AC[2] <= 0; LevelScale_AC[3] <= 0;	end      endcase		else			begin				LevelScale_AC[0] <= 0; LevelScale_AC[1] <= 0;				LevelScale_AC[2] <= 0; LevelScale_AC[3] <= 0;			end				assign LevelScale[0] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[0]:LevelScale_DC);	assign LevelScale[1] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[1]:LevelScale_DC);	assign LevelScale[2] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[2]:LevelScale_DC);	assign LevelScale[3] = (rescale_counter == 0)? 0:((res_AC == 1)? LevelScale_AC[3]:LevelScale_DC);		//	Specify rescale multiplier input 	always @ (residual_state or res_DC or rescale_counter 		or OneD_output[0]  or OneD_output[1]  or OneD_output[2]  or OneD_output[3] 		or OneD_output[4]  or OneD_output[5]  or OneD_output[6]  or OneD_output[7]		or OneD_output[8]  or OneD_output[9]  or OneD_output[10] or OneD_output[11]		or OneD_output[12] or OneD_output[13] or OneD_output[14] or OneD_output[15]		or TwoD_output[0]  or TwoD_output[1]  or TwoD_output[2]  or TwoD_output[3] 		or coeffLevel_ext_0  or coeffLevel_ext_1  or coeffLevel_ext_2  or coeffLevel_ext_3  		or coeffLevel_ext_4  or coeffLevel_ext_5  or coeffLevel_ext_6  or coeffLevel_ext_7  		or coeffLevel_ext_8  or coeffLevel_ext_9  or coeffLevel_ext_10 or coeffLevel_ext_11 		or coeffLevel_ext_12 or coeffLevel_ext_13 or coeffLevel_ext_14 or coeffLevel_ext_15)		if (residual_state == `Intra16x16DCLevel_s && rescale_counter != 0) 	//Intra16x16DC		   begin				mult0_a <= TwoD_output[0]; mult1_a <= TwoD_output[1];				mult2_a <= TwoD_output[2]; mult3_a <= TwoD_output[3];			end		else if (res_DC == 1'b1 && rescale_counter != 0)	//ChromaDC			begin				mult0_a <= OneD_output[12]; mult1_a <= OneD_output[15];				mult2_a <= OneD_output[13]; mult3_a <= OneD_output[14];			end		else if (rescale_counter != 0)						             //AC			case (rescale_counter)				3'b100:					begin					mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_0:0; 					mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_1:coeffLevel_ext_0;					mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_5:coeffLevel_ext_4; 					mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_6:coeffLevel_ext_5;				end				3'b011:				begin					mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_2:coeffLevel_ext_1; 					mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_4:coeffLevel_ext_3;					mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_7:coeffLevel_ext_6; 					mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_12:coeffLevel_ext_11;				end				3'b010:				begin					mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_3:coeffLevel_ext_2;   					mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_8:coeffLevel_ext_7;					mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_11:coeffLevel_ext_10;  					mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_13:coeffLevel_ext_12;				end				3'b001:				begin					mult0_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_9:coeffLevel_ext_8;  					mult1_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_10:coeffLevel_ext_9;					mult2_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_14:coeffLevel_ext_13; 					mult3_a <= (residual_state == `LumaLevel_s)? coeffLevel_ext_15:coeffLevel_ext_14;				end				default:				begin					mult0_a <= 0; mult1_a <= 0;					mult2_a <= 0; mult3_a <= 0;				end			endcase		else 			begin				mult0_a <= 0; mult1_a <= 0;				mult2_a <= 0; mult3_a <= 0;			end		//rescale multiplier 	assign product0 = (rescale_counter == 0)? 0:mult0_a * {1'b0,LevelScale[0]};	assign product1 = (rescale_counter == 0)? 0:mult1_a * {1'b0,LevelScale[1]};	assign product2 = (rescale_counter == 0)? 0:mult2_a * {1'b0,LevelScale[2]};	assign product3 = (rescale_counter == 0)? 0:mult3_a * {1'b0,LevelScale[3]};		always @ (res_AC or res_luma or QPy or QPc)		if (res_AC == 1'b1)			IsLeftShift <= 1'b1;		else if (res_luma == 1'b1)			IsLeftShift <= (QPy < 12)? 1'b0:1'b1;		else

⌨️ 快捷键说明

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