当前位置:文档之家› VGA彩条信号显示控制电路设计

VGA彩条信号显示控制电路设计

if(hcnt==799)
hcnt<=0;
else
hcnt<=hcnt+1;
end
always@(posedge clock) //同步头有效信号
begin
if((hcnt>640+16)&(hcnt<640+16+96))
hs1<=1'b0;
else
hs1<=1'b1;
end
always@(posedge clock) //场计数640
同时,这也是EDA实验课的最后一个实验,首先感谢老师的付出与艰辛,让我熟悉了QuartusII软件,虽然现在还不能理解这个软件的重要,但是这让我们在今后的工作中增添了一份机会,毕竟技多不压身。很快就又过一个学期,虽然我没有别人付出得多,但是努力应该不比别人少吧。希望有机会还能够做在你的教室里…
begin
if(hcnt<80)rgbx<=3'b000;//黑
else if(hcnt<160)rgbx<=3'b001;//蓝
else if(hcnt<240)rgbx<=3'b010;//红
else if(hcnt<320)rgbx<=3'b011;//品
else if(hcnt<400)rgbx<=3'b100;//绿
reg hs_enable,vs_enable,hs1,vs1;
reg[1:0] mmd;
output [1:0]mmmd;
wire[3:1] rgb;
always@(posedge clk) //2分频
clock=~clock;
always@(posedge clock) //行计数800
begin
begin
if((vcnt>480+10)&(vcnt<480+10+2))
vs1<=1'b0;
else
vs1<=1'b1;
end
always@(posedge hs1)
begin
if(vcnt<480)
vs_enable<=1'b1;
else
vs_enable<=1'b0;
end
always@(posedge clock) //竖彩条
begin
if(mmd==2'b10)
mmd<=2'b00;
else
mmd<=mmd+1;
end
always@(mmd)
begin
if(mmd==2'b00)rgbp<=rgbx;
else if(mmd==2'b01) rgbp<=rgby;
else if(mmd==2'b10) rgbp<=rgbx^rgby;

设计代码:
module VGA(clk,md,hs,vs,r,g,b,mmmd);
input clk,md;
output r,g,b;
output hs;
output vs;
wire r,q,b,vs,hs;
reg clock;
reg[3:1] rgbp,rgbx,rgby;
reg[9:0] hcnt,vcnt;
begin
if(hcnt<640)
hs_enable<=1'b1;
else
hs_enable<=1'b0;
end
always@(posedge hs1) //产生行同步有效信号
begin
if(vcnt==524)
vcnt<=0;
else
vcnt<=vcnt+1;
end
always@(posedge hs1) //产生场同步有效信号
begin
if(mmd==2'b00)rgbp<=rgbx;
else if(mmd==2'b01) rgbp<=rgby;
else if(mmd==2'b10) rgbp<=rgbx^rgby;
elsergbp<=0;
end
assign rgb[3]=(rgbp[3]^md)&hs_enable&vs_enable;
else if(hcnt<320)rgbx<=3'b000;
else if(hcnt<400)rgbx<=3'b111;
else if(hcnt<480)rgbx<=3'b000;
else if(hcnt<560)rgbx<=3'b111;
else if(hcnt<640)rgbx<=3'b000;
if(vcnt<60)rgby<=3'b000;
else if(vcnt<120)rgby<=3'b001;
else if(vcnt<180)rgby<=3'b010;
else if(vcnt<240)rgby<=3'b011;
else if(vcnt<300)rgby<=3'b100;
else if(vcnt<360)rgby<=3'b101;
assign vs=vs1;
assign mmmd=mmd;
endmodule
时序仿真图和硬件仿真图
提高要求代码和仿真图形:
always@(posedge clock)
begin
if(hcnt<80)rgbx<=3'b111;
else if(hcnt<160)rgbx<=3'b000;
else if(hcnt<240)rgbx<=3'b111;
elsergbx<=3'b000;
end
always@(posedge hs1)
begin
if(vcnt<60)rgby<=3'b111;
else if(vcnt<120)rgby<=3'b000;
else if(vcnt<180)rgby<=3'b111;
else if(vcnt<240)rgby<=3'b000;
学生实验报告
系别
电子信息学院
课程名称
《EDA综合实验》
班级
14无线技术
实验名称
VGA彩条信号显示控制电路设计
姓名
实验时间
2016年11月28日
学号
指导教师
王红航
成绩
批改时间
2016年月日
报告内容
一、实验目的和任务
1.学习VGA图像显示控制电路设计。
二、实验原理介绍
1.VGA简介
VGA显示器总是从屏幕的坐上角开始扫描,先水平扫描完一行(640个像素)到最右边,然后再回到最左边(期间CRT对电子束作行消隐),换下一行,继续扫描,知道扫描到屏幕的最右下角(480行),这样就扫描完了一帧图像,然后再回到屏幕的最左上角(期间CRT对电子束进行场消隐)。这样的扫描在标准的VGA模式(640*480@60HZ)下,每秒需要扫描60帧,这样算来每一个像素点的扫描周期大约为40ns。
VGA接头与底座
2.VGA的时序
VGA行同步信号HS和场同步信号VS的时序图如图2.1和图2.2所示,T1为行同步消隐(约为6μs);T2为行显示时间(约为26μs);T3为场同步消隐(两个行周期);T4为场显示时间(480个行周期)。显示器每扫描完一行,再扫描一下行时会花一定时间来准备,因此要满足时序要求,见图2。
assign rgb[2]=(rgbp[2]^md)&hs_enable&vs_enable;
assign rgb[1]=(rgbp[1]^md)&hs_enable&vs_enable;
assign g=rgb[3];
assign r=rgb[2];
assign b=rgb[1];
assign hs=hs1;
else if(hcnt<480)rgbx<=3'b101;//青
else if(hcnt<560)rgbx<=3'b110;//黄
else if(hcnt<640)rgbx<=3'b111;//白
elsergbx<=3'b010;//
end
always@(posedge hs1) //横彩条
begin
else if(vcnt<300)rgby<=3'b111;
else if(vcnt<360)rgby<=3'b000;
else if(vcnt<420)rgby<=3'b111;
else if(vcnt<480)rgby<=3'b000;
elsergby<=3'b100;
end
always@(posedge md)
else if(vcnt<420)lt;480)rgby<=3'b111;
elsergby<=3'b010;
end
always@(posedge md)
begin
if(mmd==2'b10)
相关主题