082327孙东晖基于FPGA的VGA显示器检测接口设计中期报告.docx
《082327孙东晖基于FPGA的VGA显示器检测接口设计中期报告.docx》由会员分享,可在线阅读,更多相关《082327孙东晖基于FPGA的VGA显示器检测接口设计中期报告.docx(13页珍藏版)》请在冰豆网上搜索。
082327孙东晖基于FPGA的VGA显示器检测接口设计中期报告
河北工业大学本科毕业设计(论文)中期报告
毕业设计(论文)题目:
基于FPGA的VGA显示器检测接口设计
专业(方向):
通信工程
学生信息:
学号:
082327姓名:
孙东晖班级:
通信082
指导教师信息:
姓名:
王杨职称:
副教授
报告提交日期:
2012年4月22日
一、课题简介
FPGA是整个系统的核心,通过对其编程可输出红、绿、蓝三基色信号和HS、VS行场扫描同步信号。
当FPGA接受输出的控制信号后,内部的数据选择器模块根据控制信号选择相应的图像生成模块,输出图像信号,与行场扫描时序信号一起通过VGA接口电路送入显示器,在VGA显示器上便可看到对应的彩色图像。
二、系统原理
显卡所处理的信息最终都要输出到显示器上,显卡的输出接口就是电脑与显示器之间的桥梁,它负责向显示器输出相应的图像信号。
CRT显示器因为设计制造上的原因,只能接受模拟信号输入,这就需要显卡能输出模拟信号。
VGA接口就是显卡上输出模拟信号的接口,VGA(VideoGraphicsArray)接口,也叫D-Sub接口,上面共有15针孔,分成三排,每排五个。
其中,除了2根NC(NotConnect)信号、3根显示数据总线和5个GND信号,比较重要的是3根RGB彩色分量信号和2根扫描同步信号HSYNC和VSYNC针。
VGA接口中彩色分量采用RS343电平标准,RS343电平标准的峰峰值电压为1V。
图1VGA接口示意图
表1VGA接口针孔功能表
引脚
名称
注释
引脚
名称
注释
1
RED
红基色
9
KEY
保留
2
GREEN
绿基色
10
SGND
同步信号地
3
BLUE
蓝基色
11
ID0
显示器标志位0
4
ID2
显示器标志位2
12
ID1
显示器标志位1
5
GND
地
13
HSYNC
行同步
6
RGND
红色地
14
VSYNC
场同步
7
GGND
绿色地
15
ID3
显示器标志位3
8
BGND
蓝色地
根据分辨率和刷新频率的不同,显示模式的发展可分为:
VGA(640×480像素);SVGA(高级VGA,800×600像素);XGA(可扩展图形阵列,1024×768像素)。
常见的彩色显示器一般都是由CRT(阴极射线管)构成,每一个像素的色彩由红、绿、蓝三基色构成。
显示时采用的是逐行扫描的方式。
由VGA显示模块产生的水平同步信号和垂直同步信号控制阴极射线管中的电子枪产生电子束,轰击涂有荧光粉的屏幕,产生红、绿、蓝三基色,于显示屏上合成一个彩色像素点。
电子束扫描一幅屏幕图像上的各个点的过程称为屏幕扫描。
现在显示器都是通过光栅扫描方式来进行屏幕扫描。
在光栅扫描方式下,电子束按照固定的路径扫过整个屏幕,在扫描过程中通过电子束的通断强弱来控制电子束所经过的每个点是否显示或显示的颜色。
电子枪在VGA显示模块产生的行同步、场同步等控制信号的作用下进行包括水平扫描、水平回扫、垂直扫描、垂直回扫等过程。
光栅扫描的路径通常为:
从上到下扫过每一行,在每一行中从左到右地进行扫描。
其过程如下:
电子束从屏幕左上角开始向右扫,当到达屏幕的右边缘时,电子束关闭(水平消隐),并快速返回屏幕左边缘(水平回扫),然后在下一条扫描线上开始新的一次水平扫描。
一旦所有的水平扫描均告完成,电子束在屏幕的右下角结束并关闭(垂直消隐),然后迅速返回到屏幕的左上角(垂直回扫),开始下一次光栅扫描。
彩条要想在显示器上显示出来,它主要需要5个信号,行同步信号HS、场同步信号VS和RGB三基色信号。
VGA时序控制模块是整个显示控制器的关键部分,最终输出的行、场同步信号必须严格按照VGA时序标准产生相应的脉冲信号。
对此5个信号的时序驱动,VGA显示器也要严格遵守“VGA工业标准”,即640×480×60Hz模式,否则会损害VGA显示器。
VGA工业标准要求的频率是:
时钟频率:
25.175MHz(像素输出的频率)
行频:
31469Hz
场频:
59.94Hz(每秒钟图像刷新的频率)
VGA工业标准显示模式要求:
行/场同步都为负极性,即同步头脉冲要求是负脉冲。
下图所示是计算机VGA(640×480,60Hz)图像格式的信号时序图,其点时钟CLK为25.175MHz,场频为59.94Hz。
图中,Vsync为场同步信号,场周期Tv为16.683ms,每场有525行,其中480行为有效显示行,45行为场消隐期。
场同步信号VS每场有一个脉冲,该脉冲的低电平宽度Ta为2行。
场消隐期包括场消隐前肩10行、场消隐后肩33行,共45行。
表2场扫描时序要求
场扫描的时序(单位:
像素)
场同步
场消隐后肩
场图像
场消隐前肩
场周期
Ta
Tb
Tc
Td
Te
Tf
Tg
2
25
8
480
8
2
525
490-491
492-524
0-479
480-489
图2VGA场扫描时序图
每显示行包括800点,其中640点为有效显示 区,160点为行消隐期(非显示区)。
行同步信号HS每行有一个脉冲,该脉冲的低电平宽度Ta为96个CLK;行消隐期包括行消隐前肩16个CLK和行消隐后肩48个CLK,共160个点时钟。
复合消隐信号是行消隐信号和场消隐信号的逻辑与,在有效显示期复合消隐信号为高电平,在非显示区域它是低电平。
表3行扫描时序要求
行扫描的时序(单位:
像素)
行同步
行消隐后肩
行图像
行消隐前肩
行周期
Ta
Tb
Tc
Td
Te
Tf
Tg
96
40
8
640
8
8
800
656-751
752-799
0-639
640-655
图3VGA行扫描时序图
由RGB三种基色可组合出任意所需要的颜色。
其不同组合能产生的颜色如表4所示。
表4VGA显示颜色编码表
颜色
黑
蓝
红
紫
绿
青
黄
白
R
0
0
1
1
0
0
1
1
G
0
0
0
0
1
1
1
1
B
0
1
0
1
0
1
0
1
三、设计过程
1、系统模块图
图4系统设计实现框图
2、程序设计流程图
图5程序流程图
3、具体程序设计
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_arith.all;
useieee.std_logic_unsigned.all;
entityvgais
port(clk,reset:
instd_logic;
rgb:
outstd_logic_vector(2downto0);
hsync,vsync:
outstd_logic;//行、场同步信号
row:
outstd_logic_vector(9downto0);//有效显示行
column:
outstd_logic_vector(9downto0));//有效显示列
endvga;//定义输入输出端口
architecturesyntofvgais
signalrgbs:
std_logic_vector(2downto0);
signalhcount,vcount:
std_logic_vector(9downto0);
signalh_count:
integerrange0to800:
=0;
signalv_count:
integerrange0to525:
=0;
begin
hcounter:
process(clk,reset)
begin
ifreset='1'
thenhcount<=(others=>'0');//复位信号有效像素计数置零
elseif(clk'eventandclk='1')
thenifhcount=799
thenhcount<=(others=>'0');//到最大数值置零
elsehcount<=hcount+1;//否则加一
endif;
endif;
endif;
endprocess;
process(hcount)
begin
column<=hcount;//有效显示列赋给column
ifhcount>639
thencolumn<=(others=>'0');//超出有效显示区赋零
endif;
endprocess;
vcounter:
process(clk,reset)
begin
ifreset='1'
thenvcount<=(others=>'0');//复位信号有效行计数置零
elseif(clk'eventandclk='1')
thenifhcount=799
thenifvcount=524
thenvcount<=(others=>'0');//行计数最大置零
elsevcount<=vcount+1;//否则行计数加一
endif;
endif;
endif;
endif;
endprocess;
process(vcount)
begin
row<=vcount;//有效显示行赋给row
ifvcount>479
thenrow<=(others=>'0');//超出有效显示区赋零
endif;
endprocess;
sync:
process(clk,reset)
begin
ifreset='1'
thenhsync<='0';
vsync<='0';
elseif(clk'eventandclk='1')
thenif(hcount<=751andhcount>=656)
thenhsync<='0';
elsehsync<='1';//行同步信号产生
endif;
if(vcount<=491andvcount>=490)
thenvsync<='0';
elsevsync<='1';//场同步信号产生
endif;
endif;
endif;
endprocess;
colors:
process(clk,reset)
begin
h_count<=CONV_INTEGER(hcount);
v_count<=CONV_INTEGER(vcount);//二进制计数转化成十进制整数
ifreset='1'
thenrgbs<="000";//复位信号有效屏幕颜色为黑
elsif(h_count>=0)and(h_count<=639)then
casev_countis
when0to59=>rgbs<="011";
when60to119=>rgbs<="000";
when120to179=>rgbs<="100";
when180to239=>rgbs<="010";
when240to299=>rgbs<="001";
when300to359=>rgbs<="111";
when360to419=>rgbs<="110";
when420to479=>rgbs<="101";//屏幕显示八个横彩条
whenothers=>rgbs<="000";//非有效显示段为黑色
endcase;
elsergbs<="000";
endif;
rgb<=rgbs;//颜色控制信号赋给输出
endprocess;
endsynt;
4、仿真结果及说明
图6有效显示列的赋值
图7每行像素计数最大值为799
输入为时钟信号CLK,输出为像素计数值hcount,及有效显示区的每行的像素(列)数column。
每行的像素计数小于等于639时,属于有效显示区,将值赋给column。
每行的像素计数超过639时,属于非有效显示区,column赋值为0。
每行最大的像素计数为799,之后置零开始下一行计数。
图8有效显示行的赋值
图9行计数最大值为524
输入为时钟信号CLK,输出为行计数值vcount,及有效显示区的行数row。
行计数小于等于479时,属于有效显示区,将值赋给row。
行计数超过479时,属于非有效显示区,row赋值为0。
行最大的计数值为524,之后置零开始下一次屏幕扫描行计数。
图10行同步信号产生
图11行同步信号产生
图10和图11中输入为时钟信号和复位信号,输出为行同步信号hsync,场同步信号vsync以及每行的像素计数器hcount。
每行的656-751像素计数区间产生行同步信号。
图12场同步信号产生
图12中输入为时钟信号和复位信号,输出为行同步信号hsync,场同步信号vsync以及行计数器vcount。
行计数490-491区间产生场同步信号。
图13彩条显示
图14彩条显示
图13和图14中输入为时钟信号和复位信号,输出为行同步信号hsync,场同步信号vsync,每行的像素计数器hcount,行计数器vcount以及屏幕显示颜色控制信号rgb。
不同的行区间显示不同的横彩条,每60行显示一种颜色,行与行之间的非显示有效区赋值为黑色,共有八种颜色,依次为青、黑、红、绿、蓝、白、黄、紫。
图14是青色和黑色,图15是红色和绿色,为了简洁,其它颜色没有截图显示在这里。
五、进一步需要解决的问题
多阅读相关文献资料,进一步完善软件部分的设计,通过观察运行出的图形及数据,能更加直观的认识VGA显示器的工作原理。
六、后期工作安排
继续研究课题,使设计更加完善。
对该课题进行分析整理,完成毕业论文,准备答辩。