SDRAM在图形生成电路中的应用

2014-12-10 05:37高伟林
电子技术应用 2014年9期
关键词:时钟像素控制器

高伟林,曹 峰,郭 超

(中航雷达与电子设备研究院 军品研究所,江苏 苏州 215151)

显示系统是航空电子系统的重要组成部分,现代飞机和其他载人飞行器的座舱显示向驾驶员提供飞行器、发动机和其他系统所测试的参数,包括从起飞、导航到着陆等全过程所需要的各种信息[1]。图形显示系统性能的优劣直接影响到飞行员获取飞行信息进而做出判断和决策的效率。作为设计过程的一部分,必须确定驾驶员的信息需求,并且信息显示必须设计得确保提供充分的态势感知[2]。

随着显示分辨率的提高,要处理的像素也越来越多,而允许的处理时间却受屏幕刷新率所限制[3]。目前主流的机载显示分辨率为 UXGA(1 600×1 200×60 Hz),数据传输率为345 MB/s[4]。高速、高带宽数据处理需要大容量高速率的帧存器件做数据缓冲。SRAM器件有着读写速度快、控制简单的特点,但是其容量小,成本高。在各种随机存储器件中,SDRAM的价格低、体积小、速度快、容量大,是比较理想的器件[5-6]。本文针对高分辨率图形显示应用需求设计了一种基于SDRAM帧存的图形生成电路,利用DSP执行图形运算算法,利用FPGA作为协处理器,利用SDRAM作为图形帧存并采取乒乓操作方式进行数据存取,实现了分辨率高达1 600×1 200的图形实时生成与显示。

1 图形生成原理

飞行技术的发展使得座舱内需要显示的信息量增大,尤其在做战术动作时,画面变换速度快,要求图形的更新速度也必须很快,才可以避免画面的断续。为达到动态实时显示及画面清晰,硬件上需采用更快的图形处理器和更合理的设计[7]。本文采用ADI公司的TigerSHARC系列高速DSP器件TS201作为图形处理器,以FPGA作为协处理器,采用大容量高速SDRAM器件作为图形帧存,原理框图如图1所示。

其中DSP负责图形生成运算并且将数据结果通过FPGA写入SDRAM中,FPGA从SDRAM中读出数据送至显示部件进行显示。本设计采用双帧存结构,DSP和FPGA对SDRAM的帧存操作采取乒乓方式,以场同步信号为周期进行切换。

图1 图形显示系统原理框图

2 FPGA设计

FPGA设计主要包括SDRAM控制器设计、系统接口模块设计、乒乓模块设计等。

2.1 SDRAM控制器设计

SDRAM 的操作时序非常复杂,控制命令主要包括:激活命令 ACTIVE、读命令 READ、写命令 WRITE、预充电命令 PRECHARGE、刷新命令 REFRESH、操作模式加载命令LOAD MODE REGISTER等。上电之初要先进行初始化配置,而后才可进行正常读写。一个单独的读写操作需要有数个时钟周期的配套操作,这也部分抵消了其高速率带来的优势。全页突发操作模式能够很好地发挥SDRAM高速读写的性能[8]。突发操作是指从内存中连续的地址读写有限的数据,在一个SDRAM设备的频率周期中,可以读写与时钟个数近似等量的数据[9]。本文采取突发操作方式对SDRAM进行数据存取处理。

本文采用VHDL硬件描述语言并用有限状态机来实现SDRAM各个控制命令状态间的切换。使用VHDL语言来描述有限状态机,可以充分发挥硬件描述语言的抽象建模能力[10]。SDRAM控制器逻辑框图如图2所示。图中各个信号的定义如表1所示。

图2 SDRAM控制器逻辑框图

控制器内部逻辑主要分为三部分,分别为:状态转换模块sdr_ctrl、状态处理模块sdr_sig、数据处理模块sdr_data。状态转换模块sdr_ctrl负责初始化状态机和初始化完成后各个操作命令之间状态转移关系的建立,状态处理模块sdr_sig负责各种状态命令下对应的地址、控制命令信号的生成,数据处理模块sdr_data负责控制数据端的读写使能三态控制。

表1 SDRAM控制器接口信号定义

2.2 系统接口模块

除了控制器内部逻辑本身,FPGA内部还需建立与控制器的交互关系,根据应用要求产生系统接口模块System,负责在适当的时候发起读写操作。FPGA内部相关的模块关系如图3所示。

System模块主要负责生成sdr_top模块的激励信号,包括 sys_ADSn、sys_R_Wn、sys_A 等。

2.3 乒乓操作

图3 FPGA内部交联关系图

在图形产生系统中将显存部件设置为乒乓双缓存结构,可以达到提高系统数据吞吐量和系统处理效率的目的。本文中显存部分包括两片SDRAM存储器,分别为SDRAM1和SDRAM2。对显存的操作分为两个主体,一个为FPGA内部逻辑生成的SDRAM控制器1,另一个为DSP集成的SDRAM控制器2。显存的选择和切换管理通过场同步的二分频信号 SET实现,SET为“0”时,FPGA生成的SDRAM控制器对SDRAM1进行操作,DSP集成的SDRAM控制器对SDRAM2进行操作;SET为“1”时,FPGA生成的SDRAM控制器对SDRAM2进行操作,DSP集成的SDRAM控制器对SDRAM1进行操作。SDRAM乒乓操作的框图如图4所示。

图4 FPGA内部硬件填充框图

DSP写入SDRAM中的数据需定时读取并送出显示,在显示动态图形画面时,需对帧存中的原始数据进行清屏处理,否则会引起画面重影。清屏的实质就是将整个显示帧缓存全部填充成透明色,尽管处理简单,但通过纯软件实现非常费时[11]。本文设计了一种利用FPGA逻辑进行画面消隐的方法,减轻了软件操作的负担,提高了系统运行效率。具体方法为:利用SDRAM的高速高带宽优势,将每行数据以SDRAM操作时钟高速读出,通过FIFO1进行缓冲后读出显示。当一行数据从SDRAM中全部读出后,立即通过FIFO2以SDRAM操作时序向SDRAM该行地址写入0数据,以此达到清空该行数据的目的。每一行操作均参照此方法,则当一帧画面全部读出完毕后,该帧原有数据也全部得到清空。

3 高分辨率画面数据存取

为了高效利用SDRAM存储空间,在DSP控制SDRAM操作期间,将地址线错开一位相连,SDRAM地址总线第0位与DSP地址总线第1位相连,SDRAM地址总线第1位与DSP地址总线第2位相连,以此类推,这样SDRAM的一个地址空间将存储两个像素数据。SDRAM位宽为32 bit,高16位和低16位分别存放两个相邻的像素数据。针对1 600×1 200分辨率画面,在SDRAM中一行1 600个像素数据只需对应800个地址。本文所采用的SDRAM最大突发长度是512,程序中将突发长度设置为512和288两种类型。显示器的一行像素数据和SDRAM中的两行地址单元对应,其中第一行512个地址单元对应前1 024个像素数据,第二行前288个地址单元对应后576个像素数据,后224个地址单元舍弃。这样总共需2 400行存放一帧画面数据,小于SDRAM中4 096行一个BANK的容量。

根据 VESA标准,分辨率为 1 600×1 200、刷新率为60Hz的画面,行消隐包括50个行周期,一帧画面周期共包含1 250个行周期,式(1)给出了行周期计算公式:

针对一行数据,需完成突发读和突发写两个步骤,突发读通过FIFO缓冲显示,突发写对已读出的SDRAM数据进行清空。每次突发读、写需分两次进行,第一次完成512个数据突发操作,第二次完成288个数据突发操作。一个行周期内共需完成4次突发操作,需产生4个sys_ADSn信号。为了便于SDRAM控制器区分512突发操作和288突发操作,在System模块中设计了一个sys_BLS(burst length select)突发长度选择信号,其为“0”时通知控制器进行512突发,为“1”时通知控制器进行288突发。

本设计中 SDRAM的操作时钟为 150 MHz,式(2)给出了一行数据处理的时长:

式(2)分子为处理一行数据所需的总时钟周期数目,其中包含4次突发操作周期以及每次突发操作所配套的行选通、列选通、预充电、自刷新等命令所消耗时钟周期。由式(2)知,处理一行数据的时间小于行周期13.33μs。根据VESA标准,1 600×1 200分辨率画面行周期包含 2 160个像素时钟周期。行同步宽度为192个像素时钟周期,实际程序中利用行同步头做清零处理,由式(3)可得到实际可用的操作时间为:

HSYNC、HBLANK、sys_ADSn、sys_R_Wn、sys_BLS 的时序波形图如图5所示。

图5 行操作时序波形图

在行同步上升沿开始产生第1个低电平sys_ADSn信号,行地址加 1,sys_R_Wn为高,sys_BLS为低,通知SDRAM控制器进行512突发读操作;完成后产生第2个sys_ADSn信号,行地址加1,此时sys_R_Wn为高,sys_BLS为高,通知控制器进行288突发读操作;完成后产生第 3个 sys_ADSn信号,行地址减 1,此时 sys_R_Wn为低,sys_BLS为低,通知控制器完成512突发写操作;完成后产生第4个sys_ADSn信号,行地址加1,此时sys_R_Wn为低,sys_BLS为高,通知控制器进行 288突发写操作。 SDRAM 的行地址按照 A、A+1、A、A+1、A+2、A+3、A+2、A+3……的规律递增,突发操作状态按照读、读、写、写、读、读、写、写……的规律进行。

4 实验验证

本文采用的DSP器件是ADI公司TigerSHARC系列的 TS201,FPGA采用 Altera公司的 EP2S60F672,FPGA开发环境为QuartusII9.1,运用开发环境集成的在线逻辑分析仪工具Signaltap II抓取sdram控制器的各个相关信号波形,如图6所示。

图6 sdram信号时序波形

本文针对机载显示器对高分辨率图形显示的需求,采用SDRAM器件作为图形帧存,使用VHDL语言设计了SDRAM控制器;针对1 600×1 200分辨率画面实时生成需求,设计了512和288两种突发长度,通过FPGA内部的FIFO进行数据缓冲处理,对SDRAM采取乒乓操作方式,实现了分辨率高达1 600×1 200图形的实时生成与显示。

[1]贾银亮.基于FPGA+DSP的飞机座舱综合图形显示技术研究[D].南京:南京航空航天大学,2011.

[2]SPITZER C R.数字航空电子技术(上)航空电子元件、软件和功能件[M].谢文涛,译.北京:航空工业出版社,2010.

[3]孔全存,李成贵,张凤卿.主飞行仪表图形加速显示系统的 FPGA 设计[J].电子技术应用,2007,33(4):62-64.

[4]李翠娟,陈川,张晓曦,等.几种机载视频技术要点分析与发展趋势探讨[J].航空电子技术,2012,42(1):129-131,134.

[5]杨海涛,苏涛,巫檬.基于 FPGA的 SDRAM控制器的设计和实现[J].电子科技,2007(1):8-12.

[6]段晓晨,何小刚,程永强.实时视频SDRAM控制器的FPGA设计与实现[J].太原理工大学报,2006,37(5):5-8.

[7]谷勇,艾德峰,魏延岩.飞机座舱显示系统画面显示质量的研究[J].海军航空工程学院学报,2009,24(6):631-634.

[8]王利颖,蒋亚东,罗凤武.嵌入式实时图像处理系统中SDRAM控制器的实现[J].现代电子技术,2009(9):137-139.

[9]林志煌,解梅.一种简易SDRAM控制器的设计方法[J].现代电子技术,2008(16):18-20.

[10]张波,张焕春,经亚枝.基于 DSP和FPGA的座舱图形显示系统关键技术研究[J].信息与控制,2003,32(6):549-552.

[11]Micron Technology Inc..SYNCHRONOUS DRAM MT48-LC8M32B2-2 MEG ×32×4 banks[Z].2003.

猜你喜欢
时钟像素控制器
像素前线之“幻影”2000
别样的“时钟”
古代的时钟
“像素”仙人掌
ÉVOLUTIONDIGAE Style de vie tactile
有趣的时钟
时钟会开“花”
高像素不是全部
模糊PID控制器设计及MATLAB仿真
MOXA RTU控制器ioPAC 5542系列