随着现代航空电子技术飞速发展以及飞机性能的提高,使得机载图形显示系统所显示的参数越来越多,同时也对画面显示质量从人机工效学的角度提出了很高的要求。要保证图形显示的连续性,显示系统必须以每秒50帧以上的频率实时刷新。传统的EADI图形处理方法是采用软件运算实现,速度较慢,占用大量的运算时间,从而使系统很难在规定的时间内完成区域填充、字符与直线旋转、反走样运算等较为耗时的运算。本文设计了基于DSP与FPGA的系统结构,采用了软硬件填充的图形处理方法,先由DSP软件完成图形轮廓生成,然后FPGA硬件图形处理器根据图形轮廓完成耗时的图形填充,使系统在实时性方面取得了很好的效果并使得系统运算资源得到了合理的分配与利用。
1 全姿态指引仪的功能与原理
飞行仪表的综合显示系统主要包括全姿态指引仪、电子航道罗盘、导航仪和视景仪等模块化仪表设备,其中电子全姿态指引仪的显示信息包括姿态指引信息、高度信息、速度信息和工作状态信息等。它的主要任务就是以动态图形和字符的形式实时的显示飞行参数,以便飞行员准确的获取所需要的信息,并进行及时安全的操纵。全姿态指引仪区域填充运算主要针对内部天地球区域,如图1(a)所示。以中间分界线即地平线为界,上部蓝色区域代表天空,下部褐色区域代表陆地,地平线位置和角度决定两个区域的形状,在每次画面刷新时都要重新生成图形,上面叠加的字符和线段也要跟随地平线一起旋转。地平线的位置和角度是由两个飞行参数决定的:俯仰角和侧滚角。如图l(b)所示,俯仰角θ决定地平线离图形中心的垂直距离h,侧滚角α决定其倾斜角度。
2 系统硬件结构设计
电子全姿态指引仪对实时性提出了严格的要求,其硬件系统结构需要具有稳定可靠、实时数据处理能力强的特点。随着DSP与FPGA技术发展,DSP+FPGA系统结构在图形图像处理的应用场合突显出很强的优越性,两种器件分别适合复杂算法运算和硬件并行运算与控制。因而考虑将图形运算分步处理,将轮廓生成的工作交给DSP,而区域填充由FPGA硬件完成,这便是软硬件填充方法。
工作时,输入是多路传感器信号,经A/D转换为数字信号,输入到FPGAl中按照特定的算法对信号进行预处理后,存入双口RAMl中。DSP又通过双口RAMl读取预处理后的数据,按照设定好的算法生成需要显示的图形与字符的轮廓,接着通过双口RAM2传给FPGA2,在FPGA2中完成字符图形填充、反走样、显示等功能。DSP连接一个容量较大的SDRAM为全局共享外部存储器,而FPGA通过连接一组容量较小的双口RAM为局部共享存储器。
3 图形信息分层处理与显示技术
3.1 DSP画面初始化图形分层
图形区域主要分为三种类型:一是背景区域,数据量大,但在图形变化过程中不随参数变化而改变;二是填充区域,数据量大,并且在图形变化过程中随着参数变化而不断改变;三是动态的字符与刻度信息,数据量小频繁变化又不同于填充区域。根据图形的特性,系统上电后首先进行画面的初始化,将图形分为背景层、填充层和动态字符层,背景层包括不随参数改变的背景、刻度和字符等,填充层即天地球
区域,动态字符层包括动态字符和直线区域。区域填充过程对动态字符层的处理和背景层相同,因而将该层和背景层构成的区域称为非填充区域。图形的分层靠图形区域标志位来区分,为0表示为非填充区域,为1表示为填充区域,区域标志位后跟随着该点颜色信息。在画面初始化中将天地球轮廓上点的坐标存为数组,以方便根据地平线的位置和角度来标记天地球填充区域的边界。在画面初始化后的轮廓重新生成过程中,背景层便不再改动,动态字符层信息因数据量小可每次都将改变了的部分擦除和重写。DSP根据参数生成带有填充区域边界标记信息的填充层与背景层和动态字符层的叠加信息,就生成了一幅完整的图形轮廓。图2表示图1(a)所示显示画面的分层结果,(a)、(b)和(c)分别为背景层、填充层和动态字符层。
3.2 天地球区域的轮廓生成
因为天地球的位置和形状固定,跟随参数变化的是其区域的颜色信息,因而轮廓生成的任务就是根据变化的参数重新标记填充区域边界的颜色信息,以便FPGA根据边界点的颜色信息确定区域内像素点的颜色。在DSP初始化画面生成天地球边界时,建立边界数组存储边界点的位置以方便其颜色信息的标记。在DSP接收到一组飞行参数后,根据俯仰角和侧滚角重新赋给天地球的边界和地平线以颜色信息。这种方法可以节省大量时间以满足系统的实时性要求。
3.3 天地球区域的FPGA硬件填充
区域填充一般可以归为两大类:扫描转换和种子填充。其中边标志填充算法和扫描线种子填充算法分别是这两类中较为常用和高效的算法,边标志填充算法更适合于硬件和固件实现。故选用边标志填充算法完成区域填充,编程逻辑使用Verilog HDL实现。
具体思路如下:(1)DSP读取双口RAMl中存储的已经由FPGAl预处理了的信号,生成一些直线、圆弧,如线段AB、弧线AC,在DSP进行图形生成的同时,对需要填充的图形进行边标志的标定,并通过双口RAM2送至SRAMl(或SRAM2)中(说明需要参照结构原理框图),(2)填充工作由FPGA2实现,FPGA2并行地从SRAM2(或SRAMl)读入像素,并进行标志识别与操作,实现边标志填充算法。算法具体描述如下:
(1)设立边标志,该功能由DSP完成,是在生成天地球填充轮廓的过程中,同时给边界和地平线做上标记,画面除了背景色以外需要填充蓝色和褐色两种颜色(一些特殊情况,如俯仰角大于90°或者小于-90°,则只需填充蓝色或褐色)。因此天地球的填充需要设立蓝色边标志和褐色边标志。
(2)像素操作,该功能由FPGA2完成,由布尔状态量确定和输出颜色确定两部分组成。FPGA2把已打上边标志的图形数据从帧存(SRAMl或SRAM2)中读出,对每条扫描线,依从左到右的顺序,逐个访问该扫描线上的像素,对于像素具有蓝色和绿色标志的,分别定义一个布尔状态量flag_Blue和flag_Green来指示当前像素点的状态,若点在需要填充的蓝色(或绿色)区域内,flag_blue(或flag_green)为真,反之,若点在填充区域外,flag_blue(或flag_green)为假;每当当前被访问的是被打上蓝色边标志edge_blue(或绿色边标志edge_green)的像素时,fl-ag_blue(或flag_green)取反;对未打任何边标志edge_no的像素,flag_blue(或flag_green)不变。算法确定输出颜色时,对于所访问的像素,根据flag_blue(flag_green)标志把相应的颜色Blue(Green)输出显示,否则,则直接把背景色Background输出显示。
3.4 滚动刻度和字符处理
代表俯仰角的刻度和度数都在天地球区域内实时的滚动,它与填充区域外面的移动刻度和字符的区别是:刻度和字符不能超出填充区域,否则会擦除其它天地球外的重要信息。对于这个问题可以通过以下方法解决:在初始化分层时标记了的填充区域内,选择一种与填充区域外的各种颜色和填充区域内小飞机标记颜色值不同的一种颜色数据来代表填充区域内的滚动字符和刻度。每次写前判断如果在填充区域外则不要写,如果在填充区域内且非标志信息则写出该字符或刻度,也就是如果刻度滚动到区域外则不再显示,但其位置信息仍然根据参数变动。擦除时,根据位置信息判断像素点是不是移动刻度和字符的颜色,如果是就擦成填充区域的原始数值,否则保持不变。这样就实现了既不把字符写道填充区域外,也不会将填充区域外的信息元擦除。其程序流程图如图3所示。
4 结束语
通过将图形分层处理,只根据参数改变其填充层和动态字符层信息,减少了DSP轮廓生成的运算量。又按照硬件系统结构特点将图形运算由DSP软件标记轮廓,FPGA硬件完成区域填充的方法,显著加快了区域填充速度,使得画面显示取得效果良好。这种图形处理方法对其它类似的图形处理应用场合具有很好的借鉴意义。