VGA彩条信号发生器文档格式.docx
《VGA彩条信号发生器文档格式.docx》由会员分享,可在线阅读,更多相关《VGA彩条信号发生器文档格式.docx(8页珍藏版)》请在冰豆网上搜索。
实验设计了基于VHDL描述的VGA显示控制器,通过FPGA控制CRT显示器显示色彩和图形,完成的功能包括横向和纵向彩色条幅的显示以及正方形色块。
二.设计要求
1.熟练掌握VHDL语言和QuartusII软件的使用。
2.理解状态机的工作原理和设计方法。
3.熟悉VGA接口协议规范。
4.通过对VGA接口的显示控制设计,理解VGA接口的时序工作原理。
5.利用FPGA实现VGA彩条信号发生器.
6.可以产生彩色横条,彩色竖条信号,彩色棋盘格信号.
7.由一个按键按照顺序选择不同模式的信号输出.
3.设计原理
1、显示控制原理
常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(GreenRedBlue)基色组成。
显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;
扫描完所有行,用场同步信号进行场同步,并
使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。
2、VGA时序信号
计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。
对于模拟显示设备,如模拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。
1、VGA彩条信号产生
彩条信号产生模块包括了彩条模式控制、竖彩条发生、横彩条发生和棋盘格发生三个模块。
彩条模式控制可以用一个控制端口来实现。
竖彩条发生模块根据行点数器cc的计数值来产生彩条,横彩条发生模块根据列点数器LL的计数值来产生彩条,棋盘格的彩条就可以用横彩条和竖彩条异或来得到。
四.设计方案
(一)系统结构框图
图
(一)VGA显示控制器系统结构框图VGA显示控制器的输入是用户控制信息,如显示模式的切换命令、图形移动的控制命令等。
控制器根据用户的输入信息,决定工作模式,这里定义为横彩模式、纵彩模式、棋盘模式。
颜色信息的产生、显示器扫描同步信号等由VGA控制器产生,其输出为CRT显示器。
(2)系统逻辑功能划分
图
(二)VGA显示控制器系统逻辑框图
五.电路图
图(三)电路图
六.结果图
图(四)横彩条
图(五)纵彩条
图(六)棋盘彩条
七.实验心得
本实验在课编程技术的基础上,根据VGA原理,运用VHDL描述语言实现了VGA控制设计的方案。
1.再设计的过程中,遇到了很多问题,在设计之初通过查找大量资料,对VGA的原理有了初步的认识,但是在进行行列时序信号的计算时还是有一定的不理解。
在指导老师的帮助下,了解了信号的产生。
2.实验中我进一步熟悉了数字系统VHDL设计和仿真的流程,加深了对QuartusII软件的使用的理解。
3.通过设计时序控制电路,和彩条产生电路,我更深入地理解了FPGA技术,即同过软件编程的方法来实现硬件时序和组合电路,加快了产品开发的速度,以满足不断变化的市场需求。
最后我要感谢老师的指导和帮助,老师讲授知识重点突出,分析深刻,听老师的讲解有豁然开朗的感觉。
还要感谢选题相同的班级同学和我探讨交流,大家一起激发思维的火花,讨论遇到的问题,互相促进,达到了协作的良好效果。
附录
源程序:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYVGACDIS
PORT(CLK,MD:
INSTD_LOGIC;
HS,VS,R,G,B:
OUTSTD_LOGIC);
ENDVGACD;
ARCHITECTUREbehavOFVGACDIS
SIGNALHS1,VS1,FCLK,CCLK:
STD_LOGIC;
SIGNALMMD:
STD_LOGIC_VECTOR(1DOWNTO0);
SIGNALFS:
STD_LOGIC_VECTOR(3DOWNTO0);
SIGNALCC:
STD_LOGIC_VECTOR(4DOWNTO0);
SIGNALLL:
STD_LOGIC_VECTOR(8DOWNTO0);
SIGNALGRBX:
STD_LOGIC_VECTOR(3DOWNTO1);
SIGNALGRBY:
SIGNALGRBP:
SIGNALGRB:
BEGIN
GRB
(2)<
=(GRBP
(2)XORMD)ANDHS1ANDVS1;
GRB(3)<
=(GRBP(3)XORMD)ANDHS1ANDVS1;
GRB
(1)<
=(GRBP
(1)XORMD)ANDHS1ANDVS1;
PROCESS(MD)BEGIN
IFMD'
EVENTANDMD='
0'
THENIFMMD="
10"
THENMMD<
="
00"
;
ELSEMMD<
=MMD+1;
ENDIF;
ENDIF;
ENDPROCESS;
PROCESS(MMD)BEGIN
IFMMD="
THENGRBP<
=GRBX;
ELSIFMMD="
01"
=GRBY;
=GRBXXORGRBY;
ELSEGRBP<
000"
PROCESS(CLK)BEGIN
IFCLK'
EVENTANDCLK='
1'
THENIFFS=12THENFS<
0000"
ELSEFS<
=(FS+1);
ENDPROCESS;
FCLK<
=FS(3);
CCLK<
=CC(4);
PROCESS(FCLK)BEGIN
IFFCLK'
EVENTANDFCLK='
THENIFCC=27THENCC<
00000"
ELSECC<
=CC+1;
PROCESS(CCLK)BEGIN
IFCCLK'
EVENTANDCCLK='
THENIFLL=450THENLL<
000000000"
ELSELL<
=LL+1;
PROCESS(CC,LL)BEGIN
IFCC>
24THENHS1<
='
ELSEHS1<
IFLL>
399THENVS1<
ELSEVS1<
IFCC<
3THENGRBX<
111"
ELSIFCC<
6THENGRBX<
110"
9THENGRBX<
101"
12THENGRBX<
100"
15THENGRBX<
011"
18THENGRBX<
010"
21THENGRBX<
001"
ELSEGRBX<
IFLL<
50THENGRBY<
ELSIFLL<
100THENGRBY<
150THENGRBY<
200THENGRBY<
ELSIFLL<
250THENGRBY<
300THENGRBY<
350THENGRBY<
ELSEGRBY<
HS<
=HS1;
VS<
=VS1;
R<
=GRB
(2);
G<
=GRB(3);
B<
=GRB
(1);
ENDbehav;