基于FPGA的VGA彩条图像显示.docx
- 文档编号:3649613
- 上传时间:2022-11-24
- 格式:DOCX
- 页数:26
- 大小:482.91KB
基于FPGA的VGA彩条图像显示.docx
《基于FPGA的VGA彩条图像显示.docx》由会员分享,可在线阅读,更多相关《基于FPGA的VGA彩条图像显示.docx(26页珍藏版)》请在冰豆网上搜索。
基于FPGA的VGA彩条图像显示
基于FPGA的VGA彩条图像显示
1.设计的任务及内容
在电子电路领域中,设计自动化工具已经被广大电子工程师所接受,它必将取代人工设计方法并成为主要的设计手段。
目前,Verilog语言已经成为各家EDA工具和集成电路厂商认同和共同推广的标准化硬件描述语言,随着科学技术的迅猛发展,电子工业界经历了巨大的飞跃。
集成电路的设计正朝着速度快、性能高、容量大、体积小和微功耗的方向发展,这种发展必将导致集成电路的设计规模日益增大。
该实训的设计是用Verilog语言硬件描述语言设计出一个VGA图象显示控制器,用Verilog硬件描述语言进行编程,把Verilog语言描述的VGA图象显示控制器所需的程序在QuartusⅡ软件环境下进行模拟仿真,以此来验证所设计的结果是否满足设计的要求。
在结果符合要求的情况下把Verilog程序下载到FPGA器件上,利用FPGA器件内部存储器存储所需要的数据,再通过VGA接口输出到显示器上,从而达到设计的要求。
VGA显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备,FPGA以其结构的优势可以使用很少的资源产生VGA的各种控制信号。
CRT显示器作为一种通用型显示设备,如今已广泛应用于我们的工作和生活中。
与嵌入式系统中常用的显示器件相比,它具有显示面积大、色彩丰富、承载信息量大、接口简单等优点,如果将其应用到嵌入式系统中,可以显著提升产品的视觉效果。
如今随着液晶显示器的出现,越来越多的数字产品开始使用液晶作为显示终端。
但基于VGA标准的显示器仍是目前普及率最高的显示器[1]。
若驱动此类显示器,需要很高的扫面频率,以及极短的处理时间,正是由于这些特点,所以可以用FPGA来实现对VGA显示器的驱动。
本次专业课程设计即选用FPGA来实现VGA的显示。
随着FPGA的不断发展及其价格的不断下降,FPGA的可编程逻辑设计的应用优势逐渐显现出来。
现在,越来越多的嵌入式系统选择了基于FPGA的设计方案。
在基于FPGA的大规模嵌入式系统设计中,为实现VGA显示功能,既可以使用专用的VGA接口芯片如SPX7111A等,也可以设计和使用基于FPGA的VGA接口软核。
虽然使用VGA专用芯片具有更稳定的VGA时序和更多的显示模式可供选择等优点,但设计和使用VGA接口软核更具有以下优势:
(1)使用芯片更少,节省板上资源,减小布线难度;
(2)当进行高速数据传输时,具有更小的高频噪声干扰;(3)FPGA(现场可编程门阵列)设计VGA接口可以将要显示的数据直接送到显示器,节省了计算机的处理过程,加快了数据的处理速度,节约了硬件成本。
1.1FPGA简介
FPGA采用了逻辑单元阵列LCA(LogicCellArray)这样一个概念,内部包括可配置逻辑模块CLB(ConfigurableLogicBlock)、输出输入模块IOB(InputOutputBlock)和内部连线(Interconnect)三个部分[9]。
FPGA的基本特点主要有:
1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。
2)FPGA可做其它全定制或半定制ASIC电路的中试样片。
3)FPGA内部有丰富的触发器和I/O引脚。
4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。
5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。
可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。
FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。
用户可以根据不同的配置模式,采用不同的编程方式。
加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。
掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。
FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。
当需要修改FPGA功能时,只需换一片EPROM即可。
这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。
因此,FPGA的使用非常灵活。
FPGA(FiledProgrammableGateArray),即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。
它是作为专用集成电路(ASIC)领域中的一种半订制电路而出现的,既解决了订制电路的不足,又克服了原有可编程器件门电路数有限的缺点。
1.2Quartus
软件概述
QuartusII软件是Altera公司最新版本的EDA开发软件,支持APEX系列、Cyclone系列、Stratix系列和Excalibur系列等新型系列器件的开发。
含有工作组计算、集成逻辑分析仪、EDA工具集成、多过程支持、增强重编译和IP集成等特性。
支持百万门级的设计,支持高速I/O设计,具有更强的设计能力和更快的编译速度。
QuartusII开发软件为可编程片上系统(SOPC)设计提供了一个完整的设计环境。
无论是使用个人电脑、NUIX或Linux工作站,QuartusII都提供了方便设计、快速编译处理以及编程功能。
QuartusII输入的设计过程可分为创建工程、输入文件、项目编译、项目校验和编程下载等几个步骤。
1.3本实训的开发板简介
本次实训采用板采用Altera公司CycloneII系列EP2C8Q208芯片而设计的。
开发板上使用JTAG接口对芯片进行编程仿真调试,利用AS配置EPCS4Flash芯片。
自带的ByteBlasterII下载线可以下载Altera公司的所有FPGA芯片。
1.4设计的主要内容
此设计要实现某一分辨率下(如640*480@60Hz)的VGA显示驱动,能简单显示彩条图像并且实现LCD显示等。
此程序使用Verilog语言进行描述,VerilogHDL是目前应用最为广泛的硬件描述语言.VerilogHDL可以用来进行各种层次的逻辑设计,也可以进行数字系统的逻辑综合,仿真验证和时序分析等。
VerilogHDL适合算法级,寄存器级,逻辑级,门级和版图级等各个层次的设计和描述.VerilogHDL进行设计最大的优点是其工艺无关性.这使得工程师在功能设计,逻辑验证阶段可以不必过多考虑门级及工艺实现的具体细节,只需根据系统设计的要求施加不同的约束条件,即可设计出实际电路.VerilogHDL是一种硬件描述语言(hardwaredescriptionlanguage),为了制作数字电路而用来描述FPGA的设计之用。
根据VGA接口协议,利用FPGA芯片实现借口控制器功能,并在CRT显示器上做出相应显示。
要进行彩条显示,彩色方块显示,利用案件实现显示模式的切换。
2设计系统方案
1.熟悉VGA工作原理及VGA接口协议、工作时序。
2.计算出合适的时序,并对原始时钟进行分频处理以获取符合时序要求的各频率。
3.须要显示的图像等可存储于外部存储器,运行时,从外部存储器读取显示数据。
显示控制器是一个较大的数字系统,采用模块化设计原则、借鉴自顶向下的程序设计思想,进行功能分离并按层次设计。
利用Verilog硬件描述语言对每个功能模块进行描述,并逐一对每个功能模块进行编译仿真,使顶层VGA显示控制器的模块实体仿真综合得以顺利通过[18]。
VGA显示控制器主要由以下模块组成:
分频模块、VGA时序控制器模块、彩条图形生成模块、VGA显示模块、存储模块等,如下图2.1所示。
图2.1基于FPGA的VGA显示控制系统
2.1VGA显示的发展状况
显示绘图阵列(videographicarray,VGA)接口,他作为一种标准的显示接口得到了广泛的应用。
VGA接口大多应用在显示器与显卡之间;同时还可以用用在擦二色等离子电视输入图像的模数转换上;VGA接口同样也是LCD液晶显示设备的标准接口。
可编程逻辑器件随着微电子制造工艺的发展取得了长足的进步。
早期的器件只能存储少量的数据,完成简单的逻辑功能;发展到现在,可以完成复杂的逻辑功能,速度更块,规模更大,功耗更低。
目前可编程逻辑器件主要有两大类:
复杂可编程逻辑器件(complexprogrammablelogicdevice,CPLD)和现场可编程逻辑器件(filedprogrammablegatearray,FPGA)。
FPGA的运行速度块,管脚资源丰富,容易实现大规模的系统设计,有大量的软核可用,便于进行二次开发。
另外,由于FPGA具有可重构能力、抗看绍兴强等特点,因此,FPGA在工业控制等领域越来越受到重视[4]。
利用FPGA完成VGA显示控制,可以使图像的显示脱离PC机的控制,形成体积小、功耗低的格式嵌入式系统(便携式设备或手持设备),应用于地面勘测、性能检测等方面,具有重要的现实意义。
显示器因为其输出信息量大,输出形式多样等特点已经成为现在大多数设计的常用输出设备。
在FPGA的设计中可以使用很少的资源,就产生VGA各种信号。
为了通过VGA端口连接显示器显示前端采集到的图像数据,本课题在21EDA—AlteraFPGA开发板上使用VGA接口在显示器上显示彩条及简单的图形,可以作为整个采集系统显示设计的参考,具有一定的实用价值。
2.2VGA显示接口
VGA接口负责向显示器输出相应的显示信号。
VGA接口是一种D型接口,上面共有15个针孔,非对称地分成3排,每排5个,其排列及接口定义如图1.1所示。
图2.2VGA接口图
在基于FPGA的VGA控制中,只需要考虑行同步信号(Hs)、场同步信号(Vs)、蓝基色(R)、绿基色(G)、红基色(B)这5个信号。
如果能从FPGA发出这5个信号到VGA接口,就可以实现对VGA的控制。
2.3VGA显示的原理
VGA显示图像原理:
常见的彩色显示器,一般由CRT(阴极射线管)构成。
彩色是有R,G.B(红:
RED,绿:
GREEN,蓝:
BLUE)三基色组成。
显示是用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有银光粉的荧光屏幕上,产生R,G,B三基色,合成一个彩色像素[7-8]。
扫描从屏幕的左上方开始,从左到右,从上到下,进行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行同步,扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,预备下一场的扫描。
它的行场扫描时序示意图1.2所示。
现以正极性为例,说明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.3行场扫描示示意图
2.4硬件电路实现
VGA的图形模式分为3类:
CGA、EGA兼容的图形模式;标准的VGA图形模式;VGA扩展图形模式。
后两种图形模式统称为VGA图形模式。
本研究基于标准VGA模式来实现。
常见的彩色显示器一般都是由CRT(阴极射线管)构成,每一个像素的色彩由红、绿、蓝三基色构成。
显示时采用的是逐行扫描的方式。
VGA显示模块产生的由水平同步信号和垂直同步信号控制阴极射线管中的电子枪产生电子束,轰击涂有荧光粉的屏幕,产生红、绿、蓝三基色,于显示屏上合成一个彩色像素点。
图2.4表示的是VGA显示模块与CRT显示器的控制框图。
图2.4VGA显示模块与CRT显示器的控制框图
电子束扫描一幅屏幕图像上的各个点的过程称为屏幕扫描。
现在显示器都是通过光栅扫描方式来进行屏幕扫描。
在光栅扫描方式下,电子束按照固定的路径扫过整个屏幕,在扫描过程中通过电子束的通断强弱来控制电子束所经过的每个点是否显示或显示的颜色[21]。
电子枪在VGA显示模块产生的行同步、场同步等控制信号的作用下进行包括水平扫描、水平回扫、垂直扫描、垂直回扫等过程。
光栅扫描的路径通常为:
从上到下扫过每一行,在每一行中从左到右地进行扫描。
其过程如下:
电子束从屏幕左上角开始向右扫,当到达屏幕的右边缘时,电子束关闭(水平消隐),并快速返回屏幕左边缘(水平回扫),然后在下一条扫描线上开始新的一次水平扫描。
一旦所有的水平扫描均告完成,电子束在屏幕的右下角结束并关闭(垂直消隐),然后迅速返回到屏幕的左上角(垂直回扫),开始下一次光栅扫描。
通过对硬件进行编程,输出标准的VGA信号(红、绿、蓝三色信号和行、帧同步信号),通过15针VGA接口输出至显示器,可具有显示驱动程序的能力,驱动显示器显示图像信号。
板上的VGA接口只需使用其中的5个引脚,其中行、帧同步信号直接由FGPA输出;红、绿、蓝三色信号使用FPGA上8个引脚,8位数据,其中红色2位,绿色和蓝色各3位,经由电阻网络D/A变换后输出值显示器,具有256种颜色。
VGA接口与FPGA引脚连接见图2.5。
图2.5VGA与FPGA引脚连接
2.5软件实现
设计VGA图像显示控制需要注意两个问题:
一个是时序的驱动,这是完成设计的关键,时序稍有偏差,显示必然不正常,甚至会损坏彩色显示器;另一个是VGA信号的电平驱动。
针对开发板的条件,可以用50MHz的系统时钟进行分频得到20MHz的像素频率输出,FPGA通过串联电阻直接驱动5个VGA信号。
每个颜色信号串一个电阻,每位的颜色信号分别是VGA_RED、VGA_BLUE、VGA_GREEN。
每个电阻与终端的75欧电缆电阻相结合,确保颜色信号保持在VGA规定的0V~0.7V之间。
VGA_HSYNC和VGA_VSYNC信号使用LVTTL或LVCMOS3I/O标准驱动电平。
通过VGA_RED、VGA_BLUE、VGA_GREEN置高或低来产生8中颜色,如下表所示。
VGA信号的时序由视频电气标准委员会(VESA)规定。
以下提供的VGA系统和时序信息作为例子来说明FPGA在640×480模式下是如何驱动VGA监视器的。
VGA显示器基于CRT,使用调幅模式,移动电子束(或阴极射线)在荧光屏上显示信息。
LCD使用矩阵开关给液晶加压,在每个像素点上通过液晶来改变光的介电常数。
尽管下面的描述仅限于CRT,LCD已经发展到可以同CRT使用同样的时序信号了。
因此,下面的讨论均适合CRT和LCD。
在CRT显示器中,电流的波形通过蹄形磁铁产生磁场,使得电子束偏转,光栅在显示屏上横向显示,水平方向从左至右,垂直方向从上至下。
当电子束向正方向移动时,信息才显示,即从左至右、从上至下。
如果电子束从后返回左或顶边,显示屏并不显示任何信息。
在消隐周期——电子束重新分配和稳定于新的水平或垂直位时,丢失了许多信息。
显示协议定义了电子束的大小以及通过显示屏的频率,该频率是可调的。
现在的VGA显示屏支持多种显示协议,VGA控制器通过协议产生时序信号来控制光栅。
控制器产生同步脉冲TTL电平来设置电流通过偏转磁铁的频率,以确保像素或视频数据在适当的时间送给电子枪。
视频数据一般来自重复显示存储器中一个或多个字节——它们被分配到每个像素单元。
入门实验板使用每个像素中的3位,产生图8中可能的一种颜色。
控制器指定视频数据缓冲器以备电子束通过显示屏。
然后,控制器接收并利用视频数据在适当的时间显示,电子束移动到指定的像素点。
根据图2.5所示,VGA控制器产生水平同步时序信号(HS)和垂直同步时序信号(VS),调节在每个像素时钟视频数据的传送。
像素时钟定义了显示像素信息的有效时间段。
VS信号定义显示的更新频率,或刷新屏幕信息的频率。
最小的刷新频率是取决于显示器的亮度和电子束的强度,实际频率一般在60~120Hz之间。
给定的刷新频率的水平线的数量定义了水平折回频率[23]。
下表的时序信号是640×480,像素时钟25Mhz,刷新频率60Hz±1。
图7说明了每个时序的联系。
同步脉冲的时序宽度(TPW)和前后门拱的间隔TFP和TBP)基于观察多种VGA的显示屏的结果。
前后门拱的间隔是前后同步脉冲时间。
在这些时段信息不能显示。
图2.6VGA控制器时序信号
图2.7各时序之间的联系
2.6设计方案
设计方案如下:
将图像控制模块分为这样几部分:
锁相环电路(PLL.v)、VGA显示模块(vga.v)、时钟分频模块(clk_div.v)、LCD状态控制模块(clk_ctrl.v)、LCD顶层模块(lcd.v)。
其中锁相环给分频器和相位器提供稳定的20MHzA时钟频率信号;VGA显示模块用于产生1024*768@60Hz//65M彩条图像,并控制显示范围和消隐范围以及产生水平同步时序信号hs和垂直同步时序信号vs的值;提供给SRAM地址并按地址读出八位数据(灰度值Y),然后得到R、G、B的值(若Y>中间值,则R=G=B=1;否则R=G=B=0),并把R、G、B的值通过VGA接口传到CRT显示器;.分频模块通过计数器实现分频功能;状态控制模块给出液晶显示第一行和第二行内容;LCD顶层模块将clk_div模块输出的clk_lcd链接到lcd_ctrl中,显示内容。
3VGA彩条显示调试与显示
3.1软件程序设计
本设计需要三个模块,一个是锁相环模块、VGA显示模块、LCD模块。
1.锁相环模块
设计一个cyclone2锁相环,在选择参数时的分频比为1:
1,输入的最高频率设置成20MHz,占空比50%,所以C0的输出最高频率是20MHz,输出与输入频率相同,C1的输出最高频率是65MHz,也是稳定的。
模块如图3.1所示。
图3.1锁相环模块
锁相环的设计部分程序如下:
modulepll(
inclk0,
c0,
c1);
inputinclk0;
outputc0;
outputc1;
wire[5:
0]sub_wire0;
wire[0:
0]sub_wire5=1'h0;
wire[1:
1]sub_wire2=sub_wire0[1:
1];
wire[0:
0]sub_wire1=sub_wire0[0:
0];
wirec0=sub_wire1;
wirec1=sub_wire2;
wiresub_wire3=inclk0;
wire[1:
0]sub_wire4={sub_wire5,sub_wire3};
altpllaltpll_component(
.inclk(sub_wire4),
.clk(sub_wire0),
.activeclock(),
.areset(1'b0),
.clkbad(),
.clkena({6{1'b1}}),
.clkloss(),
.clkswitch(1'b0),
.configupdate(1'b0),
.enable0(),
.enable1(),
.extclk(),
.extclkena({4{1'b1}}),
.fbin(1'b1),
.fbmimicbidir(),
.fbout(),
.locked(),
.pfdena(1'b1),
.phasecounterselect({4{1'b1}}),
.phasedone(),
.phasestep(1'b1),
.phaseupdown(1'b1),
.pllena(1'b1),
.scanaclr(1'b0),
.scanclk(1'b0),
.scanclkena(1'b1),
.scandata(1'b0),
.scandataout(),
.scandone(),
.scanread(1'b0),
.scanwrite(1'b0),
.sclkout0(),
.sclkout1(),
.vcooverrange(),
.vcounderrange());
defparam
altpll_component.clk0_divide_by=1,
altpll_component.clk0_duty_cycle=50,
altpll_component.clk0_multiply_by=1,
altpll_component.clk0_phase_shift="0",
altpll_component.clk1_divide_by=1,
altpll_component.clk1_duty_cycle=50,
altpll_component.clk1_multiply_by=1,
altpll_component.clk1_phase_shift="0",
altpll_component.inclk0_input_frequency=50000,
altpll_component.intended_device_family="CycloneII",
altpll_component.lpm_hint="CBX_MODULE_PREFIX=pll",
altpll_component.lpm_type="altpll",
altpll_component.operation_mode="NO_COMPENSATION",
altpll_component.port_activeclock="PORT_UNUSED",
altpll_component.port_areset="PORT_UNUSED",
altpll_component.port_clkbad0="PORT_UNUSED",
altpll_component.port_clkbad1="PORT_UNUSED",
altpll_component.port_clkloss="PORT_UNUSED",
altpll_component.port_clkswitch="PORT_UNUSED",
altpll_component.port_configupdate="PORT_UNUSED",
altpll_component.port_fbin="PORT_UNUSED",
altpll_component.port_inclk0="PORT_USED",
altpll_component.port_inclk1="PORT_UNUSED",
altpll_component.port_locked="PORT_UNUSED",
altpll_component.port_pfdena
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 FPGA VGA 彩条 图像 显示
![提示](https://static.bdocx.com/images/bang_tan.gif)