基于FPGA的VGA接口显示的设计与实现.docx
《基于FPGA的VGA接口显示的设计与实现.docx》由会员分享,可在线阅读,更多相关《基于FPGA的VGA接口显示的设计与实现.docx(14页珍藏版)》请在冰豆网上搜索。
基于FPGA的VGA接口显示的设计与实现
编号
基于FPGA的VGA接口显示的设计与实现
DesignandimplementationofVGAinterfacebasedonFPGAdisplay
学生姓名
王雪
专业
控制科学与工程
学号
S1*******0
指导教师
杨晓慧
学院
电子信息工程学院
二〇一三年六月
摘要
利用现场可编程逻辑器件FPGA产生VGA时序信号和彩条图像信号,并将其作为信号源,应用于彩色等离子显示器的电路开发,方便彩色等离子显示器驱动控制电路的调试。
FPGA芯片具有可靠性高、编程灵活、体积小等优点,实验经过软硬件调试,最终在显示器上显示彩条正确图像。
利用此原理,可以设计更多的彩色图像,且可将采集的图像进行实时显示,将此作为信号源,应用于显示器电路的开发或某些嵌入式系统中,进行视频设备的调试与性能分析或系统中信号处理模块的调试与性能分析等。
关键词:
FPGAVGA接口时序控制彩条信号
Abstract
VGA-timingsignalsandcolorstripimagewereobtainedbyusingFPGA.Thesignalswereusedassourceswhendevelopingthecircuitsofcolorplasmadisplay
panel,andittookgreatconveniencetothedebuggingofthedrivingandcontrollingcircuitofcolorplasmadisplaypanel.TheFPGAchiphastheadvantagesofhighreliability,smallvolume,flexibleprogramming,justbecauseofthis,thetestcouldachievethedesiredresults,displayscreedisplayscolorbarsignals.Accordingtothisprinciple,wecandesigncolorimagemore,andmaketheimagereal-timedisplay,suchasthesignalsource,usedindisplaycircuitdevelopmentorsomeembeddedsystems,videoequipmentdebuggingandperformanceanalysisofthesystemsignalprocessingmoduledebuggingandperformanceanalysis.
Keywords:
FPGA,VGAinterface,timingcontrol,colorbarsignals
目录
摘要1
Abstract2
第一章引言4
第二章VGA显示接口的方案设计和原理5
2.1VGA接口5
2.2VGA显示原理5
2.3VGA信号时序6
2.4VGA显示方案实现7
第三章系统模块设计8
3.1系统模块原理图8
3.2分频模块8
3.3VGA彩条信号产生模块8
3.4实验结果12
第四章结论13
致谢14
参考文献15
第一章引言
视频图形阵列(VGA)作为一种标准的显示接口已经得到广泛的应用。
利用现场可编程逻辑器件产生VGA时序信号和彩条图像信号,并将其作为信号源,应用于电视机或计算机等彩色显示器的电路开发,方便彩色显示器驱动控制电路的调试。
计算机显示器的显示有许多标准,常见的有VGA,SVGA等。
在这里尝试用FPGA实现VGA图像显示控制器,这一过程通过编程实现,之后通过软件的测试和仿真,当软件验证无误后完成硬件的下载验证,最终在CRT显示器上实现输出,基本原理就是利用FPGA的可编程原理和VGA的时序控制原理,这在产品开发设计中有许多实际应用。
第2章VGA显示接口的方案设计和原理
2.1VGA接口
VGA(VideoGraphicsArray)作为一种标准的显示接口已经得到非常广泛的应用。
VGA在任何时刻都必须工作在某一显示模式下,其显示模式分为字符显示模式和图形显示模式,而在应用中讨论的是图形显示模式。
VGA显示卡端的接口为15针母插座,接口如图2-1所示。
该端口通过标准的监视电缆直接连接到PC监视器或平板LCD上。
图2-1为VGA接口。
图2-1VGA接口
2.2VGA显示原理
常见的彩色显示器一般由阴极射线管(CRT)构成,彩色由GRB(GreenRedBlue)基色组成。
显示采用逐行扫描的方式解决,阴极射线枪发出电子束打在涂有荧光粉的荧光屏上,产生GRB基色,合成一个彩色像素。
扫描从屏幕的左上方开始,从左到右,从上到下,逐行扫描,每扫完一行,电子束回到屏幕的左边下一行的起始位置,在这期间,CRT对电子束进行消隐,每行结束时,用行同步信号进行行同步;扫描完所有行,用场同步信号进行场同步,并使扫描回到屏幕的左上方,同时进行场消隐,并预备进行下一次的扫描。
VGA显示原理图如图2-2所示。
在本文中,FPGA通过串联电阻直接驱动5个VGA信号。
每个颜色信号串一个电阻,每位的颜色信号分别是VGA_RED,VGA_GREEN,VGA_BLUE。
每个电阻与终端的75欧电缆电阻相结合,确保颜色信号保持在VGA规定的0V~0.7V之间。
VGA_HSYNC和VGA_VSYNC信号使用LVTTL或LVCMOS3I/O标驱动电平。
通过VGA_RED,VGA_GREEN,VGA_BLUE置高或低来产生8种颜色。
实际应用中,VGA_RED,VGA_GREEN和VGA_BLUE可以接到DAC的输出,每个DAC用8bit或更多的比特控制,3条色彩控制线根据DAC输出的电压大小配合实现更多种颜色的显示。
VGA显示的原理是利用水平扫描信号和竖直信号实现二维平面的像素扫描显示,以640×480像素的扫描显示示意图为例,当水平扫描信号VGA_HSYNC信号为高时,VGA显示器从左向右依次扫描当前行的640个像素点。
每扫描完一行,VGA_HSYNC信号电平拉低,水平扫描位置回到最左端。
图2-2VGA显示基本原理图
2.3VGA信号时序
普通的VGA显示器,其引出线共含5个信号:
G,R,B三基色信号;HS:
行同步信号;VS:
场同步信号。
对于5个信号的时序驱动,以及VGA显示器,要严格遵循“VGA工业标准”,即640*480*60Hz模式。
通常我们用的显示器都满足工业标准,因此设计VGA控制器是要参考显示器的技术规格。
图2-3为VGA行扫描、场扫描的时序图。
图2-3VGA行扫描、场扫描时序
VGA工业标准所要求的频率:
1)时钟频率(Clockfrequency):
25.175Hz(像素输出的频率);
2)行频(Linefrequency):
31469Hz;
3)场频(Fieldfrequency):
59.94Hz(每秒图像刷新频率)
表2-1行、场扫描时序要求
2.4VGA显示方案实现
本文以FPGA芯片作为中央控制器控制整个系统的处理,根据自顶向下的设计流程,按照层次化、结构化的设计方法可以将FPGA系统划分为以下几个模块:
顶层模块、分频模块、VGA控制模块。
FPGA系统功能的实现框图如图2-4所示。
图2-4FPGA系统功能实现框图
系统工作原理为系统加电FPGA芯片读入配置信息,配置完成后,FPGA进入工作状态,将要显示的信息初始化到单口RAM中,由系统时钟产生时序,程序根据时序信息控制VGA接口输出行、场同步及颜色信息到显示器上。
第三章系统模块设计
3.1系统模块原理图
系统主要有分频模块、VGA彩条信号产生模块以及显示设备构成,系统模块顶层原理框图如图3-1所示。
图3-1系统顶层原理框图
3.2分频模块
3.2.1PLL分频模块原理图
VGA工业标准所要求的频率为25.175Hz,而FPGA芯片输出的频率为50MHz,因而必须对FPGA输出频率进行分频,采用二分频即可,利用锁相环的分频功能得到,分频模块如图3-2所示。
图3-2PLL分频模块原理
3.3VGA彩条信号产生模块
3.3.1系统控制原理
VGA时序信号产生包括行点计数器x_cnt(计数个数用nx表示)、场点计数器y_cnt(计数个数用ny表示)、行同步信号hsync、场同步信号vsync、有效显示区Visiblearea等。
其中行点计数器是800进制计数器,场点计数器是525进制计数器。
根据VGA时序的工业标准行、场同步信号有4种状态:
同步脉冲信号(Sync),显示后沿信号(BackPorch),可视显示区(Visiblearea),显示前沿(FrontPorch)。
这4种状态具有很清晰的时序规律,可以用有限状态机来实现这4种状态的转换,用h_state来表示行同步状态机的4种状态:
h_sync,h_back,h_visible,h_fron;tv_state来表示场同步状态机的4种状态:
v_sync,v_back,v_visible,v_front。
行、场计数器的值决定了状态机在何时进行状态翻转。
竖彩条发生模块根据行点数器hcnt的计数值来产生彩条,它对行点数计数器的数值进行判断,每80条竖线生成一种竖彩条,共8种竖彩条红、绿、黄、蓝、粉、青、灰和黑。
图3-3VGA控制
3.3.2仿真波形
图3-4仿真波形图
3.3.3模块程序
使用verilogHDL硬件语言描述波特率发生器的完整代码如下:
moduleVGA_controller(
//VGASide
oVGA_R,
oVGA_G,
oVGA_B,
oVGA_H_SYNC,
oVGA_V_SYNC,
//ControlSignal
iCLK,
iRST_N);
//HorizontalParameter(Pixel)
parameterH_SYNC_CYC=11'd96;
parameterH_SYNC_BACK=11'd48;
parameterH_SYNC_ACT=11'd640;//646
parameterH_SYNC_FRONT=11'd16;
parameterH_SYNC_TOTAL=11'd800;
//VirticalParameter(Line)
parameterV_SYNC_CYC=11'd2;
parameterV_SYNC_BACK=11'd32;
parameterV_SYNC_ACT=11'd480;//484
parameterV_SYNC_FRONT=11'd11;
parameterV_SYNC_TOTAL=11'd525;
//StartOffset
parameterX_START=H_SYNC_CYC+H_SYNC_BACK;
parameterY_S