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

📄 configurable_yuv_to_rgb.v

📁 根据输出显示模式不同可以选择不同的色度转换模式
💻 V
📖 第 1 页 / 共 2 页
字号:
  else	begin	if(r5_wire >= 10'h314)		r2_temp <= r5_wire - 10'h314;	else		r2_temp <= 12'h000;	endreg[11:0]	r2_temp_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	r2_temp_d1 <= 12'h000;  else	r2_temp_d1 <= r2_temp;	/***********************    step1 end     ****************************//*********************************************************************/// step2: Greenreg[10:0]	g2_1;reg[8:0]	g2_2;reg[7:0]	g2_3;reg[4:0]	g2_4;reg[6:0]	g2_5;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	g2_1 <= 11'h7ff;	g2_2 <= 9'h1ff;	g2_3 <= 8'hff;	g2_4 <= 5'h1f;	g2_5 <= 7'h7f;	end  else	begin	g2_1 <= {1'b0,y_data,2'b00} + 10'h158;//+	g2_2 <= {1'b0,u_data} + {1'b0,v_data};//-	g2_3 <= {1'b0,v_data[7:1]} + {2'b0,v_data[7:2]};//-	g2_4 <= {1'b0,v_data[7:4]} + {3'b000,v_data[7:6]};//-	g2_5 <= {1'b0,u_data[7:2]} + {5'b00000,u_data[7:6]};//+	endreg[8:0]	g2_34;reg[11:0]	g2_15;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	g2_34 <= 9'h1ff;	g2_15 <= 12'h3ff;	end  else	begin	g2_15 <= {1'b0,g2_1} + {5'b00000,g2_5};	g2_34 <= {1'b0,g2_3} + {3'b000,g2_4};	end	reg[9:0]	g2_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	g2_d1 <= 10'h3ff;  else	g2_d1 <= {1'b0,g2_2} + {1'b0,g2_34};	reg[11:0]	g2_temp;always @(posedge dclk or negedge ngreset)  if(~ngreset)	g2_temp <= 12'h000;  else	if(g2_15>=g2_d1)		g2_temp <= g2_15 - g2_d1;	else		g2_temp <= 12'h000;/*******************      step2 end      ***************************//*******************      step3: blue convert start    **************/reg[10:0]	b2_1;reg[9:0]	b2_2;reg[6:0]	b2_3;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	b2_1 <= 11'h7ff;	b2_2 <= 10'h3ff;	b2_3 <= 7'h7f;	end  else	begin		b2_1 <= {1'b0,y_data,2'b00} + {1'b0,u_data,2'b00};	b2_2 <= {1'b0,u_data,1'b0} + {2'b00,u_data};	b2_3 <= {5'b00000,u_data[7:6]} + {1'b0,u_data[7:2]};	endreg[10:0]	b2_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	b2_d1 <= 11'h7ff;  else	b2_d1 <= {1'b0,b2_2} + {4'b0000,b2_3};reg[11:0]   b2_d2;always @(posedge dclk or negedge ngreset)  if(~ngreset)        b2_d2 <= 12'hfff;  else        b2_d2 <= {1'b0,b2_d1} + {1'b0,b2_1};reg[11:0]	b2_temp;always @(posedge dclk or negedge ngreset)  if(~ngreset)	b2_temp <= 12'h000;  else	if(b2_d2 >= 10'h3a0)		b2_temp <= b2_d2 - 10'h3a0;	else		b2_temp <= 12'h000;reg[11:0]	b2_temp_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	b2_temp_d1 <= 12'h000;  else	b2_temp_d1 <= b2_temp;/**************      step3  end     *********************//********************************************************///outputreg[9:0]	rout2_10,gout2_10,bout2_10;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	rout2_10 <= 10'h000;	gout2_10 <= 10'h000;	bout2_10 <= 10'h000;	end  else	begin	if(r2_temp_d1 <=10'h3ff)		rout2_10 <= r2_temp_d1[9:0];	else		rout2_10 <= 10'h3ff;	        if(g2_temp <=10'h3ff)		gout2_10 <= g2_temp[9:0];	else		gout2_10 <= 10'h3ff;		if(b2_temp_d1 <=10'h3ff)		bout2_10 <= b2_temp_d1[9:0];	else		bout2_10 <= 10'h3ff;	end/*****************************************************************//***************************************************//*             converter3: for PC                  *//***************************************************/// step1:Redreg[10:0]	r3_1;reg[7:0]	r3_2;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	r3_1 <= 11'h7ff;		r3_2 <= 8'hff;	end  else	begin	r3_1 <= {1'b0,y_data,2'b00} + {1'b0,v_data,2'b00};	r3_2 <= {4'b0000,v_data[7:4]} + {1'b0,v_data[7:1]};	endreg[11:0]  r3_3;always @(posedge dclk or negedge ngreset)  if(~ngreset)	r3_3 <= 12'hfff;  else	r3_3 <= {1'b0,r3_1} + {5'b00000,r3_2};reg[11:0]	r3_temp_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	r3_temp_d1 <= 12'h000;  else	r3_temp_d1 <= r3_3;	/***********************    step1 end     ****************************//*********************************************************************/// step2: Greenreg[9:0]	g3_1;reg[7:0]	g3_2;reg[4:0]	g3_3;reg[2:0]	g3_4;reg[11:0]  g3_5;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	g3_1 <= 10'h3ff;	g3_2 <= 8'hff;	g3_3 <= 5'h1f;	g3_4 <= 3'h7;	g3_5 <= 12'hfff;	end  else	begin	g3_1 <= {2'b00,u_data} + {1'b0,v_data,1'b0};//-	g3_2 <= {1'b0,u_data[7:1]} + {2'b00,v_data[7:2]};//-	g3_3 <= {1'b0,u_data[7:4]} + {2'b0,v_data[7:4]};//-	g3_4 <= {1'b0,u_data[7:6]} + {1'b0,v_data[7:6]};//-	g3_5 <= {2'b00,y_data,2'b00};	endreg[10:0]	g3_12;reg[5:0]	g3_34;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	g3_12 <= 11'h7ff;	g3_34 <= 6'h2f;	end  else	begin	g3_12 <= {1'b0,g3_1} + {2'b00,g3_2};	g3_34 <= {1'b0,g3_3} + {3'b000,g3_4};	end	reg[11:0]	g3_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	g3_d1 <= 12'hfff;  else	g3_d1 <= {1'b0,g3_12} + {6'b000000,g3_34};	reg[11:0]	g3_temp;always @(posedge dclk or negedge ngreset)  if(~ngreset)	g3_temp <= 12'h000;  else	if(g3_5 >= g3_d1)		g3_temp <= g3_5 - g3_d1;	else		g3_temp <= 12'h000;/*******************      step2 end      ***************************//*******************      step3: blue convert start    **************/reg[10:0]	b3_1;reg[9:0]	b3_2;reg[6:0]	b3_3;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	b3_1 <= 11'h7ff;	b3_2 <= 10'h3ff;	b3_3 <= 7'h7f;	end  else	begin		b3_1 <= {u_data,3'b000};	b3_2 <= {1'b0,y_data,2'b00} + {6'b000000,u_data[7:3]};	endreg[11:0]	b3_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	b3_d1 <= 12'hfff;  else	b3_d1 <= {1'b0,b3_1} + {4'b0000,b3_2};reg[11:0]	b3_temp_d1;always @(posedge dclk or negedge ngreset)  if(~ngreset)	b3_temp_d1 <= 12'h000;  else	b3_temp_d1 <= b3_d1;/**************      step3  end     *********************//********************************************************///outputreg[9:0]	rout3_10,gout3_10,bout3_10;always @(posedge dclk or negedge ngreset)  if(~ngreset)	begin	rout3_10 <= 10'h000;	gout3_10 <= 10'h000;	bout3_10 <= 10'h000;	end  else	begin	if(r3_temp_d1 <=10'h3ff)		rout3_10 <= r3_temp_d1[9:0];	else		rout3_10 <= 10'h3ff;	        if(g3_temp <=10'h3ff)		gout3_10 <= g3_temp[9:0];	else		gout3_10 <= 10'h3ff;		if(b3_temp_d1 <=10'h3ff)		bout3_10 <= b3_temp_d1[9:0];	else		bout3_10 <= 10'h3ff;	end/*********************************************************************//***************************************//*          the final output           *//***************************************/reg[7:0]	rout_d1,gout_d1,bout_d1;always @(posedge dclk or negedge ngreset)if(~ngreset)begin	  rout_d1 <= 8'h00;	  gout_d1 <= 8'h00;	  bout_d1 <= 8'h00;endelsebegincase(scontrl)2'b00:begin		rout_d1 <= rout1_10[9:2];		gout_d1 <= gout1_10[9:2];		bout_d1 <= bout1_10[9:2];end2'b01:begin		rout_d1 <= rout2_10[9:2];		gout_d1 <= gout2_10[9:2];		bout_d1 <= bout2_10[9:2];end	default:begin		rout_d1 <= rout3_10[9:2];		gout_d1 <= gout3_10[9:2];		bout_d1 <= bout3_10[9:2];end	endcaseendwire[7:0] rout8,gout8,bout8;assign rout8 = rout_d1;assign gout8 = gout_d1;assign bout8 = bout_d1;endmodule

⌨️ 快捷键说明

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