
基于FPGA的VGA显示论文.doc
15页VGA显示器控制电路论文前言VGA(视频图形阵列)作为一种标准的显示接口得到广泛的应用利用 FPGA 芯片和EDA设计方法,可以因地制宜,根据用户的特定需要,设计出针对性强 的VGA显示控制器,不仅能够大大的降低成本,还可以满足生产实践中不断变 化的用户需要,产品升级换代方便迅速在本设计中采用 Altera公司的EDA软件工具Quartus II,并以Cyclone II系歹U 的FPGA的器件作为主实现硬件平台的设计FPGA勺原理FPGA是Filed Progranmmable Gate Array 的缩写,即现场可编程逻辑阵列FPG必在CPLD勺基础上发展起来的新型高性能可编程逻辑器件它一般采用 SRAhT艺,也有一些专用器件采用 Flash工艺或反熔丝(Anti_Fuse )工艺等 FPGA的集成度很高,其器件密度从数万系统门到数千万系统门不卒,可以完成 极其复杂的时序与组合逻辑电路功能,适用丁高速、高密度的高端数字逻辑电路 设计领域FPGA勺基本组成部分有可编程输入/输出单元,基本可编程逻辑单元、 嵌入式块RAM丰富的布线资源、底层嵌入功能单元、内嵌专用硬核等 FPGA 的主要器件供应商有Xilinx、Altera、Lattice 、Actel和Atmel等。
二、VGA转换接口的简单描述本设计另外自制VGA接口电路VGA时序控制模块是整个显示控制器的关键部分,最终的输出信号行、场 同步信号必须严格按照 VGA时序标准产生相应的脉冲信号对丁普通的 VGA显示器,其引出线的共含5个信号:GR,B (三基色信号),HS (行同步信号), VS (场同步信号)在五个信号时序驱动时,VGA显示器要严格遵循“ VGA工 业标准”,即 640HzX 480 HzX 60Hz模式下图(1)为VGA显示控制器控制CRT显示器VGA (Video Graphic Array)接口,即视频图形阵歹U,也叫做 D-Sub接口, 是15针的梯形插头,分3排,每排5个,传输模拟信号VGA接口采用非对称 分布的15针连接方式,其工作原理:是将显存内以数字格式存储的图像(帧) 信号在RAMEAC里经过模拟调制成模拟高频信号,然后再输出到显示设备成像 目前大多数计算机与外部显示设备之间都是通过模拟 VGA接口连接,计算机内部以数字方式生成的显示图像信息,被显卡中的数字 /模拟转换器转变为R、G、 B三原色信号和行、场同步信号,信号通过电缆传输到显示设备中对丁模拟显 示设备,如模拟CRT显示器,信号被直接送到相应的处理电路,驱动控制显像 生成图像。
而对丁 LCD、DLP托数字显示设备,显示设备中需配置相应的 A/D(模拟/数字)转换器,将模拟信号转变为数字信号在经过 D/A和A/D2次转 换后,不可避免地造成了一些图像细节的损失 VGA接口应用丁 CRT显示器无 可厚非,但用丁连接液晶之类的显示设备, 则转换过程的图像损失会使显示效果 略微下降VGA接口的引脚分配如下图(1)所示VGA控制器LLBEAD< I VlM_AGNDO TiJ图(1)三、主要功能模块设计注:主要模块为三块,一个二分频模块,一个VGA时序和行点位置模块, 一个图形生成 模块,本来想利用老师提供的方案进行制作, 但在按键去抖模块以及按键累计模块没有能完成,故更改方案,换用读取拨动开关的模式来选择模式显示1.1 VGA 时序控制模块(vgaxm.v)功能:根据VGA显示器的工作原理,提供同步信号(H_SYNC和V_SYNC)及像 素位置信息设计思路:根据VGA显示器的工作原理,以垂直同步信号的出现时刻作为时间的起点(原点),根据时序图算出每一个关键时间点所需的计数器最大值,据此输出 H_SYNC和V_SYNC,在此基础上对扫描的行数及像素点数进行计数,从而输 出像素位置信息。
1.1.1VGA的时序详细讲解对丁 VGA显示器,每个像素点的输出频率为 25.175MHZ,本实验采用50MHz的时钟信号,经过模块divider (二分频模块)的分频得到25MHz的时钟 输入信号依据VGA时序标准,行同步信号HS,行周期为32.2us,也就是 H_sync (行)的周期;场同步信号 VS,场周期为16.89ms,也就是V_sync (一 帧)的周期刷新1个像素所需时间Tpixel = 1/ fclk =40ns ;H SYNCIB=3.77[i£< >Trow-32.2145〔h)水平刷新糖环从(b)水平刷新循环中,可以知道刷新一行所需时间公式:Trow = B+C+D+E=Tpixel 640 guard bands = 25.6s + B + C +E = 32.2 口 s;引入h_count[9..0]:用丁 Trow (25MHz)的定时计数,计数活零时由时序可 得下面计算式子:h_countend 同时可以从该时序图确定p_begin_time和p_end_time的像素点pixel开始计 数以及活零计数的时间,计算式子如下:p_begin_time : p_end_time : 还能得出行扫描h_sync在h_count从0~805计数期间,从第几计数开始为电 平变化。
图中,B=3.77us就是说在h_count计数起到3.77us到来之间行信号h_sync 保持低电平,在3.77us到32.2us之间为高电平,刚好为一个行信号周期以卞 是计算式子(hsync_end代表h_sync的低电平截止时间范围):hsync_end 程序简单描述如下:h_count 计数:always @( posedge clk) //25MHZ〃在垂直刷新循环内,当h_count计到规定的最大值805时,则活零;否则 加1计数h_sync的电平■变化:assign h_sync_pulse_w = (h_count 图中,P=64us就是说在v_count计数起到64us到来之间场信号v_sync 保持低电平■,在64us到16. 89ms之间为高电平■,刚好为一个场信号周期(二而) 以下是计算式子(vsync_end代表v_sync的低电平截止时间范围):vsync_end 程序简单描述如下:v_count 计数:always @ (posedge clk )//当垂直刷新循环结束(满 480)时v_count活零;否则当h_count计到 规定的最大值(805)时加1计数;v_sync的电平■变化:assign v_sync_pulse_w = (v_count < vsync_end); //从 v_count 从 0 计数至U 2( 64us) 为1 3~525为0在h_sync负脉冲 宽度内,h_sync_pulse_w为高电 平 -- -assign v_sync=~v_sync_pulse_w;1.1.2提供行列以及格线计数值行或列计数:line 和pixel ;格线计数器: line_cnt , pixel_cnt , strip_cnt(1) line[8..0]:用丁对行数(1~480行)计数,其clk等丁水平同步信号h_sync 的下降沿;(2) pixel [9..0]:用丁对每行的像素点数(1~640个点)计数,其clk等丁输入 时钟 fclk25M。 /* 3. line[8..0]对像素所处行计数*/always @ (negedge h_sync )//h_sync的下降沿触发line计数〃当 h_begin_time = v_coun^= h_end_tim§ 且当line= 480时,则line加1计数;〃否则line活零/* 4. pixel[9..0]对像素所处歹U计数*/always @ (posedge clk )/*当1MlineM480 (必须有此条件,否则pixel在h_sync来后B+C时间之后即开始加 1 计数,而此时 line=0),且 p_begin_timeM h_coun^= p_end_time,且 pixel=640时,贝U pixel加1计数;*/〃否则pixel活零3) output[4:0] line_cnt; 〃用丁棋盘格 1的水平格线计数 32进制,32.2uss计数一次(4) output[5:0] pixel_cnt; 〃用丁棋盘格1的垂直格线计数 64进制 40ns计数一次(5) output[5:0] strip_cnt; 〃用丁横彩条2的水平格线计数 64个6432.2uss计数一次注:RGB[2..0]:颜色信号, 颜色关系如下表所示。 2.1生成图形子模块RGBP..0]藤色0 0 0黑(black)0 0 1蓝(blue)0 10绿(green)oil浅蓝 (Cambridge Blue)10 0红(red)1 0 1粉(pink)110黄(yellov)111白(white)R-一红色信号;G——绿色信号;B——蓝色信号其对应功能:根据时序控制子模块输出的像素位置信息, 在不同的显示模式下,输出不同的颜色信号设计思路:采用case语句,来确定不同的显示模式;在每种显示模式下,采用 if-else 语句,根据像素所处的位置(即line和pixel的范围),来确定输出不同的颜色信 号对棋盘格1、横彩条2的格线的判断不用枚举的方法,而是根据 vgacore2.v输出的格线计数器line_cnt、pixel_cnt和strip_cnt的大小,用if-else语句简单地 实现本模块主要的图形生成程序简述如下:/* 2.根据cnt值产生不同的显示图形 */always @ (posedge clk )beginif( line>9'd0 & line<=9'd480 & pixel>9'd0 & pixel<=10'd640) // 若在有begin 效区域内case(cnt)0:begin/* (1)模式1: 4大图形块*/1:begin。