你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

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

发布者:jackzhang 时间:2011-06-30 12:26:31

摘要:提出一种基于Xilinx公司的Spartan一3E的FPGA显示方案,由于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的数据深度、宽度设置正确,并把事先做好的.coe文件即汉字的字模信息初始化到RAM中。
  
  2.5 RA M读取控制模块
  RAM读取控制模块是VGA显示设备和存储数据信息的RA M之间通道,为了使VGA显示设备能够准确的显示文字图像信息,必须严格遵循显示设备的扫描规律,产生相应的显示信息。块RAM中的存储地址是由0到16组成的一维的连续地址空间,实验显示的是由7个汉字组成的16×16的点阵,如果把这7个汉字看成一个整体,那么这个整体将占用112×16个像素点。本模块包括以下3部分内容:取出汉字字模信息,行、场计数器和坐标定位设计。
  
  显示汉字必须首先把汉字的字模信息提取出来,可以利用一个深度为16的寄存器将RAM中的汉字字模信息暂存,待字符位置定位后再从寄存器中取出相应显示信息产生汉字字模信息的数据流;用行列计数器确定坐标点,并用坐标的位置来确定文字显示位置,其实现与VGA时序控制中的行、场计数器一致;汉字显示区域实验从屏幕的坐标点(400,240)到坐标点(512,256)区域内显示字符。
  
  当坐标计数器刷新到坐标点(400,240)时就要相应地取寄存器地址中的第1个数据作为产生汉字的第1行点阵信息的数据流,直到坐标点(512,240)时结束第1行的显示,当坐标计数器刷新到坐标点(400,241)时就要取出寄存器中显示汉字的第2行点阵信息,直到坐标点(512,241)时结束第2行的显示,同理直到到达坐标点(512,256)时结束字符显示。本模块产生的字符数据流将交由顶层模块来控制其显示颜色。
  
  3 系统实验
  3.1 实验环境开发工具:Xilinx ISE 9.2i;开发语言:Verilog;仿真工具:Xilinx ISE 9.2i Simulator;实验开发板:Xinlinx公司的Spartan一3E。
  
  3.2 仿真结果
  利用ISE内部的仿真软件对系统进行仿真。由仿真可以看出行、场同步(hsync、vsync)信号都有效(值为1),且行、场都处于可视区域内(水平有效显示区宽度与垂直有效显示区宽度逻辑与的区域为可视区域 ),输出使能信号vailid值为1,此时可以输出汉字信息,可以看出,当输出条件满足时,从SRAM中获取汉字信息,并将其输出,当有汉字输出时vga_r值为1,即输出汉字颜色为红色,无汉字输出时为背景色蓝色。
  
  3.3 实验结果
  对实验进行调试,将编程数据下载到FPGA芯片中,再由显示器将汉字输出。本实验只做了一句话的实验测试,如果要实现更多字符显示,可以将更多字符信息存储到RAM字符信息库中,调取RAM中的信息进行显示即可。
  
  4 结语
  用FPGA来控制VGA显示,可以克服使用通用处理器设计系统所带来的不便和缺点。使用块RAM存储汉字信息,不占用芯片的逻辑资源,不仅能保证较高的工作频率,而且还具有很低的动态功耗。实验实现了基于FPGA的汉字显示,方便了汉字信息的写入及内容的修改,可使汉字的显示脱离Pc机控制,减少控制器的体积,对于小型嵌入式系统及各种便携式设备实现汉字显示具有重要的现实意义和工程实用价值。

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了