基于FPGA的VGA图像显示控制器设计 下载本文

内容发布更新时间 : 2024/12/23 22:35:37星期一 下面是文章的全部内容请认真阅读。

基于FPGA的VGA图像显示控制器设计

位,绿色及蓝色各三位,通过电阻网络D/A变换后在显示器显示输出值,DA转换器在这个电阻网络上被模拟,输入信号的电压被分成几段。这样执行的原因,一方面是由于显示24位真彩色很少在实际应用被用到。此外考虑节约成本得想法,由于要用到专用DA转换器,成本必会增加。硬件电路如下图1.3-3所示:

图1.3-3 VGA接口与FPGA的硬件电路图

1.4 VGA时序

VGA图像显示控制的设计需要注意两个问题:其中之一便是是时序的驱动,此乃完成设计的关键,时序若有不同,便不正常显示,甚者会损害彩色显示器;最后是VGA信号的电平驱动。

针对开发板的条件,若想得到25MHz的像素频率输出,则必须采用50MHz的系统时钟进行分频。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中颜色,如表1.4-1所示:

10 基于FPGA的VGA图像显示控制器设计

表1.4-1 颜色对照

VGA_RED 0 0 0 0 1 1 1 1 VGA_GREEN 0 0 1 1 0 0 1 1 VGA_BLUE 0 1 0 1 0 1 0 1 Resulting color Black Blue Green Cyan Red Magenta Yellow White

VGA信号的时序由视频电气标准委员会(VESA)规定。以下提供的VGA系统和时序信息作为例子来说明FPGA在640×480模式下是如何驱动VGA监视器的。

VGA显示器基于CRT,使用调幅模式,移动电子束(或阴极射线)在荧光屏上显示信息。LCD使用矩阵开关给液晶加压,在每个像素点上通过液晶来改变光的介电常数。尽管下面的描述仅限于CRT,LCD已经发展到可以同CRT使用同样的时序信号了。因此,下面的讨论均适合CRT和LCD。在CRT显示器中,电流的波形通过蹄形磁铁产生磁场,使得电子束偏转,光栅在显示屏上横向显示,水平方向从左至右,垂直方向从上至下。当电子束向正方向移动时,信息才显示,即从左至右、从上至下。如果电子束从后返回左或顶边,显示屏并不显示任何信息。在消隐周期——电子束重新分配和稳定于新的水平或垂直位时,丢失了许多信息。显示协议定义了电子束的大小以及通过显示屏的频率,该频率是可调的。现在的VGA显示屏支持多种显示协议,VGA控制器通过协议产生时序信号来控制光栅。控制器产生同步脉冲TTL电平来设置电流通过偏转磁铁的频率,以确保像素或视频数据在适当的时间送给电子枪。

视频数据一般来自重复显示存储器中一个或多个字节——它们被分配到每个像素单元。入门实验板使用每个像素中的3位,产生图8中可能的一种颜色。控制器指定视频数据缓冲器以备电子束通过显示屏。然后,控制器接收并利用视频数据在适当的时间显示,电子束移动到指定的像素点。

VGA控制器产生水平同步时序信号(HS)和垂直同步时序信号(VS),调节在每个像素时钟视频数据的传送。像素时钟定义了显示像素信息的有效时间段。VS信号定义显示的更新频率,或刷新屏幕信息的频率。最小的刷新频率是取决于显示器的亮度和电子束的强度,实际频率一般在60~120Hz之间。给定的刷新频率的水平线的数量定义了水平折回频率。

11 基于FPGA的VGA图像显示控制器设计

下表1.4-2的时序信号是640×480,像素时钟25Mhz,刷新频率60Hz±1。图1.4-2说明了每个时序的联系。

表1.4-2 640X480时序信号

Symbol Parameter Time TS TDISP TPW TFP TBP Sync pulse time 16.7ms Display time Pulse width Front porch Back Porch 15.36ms 64μs 320μs 928μs Vertical Sync Clocks 4168,800 384,000 1,600 8,000 23,200 Liens 521 480 2 10 29 Horizontal Sync Time 32μs 25.6μs 3.84μs 640 1.92μs Clocks 800 640 96 16 48

图1.4-2 各时序之间的联系

12 基于FPGA的VGA图像显示控制器设计

第2章 FPGA简介及设计流程

2.1 FPGA简介

目前以硬件描述语言(Verilog或VHDL)所完成的电路设计,经过简单的综合与布局,可以很快的烧录到FPGA上进行测试,是现代IC设计验证的主流技术。这些可编辑的元件可以用来获得一些基本的逻辑门电路(如,AND,XOR,NOT),或更复杂的组合功能,如解码器或数学方程。在大部分的FPGA内,这些可以编辑部件包括记忆元件,如触发器(Flip-flop)或其他更完整的记忆块。系统设计者可以根据需要,通过编辑的逻辑连接FPGA内部链接,就像一个电路测试板是放在一个芯片。他们离开后成品砖和FPGA逻辑连接可以改变根据设计师的设计,可以完成需要的FPGA逻辑功能。FPGA在总体来说比ASIC(专用集成芯片)速度将会放缓,无法完成复杂的设计,消耗更多的能量。但是他们也有许多优势,例如可以很快的成品,可以修改,以纠正错误的程序和便宜的成本。FPGA是在PAL(Programmable Array Log2ic),GAL(Generic PAL)等基础上发展起来,是一种具有丰富的可编程I/O引脚、逻辑宏单元、门电路以及RAM 空间的可编程逻辑器件,大概所有应用了门阵列、PLD与中小规模通用数字集成电路的场合均可应用FPGA 和CPLD器件。CPLD得设计基于E2CMOS工艺,它的基本逻辑单元则是由一些与、或阵列外加触发器构成的,但FPGA则选择SRAM工艺进行设计,基本逻辑单元依据查找表而进行设计。查找表(Look-Up-Table)即LUT,LUT实际上是个RAM,使输入信号的各种组合功能得以一定的次序写入RAM中,然后特定的函数运算结果被输出于输入信号的作用下。目前FPGA中多使用4输入的LUT,为此每一个LUT都被看成一个有4位地址线的16×1的RAM。一旦用户采用原理图或HDL语言描述一个逻辑电路时,逻辑电路的所有可能出现的结果都可被FPGA开发软件自动计算出,并且会把结果事先写入RAM,为此,每当输入一个信号进行了逻辑运算也就同等于输入一个地址进行查表,找到地址相对应得内容,然后输出便可以。表2.1-1是一个4输入与门得例子。

表2.1-1 4输入与门对应的查找表

实际逻辑电路 a,b,c,d,输入 0000

LUT得实现方式 地址 0000 13 逻辑输出 0 RAM中存储的内容 0 基于FPGA的VGA图像显示控制器设计

0001 …… 1111 0 0 1 0001 …… 1111 0 0 1

因为进行静态存储器LUT是主要生产过程,截止目前,绝大多数的FPGA是基于静态存储器的过程,在这个过程中静态存储器芯片电源开启和关闭后信息将被丢失,必须需要额外的一个特殊的配置芯片,在通电的时候,通过特殊的配置芯片把数据加载在FPGA,然后FPGA能够正常工作,由于配置一个很短的一段时间里,不会影响到系统正常工作。

2.2 FPGA设计流程

一般来讲, FPGA的完整设计过程,包括电路设计与输入、功能仿真、全面、综合仿真,实现和布局布线、布局仿真与验证,配线板级仿真与验证、调试和加载配置。在系统设计之前,首先要进行方案论证,系统设计,器件选择等一些准备工作。图2.2-1显示一个完整的FPGA设计过程。

图2.2-1 完整的FPGA设计流程

QuartusII软件是Altera公司近年来提供的FPGA设计综合集成开发环境,以下以QuartusII软件为例分析FPGA设计过程。

电路设计:将电路系统以一定的表达方式输入到计算机里面,即将设计人员的电路

14