《VGA显示控制资料.pdf》由会员分享,可在线阅读,更多相关《VGA显示控制资料.pdf(26页珍藏版)》请在三一文库上搜索。
1、1 基于 FPGA 的 VGA显示控制 摘要 VGA (Video Graphics Array )即视频图形阵列,是IBM公司 1987 年推出的一 种传输标准,具有分辨率高、显示速率快、颜色丰富等优点,在彩色显示器领域得 到了广泛应用。 本次课程设计是基于FPGA 和主芯片为 EP4CE30F23C8N 的 ALTER 公司的开发板 Cyclone IV来实现的。数字图像信息在VGA接口显示器正确、完整地显示, 涉及到 时序的构建和数字图像信息的模拟化两方面, 提出一种能够广泛应用的VGA显示接 口方案 , 详细阐述了数字图像数据DA转化并输出到 VGA 接口显示器显示的方法 , 其中 包
2、括接口的硬件设计、视频DA转换器的使用方法、通过FPGA 构造 VGA时序信号的 方法等等。方案可以应用于各种仪器, 数字视频系统、高分辨率的彩色图片图像处理、 视频信号再现等。 课设主要用到的芯片是ADV7123 ,它是一款高速、高精度数模转换芯片。拥有 三路十位 D/A 转换器,能够将代表颜色的数据锁存到数据寄存器中,然后通过D/A 转换器转换成模拟信号输出,得到我们要的色彩。 2 VGA显示的硬件设计和原理 1.1 FPGA主芯片 课程设计所用开发板的主芯片是 EP4CE30F23C8NCyclone IV ,其由 Altera 公司 开发, 值得注意的是该开发板所支持的QUARTUS
3、II 的版本较高, 并且 11.0 的版本较 12.0 的版本编译好的程序更好下载。 图-1 1.2 ADV7123 实现 VGA的控制显示主要用到的芯片就是ADV7123 ,ADV7123由完全独立的三个 I0 位高速 D/A转换器组成 ,RGB (红绿蓝)视频数据分别从 R9R0 、G9G0 、B9B0输入, 在时钟 CLOCK 的上升沿锁存到数据寄存器中, 然后经告诉 D/A转换器转换成模拟信号。 三个独立的视频 D/A 转换器都是电流型输出,可以接成差分输出,也可以接成单端输 出。DE2-115上按单端输出,在模拟输出端用75 欧姆电阻接地,以满足工业标准。低 电平有效的 BLANK
4、信号为复合消隐信号,当BLANK 为低电平时,模拟视频输出消隐电 平,此时从 R9R0,G9G0,B9B0 输入的所有数据被忽略。 BLANK 和 SYNC 都是在 CLOCK 的上升沿被锁存的。 图-2 是 ADV7123 的功能原理图: 3 图-2 图-3 是它的引脚图: 图-3 引脚功能描述: G0-G9 ,B0-B9,R0-R9:像素数据输入端口,上升沿来临锁存数据; BLANK :复合空白信号控制输入; CLOCK :65MHz时钟输入端口; IOB,IOG ,IOR:像素实时输出端口; SYNC :复合同步控制输入。 4 图-4 是 ADV7123 的时序图: 图-4 开发板与显示
5、器的端口连接: 连接头如图 -5 所示, 15 个管脚里面 5 个是最重要的,他们包括三个基本红、 绿、蓝三条基本色彩线和水平与垂直两条控制线,有这5 条控制线,我们可以在屏 幕上显示多种颜色,在开发板上,红、绿、蓝三条基本色彩每条都由10 条输入线控 制,课设中用到其中8 条,可以实现显示真彩色BMP 图像 图-5 图-6 是原理图: 5 图-6 2. 同步时序的实现 2.1 VGA 时序原理 我们常把要显示的数据如图像处理结果存放到存储器里, 如果要把显示存储器 里的图像在VGA接口显示器显示, 大多情况下 , 扫描时序是需要我们构造的。以 1024768,59.94 Hz(60 Hz)
6、为例。 VGA 工业标准规定 , 如图 2, 每场信号对应 806 个行 周期, 其中 768行为图像显示行 , 每场有场同步信号 , 该脉冲宽度为 6 个行周期的负脉 冲; 每显示行包括 1344点时钟 , 其中 1024点为有效显示区 , 每行有一个行同步信号负 脉冲, 该脉冲宽度为136 个点时钟。这样我们可以知道, 行频为 134459.94 Hz 即 80559 Hz, 需要的点时钟频率为 :806134459.94 Hz 约 65 MHz 。 图 7 、8 行场同步信号时序图 图-7 6 图-8 同步信号 , 如场同步、行同步、符合同步信号可以在FPGA里构建。选取 65 MHz
7、的晶振作为点时钟CLOCK 输入, 将 CLOCK 输入到模等于 1344 的像素脉冲计数器中 , 当 像素脉冲计数在0 到 136 脉冲间输出低电平 , 其它输出高电平 , 以此作为行同步信号 Hsys;然后以 vga_hs 行节拍为单位进行计数 , 当计到 0 到 6 时输出低电平 , 其它输出高 电平, 当计了 806个行同步信号时 , 计数器清 0, 以此作为场同步信号vga_vs。 根据图-9 ,可以控制在屏幕上显示不同的图形,要注意行消隐和场消隐时间。 图-9 其中行时序和场时序都要产生同步脉冲(sync a )、显示后沿( back porch b )、显 示时序段( displ
8、ayinterval c)和显示前沿4 个部分,各部分所占的时间如上图所 示。 2.2 软件实现 (1)产生 hs 行同步脉冲,宽度136pix ; if(hcnt10:8=3d0 input clkin; output clkout; reg clkout; reg 25:0cnttemp; always (posedge clkin ) begin if(cnttemp=49999999) begin cnttemp 295) end else begin vdisply = 1b0; end end endcase vgahs1 = vga_hs; if(vga_hs=1b0 frmin
9、it = 1b1; end else begin 19 vcnt = vcnt + 1b1; end end else begin frminit = 1b0; end if(vcnt9:3=7d0 end else begin vga_vs = 1b1; end end end reg 9:0hpixcnt; reg 7:0frmdtmp; always (posedge clk65M or negedge rstn) begin if(!rstn) begin vga_r = 8d0; vga_g = 8d0; vga_b = 8d0; hpixcnt = 10d0; frmdtmp =
10、8d100; end else 20 begin if(hdisply=1b1) begin hpixcnt = hpixcnt + 1b1; end else begin hpixcnt = 10d0; end if(frminit=1b1) begin frmdtmp = frmdtmp + 1b1; end case(vga_en) 3b000: begin vga_r = 8d250; vga_g = 8d100; vga_b = 8d50; end 3b001: begin case(hpixcnt9) 1d1: begin vga_r = 8d100; vga_g = 8d250;
11、 vga_b = 8d0; end 1d0: begin 21 vga_r = 8d100; vga_g = 8d250; vga_b = 8d200; end endcase end 3b010: begin vga_r = 8d250; vga_g = 8d0; vga_b = 8d250; end 3b011: begin case(hpixcnt9:8) 2d0: begin vga_r = 8d250; vga_g = 8d200; vga_b = 8d0; end 2d1: begin vga_r = 8d0; vga_g = 8d250; vga_b = 8d200; end 2
12、d2: begin vga_r = 8d200; 22 vga_g = 8d0; vga_b = 8d250; end 2d3: begin vga_r = 8d250; vga_g = 8d250; vga_b = 8d250; end endcase end 3b100: begin case(hpixcnt9:7) 3b000: begin vga_r = 8d250; vga_g = 8d200; vga_b = 8d0; end 3b001: begin vga_r = 8d0; vga_g = 8d250; vga_b = 8d200; end 3b010: begin vga_r
13、 = 8d200; vga_g = 8d0; 23 vga_b = 8d250; end 3b011: begin vga_r = 8d250; vga_g = 8d250; vga_b = 8d250; end 3b100: begin vga_r = 8d250; vga_g = 8d200; vga_b = 8d0; end 3b101: begin vga_r = 8d0; vga_g = 8d250; vga_b = 8d200; end 3b110: begin vga_r = 8d200; vga_g = 8d0; vga_b = 8d250; end 3b111: begin vga_r = 8d250; vga_g = 8d250; vga_b = 8d250; 24 end endcase end 3b101: begin vga_r = 8d250; vga_g = 8d250; vga_b = 8d0; end 3b110: begin vga_r = 8d250; vga_g = 8d0; vga_b = 8d0; end 3b111: begin vga_r = 8d250; vga_g = 8d100; vga_b = 8d50; end endcase end end endmodule 25 26
链接地址:https://www.31doc.com/p-5198413.html