if(h_cont<=H_TA-1) ovga_hs<=1'b0; else ovga_hs<=1'b1; //前沿
if(v_cont
if(v_cont<=V_TA-1) ovga_vs<=1'b0; else ovga_vs<=1'b1; //前沿
end
end
always @(posedge iclk or posedge irst)
begin if(irst) begin ovga_r<=8'h0; ovga_g<=8'h0; //Reset
ovga_b<=8'h0; end
else begin
if(h_cont<(xpos+H_BLANK+18)&&h_cont>=(xpos+H_BLANK)&&
v_cont<(ypos+V_BLANK+WIDTH)&&v_cont>=(ypos+V_BLANK)) //有效显示区域内赋值显示
begin
ovga_r<=8'b11111111;
ovga_g<=8'h0; ovga_b<=8'h0; //RGB分量赋值,产生红色
end
else if(h_cont<(xpos+H_BLANK+36)&&h_cont>=(xpos+H_BLANK+18)
&&v_cont<(ypos+V_BLANK+WIDTH)&&v_cont>=(ypos+V_BLANK)) //有效显示区域内赋值显示
begin
ovga_r<=8'b11111111;
ovga_g<=8'b11111111; ovga_b<=8'h0; //RGB分量赋值,产生黄色
end
else if(h_cont<(xpos+H_BLANK+54)&&h_cont>=(xpos+H_BLANK+36)&&
v_cont<(ypos+V_BLANK+WIDTH)&&v_cont>=(ypos+V_BLANK)) //有效显示区域内赋值显示
begin
ovga_r<=8'h0;
ovga_g<=8'h0; ovga_b<=8'b11111111; //RGB分量赋值,产生蓝色
end
else if(h_cont<(xpos+H_BLANK+72)&&h_cont>=(xpos+H_BLANK+54)&&
v_cont<(ypos+V_BLANK+WIDTH)&&v_cont>=(ypos+V_BLANK)) //有效显示区域内赋值显示
begin
ovga_r<=8'b11111111;
ovga_g<=8'b11111111; ovga_b<=8'b11111111; //RGB分量赋值,产生白色
end
else if(h_cont<(xpos+H_BLANK+90)&&h_cont>=(xpos+H_BLANK+72)&&
v_cont<(ypos+V_BLANK+WIDTH)&&v_cont>=(ypos+V_BLANK)) //有效显示区域内赋值显示
begin
ovga_r<=8'b11111111;
ovga_g<=8'h0; ovga_b<=8'b11111111; //RGB分量赋值,产生洋红色
end
else if(h_cont<(xpos+H_BLANK+108)&&h_cont>=(xpos+H_BLANK+90)&&
v_cont<(ypos+V_BLANK+WIDTH)&&v_cont>=(ypos+V_BLANK)) //有效显示区域内赋值显示
begin
ovga_r<=8'h0;
ovga_g<=8'b11111111; ovga_b<=8'b11111111; //RGB分量赋值,产生青色
end
else if(h_cont<(xpos+H_BLANK+LENGTH)&&h_cont>=(xpos+H_BLANK+108)&&
v_cont<(ypos+V_BLANK+WIDTH)&&v_cont>=(ypos+V_BLANK)) //有效显示区域内赋值显示
begin
ovga_r<=8'h0;
ovga_g<=8'b11111111; ovga_b<=8'h0; //RGB分量赋值,产生绿色
end
else begin ovga_r<=8'h0; ovga_g<=8'h0; //有效显示区域外为背景色(黑色)
ovga_b<=8'h0; end
end
end
//*********************************************************
//按键控制图像移动方向模式的标志位
//flag=0,图像任意方向移动;
//flag=1,图像沿着显示器边沿顺时针移动;
//flag=2,图像沿着显示器边沿逆时针移动
//*********************************************************
always @(posedge iSW1)
begin
flag<=flag+1;
if(flag==2)
flag<=0;
end
//*********************************************************
always@(negedge ovga_vs)
begin
if(flag==1) //彩图沿着显示器边沿顺时针移动
begin
if(ij==2'b00) begin
xpos<=xpos+1;
ypos<=0;
if(xpos+LENGTH==640) ij<=2'b10; end
else if(ij==2'b01) begin
xpos<=0;
ypos<=ypos-1;
if(ypos==0) ij<=2'b00;end
else if(ij==2'b10)begin
xpos<=640-LENGTH;
ypos<=ypos+1;
if(ypos+WIDTH==480) ij<=2'b11;end
else if(ij==2'b11)begin
xpos<=xpos-1;
ypos<=480-WIDTH;
if(xpos==0) ij<=2'b01; end
end
else if(flag==2) //彩图沿着显示器边沿逆时针移动
begin
if(ij==2'b00) begin
xpos<=0;
ypos<=ypos+1;
if(ypos+WIDTH==480) ij<=2'b01; end
else if(ij==2'b01) begin
ypos<=480-WIDTH;
xpos<=xpos+1;
if(xpos+LENGTH==640) ij<=2'b11;end
else if(ij==2'b10)begin
ypos<=0;
xpos<=xpos-1;
if(xpos==0) ij<=2'b00;end
else if(ij==2'b11)begin
xpos<=640-LENGTH;
ypos<=ypos-1;
if(ypos==0) ij<=2'b10; end
end
else if(flag==0) //彩图在显示器上任意方向移动
begin
if(ij==2'b00) begin
xpos<=xpos+1;
ypos<=ypos+1;
if(ypos+WIDTH==480) ij<=2'b01;
else if(xpos+LENGTH==640) ij<=2'b10;end
else if(ij==2'b01) begin
ypos<=ypos-1;
xpos<=xpos+1;
if(ypos==0) ij<=2'b00;
else if(xpos+LENGTH==640) ij<=2'b11;end
else if(ij==2'b10)begin
ypos<=ypos+1;
xpos<=xpos-1;
if(ypos+WIDTH==480) ij<=2'b11;
else if(xpos==0) ij<=2'b00;end
else if(ij==2'b11)begin
xpos<=xpos-1;
ypos<=ypos-1;
if(xpos==0) ij<=2'b01;
if(ypos==0) ij<=2'b10; end
end
end
//********************************************************
endmodule
)>
用户658643 2014-4-21 08:51