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

📄 df_reg_ctrl.v

📁 a H.264/AVC Baseline Decoder
💻 V
📖 第 1 页 / 共 2 页
字号:
				2'd3:buf2_3 <= {q3_MW,q2_MW,q1_MW,q0_MW};			endcase		//transpose update,"p":3,11,19,27,35,43  "q":21,30,38,46		else if (buf2_transpose)			begin 				if (buf2_transpose_p)	//"p":3,11,19,27,35,43					case (one_edge_counter_MW)						2'd0:begin	buf2_0[7:0]   <= p3_MW;	buf2_1[7:0]   <= p2_MW;									buf2_2[7:0]   <= p1_MW;	buf2_3[7:0]   <= p0_MW;	end						2'd1:begin	buf2_0[15:8]  <= p3_MW;	buf2_1[15:8]  <= p2_MW;									buf2_2[15:8]  <= p1_MW;	buf2_3[15:8]  <= p0_MW;	end						2'd2:begin	buf2_0[23:16] <= p3_MW;	buf2_1[23:16] <= p2_MW;									buf2_2[23:16] <= p1_MW;	buf2_3[23:16] <= p0_MW;	end						2'd3:begin	buf2_0[31:24] <= p3_MW;	buf2_1[31:24] <= p2_MW;									buf2_2[31:24] <= p1_MW;	buf2_3[31:24] <= p0_MW;	end					endcase				else					//"q":21,30,38,46					case (one_edge_counter_MW)						2'd0:begin	buf2_0[7:0]   <= q0_MW;	buf2_1[7:0]   <= q1_MW;									buf2_2[7:0]   <= q2_MW;	buf2_3[7:0]   <= q3_MW;	end						2'd1:begin	buf2_0[15:8]  <= q0_MW;	buf2_1[15:8]  <= q1_MW;									buf2_2[15:8]  <= q2_MW;	buf2_3[15:8]  <= q3_MW;	end						2'd2:begin	buf2_0[23:16] <= q0_MW;	buf2_1[23:16] <= q1_MW;									buf2_2[23:16] <= q2_MW;	buf2_3[23:16] <= q3_MW;	end						2'd3:begin	buf2_0[31:24] <= q0_MW;	buf2_1[31:24] <= q1_MW;									buf2_2[31:24] <= q2_MW;	buf2_3[31:24] <= q3_MW;	end					endcase			end		//------------------------------------------------------	//buf3	//------------------------------------------------------	wire buf3_no_transpose;	//buf3 updated without transpose	wire buf3_transpose;		//buf3 updated after   transpose	wire buf3_transpose_p;	//buf3 transpose and buf1 stores "p" position pixels	assign buf3_no_transpose = (DF_edge_counter_MW == 6'd3  || DF_edge_counter_MW == 6'd19);	assign buf3_transpose = (	DF_edge_counter_MW == 6'd7  || 		DF_edge_counter_MW == 6'd11 || DF_edge_counter_MW == 6'd23 || DF_edge_counter_MW == 6'd27 || 		DF_edge_counter_MW == 6'd25 || DF_edge_counter_MW == 6'd35 || DF_edge_counter_MW == 6'd43);	assign buf3_transpose_p = (DF_edge_counter_MW == 6'd7  || DF_edge_counter_MW == 6'd23);  	always @ (posedge gclk_DF or negedge reset_n)		if (reset_n == 1'b0)			begin 				buf3_0 <= 0;	buf3_1 <= 0;	buf3_2 <= 0;	buf3_3 <= 0;			end		//no transpose update,always "q" position (right or down of the edge to be filtered)		else if (buf3_no_transpose)			case (one_edge_counter_MW)				2'd0:buf3_0 <= {q3_MW,q2_MW,q1_MW,q0_MW};				2'd1:buf3_1 <= {q3_MW,q2_MW,q1_MW,q0_MW};				2'd2:buf3_2 <= {q3_MW,q2_MW,q1_MW,q0_MW};				2'd3:buf3_3 <= {q3_MW,q2_MW,q1_MW,q0_MW};			endcase		//transpose update,"p":7,23  "q":11,25,27,35,43		else if (buf3_transpose)			begin 				if (buf3_transpose_p)	//"p":7,23					case (one_edge_counter_MW)						2'd0:begin	buf3_0[7:0]   <= p3_MW;	buf3_1[7:0]   <= p2_MW;									buf3_2[7:0]   <= p1_MW;	buf3_3[7:0]   <= p0_MW;	end						2'd1:begin	buf3_0[15:8]  <= p3_MW;	buf3_1[15:8]  <= p2_MW;									buf3_2[15:8]  <= p1_MW;	buf3_3[15:8]  <= p0_MW;	end						2'd2:begin	buf3_0[23:16] <= p3_MW;	buf3_1[23:16] <= p2_MW;									buf3_2[23:16] <= p1_MW;	buf3_3[23:16] <= p0_MW;	end						2'd3:begin	buf3_0[31:24] <= p3_MW;	buf3_1[31:24] <= p2_MW;									buf3_2[31:24] <= p1_MW;	buf3_3[31:24] <= p0_MW;	end					endcase				else					//"q":11,25,35,43					case (one_edge_counter_MW)						2'd0:begin	buf3_0[7:0]   <= q0_MW;	buf3_1[7:0]   <= q1_MW;									buf3_2[7:0]   <= q2_MW;	buf3_3[7:0]   <= q3_MW;	end						2'd1:begin	buf3_0[15:8]  <= q0_MW;	buf3_1[15:8]  <= q1_MW;									buf3_2[15:8]  <= q2_MW;	buf3_3[15:8]  <= q3_MW;	end						2'd2:begin	buf3_0[23:16] <= q0_MW;	buf3_1[23:16] <= q1_MW;									buf3_2[23:16] <= q2_MW;	buf3_3[23:16] <= q3_MW;	end						2'd3:begin	buf3_0[31:24] <= q0_MW;	buf3_1[31:24] <= q1_MW;									buf3_2[31:24] <= q2_MW;	buf3_3[31:24] <= q3_MW;	end					endcase			end	//------------------------------------------------------	//T0:always updated after transpose,always "p" position	//------------------------------------------------------	wire t0_transpose;		//t0 updated after transpose	assign t0_transpose = (	DF_edge_counter_MW == 6'd4  || DF_edge_counter_MW == 6'd8  || DF_edge_counter_MW == 6'd12 || DF_edge_counter_MW == 6'd36 || 	DF_edge_counter_MW == 6'd44 || DF_edge_counter_MW == 6'd15 || DF_edge_counter_MW == 6'd20 || DF_edge_counter_MW == 6'd24 || 	DF_edge_counter_MW == 6'd28 || DF_edge_counter_MW == 6'd31 || DF_edge_counter_MW == 6'd39 || DF_edge_counter_MW == 6'd47);	always @ (posedge gclk_DF or negedge reset_n)		if (reset_n == 1'b0)			begin 				t0_0 <= 0;	t0_1 <= 0;	t0_2 <= 0;	t0_3 <= 0;			end		//always transpose update for "p" position		else if (t0_transpose)			case (one_edge_counter_MW)				2'd0:begin	t0_0[7:0]   <= p3_MW;	t0_1[7:0]   <= p2_MW;							t0_2[7:0]   <= p1_MW;	t0_3[7:0]   <= p0_MW;	end				2'd1:begin	t0_0[15:8]  <= p3_MW;	t0_1[15:8]  <= p2_MW;							t0_2[15:8]  <= p1_MW;	t0_3[15:8]  <= p0_MW;	end				2'd2:begin	t0_0[23:16] <= p3_MW;	t0_1[23:16] <= p2_MW;							t0_2[23:16] <= p1_MW;	t0_3[23:16] <= p0_MW;	end				2'd3:begin	t0_0[31:24] <= p3_MW;	t0_1[31:24] <= p2_MW;							t0_2[31:24] <= p1_MW;	t0_3[31:24] <= p0_MW;	end			endcase	//------------------------------------------------------	//T1:always updated after transpose	//------------------------------------------------------	wire t1_transpose;		//t1 updated after   transpose	wire t1_transpose_q;	//t1 transpose and t1 stores "q" position pixels	assign t1_transpose = (	DF_edge_counter_MW == 6'd13 || DF_edge_counter_MW == 6'd37 || DF_edge_counter_MW == 6'd45 || DF_edge_counter_MW == 6'd9  || 	DF_edge_counter_MW == 6'd21 || DF_edge_counter_MW == 6'd25 || DF_edge_counter_MW == 6'd29 || DF_edge_counter_MW == 6'd31 || 	DF_edge_counter_MW == 6'd39 || DF_edge_counter_MW == 6'd47);		assign t1_transpose_q = (DF_edge_counter_MW == 6'd31 || DF_edge_counter_MW == 6'd39 || 							 DF_edge_counter_MW == 6'd47);	always @ (posedge gclk_DF or negedge reset_n)		if (reset_n == 1'b0)			begin 				t1_0 <= 0;	t1_1 <= 0;	t1_2 <= 0;	t1_3 <= 0;			end		else if (t1_transpose && !t1_transpose_q)	//t1 transpose "p"			case (one_edge_counter_MW)				2'd0:begin	t1_0[7:0]   <= p3_MW;	t1_1[7:0]   <= p2_MW;							t1_2[7:0]   <= p1_MW;	t1_3[7:0]   <= p0_MW;	end				2'd1:begin	t1_0[15:8]  <= p3_MW;	t1_1[15:8]  <= p2_MW;							t1_2[15:8]  <= p1_MW;	t1_3[15:8]  <= p0_MW;	end				2'd2:begin	t1_0[23:16] <= p3_MW;	t1_1[23:16] <= p2_MW;							t1_2[23:16] <= p1_MW;	t1_3[23:16] <= p0_MW;	end				2'd3:begin	t1_0[31:24] <= p3_MW;	t1_1[31:24] <= p2_MW;							t1_2[31:24] <= p1_MW;	t1_3[31:24] <= p0_MW;	end			endcase		else if (t1_transpose)						//t1 transpose "q"			case (one_edge_counter_MW)				2'd0:begin	t1_0[7:0]   <= q0_MW;	t1_1[7:0]   <= q1_MW;							t1_2[7:0]   <= q2_MW;	t1_3[7:0]   <= q3_MW;	end				2'd1:begin	t1_0[15:8]  <= q0_MW;	t1_1[15:8]  <= q1_MW;							t1_2[15:8]  <= q2_MW;	t1_3[15:8]  <= q3_MW;	end				2'd2:begin	t1_0[23:16] <= q0_MW;	t1_1[23:16] <= q1_MW;							t1_2[23:16] <= q2_MW;	t1_3[23:16] <= q3_MW;	end				2'd3:begin	t1_0[31:24] <= q0_MW;	t1_1[31:24] <= q1_MW;							t1_2[31:24] <= q2_MW;	t1_3[31:24] <= q3_MW;	end			endcase	//--------------------------------------------------------------------	//T2:only used after filter edge 18/34/42 to update mbAddrB of left MB	//-------------------------------------------------------------------- 	wire t2_wr;	assign t2_wr = ((mb_num_h_DF != 0 && mb_num_v_DF != 4'd8) && 	(DF_edge_counter_MW == 6'd18 || DF_edge_counter_MW == 6'd34 || DF_edge_counter_MW == 6'd42));	always @ (posedge gclk_DF or negedge reset_n)		if (reset_n == 1'b0)			begin				t2_0 <= 0;	t2_1 <= 0;	t2_2 <= 0;	t2_3 <= 0;			end		else if (t2_wr)			case (one_edge_counter_MW)				2'd0:begin	t2_0[7:0]   <= p3_MW;	t2_1[7:0]   <= p2_MW;							t2_2[7:0]   <= p1_MW;	t2_3[7:0]   <= p0_MW;	end				2'd1:begin	t2_0[15:8]  <= p3_MW;	t2_1[15:8]  <= p2_MW;							t2_2[15:8]  <= p1_MW;	t2_3[15:8]  <= p0_MW;	end				2'd2:begin	t2_0[23:16] <= p3_MW;	t2_1[23:16] <= p2_MW;							t2_2[23:16] <= p1_MW;	t2_3[23:16] <= p0_MW;	end				2'd3:begin	t2_0[31:24] <= p3_MW;	t2_1[31:24] <= p2_MW;							t2_2[31:24] <= p1_MW;	t2_3[31:24] <= p0_MW;	end			endcaseendmodule		

⌨️ 快捷键说明

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