PLDVGA显示设计ciee.docx
- 文档编号:11012856
- 上传时间:2023-02-24
- 格式:DOCX
- 页数:44
- 大小:380.78KB
PLDVGA显示设计ciee.docx
《PLDVGA显示设计ciee.docx》由会员分享,可在线阅读,更多相关《PLDVGA显示设计ciee.docx(44页珍藏版)》请在冰豆网上搜索。
PLDVGA显示设计ciee
成绩
中国农业大学
课程论文
(2010-2011学年春季学期)
论文题目:
VGA显示设计
课程名称:
PLD课程设计
*******
班 级:
电子072
学 号:
**********
********
一.课程设计题目:
VGA显示
设计目的:
1、学习VerilogHDL的设计技巧
2、学习VGA接口特点
3、学习嵌入式逻辑分析仪的使用
设计内容:
以24M的工作频率,每个时钟周期输出一个象素,每行个800象素,每场525个象素
二.工作原理
VGA显示原理
常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R(红)、G(绿)、B(蓝)3色组成。
显示是采用逐行扫描的方式,阴极射线枪发出的电子束打在涂有荧光粉的荧光屏上,产生RGB三色基,最后合成一个彩色图像。
从荧幕的左上方开始向右扫描,每扫完一行图像电子束回到下一行的最左端,每行结束后电子枪回扫的过程中进行消隐。
然后从新开始行扫描,消隐……,直到扫到荧幕的右下方,电子束回到荧幕的左上方从新开始新的图像扫描,并且在回到荧幕左上方的过程中进行消隐。
在消隐过程中不发射电子束。
每一行扫描结束时,用HS(行同步)信号进行同步;扫描完所有的行后用VS(场同步)信号进行同步。
VGA的行、场扫描时序见图1。
图中行频和场频在数量上有很大差别,但时序上一样。
因此,图1只是示例HS信号、VS信号的行(场)扫描时间、行(场)同步时间、前沿时间、后沿时间、激励视频时间等。
VGA时序分析
实现VGA显示就要解决数据来源、数据存储、时序实现等问题,其中关键还是如何实现VGA时序。
VGA的标准参考显示时序如图2所示。
行时序和帧时序都需要产生同步脉冲(Synca)、显示后沿(Backporchb)、显示时序段(Displayintervalc)和显示前沿(Frontporchd)四个部分。
几种常用模式的时序参数如表1所示。
VGA工业标准显示模式要求:
行同步、场同步都为负极性,即同步头脉冲要求是负脉冲。
VGA的行时序如下图2所示:
每一行都有一个负极性行同步脉冲(Synca),是数据行的结束标志,同时也是下一行的开始标志。
在同步脉冲之后为显示后沿(Backporchb),在显示时序段(Displayintervalc)显示器为亮的过程,RGB数据驱动一行上的每一个象素点,从而显示一行。
在一行的最后为显示后沿(Backporchb)。
在显示时序段(Displayintervalc)之外没有图像投射到屏幕时插入消隐信号。
同步脉冲(Synca)、显示后沿(Backporchb)和显示前沿(Frontporchd)都是在行消隐间隔内(HorizontalBlankingInterval),当行消隐有效时,RGB信号无效,屏幕不显示数据。
VGA的场时序与VGA的行时序基本一样,如图3所示,每一帧的负极性帧同步脉冲(Synca)是一帧的结束标志,同时也是下一帧的开始标志。
而显示数据是一帧的所有行数据。
字母方块动态显示的硬件连接原理图
三.VGA设计
VGA时序实现
首先,根据刷新频率确定主时钟频率,然后由主时钟频率和图像分辨率计算出行总周期数,再把表1中给出的a、b、c、d各时序段的时间按照主计数脉冲源频率折算成时钟周期数。
在CPLD中利用计数器和RS触发器,以计算出的各时序段时钟周期数为基准,产生不同宽度和周期的脉冲信号,再利用它们的逻辑组合构成图2中的a、b、c、d各时序段以及D/A转换器的空白信号BLANK和同步信号SYNC。
试验箱所用像素扫描频率为40Mhz,按每行800个像素,每场525个像素,则行频率为5khz,场频为9.52hz.
模块:
分屏产生所需频率
//屏计数器设置
always@(posedgeclk)
begin
if(vcount==524)
k<=k+1;
elseif(k>=1000)k=1000;//经多次仿真实验得出1000,逻辑分析仪可看出是3e8h
end
//四分频
always@(posedgeclk)
begin//分频1
if(j==2)
begin
j<=8'h00;
clk1=~clk1;//200k
end
else
begin
j<=j+1;
end
end
行、场同步信号的处理
//--hsync-----------------------------------------________--------------
//---hcnt0639663759799
//--vsync---------------------------------------________-------------
//---vcnt0479497499524
模块:
行和场信号的处理
//行计数器处理
always@(posedgeclk)
begin
if(hcount==799)
hcount<=0;
else
hcount<=hcount+1;
end
//场计数器处理
always@(posedgeclk)
begin
if(vcount==524)
vcount<=0;
elseif(hcount==729)
vcount<=vcount+1;
elsevcount<=vcount;
end
//行同步场同步信号处理
always@(posedgeclk)
begin
if((hcount<=759)&&(hcount>=663))
hsync<=0;
elsehsync<=1;
if((vcount<=499)&&(vcount>=497))
vsync<=0;
elsevsync<=1;
end
//行有效区
always@(posedgeclk)
begin
if(hcount<639)h_video_on<=1;
elseh_video_on<=0;
end
//场有效区
always@(posedgeclk)
begin
if(vcount<479)v_video_on<=1;
elsev_video_on<=0;
end
VGA时序信号产生模块
VGA时序信号产生模块包括行点数计数器h_cnt、场行数计数器v_cnt、行同步产生状态机h_state和场同步产生状态机v_state等。
其中,行点数计数器是800进制计数器,场行数计数器是525进制计数器(行同步状态机h_state有h_video、h_front、h_sync、h_back四种状态,它根据行点数计数器的计数值来进行状态转换;场同步状态机v_state有v_video,v_Front,v_sync,v_Back四种状态,它根据场行数计数器的计数值来进行状态翻转。
当行状态机h_state复位时,即进入h_video状态,它对应每行的有效显示区域。
行计数器h_cnt对25MHz的点时钟进行计数,当行计数器h_cnt的计数值到达639时,行同步状态机即进入行消隐前肩h_front状态;当h_cnt的计数值为663时,行同步状态机进入行同步状态和h_sync,此时,行同步信号Hs输出低电平;当h_cnt的计数值为759时,状态机即进入行消隐后肩h_back状态;在行状态机为h_front,h_sync,h_back状态时,行消隐信号输出低电平。
当h_cnt的计数值为799时,行同步状态机进入h_video状态,同时,行计数器的同步复位信号为高电平,使行计数器复位。
场状态机v_state开始时进入v_video状态,对应了每场的有效显示行,场计数器v_cnt的计数值每行加1。
当场计数器的计数值到达479时,场状态机翻转,进入场消隐前肩v_front状态,当v_cnt的值为497时,状态机v_state进入场同步状态v_sync,场同步信号Vs此时输出低电平;当v_cnt的值为499时,状态机v_state进入场消隐后肩v_back状态;当v_cnt的值为524时,状态机v_state又翻转进入v_video状态,同时输出高电平到场计数器v_cnt的同步清零端使其清零.当场状态机v_state的状态为v_Front,v_sync,v_Back三种状态时,场消隐信号输出低电平,其余时刻为高电平。
行、场消隐信号的逻辑与即为复合消隐信号。
字母方块动态显示
方块分布及编号:
模块:
定义方块的大小形状和颜色
//显示区
always@(posedgeclk)
begin
if((40 begin red[2: 0]<=0;//绿 green[2: 0]<=3'b101; blue[2: 0]<=0; end elseif((80 begin red[2: 0]<=0;// green[2: 0]<=3'b101; blue[2: 0]<=0; end elseif((80 begin red[2: 0]<=0;// green[2: 0]<=3'b101; blue[2: 0]<=0; end elseif((220 begin red[2: 0]<=0;//蓝 green[2: 0]<=0; blue[2: 0]<=3'b101; end elseif((300 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((340 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((340 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((340 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((480 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((520 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((520 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((520 begin red[2: 0]<=3'b101;//红 green[2: 0]<=0; blue[2: 0]<=0; end elseif((60 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((200 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((100 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((100 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((100 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((130 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((130 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((340 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((430 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((400 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end elseif((320 begin red[2: 0]<=bg[2: 0]; green[2: 0]<=bg[5: 3]; blue[2: 0]<=bg[8: 6]; end 模块: 方块的动作显示设计 模块任务: 当场计数器每计到524时,屏计数器k加一,用屏计数器控制画面显示的先后顺序,在快速扫描时,当屏计数器k<10,所有方格位置都不变,当k>10,方格1到13随着k的增加开始下落,但是落到指定的纵坐标250的时候停止不动。 当k>10,方格14到23的位置随着k的增加开始下落。 这样就能看到三种颜色的方格错落有致地下落。 //定义方格1、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt1! =300)) cnt1<=0; elseif(cnt1==300) cnt1<=300; end //定义方格2、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt2! =300)) cnt2<=0; elseif(cnt1==300) cnt2<=300; end //定义方格3、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt3! =420)) cnt3<=160; elseif(cnt3==460) cnt3<=460; end //定义方格4、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt4! =300)) cnt4<=0; elseif(cnt4==300) cnt4<=300; end //定义方格5、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt5! =300)) cnt5<=0; elseif(cnt5==300) cnt5<=300; end //定义方格6、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt6! =300)) cnt6<=0; elseif(cnt6==300) cnt6<=300; end //定义方格7、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt7! =380)) cnt7<=80; elseif(cnt7==380) cnt7<=380; end //定义方格8、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt8! =420)) cnt8<=160; elseif(cnt8==460) cnt8<=460; end //定义方格9、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt9! =300)) cnt9<=0; elseif(cnt9==300) cnt9<=300; end //定义方格10、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt10! =300)) cnt10<=0; elseif(cnt10==300) cnt10<=300; end //定义方格11、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt11! =380)) cnt11<=80; elseif(cnt11==380) cnt11<=380; end //定义方格12、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt12! =420)) cnt12<=160; elseif(cnt12==460) cnt12<=460; end //定义方格13、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt13! =250)) cnt13<=0; elseif((k>=10)&&(vcount==524)&&(cnt13! =250)) cnt13<=cnt13+1; elseif(cnt13==250) cnt13<=250; end //定义方格14、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt14! =250)) cnt14<=0; elseif((k>=10)&&(vcount==524)&&(cnt14! =250)) cnt14<=cnt14+1; elseif(cnt14==250) cnt14<=250; end //定义方格15、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt15! =250)) cnt15<=0; elseif((k>=10)&&(vcount==524)&&(cnt15! =250)) cnt15<=cnt15+1; elseif(cnt15==250) cnt15<=250; end //定义方格16、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt16! =310)) cnt16<=60; elseif((k>=10)&&(vcount==524)&&(cnt16! =310)) cnt16<=cnt16+1; elseif(cnt16==310) cnt16<=310; end //定义方格17、动作 always@(posedgeclk) begin if((k<10)&&(vcount==524)&&(cnt17! =370)) cnt17<=120; elseif((k>=10)&&(vcount==524)&&(cnt17! =370)) cnt17<=cnt17+1; e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- PLDVGA 显示 设计 ciee