PFD通常直接在飞行员的正前方。随着航空电子技术的快速发展,传统的CRT显示终端逐步被光栅式图形显示器LCD所替代。然而,光栅式图形显示系统在显示图形前,需要大量的各种运算,如图形扫描变换、反走样、图形旋转及其他的特殊算法操作。
随着显示分辨率的提高,要处理的像素也越来越多,而所允许的处理时间却受屏幕刷新率所限制。因此,怎样实时生成并准确显示逼真图形画面,是对嵌入式PFD设计者的一个极大的挑战。而基于PC机的传统图形生成和图形显示方式,又过于复杂且存在安全隐患。
鉴于这种情况,参考文献[3-5]虽然提出了一些解决方法,但实际效果并不是很明显。本文采用基于仪器总线和扩展总线的高速阵列信号处理板的设计模式,提出了一种基于硬件加速的PFD图形显示设计方法。该方法实现了图形分层双缓存交替切换、图形填充、图形合成和多通道DMA像素引擎,提高了PFD图形牛成和显示的实时性和可靠性。文中以QuartusⅡ5.0和Mod-elsim_Altera 5.6e为开发、仿真和综合的平台,存Altera公司的CycloneⅡ系列FPCA上成功下载并运行。
1 整体设计方案
在PFD显示系统中,要同时显示多个画面,如姿态指引画面、全罗盘画面、导航地图画面及飞行视景等。每个画面的处理算法都有其特殊性,如在姿态指引画面中,显示画面需要根据飞机参数的变化实时更新,要求在地平线上填充监色背景(蓝色表示天空),而在地平线下填充绿色(绿色表示大地)。随着飞机姿态的变化,地平线将在边界线内改变大小及方向,画面上的蓝色和绿色区域将重新分配,这种天地区域的动态重新填充是个非常费时的工作。此外,姿态指引画面还需要叠加一些字符(俯仰角度等),这些字符需要随着地平线一刚旋转。
可见,姿态指引画面是电子主飞行仪中最为耗时的画面之一。而全罗盘画面则侧重于字符、线段的绘制和旋转变换,反走样运算任务十分繁重。在导航地图画而生成和处理中,数据量和处理量都比较大,如位置显示、飞行航迹生成等。针对不同图形画面的处理算法,本文设计了大规模阵列处理机模型,其主飞行仪表显示系统整体没计框图如图1所示。该设计采用共享外部总线和分布式并行处理相结合的系统结构。
每个处理板通过仪器背板总线互相连接,提供了共事外部总线的结构;而相邻板之间也有一套扩展总线,提供了局部共享总线的结构。这样,板间既可通过背板总线直接交换数据,也可以通过扩展总线以DMA方式进行数据传输。另外,每个板内,DSP通过局部总线连接一个容量较大的SDRAM作为全局共享外部存储器,而FPGA通过局部总线连接一个容量较小的双口RAM作为局部共享存储器。这些全局和局部存储器可以作为板间或DSP间数据交换的大型缓冲区。从图形或图像处理算法实现上考虑,这种结构既可满足流水线式的并行算法,也可以满足分布式的并行算法(同一算法分布到多个处理器同时执行)。
针对每块板的不同处理功能,对FPGA进行了不同的算法设计。以板0#为例作一介绍。图2为FPGA的各种接口与系统其他部分的关系。
系统有两套总线:仪器总线和扩展总线。仪器总线仿VXI总线设计,采用双排欧式插座设计,模拟信号和数字信号分开在各自的插座之上,提高了电磁兼容性。模拟部分主要包括:飞行传感器测理信号和系统模拟电源。数字部分采用基于多板分布式并行处理机制的共享式总线结构,主要包括:24位地址总线、16位数据总线、模块功能选择与控制总线、以及时钟和触发信号等;扩展总线采用基于板间流水线处理机制的链式结构,主要包括:20位地址总线、8位数据总线和控制总线。总线接口中,读写控制、地址译码、中断及DMA控制、时钟和握手信号均由FPGA实现。限于篇幅,具体设计细节不再赘述。
2.2 帧存控制模块
帧存控制模块由交叉多路转换器Cross-MUX、读写控制器和地址发生器组成。系统上电复位时,首先将变化频繁、数据量小的前景与变化缓慢或不变、数据量大的背景图形分开存储于高速SRAM中,每3片SRAM组成全彩色(R、G、B)图形帧存(这样的图形帧存共有3组)。其中,SRAM3为背景帧存,SRAM1和SRAM2为前景帧存。将前景帧存设计为双缓存轮流切换方式,当其中一组写人生成图形数据时,另一组则正被读出数据到图形合成模块,图形生成与显示并行进行。
2.3 图形合成模块
图形合成模块支持一层到四层的图形合成,通过设置合适的图形开始点和结束点(包括竖直和水平)来完成控制。公式(1)、(2)、(3)分别给出了其控制模型。式中,Plk为当前lx层像素的灰度值,介于0~255之间;x为层序号,取0、1、2、3;α1、α1、α1为层开关,取0或1。当前像素灰度输出值Pout由前四层的灰度值混合而成。
像素引擎模块产生像素时钟输入信号CLK、行同步信号/Hsync、场同步信号/Vsync、数据使能信号/DE、扫描方向选择信号DPSR和R、C、B数据控制信号,控制LCD屏显示全彩色图形或图像。
2.5 图形填充模块
图形填充算法的效率高低,直接影响到图形显示系统的加速程度。设计高效的填充算法犹为重要。本系统设计了一种基于形态学膨胀算子的多种子填充算法。膨胀算子具有天然并行运算能力,易于FPGA硬件实现,并且改进算法后,填充速度大幅度提高。图形填充模块由结构元素生成器、膨胀处理器和位置计数器组成。
2.5.1 结构元素生成器
形态学图形膨胀算法,是用结构元素对图形某邻域窗口进行的处理。本设计采用的是3×3的方形结构元素,每次需要读取9个数据。为此,在FPGA内部定义了寄存器和FIFO,将相关的图形灰度数据进行存储,以使其在一个时钟周期内,以流水线的方式形成填充所需要的一个结构元素窗口。流水线的方式,加快了数据处理速度。结构元素窗口形成模块框图如图3所示。图中,w22为结构元素原点,如图4所示。