李 洁, 张 蕾, 王灵刚
(1.中国航空工业洛阳电光设备研究所,河南 洛阳 471009;2.河南科技大学电子信息工程学院,河南 洛阳 471003)
笔划式显示方式广泛应用于飞机座舱显示。随着光栅显示技术的发展,许多显示器已采用了光栅显示方式。但对于要求高亮度和高显示精度的平视显示器和头盔显示器,仍大量采用笔划式显示方式。目前,笔划/光栅转换技术较为成熟,不少资料中介绍了各种笔划/光栅转换方法[1-3],使笔划、光栅显示方式可以协调共存于同一飞机平台。
笔划式字符发生器是笔划式显示方式的核心。一些国外专利[4-10]介绍了符号笔划的各种生成方法,但都是利用分离器件产生基本笔划。也有一些资料介绍笔划式字符发生器的设计方案,有的采用多通道任意波形发生器模块来产生笔划信号[11];有的采用EPLD来实现基本的笔划矢量生成[12];最近有设计采用了DSP和FPGA,其特点是集成度高,使用高性能的数字信号处理器完成笔划和光栅两路字符数据生成,控制逻辑和图形生成电路由FPGA实现,体积和功耗大幅度下降[13]。随着飞机航电系统的发展,需要处理、显示的信息量越来越大,对字符发生器的数据处理能力和笔划书写性能提出了更高的要求。本文提出一种同样基于DSP和FPGA的新型笔划式字符发生器的设计方法,以满足相关国军标[14-15]为前提,旨在提升字符发生器的数据处理能力和符号书写性能。该设计采用带核处理器和IO处理器的DSP作为主处理器,将数据处理和符号书写管理并行,矢量发生器可以全周期进行书写;利用DSP的握手DMA通道,矢量发生器由从处理器被动接收矢量指令改为主动申请矢量指令,使笔划之间书写连续无停顿,提高字符发生器的平均书写速度和笔划书写均匀性。
字符发生器由数字信号处理器(DSP)及外围电路、矢量发生器、A/D转换电路组成,产生笔划式字符画面供后级显示器显示。组成框图如图1所示。
图1 字符发生器组成框图Fig.1 Composition of a charalter generator
DSP选用AD公司的ADSP21160,为双处理器、双总线结构。内含核处理器和I/O处理器;核工作时钟100 MHz,两个独立32位浮点运算单元,每个都带乘法器、累加器、移位器和16个数据寄存器组;片内含4 MB双端口存储器,数据总线宽度64位,地址总线宽度32位;支持单指令多数据流模式(SIMD);全部指令为单周期指令;支持14通道DMA,6个Link口通讯。
DSP可通过Link口或双端口存储器获取显示文件和指令,由核处理器进行相应计算处理,生成矢量发生器能识别的一组笔划矢量指令,存入指定缓冲区。DSP内存开辟两个缓冲区,用于存储处理好的笔划矢量指令。I/O处理器根据矢量发生器发出的DMA请求从某一缓冲区输出笔划矢量指令。笔划矢量指令的输出与矢量发生器发出的DMA请求信号有关,与计算无关。计算期间可以同时响应矢量发生器的请求,及时向矢量发生器输出矢量指令,对矢量发生器的矢量指令输出不会长时间占用DSP外总线,影响计算数据的存取,使计算和矢量指令输出同时进行,互不影响。
一个符号及完整的画面均是由若干笔划矢量构成,矢量发生器就是产生这些笔划矢量的单元。矢量发生器根据笔划矢量指令,按一定的书写时钟连续输出一个笔划矢量的X、Y坐标数据及亮暗信息。矢量发生器由FPGA实现。
本文采用间接式的笔划矢量构成形式,即将字符矢量用长边位移量和tan α表示。基本笔划矢量的构成如图2所示。
图2 基本笔划矢量构成Fig.2 Constitution of basic stroke vector
如矢量AB,其矢量指令表示为长边位移量和tan α,其中,在X和Y两个方向上位移量较大者为长边,矢量与长边的夹角为α,α≤45°。
一笔矢量书写时,其长边按书写时钟每周期步进一,直到走完长边位移量。而短边位移量的步进时钟频率由12位的二进制比率乘法器计算,乘法器输入12位二进制比率系数 L、K、J、I、H、G、F、E、D、C、B、A,其输出频率为fout。
式中,M=L×211+K×210+J×29+I×28+H ×27+G×26+F×25+E×24+D×23+C×22+B×21+A×20。
12位二进制比率系数的计算方法为tan α×4095,fin为长边书写时钟频率。乘法器的输出脉冲fout即为短边的书写时钟频率。
矢量发生器由以下工作单元组成:指令管理单元,指令译码单元,延时单元,显示忙处理单元,时序控制单元,长边计数单元,二进制系数乘法器,X、Y坐标计数单元,X、Y坐标输出单元,辉亮控制单元,窗口控制单元,闭塞区控制单元。组成框图如图3所示。
图3 矢量发生器组成框图Fig.3 Block diagram of vector generator
矢量发生器输入信号为字符时钟,显示忙信号,笔划矢量指令;输出信号为DMA请求信号,X、Y坐标数据(各12位),辉亮信号。
由于矢量发生器由DSP的IO处理器管理,且矢量指令的获取是由矢量发生器主动申请,而非从处理器被动接收,因此,矢量发生器的工作相对独立。矢量发生器可自行调整笔划书写速度,也可利用DMA请求信号的快慢来随意调节笔划之间的停顿时间,而不受处理器工作速度及软件结构的影响。采用适当的书写点时钟频率和笔划间的等待时间,配合后级电路可达到最佳的显示效果。
D/A转换电路将笔划矢量的X、Y坐标数据进行D/A转换,产生X、Y模拟偏转电压,配合辉亮信息,驱动后级电路,在显示器上完成画面的显示。
核处理器周期性地处理显示文件,形成一幅完整显示画面的矢量指令组,放入DSP内部缓存,交由IO处理器管理,核处理器随即可处理下一周期的数据;IO处理器启动握手式DMA,等待DMA请求信号,并向矢量发生器发出书写启动标志SFLAG0(SFLAG0置“1”)。
矢量发生器中的矢量指令管理单元收到书写启动标志后,发出第一个指令接收请求信号(DMA请求),IO处理器随即将DSP内部缓存中的第一条矢量指令从数据总线发出;矢量指令管理单元将指令写入第一级缓存,延时后写入第二级缓存,矢量发生器中的笔划生成逻辑开始进行指令译码并执行,如图1所示。
笔划生成逻辑进行指令译码的同时,矢量指令管理单元发出下一个指令接收请求,并将新指令存入第一级缓存;当前矢量指令执行结束时,将第一级缓存中的指令写入第二级缓存,开始新的译码和执行,并再发出指令接收请求;矢量发生器周而复始地申请、接收、译码、执行,当执行画面结束指令时,不再发出指令接收请求信号,一幅完整的画面书写完成,等待下一周期的书写。
指令管理单元内含两级缓存,如图4所示。
图4 指令管理单元的两级缓存Fig.4 Two-level cache of instruct managemcnt unit
矢量发生器在DSP的SFLAG0置“1”后,开始一个显示周期的工作,直到一幅画面书写完毕。SFLAG0置“1”,矢量指令管理单元向DSP发出第一个DMA请求信号,DSP随即向矢量发生器输出矢量指令。图5是矢量指令管理单元的工作时序图。
图5 指令管理单元工作时序图Fig.5 Timing sequence of instruct management unit
SCLKOUT是DSP输出的40 MHz外部时钟,也是本单元的工作时钟,SRESETI是字符发生器的全局复位信号。dmaq1、dmaq2、dmar_1为定义的中间信号(signal)。SFLAG0置“1”后,dmaq1和 dmaq2分别由SFLAG0延时一个和三个时钟得到,dmar_1由dmaq1和dmaq2异或得到,作为第一个DMA请求信号。DMA请求信号 sdmar1由 dmar_1与译码脉冲 wrdecode(wrdecode由矢量发生器对矢量指令译码得到)合成得到,即sdmar1的第一个脉冲为 dmar_1,后续脉冲由wrdecode展宽得到,以便DSP能及时送出下一条指令。
DSP收到DMA请求信号后,向矢量发生器发出第一条指令。Wrvector是第一级缓存写入信号,由DSP写信号合成矢量发生器地址产生。Wrvector的上升沿将矢量指令写入第一级缓存,得到vectororder1。Beginflag是一个标志,低电平时,第二级缓存写入脉冲wrvector_2由wrvector延时两个时钟得到(即wrvector2);高电平时,wrvector_2在上一条指令执行结束时产生。即只有第一个wrvector_2由wrvector延时得到,后续的wrvector_2均在上一条指令执行结束时产生,wrvector_2的上升沿将vectororder1写入第二级缓存,得到vectororder2。这样在一条指令执行结束时,将第一级缓存中的指令写入第二级缓存,随即送笔划生成逻辑进行译码,并送出DMA请求信号。当执行画面结束指令0x0时,不再产生wrvector_2。
笔划生成逻辑对vectororder2进行指令译码并执行,直至碰上画面结束指令0x0,结束一个显示周期,等待下一周期的书写。
本文所述字符发生器基于DSP和FPGA设计,是高集成度、小型化设计。利用DSP强大的数据处理能力和其内部IO处理器的并行处理功能,加之矢量管理单元的协调设计,达到了提高字符发生器数据处理能力和笔划书写性能的目的。由于笔划间无停顿,在不改变书写时钟的前提下,每周期画面书写时间较之先前的字符发生器缩短约1/3;也正是由于笔划间可以连续无停顿,使字符书写流畅,亮度均匀,显示画面更加美观。
[1]RODGERS B,COVITT M.Stroke-to-raster video conversion method having error correction capabilities.United States Patent:US 2010/0271542 A1[P].2010-10-28.
[2]TANNER A H,SIMMONS C L.Stroke to raster converter system:United States Patent,US6496160B1[P].2002-12-17.
[3]BALRAM N,OLSON W P,WILSON M R.Stroke-to-stroke:United States Patent,US5969699[P].1999-10-19.
[4]MULLER H R.Digital symbol generator with symbol error checking:United States patent,US4413323[P].Nov.1,1983-11-01.
[5]DETTMER J R.Angle based stroke generator:United States Patent,US4553214[P].1985-11-12.
[6]GROTHE S P.Variable refresh rate for stroke CRT displays:United States Patent,US4511892[P].1985-04-16.
[7]BROWN R R.Digital stroke display with vector,circle and character generation capability:United StatesPatent,US4115863[P].1978-09-19.
[8]GROTHE S P,NARVESON P L.Dynamic stroke priority generator forhybrid display:United StatesPatent,US4635050[P].1987-06-06.
[9]STAUFFER F K,SMITH P R.Constant writing rate digital stroke character generator having minimal data storage requirements:United States Patent,US3952297[P].1976-04-20.
[10]BURNHAM G O,WEBER J W.Direction coded digital stroke generator previding a plurality of symbols:United States Patent,US3938130[P].1976-02-10.
[11]刘海见,杨健,张凯义,等.航空显示信号自动测试技术研究[J].测控技术,2005,24(9):76-78.
[12]彭克勤,蔡保胜.ALTERA EPLD在火控显示系统字符发生器中的应用[J].电光与控制,1995,2(2):16-22.
[13]刘翔,戎蒙恬,刘忠伟.基于DSP和FPGA的笔划字符发生器设计[J].航空电子技术,2008,39(3):50-54.
[14]GJB 189A-2003,飞机平视显示/武器瞄准系统通用规范[S].北京:中航一集团,2003.
[15]GJB 300-1987,飞机平视显示器字符[S].北京:空军和航空部,1987.