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

📄 intra_pred_pe.v

📁 a H.264/AVC Baseline Decoder
💻 V
📖 第 1 页 / 共 5 页
字号:
				end			endcase		else			begin				PE0_in0 <= 0;	PE0_in1 <= 0;	PE0_in2 <= 0;	PE0_in3 <= 0;				PE0_IsShift 	<= 0;	PE0_IsStore 	<= 0;	PE0_IsClip 	  <= 0;				PE0_full_bypass <= 0;	PE0_round_value <= 0;	PE0_shift_len <= 0;				end	//----	//PE1 |	//----	always @ (mb_type_general or blk4x4_rec_counter or blk4x4_intra_calculate_counter		or Intra4x4_predmode or Intra16x16_predmode or Intra_chroma_predmode		or blkAddrA_availability or mbAddrA_availability or mbAddrB_availability				or Intra_mbAddrA_window0 or Intra_mbAddrA_window1 or Intra_mbAddrA_window2 or Intra_mbAddrA_window3		or Intra_mbAddrB_window0 or Intra_mbAddrB_window1 or Intra_mbAddrB_window2 or Intra_mbAddrB_window3		or Intra_mbAddrD_window				or Intra_mbAddrA_reg4 or Intra_mbAddrA_reg5 or Intra_mbAddrA_reg6 or Intra_mbAddrA_reg7		or Intra_mbAddrB_reg0 or Intra_mbAddrB_reg4 or Intra_mbAddrB_reg5 or Intra_mbAddrB_reg6		or Intra_mbAddrB_reg7 or Intra_mbAddrB_reg8 or Intra_mbAddrB_reg12				or PE1_out_reg 		or blk4x4_pred_output0  or blk4x4_pred_output1 or blk4x4_pred_output2		or blk4x4_pred_output8  or blk4x4_pred_output9 or blk4x4_pred_output12		or blk4x4_pred_output13 or blk4x4_pred_output14		or seed or b_ext or c_ext)		//Intra 4x4																						  		if (mb_type_general[3:2] == 2'b11 && blk4x4_rec_counter < 16)							case (Intra4x4_predmode)				`Intra4x4_Vertical:	//---Vertical---				begin					case (blk4x4_intra_calculate_counter)						4:PE1_in0 <= Intra_mbAddrB_window0;						3:PE1_in0 <= Intra_mbAddrB_window1;						2:PE1_in0 <= Intra_mbAddrB_window2;						1:PE1_in0 <= Intra_mbAddrB_window3;						default:PE1_in0 <= 0;					endcase					PE1_in1 	    <= 0; 	PE1_in2    	    <= 0;	PE1_in3 	  <= 0;						PE1_IsShift     <= 0;	PE1_IsStore     <= 0;	PE1_IsClip    <= 0;						PE1_full_bypass <= 1;	PE1_round_value <= 0;	PE1_shift_len <= 0;				end				`Intra4x4_Horizontal:	//---Horizontal---				begin					PE1_in0 <= (blk4x4_intra_calculate_counter != 0)? Intra_mbAddrA_window1:0;					PE1_in1 	    <= 0; 	PE1_in2 		<= 0;	PE1_in3       <= 0; 						PE1_IsShift     <= 0;	PE1_IsStore     <= 0;	PE1_IsClip    <= 0;					PE1_full_bypass <= 1;	PE1_round_value <= 0;	PE1_shift_len <= 0;				end				`Intra4x4_DC:			//---DC---				begin					PE1_in0 <= (blk4x4_intra_calculate_counter == 4 && blkAddrA_availability == 1)? 								Intra_mbAddrA_window0:0;					PE1_in1 <= (blk4x4_intra_calculate_counter == 4 && blkAddrA_availability == 1)? 								Intra_mbAddrA_window1:0;					PE1_in2 <= (blk4x4_intra_calculate_counter == 4 && blkAddrA_availability == 1)? 								Intra_mbAddrA_window2:0;					PE1_in3 <= (blk4x4_intra_calculate_counter == 4 && blkAddrA_availability == 1)? 								Intra_mbAddrA_window3:0;					PE1_IsStore <= (blk4x4_intra_calculate_counter == 4 && blkAddrA_availability == 1)? 1'b1:1'b0;					PE1_full_bypass <= 1'b0;	PE1_IsShift   <= 0;	PE1_IsClip    <= 0;					PE1_round_value <= 0;	PE1_shift_len <= 0;				end				`Intra4x4_Diagonal_Down_Left:	//---diagonal down-left---				begin					case (blk4x4_intra_calculate_counter)						4:PE1_in0 <= Intra_mbAddrB_window1;						3:PE1_in0 <= blk4x4_pred_output8;						2:PE1_in0 <= blk4x4_pred_output12;						1:PE1_in0 <= blk4x4_pred_output13;						default:PE1_in0 <= 0;					endcase					PE1_in1 <= (blk4x4_intra_calculate_counter == 4)? Intra_mbAddrB_window3:0;					PE1_in2 <= (blk4x4_intra_calculate_counter == 4)? Intra_mbAddrB_window2:0;					PE1_in3 <= 0;					PE1_IsShift <= (blk4x4_intra_calculate_counter == 4)? 1'b1:1'b0;					PE1_IsStore <= 1'b0; PE1_IsClip <= 1'b0;					PE1_full_bypass <= (blk4x4_intra_calculate_counter == 4)? 1'b0:1'b1;					PE1_round_value <= (blk4x4_intra_calculate_counter == 4)? 5'b00010:5'b0; // +2					PE1_shift_len	<= (blk4x4_intra_calculate_counter == 4)? 3'b010  :3'b0; // >>2				end						`Intra4x4_Diagonal_Down_Right:	//---diagonal down-right---				begin					case (blk4x4_intra_calculate_counter)						4:PE1_in0 <= Intra_mbAddrD_window;						3:PE1_in0 <= blk4x4_pred_output0;						2:PE1_in0 <= blk4x4_pred_output1;						1:PE1_in0 <= blk4x4_pred_output2;						default:PE1_in0 <= 0;					endcase					PE1_in1 <= (blk4x4_intra_calculate_counter == 4)? Intra_mbAddrA_window1:0;					PE1_in2 <= (blk4x4_intra_calculate_counter == 4)? Intra_mbAddrA_window0:0;					PE1_in3 <= 0;					PE1_IsShift <= (blk4x4_intra_calculate_counter == 0)? 1'b0:1'b1;					PE1_IsStore <= 1'b0; PE1_IsClip <= 1'b0;						PE1_full_bypass <= (blk4x4_intra_calculate_counter == 4)? 1'b0:1'b1;					PE1_round_value <= (blk4x4_intra_calculate_counter == 0)? 5'b0:5'b00010; // +2					PE1_shift_len	<= (blk4x4_intra_calculate_counter == 0)? 3'b0:3'b010;   // >>2				end				`Intra4x4_Vertical_Right:		//---vertical right---				begin					case (blk4x4_intra_calculate_counter)						4:begin	PE1_in0 <= Intra_mbAddrB_window0;	PE1_in1 <= Intra_mbAddrA_window0;								PE1_in2 <= Intra_mbAddrD_window;				end						3:begin	PE1_in0 <= Intra_mbAddrD_window;	 	PE1_in1 <= Intra_mbAddrB_window1;								PE1_in2 <= Intra_mbAddrB_window0;				end						2:begin	PE1_in0 <= Intra_mbAddrB_window0;	PE1_in1 <= Intra_mbAddrB_window2;								PE1_in2 <= Intra_mbAddrB_window1;				end						1:begin	PE1_in0 <= Intra_mbAddrB_window1;	PE1_in1 <= Intra_mbAddrB_window3;								PE1_in2 <= Intra_mbAddrB_window2;				end								default:begin	PE1_in0 <= 0;PE1_in1 <= 0;PE1_in2 <= 0;	end					endcase					PE1_in3 <= 0;					PE1_IsShift <= (blk4x4_intra_calculate_counter == 0)? 1'b0:1'b1;					PE1_IsStore <= 1'b0; PE1_IsClip <= 1'b0;	PE1_full_bypass <= 1'b0;					PE1_round_value <= (blk4x4_intra_calculate_counter == 0)? 5'b0:5'b00010; // +2					PE1_shift_len	<= (blk4x4_intra_calculate_counter == 0)? 3'b0:3'b010;   // >>2				end				`Intra4x4_Horizontal_Down:		//---horizontal down---				begin					case (blk4x4_intra_calculate_counter)						4:PE1_in0 <= Intra_mbAddrA_window0;						3:PE1_in0 <= Intra_mbAddrD_window;						2:PE1_in0 <= blk4x4_pred_output0;						1:PE1_in0 <= blk4x4_pred_output1;						default:PE1_in0 <= 0;					endcase					PE1_in1 <= (blk4x4_intra_calculate_counter == 4 || blk4x4_intra_calculate_counter == 3)?								Intra_mbAddrA_window1:0;					PE1_in2 <= (blk4x4_intra_calculate_counter == 3)? Intra_mbAddrA_window0:0;					PE1_in3 <= 0;					PE1_IsShift <= (blk4x4_intra_calculate_counter == 3)? 1'b1:1'b0;					PE1_IsStore <= 1'b0; PE1_IsClip <= 1'b0;					PE1_full_bypass <= (blk4x4_intra_calculate_counter == 2 || 										blk4x4_intra_calculate_counter == 1)? 1'b1:1'b0;					PE1_round_value <= (blk4x4_intra_calculate_counter == 4)? 5'd1:									   (blk4x4_intra_calculate_counter == 3)? 5'd2:5'd0; 				 	PE1_shift_len	<= (blk4x4_intra_calculate_counter == 4)? 3'd1:									   (blk4x4_intra_calculate_counter == 3)? 3'd2:3'd0; 				end				`Intra4x4_Vertical_Left:			//---vertical left---				begin					case (blk4x4_intra_calculate_counter)						4:PE1_in0 <= Intra_mbAddrB_window0;						3:PE1_in0 <= blk4x4_pred_output12;						2:PE1_in0 <= blk4x4_pred_output13;						1:PE1_in0 <= blk4x4_pred_output14;						default:PE1_in0 <= 0;					endcase					PE1_in1 <= (blk4x4_intra_calculate_counter == 4)? Intra_mbAddrB_window2:0;					PE1_in2 <= (blk4x4_intra_calculate_counter == 4)? Intra_mbAddrB_window1:0;					PE1_in3 <= 0;					PE1_IsShift <= (blk4x4_intra_calculate_counter == 4)? 1'b1:1'b0; 					PE1_IsStore <= 1'b0; PE1_IsClip <= 1'b0;					PE1_full_bypass <= (blk4x4_intra_calculate_counter == 4)? 1'b0:1'b1;					PE1_round_value <= (blk4x4_intra_calculate_counter == 4)? 5'd2:5'd0; // +2					PE1_shift_len	<= (blk4x4_intra_calculate_counter == 4)? 3'd2:3'd0; // >>2				end				`Intra4x4_Horizontal_Up:			//---horizontal up---				begin					case (blk4x4_intra_calculate_counter)						4:PE1_in0 <= Intra_mbAddrA_window1;						3:PE1_in0 <= Intra_mbAddrA_window1;						2:PE1_in0 <= blk4x4_pred_output8;						1:PE1_in0 <= blk4x4_pred_output9;						default:PE1_in0 <= 0;					endcase					PE1_in1 <= (blk4x4_intra_calculate_counter == 4)? Intra_mbAddrA_window2:							   (blk4x4_intra_calculate_counter == 3)? Intra_mbAddrA_window3:0;					PE1_in2 <= (blk4x4_intra_calculate_counter == 3)? Intra_mbAddrA_window2:0;					PE1_in3 <= 0;					PE1_IsShift <= (blk4x4_intra_calculate_counter == 3)? 1'b1:1'b0;					PE1_IsStore <= 1'b0; PE1_IsClip <= 1'b0;						PE1_full_bypass <= (blk4x4_intra_calculate_counter == 2 || 										blk4x4_intra_calculate_counter == 1)? 1'b1:1'b0;					PE1_round_value <= (blk4x4_intra_calculate_counter == 4)? 5'd1:									   (blk4x4_intra_calculate_counter == 3)? 5'd2:5'd0; 				 	PE1_shift_len	<= (blk4x4_intra_calculate_counter == 4)? 3'd1:									   (blk4x4_intra_calculate_counter == 3)? 3'd2:3'd0; 				end				default:				begin					PE1_in0 <= 0;	PE1_in1 <= 0;	PE1_in2 <= 0;	PE1_in3 <= 0;					PE1_IsShift 	<= 0;	PE1_IsStore 	<= 0;	PE1_IsClip 	  <= 0;					PE1_full_bypass <= 0;	PE1_round_value <= 0;	PE1_shift_len <= 0;					end			endcase		//Intra16x16		else if (mb_type_general[3:2] == 2'b10 && blk4x4_rec_counter < 16)			case (Intra16x16_predmode)				`Intra16x16_Vertical:	//---Vertical---				begin					case (blk4x4_intra_calculate_counter)						4:PE1_in0 <= Intra_mbAddrB_window0;						3:PE1_in0 <= Intra_mbAddrB_window1;						2:PE1_in0 <= Intra_mbAddrB_window2;						1:PE1_in0 <= Intra_mbAddrB_window3;						default:PE1_in0 <= 0;					endcase					PE1_in1 		<= 0; 	PE1_in2 		<= 0;	PE1_in3       <= 0; 							PE1_IsShift 	<= 0;	PE1_IsStore 	<= 0;	PE1_IsClip 	  <= 0;					PE1_full_bypass <= 1;	PE1_round_value <= 0;	PE1_shift_len <= 0;				end				`Intra16x16_Horizontal:	//---Horizontal---				begin					PE1_in0 <= (blk4x4_intra_calculate_counter != 0)? Intra_mbAddrA_window1:0;					PE1_in1 		<= 0; 	PE1_in2 		<= 0;	PE1_in3 	  <= 0; 							PE1_IsShift 	<= 0;	PE1_IsStore 	<= 0;	PE1_IsClip    <= 0;					PE1_full_bypass <= 1;	PE1_round_value <= 0;	PE1_shift_len <= 0;				end				`Intra16x16_DC:	//---DC---				if (blk4x4_rec_counter == 0)					case (blk4x4_intra_calculate_counter)						4:begin		//	E2 + F2 + G2 + H2							PE1_in0 <= (mbAddrA_availability == 0)? 0:Intra_mbAddrA_reg4;							PE1_in1 <= (mbAddrA_availability == 0)? 0:Intra_mbAddrA_reg5;							PE1_in2 <= (mbAddrA_availability == 0)? 0:Intra_mbAddrA_reg6;							PE1_in3 <= (mbAddrA_availability == 0)? 0:Intra_mbAddrA_reg7;							PE1_IsShift 	<= 0;	PE1_IsStore 	<= 1;	PE1_IsClip    <= 0;							PE1_full_bypass <= 0;	PE1_round_value <= 0;	PE1_shift_len <= 0;	end						3:begin		//	PE1 output + F1 + G1 + H1							PE1_in0 <= PE1_out_reg;							PE1_in1 <= (mbAddrB_availability == 0)? 0:Intra_mbAddrB_reg5;							PE1_in2 <= (mbAddrB_availability == 0)? 0:Intra_mbAddrB_reg6;							PE1_in3 <= (mbAddrB_availability == 0)? 0:Intra_mbAddrB_reg7;							PE1_IsShift 	<= 0;	PE1_IsStore 	<= 1;	PE1_IsClip 	  <= 0;							PE1_full_bypass <= 0;	PE1_round_value <= 0;	PE1_shift_len <= 0;	end						2:begin		//	A1 + E1 + I1 + M1							PE1_in0 <= (mbAddrB_availability == 0)? 0:Intra_mbAddrB_reg0;							PE1_in1 <= (mbAddrB_availability == 0)? 0:Intra_mbAddrB_reg4;							PE1_in2 <= (mbAddrB_availability == 0)? 0:Intra_mbAddrB_reg8;							PE1_in3 <= (mbAddrB_availability == 0)? 0:Intra_mbAddrB_reg12;							PE1_IsShift 	<= 0;	PE1_IsStore 	<= 1;	PE1_IsClip 	  <= 0;							PE1_full_bypass <= 0;	PE1_round_value <= 0;	PE1_shift_len <= 0;	end						default:begin							PE1_in0 <= 0;	PE1_in1 <= 0;	PE1_in2 <= 0;	PE1_in3 <= 0;							PE1_IsShift 	<= 0;	PE1_IsStore 	<= 0;	PE1_IsClip 	  <= 0;							PE1_full_bypass <= 0;	PE1_round_value <= 0;	PE1_shift_len <= 0;	end					endcase				else					begin						PE1_in0 <= 0;	PE1_in1 <= 0;	PE1_in2 <= 0;	PE1_in3 <= 0;						PE1_IsShift 	<= 0;	PE1_IsStore 	<= 0;	PE1_IsClip 	  <= 0;						PE1_full_bypass <= 0;	PE1_round_value <= 0;	PE1_shift_len <= 0;					end				`Intra16x16_Plane:	//---plane---				begin					if (blk4x4_intra_calculate_counter != 0)						//blk0,2,4,6,8,10,12,14,calc counter == 3'b100:PE1_in0 <= seed;						//other cases								  :PE1_in0 <= left pixel output						PE1_in0 <= (blk4x4_intra_calculate_counter == 4 && blk4x4_rec_counter[0] == 1'b0)? 									seed:PE1_out_reg;					else						PE1_in0 <= 0;					if (blk4x4_intra_calculate_counter != 0)						//blk0,2,8,10,calc counter == 3'b100:PE1_in1 <= c_ext x 2						//other cases                       :PE1_in1 <= b_ext						PE1_in1 <= (blk4x4_intra_calculate_counter == 4 && !blk4x4_rec_counter[2] && !blk4x4_rec_counter[0])? 									{c_ext[14:0],1'b0}:b_ext;					else						PE1_in1 <= 0;					//blk4,6,12,14,calc counter == 3'b100:PE1_in2 <= c_ext;					//other cases						 :PE1_in2 <= 0					PE1_in2	<= (blk4x4_intra_calculate_counter == 4 && blk4x4_rec_counter[2] && !blk4x4_rec_counter[0])?								c_ext:0;					PE1_in3	<= 0;					PE1_IsShift	 	<= 1'b0;					PE1_IsStore		<= (blk4x4_intra_calculate_counter != 0)? 1'b1:1'b0;					PE1_IsClip 		<= (blk4x4_intra_calculate_counter != 0)? 1'b1:1'b0;					PE1_full_bypass	<= 1'b0;					PE1_round_value <= (blk4x4_intra_calculate_counter != 0)? 5'd16:5'd0;					PE1_shift_len	<= (blk4x4_intra_calculate_counter != 0)? 3'd5 :3'd0;				end			endcase		//Chroma		else if (mb_type_general[3] == 1'b1 && blk4x4_rec_counter > 15)			case (Intra_chroma_predmode)				`Intra_chroma_DC:	//---DC---				if (blk4x4_intra_calculate_counter == 4) 					begin						case ({mbAddrA_availability,mbAddrB_availability})							2'b00,2'b01:							begin								PE1_in0 <= 0;	PE1_in1 <= 0;	PE1_in2 <= 0;	PE1_in3 <= 0;							end							2'b10:							begin								PE1_in0 <= Intra_mbAddrA_window0;	PE1_in1 <= Intra_mbAddrA_window1;								PE1_in2 <= Intra_mbAddrA_window2;	PE1_in3 <= Intra_mbAddrA_window3;							end							2'b11:							begin								PE1_in0 <= (blk4x4_rec_counter == 17 || blk4x4_rec_counter == 21)?											0:Intra_mbAddrA_window0;									PE1_in1 <= (blk4x4_rec_counter == 17 || blk4x4_rec_counter == 21)?											0:Intra_mbAddrA_window1;

⌨️ 快捷键说明

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