首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

基于FPGA的VGA波形显示方法研究(2)

基于FPGA的VGA波形显示方法研究(2)

3 显示控制器设计
 VGA显示控制器须提供R、G、B三基色图像信号,HS行同步信号和VS场同步信号。由于VGA接口显示器仅能处理串行模拟信号,因此,VGA控制器所产生的信号经D/A转换器将数字信号转变为模拟信号后发送给显示器使用。VGA显示器正确、完整地显示数字图像包括时序的构建和数字图像信息的模拟化两个方面。据此系统硬件实现框图如图4所示,系统硬件由ADC控制模块、波形稳定控制模块、RAM存储模块、VGA控制模块组成。在ADC控制模块的控制下将A/D转换器转换后的数字信号经波形稳定模块处理后,存入数据缓存器RAM内,而后VGA控制器在驱动显示器的时候,读取数据缓存器中的数据进行显示[5]。通常VGA显示器显示的数据量较大,而FPGA内置的片内存储器资源很难满足存储量的需求,因此,一般都需要通过外接存储器进行扩展,对于图像等大数据量处理系统通常选用SDRAM进行扩展[6],本系统只进行波形的显示,不进行数据处理等操作,故片内存储器足够满足使用要求。

 需要说明的是,信号的A/D采集时钟选为125 MHz,而VGA的显示标准选择的是视频电子标准协会VESA(Video Electronics Standards Association)即为1 280×1 024@60 Hz,故像素时钟为108 MHz。为了产生这两种时钟,在FPGA片外接100 MHz的晶振,使用FPGA内部两个锁相环经倍频后得到。对于不同时钟速率之间的数据交换, 一般会通过使用FIFO进行缓冲,本文使用双端口RAM进行缓存,配置为一个读端口和一个写端口,两个端口拥有各自独立的时钟(分别为108 MHz和125 MHz), 设计简单的控制时序就可实现数据的正确读写。
3.1 存储数据宽度的选择
 通常ADC的分辨率为12 bit或者14 bit,支持补码形式表示,数字信号表示的最大范围为4 096或者16 384,而实际的显示器的分辨率远远小于此值,常见的有640×480、1 024×768、1 280×1 024等。因此根据显示波形区域的大小,存储在显示缓存器中数据宽度可以缩减,例如波形显示区域的大小为1 024×512,选用横向显示,则可将显示数据的宽度截取为9 bit,这样一来最大值不会超过511,避免了数据值较大而无法显示的情况。本文中所选用的波形显示区域大小为1 024×768,即M=1 024,N=768,显示数据截取为10 bit,但需注意,并不是从采集进来的数字信号直接截取。为了防止数据较大而溢出波形显示区域,作如下处理:首先从ADC采集进来的数据分别截取9 bit和8 bit,然后将截取后的两个数据进行相加,结果为10 bit数据,其最大值不会超过768,这样就防止了显示溢出而导致的波形显示失真。
3.2 稳定显示波形策略
 由于系统采集的时钟与VGA显示的像素时钟不同,通常都会选取部分数据进行显示,而其余的数据将会被丢弃,因此如何选取数据变得尤为重要,如果选取不合适,会造成显示波形闪动,无法分辨。为了使显示的波形稳定,在数据采集时进行了预处理:首先判断扫描点是否在波形显示区域内,如果在,则读取波形RAM中的数据并显示;否则对采集进来的信号进行基准点检测,当检测到基准点时,开始向波形RAM中写数据,写满时停止写入,而后面采集的信号全部丢弃。利用这种方式,显示的基准点位于显示区域最左边线,而通常需要将显示的基准点移至显示区域的中心位置。对于这种方式的实现方案是:首先定制大于或等于2倍于显示宽度大小的波形RAM,当扫描点不在波形显示区域中时,开始将采集的数据进行存储。当数据存储地址大于显示区域宽度一半时,开始检测基准点,同时将采集的数据继续写入波形RAM中,检测到基准点时,将此点对应的数据地址tadd保存起来,而后继续存储直至存满为止。当扫描点到达波形显示区域时,从地址radd开始读取数据进行显示,这样就达到了目的。其中地址radd的计算公式为:
   
 需要说明的是,以上介绍的稳定显示波形策略,存储器资源占用很少,大量采集的数据将会被丢失。当VGA控制器以像素时钟读取波形RAM时,从ADC采集进来的数据不会写入波形RAM,以保持波形的完整性;当VGA控制器不读取波形RAM时,ADC采集进来的数据以采集速率写入波形RAM中,直到写满后停止。对于本系统设计,当VGA控制器不读取波形RAM时,能够保证波形RAM写满完整一帧数据。当n0≤y≤n0+N成立时,需要的时间为1 280×768÷108 MHz≈9.102μs,对波形RAM不进行写入操作。不满足时,需要的时间为1280×256÷108 MHz≈2.427 μs;如果波形RAM的大小为2 KB,采集速率为125 MHz, 则写入波形RAM的时间为2048÷125 MHz≈16.384 ns,可见对于波形RAM有足够的时间进行写入操作。以上分析均没有考虑消隐所用的时间。3.3 VGA时序
 在VGA 接口协议中,不同的显示模式都有严格的工业标准、不同的分辨率或不同的刷新频率,故其时序也不相同[7]。VESA的标准参考显示时序如图5所示,B为行同步信号,占用112个像素时钟周期,C为行消隐后肩, E为行消隐前肩,D为有效数据显示期;P为场同步信号,占用3个行周期,Q为场消隐后肩,S为场消隐前肩,R为行有效显示期。在逐行扫描情况下,1 280×1 024分辨率有效显示区域为每行1 280个像素,一场1 024行,实际考虑到行消隐和场消隐时间的影响,实际分辨率为1 688×1 066。场同步信号VS用来确定一帧图像的开始和结束时间,确保图像数据从左到右、从上到下扫描,以形成一幅幅图像。行同步信号HS标志着一行像素的开始和结束,使图像数据显示在屏幕从左到右的有效区域。

    首先根据刷新频率确定主时钟频率,然后由主时钟频率和图像分辨率计算出行总周期数,再把同步、消隐各时序段的时间按照主计数脉冲源频率折算成时钟周期数。在FPGA中利用计数器,以计算出的各时序段时钟周期数为基准产生不同宽度和周期的脉冲信号,利用它们的逻辑组合产生视频DAC的控制信号和VGA接口的同步信号。
4 实验结果及分析
 对本文提到的波形显示方法进行了实验验证,分别对采集的正弦波和方波进行两种方法的显示。图6(a)为方法一显示的方波,可以看出,方法一对于变化比较陡峭的波形显示,会出现很多虚点,视觉效果不佳,不利于显示波形变化陡峭的波形。图6(b)为方法二显示的方波,这种方法对于任意波形的显示都具有很好的显示效果,不存在方法一中提到的波形不连续情况,视觉上达到平滑的效果。由此可见,方法二显示的波形线条清晰,适合各种波形的显示,比方法一显示的波形视觉效果更好。

 本文针对VGA显示波形的美观性要求,首先在介绍VGA显示原理和时序控制器的设计方法的基础上研究了波形存储器的数据宽度选择以及一种波形稳定显示的策略,然后探讨了两种VGA显示波形的方法,第一种方法可以显示“变化缓慢”的波形,对于“比较陡峭”的波形显示不连续,效果不佳;第二种方法对于任意一种波形都可以连续地显示,具有很好的视觉显示效果。本文所述的波形显示方法为新型示波器的设计提供了设计思路。
继承事业,薪火相传
返回列表