VGA显示控制资料.docx

上传人:小飞机 文档编号:4925870 上传时间:2023-05-23 格式:DOCX 页数:27 大小:421.94KB
返回 下载 相关 举报
VGA显示控制资料.docx_第1页
第1页 / 共27页
VGA显示控制资料.docx_第2页
第2页 / 共27页
VGA显示控制资料.docx_第3页
第3页 / 共27页
VGA显示控制资料.docx_第4页
第4页 / 共27页
VGA显示控制资料.docx_第5页
第5页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《VGA显示控制资料.docx》由会员分享,可在线阅读,更多相关《VGA显示控制资料.docx(27页珍藏版)》请在三一办公上搜索。

1、基于FPGA的VGA显示控制摘 要VGA (Video Graphics Array)即视频图形阵列,是IBM公司1987年推出的一 种传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得 到了广泛应用。本次课程设计是基于FPGA和主芯片为EP4CE30F23C8N的ALTER公司的开发板 Cyclone IV来实现的。数字图像信息在VGA接口显示器正确、完整地显示,涉及到 时序的构建和数字图像信息的模拟化两方面,提出一种能够广泛应用的VGA显示接 口方案,详细阐述了数字图像数据DA转化并输出到VGA接口显示器显示的方法,其中 包括接口的硬件设计、视频DA转换器的使用方法、通

2、过FPGA构造VGA时序信号的 方法等等。方案可以应用于各种仪器,数字视频系统、高分辨率的彩色图片图像处理、 视频信号再现等。课设主要用到的芯片是ADV7123,它是一款高速、高精度数模转换芯片。拥有 三路十位D/A转换器,能够将代表颜色的数据锁存到数据寄存器中,然后通过D/A 转换器转换成模拟信号输出,得到我们要的色彩。VGA显示的硬件设计和原理1.1 FPGA主芯片课程设计所用开发板的主芯片是EP4CE30F23C8N- yclone IV,其由Altera公司 开发,值得注意的是该开发板所支持的QUARTUSII的版本较高,并且11.0的版本较12.0 的版本编译好的程序更好下载。图-1

3、1.2 ADV7123实现VGA的控制显示主要用到的芯片就是ADV7123,ADV7123由完全独立的三个 I0位高速D/A转换器组成,RGB (红绿蓝)视频数据分别从R9R0、G9G0、B9B0输入, 在时钟CLOCK的上升沿锁存到数据寄存器中,然后经告诉D/A转换器转换成模拟信号。 三个独立的视频D/A转换器都是电流型输出,可以接成差分输出,也可以接成单端输 出。DE2-115上按单端输出,在模拟输出端用75欧姆电阻接地,以满足工业标准。低 电平有效的BLANK信号为复合消隐信号,当BLANK为低电平时,模拟视频输出消隐电 平,此时从R9R0,G9G0,B9B0输入的所有数据被忽略。BLA

4、NK和SYNC都是在CLOCK 的上升沿被锁存的。图-2是ADV7123的功能原理图:FUNCTIONAL BLOCK DIAGRAM5YHT LOGICBLANKSYNCDATA REGISTERR9T0 ROI DATAREGISTERDACBLANK AND图-3是它的引脚图:DATA REGISTERPOWER-DOWN MODEoGND_N10 , DAC 1/图-2S 寸 EOC D:ADV712310 , DAC 1/GOG1G2G3G4G5G6G7G8G9BLANKSYNC1TTT亘Z L =0: Q tXMOQIU亟一竺花=|33=竺为=兰一|29=|28=|27=竺一竺|4

5、6|4T|46|45|44|辂|4却 411|M,|:?91| 制|勇|IADV7123 TOP VIEW(Not to Scale)VrefCOMPIORIORIOGIOGVaaVaaIOBIOBGNDGNDLZE性UlB卜mmmrhmmm图-380U-1LZW引脚功能描述:G0-G9, B0-B9, R0-R9 :像素数据输入端口,上升沿来临锁存数据;BLANK:复合空白信号控制输入;CLOCK: 65MHz时钟输入端口;IOB,IOG,IOR:像素实时输出端口;SYNC :复合同步控制输入。图-4是ADV7123的时序图:IDIGITAL INPUTS(R9 TO RO. G9 TO G

6、O. B9 TO BO,SYNC. BLANK)CLOCK_ ANALOG OUTPUTS(IOR. lOR. IOG,TOG, lOB.TOB)图-4开发板与显示器的端口连接:连接头如图-5所示,15个管脚里面5个是最重要的,他们包括三个基本红、 绿、蓝三条基本色彩线和水平与垂直两条控制线,有这5条控制线,我们可以在屏 幕上显示多种颜色,在开发板上,红、绿、蓝三条基本色彩每条都由10条输入线控 制,课设中用到其中8条,可以实现显示真彩色BMP图像12 3 4 56 7 0 9 10 1112 T314 15Pin I:Pin 5: GNDPin 2. GmPin 6: Red GN口Pin

7、3: BlPin 7 : Gm GNDPin 13: HS Pin &: Blu GNDPin 14: VS Pin 10: Sync GND图-5图-6是原理图:一 531441 胃艮 451 L爰I9A 财 富|牍471 S VGA ConnectorVGA G03VGA G14VGA Gf215VGA G36VGA G41VGA G(5VGA GTfil9VGA GT71IDVGA BLANK11U地SYNC12C3一GM* 多_蕾 4DA 富-CIDA m_iwja 匐4多图-62. 同步时序的实现2.1 VGA时序原理我们常把要显示的数据如图像处理结果存放到存储器里,如果要把显示存储

8、器 里的图像在VGA接口显示器显示,大多情况下,扫描时序是需要我们构造的。以 1024768,59.94 Hz(60 Hz)为例。VGA工业标准规定,如图2,每场信号对应806个行 周期,其中768行为图像显示行,每场有场同步信号,该脉冲宽度为6个行周期的负脉 冲;每显示行包括1344点时钟,其中1024点为有效显示区,每行有一个行同步信号负 脉冲,该脉冲宽度为136个点时钟。这样我们可以知道,行频为134459.94 Hz即 80559 Hz,需要的点时钟频率为:806134459.94 Hz 约 65 MHz。图7、8行场同步信号时序图图-7何ii栋图-8同步信号,如场同步、行同步、符合同

9、步信号可以在FPGA里构建。选取65 MHz 的晶振作为点时钟CLOCK输入,将CLOCK输入到模等于1344的像素脉冲计数器中,当 像素脉冲计数在0到136脉冲间输出低电平,其它输出高电平,以此作为行同步信号 Hsys;然后以vga_hs行节拍为单位进行计数,当计到0到6时输出低电平,其它输出高 电平,当计了 806个行同步信号时,计数器清0,以此作为场同步信号vga_vs。根据图-9,可以控制在屏幕上显示不同的图形,要注意行消隐和场消隐时间。64OMSOW6O25.17G翼640-48W231,5004。3l.50fl钢64GMS0S8536. MC800*006040.0128800*6

10、0 睥 T549.5&Q口找可钮濒65.01351U24-* 765070筲.加1361027675T& 7509694.596显示模式 时神 疗时序G-.IL23 334 3 663333关322S232129也及36OOOOGO8SSS fi- 8 S 8 c O 6 6 6 6图-9其中行时序和场时序都要产生同步脉冲(sync a)、显示后沿(back porch b)、显 示时序段(displayinterval c)和显示前沿4个部分,各部分所占的时间如上图所 示。2.2软件实现(1) 产生hs行同步脉冲,宽度136pix;if(hcnt10:8=3d0&(hcnt7=1b0|hcn

11、t7:4=4d0) /- 0135beginvga_hs = 1b0;endelsebeginvga_hs = 1b1;end(2) 产生vs场同步脉冲,宽度6个vgahs宽度;if(vcnt9:3=7d0&vcnt2:1!=2b11) /- 05beginvga_vs = 1b0;endelsebeginvga_vs MagaWizard Plug-In Manager-Create a new custom megafuctionvariation-ALTPLL-Verilog HDL另外还要设计一个50M分频来控制每幅画面显示的时间,代码如下:module div50M(clkin,cl

12、kout);inputclkin;outputclkout;reg clkout;reg 25:0cnttemp;always (posedge clkin )beginif(cnttemp=49999999)begincnttemp = 1 b0;elsebeginif(cnttemp=25000000)beginclkout = 1b1;endelsebeginclkout = 1b0;endcnttemp = cnttemp+1b1;endend(2) 计数模块长度为3位,从000到111 一共8种情况。连接50M分频,计数器左边 接50M分频,每当上升沿来临时,计数器加1,通过输出值得

13、不同展现不同画面。(3) 控制模块包括时序的控制以及同步、显示的时间的设计,同时为了得到不同的颜 色,根据不同颜色相加可以配成第三种颜色,下图为配色方案,具体可以通过程 序来实现,因为分别采用的是8位来表示三基色,每一种三基色都有1到255种 情况,因此可以配出多种颜色,图-10为配色方案:图-10设计好这四个模块,画出原理图-11:图-114. 程序调试将画好的原理图分配好引脚,进行编译,以下是我在调试中遇到的问题,以及解决 方法。(1)刚开始会出现很多语法错误的问题,这需要认真检查源程序,比如有些地方一句 话结束,没有加分号,还有的符号用的中文符号,也会出编译错误;有的地方如 一个if必须

14、对应一个else,一个begin对应一个end,这些基本的错误要认真检 查。(2)行同步与场同步的时间要严格控制,如果控制不当有可能会损坏显示器,这个要根 据图-9,找到1024*76860的相应时序设计。(3)关于计数参数vga_en的case语句,一个要注意语法问题,另外就是通过case语 句控制显示不同画面,如显示横条或是竖条怎么设计,要明白这个语句的作用是控 制显示的位置。这里要注意的是通过hcnt和vcnt控制显示那些行和哪些列,只要 该行不显示,则不管它对应的列是显示还是不显示,该行都不显示。(4) 关于行像素点计数参数hpixcnt的case语句,hpixcnt是一个位宽为10位

15、的矢 量,当取最高位为0时在行像素点0到512显示一种颜色,取1时在行像素点513 到1024可以显示另一种颜色,当取高两位时有四种选择,高三位则有8中颜色选 择。显示的部分图像如下:5. 课设总结经过两周的课设,使我对FPGA有了更深刻的理解,从选择课题,到着手设计以 及出现效果,这过程中需要不断改进,不断获取信息,深刻理解其工作原理,才能找 到实现的方法。刚开始,对视频显示没有多少了解,通过看芯片资料,网上查阅论文资料,才慢慢对其 有一定了解,然后是研究其显示原理,以及时序的相关问题。由于对verilog语言不是很了 解,还需要了解其基本语法,掌握基本的分频、计数模块的设计方法。但是这些还

16、不够,最 最重要的的是控制模块,这个过程我借鉴了一些其它资源,研究它的原理、作用。然后通过 不断地调试得到自己想要的效果。在调试的过程中,首先就是要小心,避免一些基本语法的错误,然后就是要根据时序的 关系,控制显示输出,不仅要考虑到显示的的位置,显示的色彩,还要控制显示的时间等问 题。在今后的学习中,要谨慎治学,多思考,多翻阅书籍。遇到不懂的问题应该多渠道查找 信息,平时多练习,培养研究能力,只有这样才能在今后的学习中不断进步。这次课程设计 也是汲取经验的过程,通过不断积累经验,才能更好地解决问题。6. 主要程序清单timescale 1ns / 1psmodule vga_top(clk65

17、虬/输入时钟rstn, 复位vga_en, /0到7计数,显示8帧不同画面vga_hs,/行同步信号vga_vs, 场同步信号vga_r,vga_g,vga_b,vga_blk, /复合空白信号vga_syn,/复合同步信号控制输出vga_clk 输出时钟);inputclk65M;inputrstn;input2:0vga_en;outputvga_hs;outputvga_vs;output 7:0vga_r; /要显示真彩色BMP图像,r,g,b三个分量各需要8位output7:0vga_g;output7:0vga_b;outputvga_blk;outputvga_syn;outpu

18、tvga_clk;regvga_hs;/声明一个标量寄存器型变量regvga_vs;reg7:0vga_r; 声明一个8位的矢量寄存器变量reg7:0vga_g;reg7:0vga_b;wirevga_blk;wirevga_syn;wirevga_clk;reg 10:0hcnt;声明一个11位的矢量寄存器变量,行的像素点计数reg 9:0vcnt;/行计数reg vgahs1;reg hdisply;/控制行各点的显示 reg frminit;reg vdisply;/控制行的显示assign vga_clk = clk65M;assign vga_syn = 1b0;/-assign v

19、ga_blk = vga_vs&vga_hs;assign vga_blk = vdisply&hdisply;/将 vdisplay 和 hdisplay 相与赋给 vga_blkalways (posedge clk65M or negedge rstn) beginif(!rstn)/rstn低电平复位,重新扫描beginhcnt = 11d0;vcnt = 10d0;vga_hs = 1b1;vga_vs = 1b1;vgahs1 = 1b0;hdisply = 1b0;vdisply = 1b0;frminit = 1b0;elsebeginif(hcnt=11d1343)/ 134

20、4pix;有效显示宽度为 1024pixbeginhcnt = 11d0;endelsebeginhcnt = hcnt + 1b1;endif(hcnt10:8=3d0&(hcnt7=1b0|hcnt7:4=4d0) /- 0135beginvga_hs = 1b0;/-产生hs行同步脉冲,宽度136pix;endelsebeginvga_hs 295)&(hcnt10:01320)beginhdisply = 1b1;endelsebeginhdisply 28)&(vcnt803)beginvdisply = 1b1;endelsebeginvdisply 295)&(hcnt10:01

21、320)beginhdisply = 1b1;endelsebeginhdisply 28)&(vcnt413)beginvdisply = 1b1;endelsebeginvdisply 295)&(hcnt10:01320)beginhdisply = 1b1;endelsebeginhdisply 28)&(vcnt803)beginvdisply = 1b1;endelsebeginvdisply 295)&(hcnt10:01320)beginhdisply = 1b1;endelsebeginhdisply 28)&(vcnt797)beginvdisply = 1b1;elseb

22、eginvdisply 295)&(hcnt10:01320)beginhdisply = 1b1;endelsebeginhdisply 28)&(vcnt803)beginvdisply = 1b1;endelsebeginvdisply 295)&(hcnt10:01320)beginhdisply = 1b1;endbeginhdisply 220)&(vcnt420)beginvdisply = 1b1;endelsebeginvdisply 295)&(hcnt10:0551)beginhdisply = 1b1;endelsebeginhdisply 419)&(vcnt611)

23、beginvdisply = 1b1;endelsebeginvdisply 807)&(hcnt10:01320)beginhdisply = 1b1;endelsebeginhdisply 35)&(vcnt797)beginvdisply = 1b1;endelsebeginvdisply = 1b0;endendendcasevgahs1 = vga_hs;if(vga_hs=1b0&vgahs1=Tb1)beginif(vcnt=10d805)beginvcnt = 10d0;frminit = 1b1;endvcnt = vcnt + 1b1;endendelsebeginfrmi

24、nit = 1b0;endif(vcnt9:3=7d0&vcnt2:1!=2b11)beginvga_vs = 1b0;endelsebeginvga_vs = 1b1;endendendreg 9:0hpixcnt;reg 7:0frmdtmp;always (posedge clk65M or negedge rstn)beginif(!rstn)beginvga_r = 8d0;vga_g = 8d0;vga_b = 8d0;hpixcnt = 10d0;frmdtmp = 8d100;beginif(hdisply=1b1)beginhpixcnt = hpixcnt + 1b1;en

25、delsebeginhpixcnt = 10d0;endif(frminit=1b1)beginfrmdtmp = frmdtmp + 1b1;endcase(vga_en)3b000:beginvga_r = 8d250;vga_g = 8d100;vga_b = 8d50;end3b001:begincase(hpixcnt9)1d1:beginvga_r = 8d100;vga_g = 8d250;vga_b = 8d0;end1d0:vga_r = 8d100;vga_g = 8d250;vga_b = 8d200;endendcaseend3b010:beginvga_r = 8d2

26、50;vga_g = 8d0;vga_b = 8d250;end3b011:begincase(hpixcnt9:8)2d0:beginvga_r = 8d250;vga_g = 8d200;vga_b = 8d0;end2d1:beginvga_r = 8d0;vga_g = 8d250;vga_b = 8d200;end2d2:beginvga_r = 8d200;vga_g = 8d0;vga_b = 8d250;end2d3:beginvga_r = 8d250;vga_g = 8d250;vga_b = 8d250;endendcaseend3b100:begincase(hpixc

27、nt9:7)3b000:beginvga_r = 8d250;vga_g = 8d200;vga_b = 8d0;end3b001:beginvga_r = 8d0;vga_g = 8d250;vga_b = 8d200;end3b010:beginvga_r = 8d200;vga_g = 8d0;end3b011:beginvga_r = 8d250;vga_g = 8d250;vga_b = 8d250;end3b100:beginvga_r = 8d250;vga_g = 8d200;vga_b = 8d0;end3b101:beginvga_r = 8d0;vga_g = 8d250

28、;vga_b = 8d200;end3b110:beginvga_r = 8d200;vga_g = 8d0;vga_b = 8d250;end3b111:beginvga_r = 8d250;vga_g = 8d250;vga_b = 8d250;endendcaseend3b101:beginvga_r = 8d250;vga_g = 8d250;vga_b = 8d0;end3b110:beginvga_r = 8d250;vga_g = 8d0;vga_b = 8d0;end3b111:beginvga_r = 8d250;vga_g = 8d100;vga_b = 8d50;endendcaseendendendmodule25

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号