vga图像显示控制.docx
- 文档编号:1151329
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:13
- 大小:130.69KB
vga图像显示控制.docx
《vga图像显示控制.docx》由会员分享,可在线阅读,更多相关《vga图像显示控制.docx(13页珍藏版)》请在冰豆网上搜索。
vga图像显示控制
VGA图像显示控制器
1、摘要和关键词
摘要:
VGA显示屏显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。
通过控制扫描计数器不同值时对RGB三原色信号的控制,来完成显示设计。
关键词:
行列扫描 行列同步 RGB三原色控制
2、设计任务要求
实验目的
1.熟练掌握VHDL语言和QuartusII软件的使用;
2.理解状态机的工作原理和设计方法;
3.掌握利用EDA工具进行自顶向下的电子系统设计方法;
4.熟悉VGA接口协议规范。
实验要求:
设计一个VGA图像显示控制器,达到如下功能:
_显示模式为640×480×60HZ模式;
_用拨码开关控制R、G、B(每个2位),使显示器可以显示64种纯色;
_在显示器上显示横向彩条信号(至少6种颜色);
_在显示器上显示纵向彩条信号(至少8种颜色);
_在显示器上显示自行设定的图形、图像等。
_选做:
自拟其它功能。
三、实验原理
1、显示控制原理
常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(GreenRedBlue)基色组成。
显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT、对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。
VGA显示控制器控制CRT显示图象的过程如图1所示
2、VGA时序信号
计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R、G、
B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。
对于模拟显示设备,如模拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。
设计VGA控制器的关键是产生符合VGA接口协议规定的行同步和场同步信号,它们的时序关系如下图所示:
h_sync:
水平同步信号(负脉冲),每个水平扫描周期显示器刷新一行;
v_sync:
垂直同步信号(负脉冲),每个垂直扫描周期显示器刷新一帧;
行同步信号(HS)
场同步信号(VS)
时序名称
时钟数(像素数)
时序名称
行数
前沿
16
前沿
10
行同步
96
场同步
2
数据
640
数据
480
后沿
48
后沿
33
总像素数
800
总行数
525
按照每秒60帧的刷新速度来计算,所需要的时钟频率为:
频率=60Hz(帧数)×525(行)×800(每一行像素数)=25.2MHz
所以我们通过开发系统的50MHz时钟资源,通过时钟分频产生25MHz的频率即可。
虽然没有达到精确的25.2MHz的时钟频率(刷新率可能会是59Hz),但是并不会造成影响。
3、VGA显示器的工作过程
以屏幕左上角的那个像素作为原点(1,1)。
当显示器接收到控制器输出的v_sync信号,则开始一个新的垂直刷新循环,同时控制器输出h_sync信号。
当经过P+Q=1.084ms的时间后,准备开始水平刷新循环,当h_sync信号的下降沿到来时,即开始刷新第一行(行数加1)。
再经过B+C=5.66s的时间后,开始刷新第一行的第一个像素(列数加1),并按照所需的时钟频率,刷新此行中其余像素。
直到显示器接收到下一个h_sync信号,又开始刷新第二行。
重复此过程,直到刷新到屏幕的底部。
当刷新了最下面一行的最后一个像素后,显示器即完成了一帧的刷新,控制器又输出v_sync信号,显示器又开始一个新的垂直刷新循环。
四、系统设计(包括设计思路、总体框图、分块设计)
总体设计思路:
VGA显示器的控制器可划分为3个子模块:
.时钟分频子模块;
.时序控制子模块,提供同步信号(h_sync和v_sync)及像素位置信息;
.生成图形子模块,接收像素位置信息,并输出颜色信息;
由于系统时钟为50MHZ,实验所需频率为25MHZ,故时钟分频模块只需在程序中通过分频语句完成;生成图形子模块由系统提供;所以重点设计的模块就是时序控制模块。
总体系统框图如下:
HS
系统时 VS
钟 R
G
B
时序控制模块设计
Hcnt=639
Hcnt=799
Hcnt=655
Hcnt=751
行同步状态机状态转移图
Vcnt=479
Vcnt=524
Vcnt=489
Vcnt=491
列同步状态机状态转移图
时序控制模块流程图:
五、源程序(含注释)
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityvgacodeis
port(
sw0:
instd_logic;--拨码开关输入
sw1:
instd_logic;
sw2:
instd_logic;
sw3:
instd_logic;
sw4:
instd_logic;
sw5:
instd_logic;
sw6:
instd_logic;
sw7:
instd_logic;
clk:
instd_logic; --系统时钟输入
hsync:
outstd_logic;--输出行同步、列同步以及R.G.B信号
vsync:
outstd_logic;
rdata:
outstd_logic;
gdata:
outstd_logic;
bdata:
outstd_logic;
lrdata:
outstd_logic;
lgdata:
outstd_logic;
lbdata:
outstd_logic
);
endvgacode;
architecturebehaveofvgacodeis
--horizontaltimingsignals
constanth_data:
integer:
=640;--VGA时序中几个关键数据
constanth_front:
integer:
=16;
constanth_back:
integer:
=48;
constanth_sync:
integer:
=96;
constanth_period:
integer:
=h_sync+h_data+h_front+h_back; --800
--verticaltimingsignals
constantv_data:
integer:
=480;
constantv_front:
integer:
=10;
constantv_back:
integer:
=33;
constantv_sync:
integer:
=2;
constantv_period:
integer:
=v_sync+v_data+v_front+v_back; --525
signalhenable,venable:
std_logic;
signalclk25M:
std_logic;
signalhcnt:
std_logic_vector(9downto0); --horizontalpixelcounter
signalvcnt:
std_logic_vector(9downto0); --verticallinecounter
begin
process(clk)
begin
ifclk'eventandclk='1'then --由系统时钟分频得到25MHZ的频率信号
clk25M<=notclk25M;
endif;
endprocess;
process(clk25M) ---行扫描
begin
if(clk25M'eventandclk25M='1')then
ifhcnt hcnt<=hcnt+1; else hcnt<=(others=>'0'); endif; endif; endprocess; process(clk25M) --行同步 begin if(clk25M'eventandclk25M='1')then if(hcnt>=(h_data+h_front) andhcnt<(h_data+h_sync+h_front)) then hsync<='0'; else hsync<='1'; endif; endif; endprocess; process(clk25M) --列扫描 begin if(clk25M'eventandclk25M='1')then ifhcnt=(h_data+h_sync+h_front)then ifvcnt vcnt<=vcnt+1; else vcnt<=(others=>'0'); endif; endif; endif; endprocess; process(clk25M) --列同步 begin if(clk25M'eventandclk25M='1')then if(vcnt>=(v_data+v_front) andvcnt<(v_data+v_sync+v_front))then vsync<='0'; else vsync<='1'; endif; endif; endprocess; process(clk25M) --行显示 begin if(clk25M'eventandclk25M='1')then ifhcnt henable<='1'; else henable<='0'; endif; endif; endprocess; process(clk25M) --列显示 begin if(clk25M'eventandclk25M='1')then ifvcnt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- vga 图像 显示 控制