VGA彩条信号液晶显示控制器设计.docx
《VGA彩条信号液晶显示控制器设计.docx》由会员分享,可在线阅读,更多相关《VGA彩条信号液晶显示控制器设计.docx(13页珍藏版)》请在冰豆网上搜索。
VGA彩条信号液晶显示控制器设计
EDA实验(论文)说明书
题目:
VGA彩条图像显示控制器设计
院(系):
信息与通信学院
专业:
电子信息工程
学生姓名:
吴童童
学号:
1001130828
指导教师:
陈小毛
2013年5月12日
1.绪论1
1.1EDA技术的发展1
2.实验原理2
2.1系统的工作原理2
2.2VGA显示原理3
3实验设计4
3.1图像信号产生模块的设计5
3.2视频输出接口电路部分设计6
3.3模式控制与显示部分设计6
3.4VGA显示模块7
3.5ROM地址发生器8
3.6ROM地址发生器8
4实验程序8
5实验总结2
附录2
附录A总原理图2
附录B实验现象3
附录C引脚分布图3
1.绪论
1.1EDA技术的发展
我们已经进入数字化和信息化的时代,其特点就是各种数字产品的广泛应用。
现代数字产品在性能提高复杂度增大的同时,更新换代的速度也越来越快,实现这种进步的因素在于芯片制造技术和设计技术的进步。
前者以微细加工技术为代表,目前已进展到深亚微米阶段,可以在几平方厘米的芯片上集成数千万个晶体管。
后者的核心就是EDA技术,EDA是指以计算机为工作平台,融合应用电子技术、计算机技术、智能化技术最新成果而研制成的电子CAD通用软件包。
在现代数字系统的设计中,EDA技术已成为一种普遍的工具。
对设计者而言,熟练的掌握EDA技术,可以极大的提高工作效率,起到事半功倍的效果。
无论是设计集成电路还是普通设计的电子线路,没有EDA工具的支持是难以完成的。
EDA技术的使用包括电子工程师进行电子系统的开发的全过程,以及进行开发设计涉及的各个方面。
VGA图像信号发生器的设计涉及到图像数据的处理,对电路的工作速度和性能要求较高,VGA工业标准要求的时钟频率高达25MHz,使用传统的电子电路设计方法是难以实现的。
采用专用的视频处理芯片,其设计技术难度大、开发成本高。
本文采用CPLD方案,利用了MAX系列的CPLD高达上百兆的工作频率特性为图像数据处理提供了良好的实时性,其内部集成的数字锁相环为系统的工作时钟提供的良好的稳定性,其内部嵌入的存储器可以存储一定容量的图像信息,丰富的I/O资源可以随即扩展外接大容量存储器的特性,因此由CPLD完成对图像数据的处理及产生行场扫描时序信号。
很好地实现了图象数据处理的实时性和稳定性,达到了性能与价格的完美统一。
此外,CPLD的电路可重构性,为系统功能更改和升级以及功能扩展提供了很大的设计空间。
由微控制器完成功能设置与控制,如键盘扫描,模式选择与显示控制等。
本设计立足系统可靠性及稳定性等高技术要求,采用CPLD芯片实现VGA彩色显示电路,其电路设计比较简单,外围电路少,易于控制和检查,较传统的分离元件实现方式有着明显的优势,尤其是其设计电路实现周期,其抗干扰及调试过程都很简单。
2.实验原理
2.1系统的工作原理
FPGA是EDA课程设计的整个系统的核心,通过对其编程可输出RGB三基色信号和HS、VS行场扫描同步信号。
当FPGA接受单片机输出的控制信号后,内部的数据选择器模块根据控制信号选通相应的图像生成模块,输出图像信号,与行场扫描时序信号一起通过15帧D型接口电路送入VGA显示器,在VGA显示器上便可以看到对应的彩色图像。
FPGA所需的工作时钟由外部高精度有源晶振提供,系统原理框图如图1.1。
图1.1
2.2VGA显示原理
工业标准的VGA显示模式为:
640×468×16色×60Hz。
常见的彩色显示器,一般由CRT(阴极射线管)构成,彩色是由R、G、B(红、绿、蓝)三基色组成,CRT用逐行扫描或隔行扫描的方式实现图像显示,由VGA控制模块产生的水平同步信号和垂直同步信号控制阴极射线枪产生的电子束,打在涂有荧光粉的荧光屏上,产生R、G、B三基色,合成一个彩色像素。
扫描从屏幕的左上方开始,由左至右,由上到下,逐行进行扫描,每扫完一行,电子束回到屏幕下一行的起始位置,在回扫期间,CRT对电子束进行消隐,每行结束是用行同步信号HS进行行同步;扫描完所有行,再由场同步信号VS进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。
行同步信号HS和场同步信号VS是两个重要的信号。
显示过程中,HS和VS的极性可正可负,显示器内可自动转换为正极性逻辑。
VGA行同步信号HS和场同步信号VS的时序图如图2.1和图2.2所示,T1为行同步消隐(约为6μs);T2为行显示时间(约为26μs);T3为场同步消隐(两个行周期);T4为场显示时间(480个行周期)。
显示器每扫描完一行,再扫描一下行时会花一定时间来准备,因此要满足时序要求,见图2。
从0计数到639
图2.1VGA行扫描时序图
同样每扫描完一帧,再扫描下一帧行时也会花一定时间来准备,因此也要满足其时序要求,见图3。
从0计数到479
图2.2VGA场扫描时序图
对于VGA显示器的上述五个信号的时序驱动要严格遵循“VGA工业标准”,即640×480×60HZ模式,否则无法显示正确地图象。
VGA工业标准要求的频率:
时钟频率:
25.175MHz(像素输出的频率)
行频:
31469Hz
场频:
59.94Hz(每秒图像刷新频率)
图象信号显示的颜色种类与表示R、G、B三基色的二进制数位数有关,表1列出了8种颜色的编码方式。
表1VGA颜色编码
颜色
白
黄
表
红
品
绿
蓝
黑
R
0
0
0
0
1
1
1
1
G
0
0
1
1
0
0
1
1
B
0
1
0
1
0
1
0
1
3实验设计
3.1图像信号产生模块的设计
产生图像信号的核心器件采用Altera公司的CycloneFPGA芯片EP1C3T144C8N。
它具有多达20060个逻辑单元。
最大用户I/O数104个。
器件中M4K存储块提供288kbit存储容量,能够被配置来支持多种操作模式,包括RAM、ROM、FIFO及单口和双口模式。
Cyclone器件具有高级外部存储器接口,允许设计者将外部单数据率(SDR)SDRAM,双数据率(DDR)、SDRAM和DDRFCRAM器件集成到复杂系统设计中,而不会降低数据访问的性能。
并且还具有两个可编程锁相环(PLL)和八个全局时钟线,能提供时钟管理和频率合成,实现最大的系统功能。
根据VGA显示原理,图象信号产生器的主要功能是:
产生时序驱动信号HS、VS及VGA彩色图象编码信号,同时在正确的时序控制下,输出ROM中的象素数据至显示器的VGA接口,进行图象显示。
本文利用Altera公司QuartusⅡ6.0开发平台,遵循自顶向下的设计方法,针对各功能模块,采用VHDL语言对FPGA器件编程,产生HS和VS扫描时序信号及各种图象信号。
VGA时序信号是图象显示的关键,行场扫描时序的产生,是利用逻辑编程的方法实现的,即用VHDL编写分频器,计时器模块,来获得T1、T2、T3、T4时序。
当输出数字、彩条信号和棋盘格图象时,由外部12M有源晶振提供时钟输入,其中行频HS:
12MHZ÷13÷29=31830Hz、场频VS:
31830Hz÷480×0.93=61.67Hz、T1=1/31830Hz×4/29=25.96us、T2=1/31830Hz×5/29=6.04us、T3为两个行周期(T1+T2),T4为480个行周期。
图象信号包括ROM中定制的图形等。
ROM中定制的较为复杂的彩色图像,需采用像素点输出,即将图像各像素点的信息存储于ROM中,再以一定的频率输出。
FPGA器件ROM的定制有两种方法:
第一种方法是利用FPGA器件的嵌入式存储器定制LPM_ROM,用.MIF文件或.HEX文件对其进行初始化,这种方法获得的ROM最大寻址空间为212,可以存储一幅分辨率为128×128的图像信息;第二种方法是在FPGA逻辑资源的限度内用VHDL语言定制一个ROM,采用CASE语句对其进行初始化,这种方法获得的ROM在存储深度较大时,编译时对时间的开销较大。
ROM初始化完成后,在25MHz的时钟频率下输出存储的图像信息。
其图象颜色种类的多少取决于存储空间的大小。
ROM定制的图象信息是利用FPGA嵌入的存储器定制LPM_ROM,可以用于存储一幅64×64分辨率的图像信息,数据线宽为3位,地址线12根,采用组合寻址方式,即行地址HSADDRESS占低6位,场地址VSADDRESS占高6位;若要显示更为复杂的图象信息,只需扩展存储器及寻址的数据线宽度,为了保证行地址信号输出与行扫描信号输出同步,场地址信号输出与场扫描信号输出同步,在VHDL编程时,可用25MHz时钟作为进程的启动信号。
输出信号的时序波形如图3.1所示。
图3.1
3.2视频输出接口电路部分设计
VGA接口采用非对称分布的15pin连接方式,其工作原理是将显存内以数字格式存储的图像(帧)信号在RAMDAC里经过模拟调制成模拟高频信号,然后进行输出显示,这样VGA信号就不必像其它视频信号那样还要经过矩阵解码电路的换算。
从视频成像原理可知VGA的视频传输过程是最短的,所以VGA接口拥有许多的优点,如无串扰、无电路合成分离损耗等。
VGA接口如图3.2所示。
图3.2
3.3模式控制与显示部分设计
为了实现人机对话,模式控制与显示即人机接口的设计,选用LCD显示器和矩阵键盘,使接口和显示更加友好。
要求能根据键盘扫描结果,控制不同的图象信号输出,并进行相应的功能显示。
采用FPGA作为控制器,对功能显示模块进行控制。
用VHDL语言编程,对液晶显示模块的控制。
当然也可以对FPGA器件编程,实现对键盘模块和功能显示模块的控制。
但需占用FPGA器件的逻辑资源,会对定制图像信息的存储空间造成影响。
本设计利用FPGA的I/O口资源,键盘扫描过程是列扫描行输出,逐列扫描,读取键值,根据读回的值判断位置,执行相应功能程序。
显示器采用TS-12864-3液晶显示屏,由FPGA控制及驱动,显示系统当前工作状态等信息。
3.4VGA显示模块
在水平时序中,包括以下几个时序参数:
水平同步脉冲宽度;水平同步脉冲结束到水平门的开始之间的宽度;一个视频行可视区域的宽度;一个完整的视频行的宽度,从水平同步脉冲的开始到下一个水平同步脉冲的开始。
分辨率
刷新速率
像素频率
同步脉冲
后沿
有效时间
前沿
帧长
640/480
60
25
96
45
646
13
800
640/480
72
31
40
125
646
21
832
800/600
56
36
72
125
806
21
1024
800/600
60
40
128
85
806
37
1056
800/600
72
50
120
611
806
53
1040
表3.1 水平时序表
垂直时序与水平时序类似,包括以下几个不同的时序参数:
垂直同步脉冲宽度;垂直同步结束到垂直门的开始之间的宽度;一个视频帧可是区域的宽度;一个完整视频帧的宽度,从垂直同步脉冲到下一个垂直同步脉冲的开始。
分辨率
刷新速率
行宽
同步脉冲
后沿
有效时间
前沿
帧长
640/480
60
31
2
30
484
9
525
640/480
72
26
3
26
484
7
520
800/600
56
28
1
20
604
-1
625
800/600
60
26
4
21
604
-1
628
800/600
72
20
6
21
604
35
666
表3.2 垂直时序
显示方案:
在本设计中,设定FPGA开发箱能提供的工作频率为12MHZ,当选用640*480分辨率,刷新率60Hz,这样时钟频率为800*525*60=25.2MHz,12MHz时钟频率还不够,所以将每行640个像素点再分,每28个像素点看成一个像素点,这样时钟频率为29*525*60=0.9MHz。
将12MHz时钟进行13分频,得到0.9MHz频率,可以看成29*60*525,即每行扫描时间为29个时钟周期,扫描完所有列消耗525个时钟周期,刷新率还是60Hz。
3.5ROM地址发生器
“ROM地址发生器”接收所要显示的数据读取控制信号,产生对应得ROM地址,根据VGA显示的像素分布,确定读取对应数据的地址,由于所显示的图形每行需256个像素,而ROM中每个地址存储的数据时64位,故每4个地址取出的数据用于一行的显示。
3.6ROM地址存储器
“ROM存储器”为FPGA内部块RAM配置成的单端口ROM,用于存储汉字图形的字模数据,根据ROM地址将相应的显示内容的数据传送给数据并串转换模块。
为了便于控制显示图形和容易编程,现制定显示区域为512行256列,每列为1bit,共为数据为512x256=131072bit,因此ROM的设定应该是:
设定WORD为64bit,则深度为:
131072/64=2048=2^12,所以ROM的地址线为12根,建立的ROM与.mif文件。
4实验程序
LIBRARYieee;
USEieee.std_logic_1164.all;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
entityvga640480is
port(clk:
INSTD_LOGIC;
hs,vs,r,g,b:
OUTSTD_LOGIC;
rgbin:
INSTD_LOGIC_VECTOR(2DOWNTO0);
hcntout,vcntout:
OUTSTD_LOGIC_VECTOR(9DOWNTO0));
endvga640480;
ARCHITECTUREONEOFvga640480IS
signalhcnt,vcnt:
STD_LOGIC_VECTOR(9DOWNTO0);
signalcounth,countv:
STD_LOGIC_VECTOR(9DOWNTO0);
signalcnt_scan:
std_logic_vector(9downto0);
begin
--
process(clk)
begin
if(clk'eventandclk='1')then
cnt_scan<=cnt_scan+1;
if(counth>="0000010000")then
cnt_scan<="0000000000";
endif;
endif;
endprocess;
process(cnt_scan(9),counth)--16yiwei
begin
if(cnt_scan(9)'event)and(cnt_scan(9)='1')then
counth<=counth+1;
elsenull;
endif;
endprocess;
--
process(clk)
begin
if(rising_edge(clk))then
if(hcnt<800)then
hcnt<=hcnt+1;
else
hcnt<=(others=>'0');
endif;
endif;
endprocess;
process(clk)
begin
if(rising_edge(clk))then
if(hcnt=640+8)then
if(vcnt<525)then
vcnt<=vcnt+1;
else
vcnt<=(others=>'0');
endif;
endif;
endif;
endprocess;
process(clk)
begin
if(rising_edge(clk))then
if((hcnt>=640+8+8)and(hcnt<640+8+8+96))then
hs<='0';
else
hs<='1';
endif;
endif;
endprocess;
process(vcnt)
begin
if((vcnt>=480+8+2)and(vcnt<480+8+2+2))then
vs<='0';
else
vs<='1';
endif;
endprocess;
process(clk)
begin--process
ifrising_edge(clk)then--controlwheredisplay
if(hcnt>=0+counth)--144whyfrom144?
and(hcnt<128+counth)--784640+100
and(vcnt>=0+130)--39whyfrom39?
and(vcnt<128+130)--519480+39
then
r<=rgbin
(2);g<=rgbin
(1);b<=rgbin(0);
else
r<='0';g<='0';b<='0';
endif;
endif;
endprocess;
hcntout<=hcnt;vcntout<=vcnt;
endONE;
5实验总结
本实验在课编程技术的基础上,根据VGA原理,运用VHDL描述语言实现了VGA控制设计的方案。
1.再设计的过程中,遇到了很多问题,在设计之初通过查找大量资料,对VGA的原理有了初步的认识,但是在进行行列时序信号的计算时还是有一定的不理解。
在指导老师的帮助下,了解了信号的产生。
2.通过老师的指点和自学,我也分析出了本设计存在的不足。
并且在网上找了相关程序的代码,发现存在一些问题,程序使用的是传统CRT显示器,而我们只有液晶显示器,经过对程序的调整,实现了对程序的显示。
在对ROM存储图片时发现由于内存有限,只能存储128*128像素的图片,最后只能显示一小块区域。
3.实验中我进一步熟悉了数字系统VHDL设计和仿真的流程,加深了对QuartusII软件的使用的理解。
4.通过设计时序控制电路,和图像产生电路,我更深入地理解了FPGA技术,即同过软件编程的方法来实现硬件时序和组合电路,加快了产品开发的速度,以满足不断变化的市场需求。
附录
附录A总原理图
附录B实验现象
附录C引脚分布图