基于FPGA的VGA显示设计及仿真实现.docx
《基于FPGA的VGA显示设计及仿真实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA的VGA显示设计及仿真实现.docx(25页珍藏版)》请在冰豆网上搜索。
基于FPGA的VGA显示设计及仿真实现
本科毕业论文(设计)
论文题目
:
基于FPGA的VGA显示设计及仿真实现
姓名
:
XXX
学号
:
XXX
班级
:
XXX
年级
:
XXX
专业
:
通信工程
学院
:
信息工程学院
指导教师
:
XXX
完成时间
:
XXXX年X月XX日
作者声明
本毕业论文(设计)是在导师的指导下由本人独立撰写完成的,没有剽窃、抄袭、造假等违反道德、学术规范和其他侵权行为。
对本论文(设计)的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。
因本毕业论文(设计)引起的法律结果完全由本人承担。
毕业论文(设计)成果归XXX所有。
特此声明。
作者专业
:
作者学号
:
作者签名
:
年月日
基于FPGA的VGA显示设计及仿真实现
XXX
TheDesignandImplementationofthe
VGAdisplaybasedonFPGA
XXXX年X月XX日
摘要
本文简述了VGA显示的特点和工作原理,重点介绍了采用自顶向下层次化、模块化的设计方法,在FPGA上实现VGA的显示设计。
显示绘图阵列(videographicarray,VGA)接口是LCD液晶显示设备的标准接口,VGA具有分辨率高、显示速率快、颜色丰富等优点。
显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备。
在FPGA的设计中可以使用很少的资源,就产生VGA各种信号,再加上VHDL语言灵活的描述方法以及与硬件无关的特点,使得使用VHDL语言基于FPGA芯片实现VGA显示控制成为研究的方向。
本文对基于VHDL的VGA的显示控制进行了研究,并设计了VGA显示器彩条信号发生器。
所做的主要工作为:
(1)在设计中采用了自顶向下的层次化、模块化的设计思想,将整个接口划分为多个模块,利用VHDL语言的描述方法进行了各个功能模块的设计,最终完成了VGA显示的系统设计。
(2)运用ISE软件进行仿真。
关键词:
VHDL;VGA;ISE;彩条信号
Abstract
ThispaperbrieflydescribesthecharacteristicsandworkingprincipleofVGAdisplay,focusonusingthetop-downhierarchicalandmodulardesignmethod,realizationofVGAdisplaydesignonFPGA.
Displaygraphicsarray(videographicarray,VGA)interfaceisastandardinterfaceLCDliquidcrystaldisplaydevice,VGAwithhighresolution,fastdisplayrate,colorrich,etc.Displayoutputbecauseofitslargeamountofinformation,theoutputformscharacteristicshasbecomethemostcommonlyusedoutputdevicedesignnow.
InthedesignofFPGAcanuselessresources,andproduceVGAsignals,flexiblecoupledwithVHDLlanguagedescriptionmethodandhasnothingtodowiththehardwarecharacteristics,makeuseofVHDLlanguagebasedontheFPGAchiptorealizeVGAdisplaycontrolbecomethedirectionofresearch.
Inthispaper,basedonVHDLVGAdisplaycontrolisstudied,andVGAdisplaycolorbarsignalgeneratorisdesigned.Themainworkdoneasfollows:
(1)InthedesignUSESthetop-downhierarchical,modulardesignthought,willthewholeinterfaceisdividedintoseveralmodules,useofVHDLlanguagedescriptionmethodforthedesignofeachfunctionalmodule,finallycompletedtheVGAdisplaysystemdesign.
(2)UsingISEsoftwaresimulation.
Keywords:
VHDL;VGA;ISE;Colorbarsignal
1概述
1.1本选题研究的目的及意义
VGA的英文全称是VideoGraphicArray,即显示绘图阵列。
VGA支持在640×480的较高分辨率下同时显示16种色彩或256种灰度,同时在320×240分辨率下可以同时显示256种颜色。
VGA显示控制器控制图像信号通过电缆传输到显示器上并显示出来。
目前的显示器技术主要包括两种:
CRT(CathodeRayTube,阴极射线管)和LCD(LiquidCrystalDisplay,液晶显示屏)。
CRT通过帧同步信号和行同步信号控制电子枪的电子束逐行逐点地扫描,将电子打在荧光点上,使之发光。
通过视觉暂留的作用,看到的就是一副完整的画面。
LCD与CRT类似,但CRT是模拟方式的,通过电路控制,电子束可以任意移动;而LCD是数字方式的,只有位置固定的电流通路,所以只能通过电路矩阵逐行扫描,而不能逐点,即一行上所有的点同时工作。
VGA接口是一种D型接口,上面共有15针空,分成三排,每排五个。
VGA接口是显卡上应用最为广泛的接口类型,多数的显卡都带有此种接口。
有些不带VGA接口而带有DVI(DigitalVisualInterface数字视频接口)接口的显卡,也可以通过一个简单的转接头将DVI接口转成VGA接口,通常没有VGA接口的显卡会附赠这样的转接头。
目前大多数计算机与外部显示设备之间都是通过模拟VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字/模拟转换器转变为R,G,B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中。
对于模拟显示设备,如模拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像管生成图像。
而对于LCD、DLP等数字显示设备,显示设备中需配置相应的A/D(模拟/数字)转换器,将模拟信号转变为数字信号。
在经过D/A和A/D2次转换后,不可避免地造成了一些图像细节的损失。
VGA接口应用于CRT显示器无可厚非,但用于连接液晶之类的显示设备,则转换过程的图像损失会使显示效果略微下降。
显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备。
在FPGA的设计中可以使用很少的资源,就产生VGA各种信号。
为了通过VGA端口连接显示器显示前端采集到的图像数据,本课题在Xilinx公司的SPARTAN-3E开发板上使用VGA接口在显示器上显示简单的彩条,可以作为整个采集系统显示设计的参考,具有一定的实用价值。
1.2本选题国内外研究状况综述
自1985年Xilinx公司推出第一片现场可编程逻辑器件(FPGA)至今,FPGA历史已经经历了十几年的发展历史。
FPGA不仅可以解决电子系统小型化、低功耗、高可靠性等问题,而且其开发周期短、开发软件投入少、芯片价格不断降低,促使FPGA越来越多地取代了ASIC的市场,特别是对小批量、多品种的产品需求,是FPGA成为首选。
自发明PFGA以来,就不断的推出新器件和开发工具,力求芯片的速度更高、功耗更低。
主要推出了Virex系列和SparanTM系列的FPGA,Vriex系列突破了传统FPGA密度和性能限制,使FPGA不仅仅是逻辑模块,而成为一种系统元件。
而Spartan系列为替代ASIC的大容量FPGA树立了一个新的低成本标准。
本课题使用的就是该公司的SPARTAN-3E开发板。
VGA是IBM于1987年提出的一个使用模拟信号的电脑显示标准。
在性能上,VGA将16色模式的分辨率提高到了640×480,同时VGA新提供了一种具有320×200分辨率、256种颜色的图形模式,且所显示的每一种颜色都可从262144(18位)种颜色中选择,VGA的这种色彩显示能力对微机图形/图象软件的发展起到了很大的促进作用先后分别经历了EGA,EGA,VGA,SVGA,XGA,SXGA,UXGA,QXGA,WQXGA,QSXGA,WQSXGA,QUXGA,WQUXGA,1080P。
1920×1080分辨率(1080P)是美国电影电视工程师协会(SMPTE)制定的最高等级高清数字电视的格式标准,有效显示格式为:
1920×1080,像素数达到207.36万。
美国电影电视协会将数字电视扫描线的不同分为:
1080p、1080i和720p。
1080p是逐行扫描下达到1920×1080分辨率的显示格式,1080i是隔行扫描达到1920×1080分辨率的意思,720p是1280×720分辨率下逐行扫描的意思。
原NTSC国家采用的是1080@60Hz格式,与NTSC模拟电视场频相同;而欧洲及中国等PAL制国家则采用1080@50Hz的模式。
VGA由于良好的性能迅速开始流行,厂商们纷纷在VGA基础上加以扩充,如将显存提高至1M并使其支持更高分辨率如800×600或1024×768,这些扩充的模式就称之为VESA(VideoElectronicsStandardsAssociation,视频电子标准协会)的SuperVGA模式,简称SVGA,现在的显卡和显示器都支持SVGA模式。
VGA技术的应用主要基于VGA显示卡的计算机、笔记本等设备,而在一些既要求显示彩色高分辨率图像又没有必要使用计算机的设备上,VGA技术的应用却很少见到。
1.3本选题研究的主要内容
在撰文之前大量阅读了FPGA和VGA显示的有关资料,学习了相关的硬件知识和原理知识。
深入学习和研究了VHDL的应用实例。
在了解和对比VGA显示的几种实现方法后,经过思考、比较和讨论,决定以VHDL为VGA显示的描述语言,采用自顶向下层次化、模块化的设计方法,编写VHDL程序。
本文主要分为5章,章节安排如下:
第1章:
绪论。
主要介绍了开题的背景和研究意义,以及VGA显示的国内外研究现状。
第2章:
VGA显示的理论研究。
主要介绍VGA显示实现的基本原理。
第3章:
XilinxISE软件的具体使用。
主要描述VHDL硬件语言以及介绍XilinxISE软件的具体使用。
第4章:
VGA显示的设计与仿真。
VGA显示的VHDL语言实现,并在spartan-3E开发板上实现VGA显示功能,进行综合仿真并验证。
第5章:
后记。
主要介绍本文的优点和不足之处。
2VGA显示的理论研究
显示绘图阵列(videographicarray,VGA)接口是LCD液晶显示设备的标准接口,大多应用在显示器与显卡之间,同时还可以用在等离子电视输入图像的模数转换上。
VGA具有分辨率高、显示速率快、颜色丰富等优点,同时VGA显示系统还具有成本低、结构简单、应用灵活的优点。
VGA显示输出RGB三原色信号,RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色,目前在图像显示领域中应用非常广泛。
2.1VGA显示特点
VGA的显示特点是:
(1)扫描格式繁多,分辨率从320×200一直延伸到1280×1024,行频15.8~70Hz,场频50~100Hz。
常见的行频有31.4Hz,37.8Hz,57.9Hz,62.5Hz等,常见场频有50Hz,60Hz,70Hz,100Hz,16700K种颜色之分。
(2)显示器的显示方式有两种:
A/N显示方式和APA显示方式,即文本显示方式和图形显示方式。
A/N方式已淘汰不用,目前微机都采用APA图形方式。
(3)VGA接口为显示器提供两类信号,一类是数据信号,一类是控制信号。
数据信号包括红(Red)、绿(Green)、蓝(Blue)信号,简称RGB信号,控制信号包括水平同步信号和垂直同步信号。
输出不同分辨率时,水平同步信号和垂直同步信号的频率也不相同。
2.2VGA显示原理
2.2.1VGA显示的工作原理
常见的彩色显示器一般由CRT(阴极射线管)构成,彩色是由R(红)、G(绿)、B(蓝)3基色组成。
显示是采用逐行扫描的方式,阴极射线枪发出的电子束打在涂有荧光粉的荧光屏上,产生RGB三色基,最后合成一个彩色图像。
从荧幕的左上方开始自左向右扫描,每扫完一行图像电子束回到下一行的最左端,每行结束后电子枪回扫的过程中进行消隐。
然后重新开始行扫描,消隐,直到扫到荧幕的右下方,电子束回到荧幕的左上方重新开始新的图像扫描,并且在回到荧幕左上方的过程中进行消隐。
在消隐过程中不发射电子束。
每一行扫描结束时,用HS(行同步)信号进行同步;扫描完所有的行后用VS(场同步)信号进行同步。
它的行场扫描时序示意图2.1所示。
现以正极性为例,说明CRT的工作过程:
R、G、B为正极性信号,即高电平有效。
当VS=0,HS=0时,CRT显示的内容为亮的过程,即正向扫描过程约为26us。
当一行扫描完毕,行同步HS=1,约需6us,期间,CRT扫描产生消隐,电子束回到CRT的左边下一行的起始位置(X=0,Y=1);当扫描完480行后,CRT的场同步VS=1,产生场同步是扫描线回到CRT的第一行第一列(C=0,Y=0处,约为两个行周期)。
HS和VS的时序图。
T1为行同步消隐(约为6us);T2为行显示时间(约为26us),T3为场同步消隐(两行周期);T4为场显示时间(480行周期)。
图2.1行场扫描时序示意图
2.2.2VGA时序分析
通过对VGA显示基本工作原理的分析可知,要实现VGA显示就要解决数据来源、数据存储、时序实现等问题,其中关键还是如何实现VGA时序。
基于像素时钟,VGA时序控制器必须产生HS和VS时序信号。
像素时钟定义了用于显示一个像素信息的时间,VS信号定义了显示的刷新频率,通常刷新频率在50Hz到120Hz之间。
给定刷新频率后即定义了水平扫描频率即HS。
VGA的标准参考显示时序如图2.2所示。
行时序和帧时序都需要产生同步脉冲(Sync)、显示后沿(Backporch)、显示时序段(Displayinterval)和显示前沿(Frontporch)四个部分。
其中场频定义了显示的刷新频率,指定场频后所要扫描的行数指定了水平回扫频率即行频。
几种常用模式的时序参数如表2.1所示。
图2.2VGA时序参考图
表2.1VGA时序参考表
图像模式
行时序(µs)
场频(lines)
1024*768XGA(75Hz)
1.2
2.2
13
0.2
3
28
768
1
1024*768XGA(60Hz)
2.1
2.5
15.8
0.4
6
29
768
3
800*600XGA(60Hz)
3.2
2.2
20
1.0
4
23
600
1
800*600XGA(75Hz)
2.0
3.8
20.3
0.5
3
16
480
1
3ISE工具概述
随着计算机软件、硬件和集成电路制造技术的飞速发展,数字电路硬件设计复杂程度的快速增长,以及产生的设计成果可继承性的需要,对数字电子系统的设计方法产生了极大的影响,传统的以中小规模集成电路为基础模块、以电路图为表达方式的数字电子系统的设计方法正逐步被EDA技术的设计方法所取代。
3.1硬件描述语言
硬件描述语言(HDL,HardwareDescriptionLanguage)是EDA技术的重要组成部分,常用的硬件描述语言有VHDL、Verilog、ABEL等。
VHDL是EDA技术的主流硬件描述语言之一,也是本文设计所采用的硬件描述语言。
3.1.1VHDL的发展
VHDL的英文全名是Very-High-SpeedIntegratedCircuitHardwareDescriptionLanguage,诞生于1982年。
1987年底,VHDL被IEEE和美国国防部确认为标准硬件描述语言。
自IEEE公布了VHDL的标准版本IEEE-1076(简称87版)之后,各EDA公司相继推出了自己的VHDL设计环境,或宣布自己的设计工具可以提供VHDL接口。
此后VHDL在电子设计领域逐步取代了原有的各种非标准硬件描述语言。
1993年,IEEE对VHDL进行了修订,从更高的抽象层次和系统描述能力上扩展VHDL的内容,并公布了新版本的VHDL,即IEEE标准的1076-1993版本(简称93版)。
现在,VHDL和VerilogHDL作为IEEE的工业标准硬件描述语言,在电子工程领域已成为事实上的通用硬件描述语言。
3.1.2VHDL的特点
VHDL主要用于描述数字系统的结构,行为,功能和接口。
除了含有许多具有硬件特征的语句外,VHDL的语言形式和描述风格与句法是十分类似于一般的计算机高级语言。
VHDL的程序结构特点是将一项工程设计,或称设计实体(可以是一个元件,一个电路模块或一个系统)分成外部(或称可视部分,及端口)和内部(或称不可视部分)。
在对一个设计实体定义了外部界面后,一旦其内部开发完成后,其他的设计就可以直接调用这个实体。
这种将设计实体分成内外部分的概念是VHDL系统设计的基本点。
VHDL语言能够成为标准化的硬件描述语言并获得广泛应用,它自身必然具有很多其他硬件描述语言所不具备的优点。
归纳起来,VHDL语言主要具有以下优点:
(1)VHDL语言功能强大,设计方式多样
VHDL语言具有强大的语言结构,只需采用简单明确的VHDL语言程序就可以描述十分复杂的硬件电路。
同时,它还具有多层次的电路设计描述功能。
此外,VHDL语言能够同时支持同步电路、异步电路和随机电路的设计实现,这是其他硬件描述语言所不能比拟的。
VHDL语言设计方法灵活多样,既支持自顶向下的设计方式,也支持自底向上的设计方法;既支持模块化设计方法,也支持层次化设计方法。
(2)VHDL语言具有强大的硬件描述能力
VHDL语言具有多层次的电路设计描述功能,既可描述系统级电路,也可以描述门级电路;描述方式既可以采用行为描述、寄存器传输描述或者结构描述,也可以采用三者的混合描述方式。
同时,VHDL语言也支持惯性延迟和传输延迟,这样可以准确地建立硬件电路的模型。
VHDL语言的强大描述能力还体现在它具有丰富的数据类型。
VHDL语言既支持标准定义的数据类型,也支持用户定义的数据类型,这样便给硬件描述带来较大的自由度。
(3)VHDL语言具有很强的移植能力
对于同一个硬件电路的VHDL语言描述,它可以从一个模拟器移植到另一个模拟器上、从一个综合器移植到另一个综合器上或者从一个工作平台移植到另一个工作平台上去执行。
(4)VHDL语言的设计描述与器件无关
采用VHDL语言描述硬件电路时,设计人员并不需要首先考虑选择进行设计的器件。
这样,设计人员可以集中精力进行电路设计的优化,而不需要考虑其他的问题。
当硬件电路的设计描述完成以后,VHDL语言允许采用多种不同的器件结构来实现。
(5)VHDL语言程序易于共享和复用
VHDL语言采用基于库(library)的设计方法。
在设计过程中,设计人员可以建立各种可再次利用的模块,将这些模块存放在库中,就可以在以后的设计中进行复用。
3.1.3VHDL程序基本结构
一般的VHDL程序可以由实体(Entity)、结构体(Architecture)、配置(Configuration)、程序包和程序包体(Package)以及库(Library)5个部分组成,它们是VHDL程序的设计单元。
其中实体、配置和程序包属于初级设计单元,主要的功能是进行端口、行为、函数等的定义。
结构体和程序包体是次级设计单元,包含了所有行为以及函数的实现代码。
其中,程序包和程序包体又属于公用设计单元,即它们是被其他程序模块调用的。
库则是一批程序包的集合。
图3.1所示为VHDL程序设计单元之间的关系。
配置
实体程序包
初级设计单元
次级设计单元程序包体
结构体
图3.1VHDL程序设计单元关系图
无论是复杂的还是简单的数字模块,用VHDL来描述都至少需要包括两个部分,即实体申明(EntityDeclaration)和结构体(Architecture)。
其中实体申明用于说明模块的端口,而结构体用于描述模块的功能。
3.1.4VHDL语言的使用
(1)实体的申明方法
实体是设计的基本模块和设计的初级单元,在分层次设计中,顶层有顶级实体,含在顶级实体中的较低层次的描述为低级实体,通过配置可把顶层实体和底层实体连接起来。
实体语句用关键词ENTITY开头,实体名rsff是描述的符号名,在结束实体语句的ENDrsff之间,实体语句可以用关键词BEGIN把实体语句分成两部分:
即BEGIN之前是实体说明,BEGIN之后是实体语句。
在ENTITY语句的实体说明部分,常用PORT付语描述实体对外界连接的端口(数目、方向和数据类型)。
实体rsff有4个端口,Set/Reset是输入IN模式,Q/QB是输出BUFFER(缓冲)模式,都为BIT类型。
实体描述的格式如下:
ENTITY实体名IS
[GENERIC(常数名:
数据类型[:
设定值];
{常数名:
数据类型[:
设定值]});]
[PORT(端口名:
端口模式数据类型;
{端口名:
端口模式数据类型});]
ENDENTITY实体名;
其中,GENERIC是用于说明设计实体和其外部环境通信的对象,规定端口的大小、实体中子元件的数目、实体的延时特性等。
只能用整数类型表示,如整型、时间型等,其他类型的数据不能逻辑综合。
格式如下:
GENERIC([CONSTANT]属性名称:
[IN]子类型标识[:
=静态表达式],……);
PORT关键字用于定义模块的端口,它的格式如下:
PORT([SIGNAL]端口名称:
[方向]类型标识[BUS][:
=静态表达式],
[SIGNAL]端口名称:
[方向]类型标识[BUS][:
=静态表达式],
…
[SIGNAL]端口名称:
[方向]类型标识[BUS][:
=静态表达式]);
①SIGNAL:
SIGNAL是关键字,但是由于PORT之后必须是信号类,所以一般可以将SIGNAL关键字省略。
②端口名称:
是该端口的标识,通常由英文字母和数字组成,但是必须是英文字母打头。
③方向:
定义了端口是输入还是输出,如IN、OUT。
表明端口方向的关键字如表3.1所示。
表3.1端口方向关键字说明表
关键字
意义