才华君

位置:首页 > 好好学习 > 毕业论文

浅论FPGA的VGA汉字显示系统设计与实现

摘要:提出一种基于Xilinx公司的Spartan一3E的FPGA显示方案,由于FPGA芯片具有可靠性高、编程灵活、体积小等优点,采用其控制 VGA接口进行汉字显示,有效地解决了通用处理器控制VGA接口显示汉字的缺点。对新方案进行理论分析和实验,结果证明该方案达到了预期效果。

浅论FPGA的VGA汉字显示系统设计与实现

关键词:显示绘图陈列;现场可编程门陈列;VGA汉字显示

随着科技的发展,VGA汉字显示系统的应用范围越来越广泛,传统的VGA字符显示方案是通过通用处理器控制VGA接口显示字符信息的,这种显示方案是以通用处理器为核心的处理系统,整个系统体积大、可靠性不高且灵活性差,不适合便携设备的设计。而FPGA芯片具有可靠性高、编程灵活和体积小等特点,因此用FPGA技术来实现VGA汉字显示可以有效解决传统技术中的缺点。

FPGA管脚资源丰富,运行速度快,可以实现大规模的系统设计,而且由于FPGA具有可重构能力和抗干扰能力强等优点,使其越来越多地应用于工业控制领域。利用FPGA控制VGA显示汉字,可使汉字显示脱离Pc机的控制,构建体积小、功耗低的各种嵌入式系统,可应用在人机界面、地面勘测、电子设备、智能仪表和性能监测等方面。

1、VGA汉字显示

VGA的汉字显示是利用VGA的显示原理,使用正确的时序信号对VGA接口相应管脚进行控制输出RGB颜色信息来显示相应的字符信息,其中VGA显示原理及时序信号的控制必须遵循VGA的工业标准。显示处理前端中的SRAM中存储的每一位数据对应相应LCD显示屏上一个像素点的亮和灭,“1”表示亮,“0”表示灭。在显示设备上显示汉字也就是按照汉字的点阵图向显示器上输出1或0的高低电平,从而在显示器上显示出具体的汉字 。

2、VGA显示控制器的FPGA实现

FPGA芯片作为中央控制器控制整个系统的处理,根据自顶向下的设计流程,按照层次化、结构化的设计方法可以将FPGA系统划分为以下几个模块:顶层模块、分频模块、VGA控制模块、存储功能模块和RAM读取控制模块。系统工作原理:系统加电FPGA芯片读人配置信息,配置完成后,FPGA进人工作状态 ,将要显示的汉字的字模信息初始化到单口RAM 中,由系统时钟产生时序,程序根据时序信息控制VGA接口输出行、场同步及颜色信息到显示器上。

2.1 顶层模块

根据自顶向下设计方法,首先定义顶层功能块 。顶层模块处于重要的位置,定义好顶层模块功能后,才能进而分析哪些是构成顶层模块必要的子模块,然后进一步对各个子模块进行分解,直到达到无法进一步分解的底层功能块。顶层模块主要负责规定各个模块之间的数据信号和控制信号的`连接关系,也就是实例化各子模块,并且接收RAM读取控制模块传来的汉字字模信息数据流,根据数据流信息中比特位为1的位赋予红色,为0的位赋予蓝色,即用红色表示汉字,用蓝色来填充背景。

2.2 分频模块

时序的驱动是设计VGA显示的控制需要注意的一个重要问题,这也是实验是否成功的关键设计。时序不正确,必定不能正常显示,有时甚至会损坏显示设备。因此,对于时序的设计我们必须遵循VGA的工业标准,在设计中使用的分辨率为640×480,根据VGA的工业标准,其像素的刷新率为25 MHz。

而实验采用的实验板提供的时钟频率为50 MHz,因此必须将系统进行分频设计,即进行二分频的设计。50 MHz的时钟频率经过分频后得到实验所需的25MHz频率,此频率将作为顶层控制模块,VGA控制模块和RA M读取控制模块的系统时钟。

2.3 VGA控制模块

VGA信号的电平驱动是设计VGA显示的控制需要注意的另一个重要问题,这是正确显示文字图像的重要设计,如果设计不当,那么在显示器上就不能正确显示文字图像。这个模块主要是根据VGA的工业标准进行设计的,用verilog语言将工业标准用程序表示出来。

VGA时序信号产生包括行点计数器x—cnt(计数个数用 表示)、场点计数器y_cnt(计数个数用rt 表示)、行同步信号hsync、场同步信号vsync、有效显示区Visible area等。其中行点计数器是800进制计数器,场点计数器是525进制计数器。根据VGA时序的工业标准行、场同步信号有4种状态:同步脉冲信号 (Sync),显示后沿信号(Back Porch),可视显示区(Visible area),显示前沿(Front Porch)。

这4种状态具有很清晰的时序规律,可以用有限状态机来实现这4种状态的转换,用h_state来表示行同步状态机的4种状态:h_sync,h_back,h_visible,h_front;v_ state来表示场同步状态机的4种状态:v—sync,v_back,v_ visible,v_ front。行、场计数器的值决定了状态机在何时进行状态翻转。

行状态机复位时,进入行同步状态h_sync,此时行同步信号输出低电平;当行计数器的计数值达到96时,状态机翻转进人行消隐后沿h_back状态,此时仍为消隐阶段;当行计数器的计数值达到144时,状态机翻转进入h_visible状态,它对应每行的有效显示区域,共包含640点,在此区域以外的任何部分都不被显示;当行计数器的计数值达到784时,状态机进入行消隐前沿h_front状态,此时处于消隐阶段。当行计数器计数值达到799时,行状态机进入h_sync状态,同时行计数器的复位信号为高电平,计数器复位。

与行有限状态机状态转移类似,需要注意的是行扫描是从左到右地扫描显示,而场扫描是自上而下地扫描显示,显示区域中行与场确定的一个坐标位置为一个像素点,并且只有在行、场状态都为有效可视状态(h_visibl~=1且v—visible=1)时,即行有效显示区域和场有效显示区域的逻辑与值为1 时,才能在显示设备上显示。行、场消隐信号的逻辑与为复合消隐信号 ,处于复合消隐阶段的信号不能在显示设备上显示 。

2.4 存储功能模块

存储功能模块的主要功能是存储文字信息,其存储媒介为FPGA内部的硬核块RAM,块RAM是以硬核的方式内嵌到FPGA芯片中的,不占用芯片的逻辑资源,是FPGA芯片内部的一种宝贵资源。FPGA内嵌的块RAM组件可配置为单口RAM、双口RAM、分布式ROM、块ROM、内容地址存储器CAM和先进先出存储器FIFO等存储结构 J。

本文中所做实验只进行文字显示,所以可以使用单口RAM存储文字信息,如果想实现更复杂的设计如:文字的滚动显示、图片的动画显示等可以使用双口RA M进行设计。实验使用开发软件XinlinxISE中的IP核生成工具CORE Generator生成实验用的单口RAM,并将其要显示的文字信息初始化到RAM中。实验设置显示7个汉字,每个汉字为16×16点阵,所以RAM的数据深度为l6,数据宽度为112。在工程项目里利用IP核生成工具生成单口RAM,在生成过程中把RAM的数据深度、宽度设置正确,并把事先做好的文件即汉字的字模信息初始化到RAM中。