一种电台中FPGA的可靠初始化逻辑设计
2018-01-20兰天
兰天
摘 要: 在机载通信领域,由于飞机体积、重量及功耗等要求,往往需要在一个独立电台设备上实现多种通信模式,同时受限于电台的成本、功耗等因素,通常各种通信模式功能依靠FPGA的动态加载来实现。实际工程中发现,当FPGA动态加载时,由于各版本的加载时间、复位管理、时钟管理、接口时序等不一致,非常容易出现偶发的加载后功能异常,此类问题现象随机,极难定位,很容易耗费大量的人力、物力及时间。为解决上述矛盾,提出一种适合在电台中使用的FPGA初始化逻辑设计,保证不同版本的FPGA加载后能稳定工作,提升电台工作的可靠性与稳定性。实践表明,该方法简单、可靠,具有非常强的工程推广意义。
关键词: 机载电台; 成本; 功耗; FPGA; 动态加载; 初始化逻辑
中图分类号: TN914.3?34; V243.1 文献标识码: A 文章编号: 1004?373X(2018)01?0152?04
Abstract: In airborne communication field, it is necessary to realize the multiple communication modes in a single transceiver according to the demands of the airplane′s size, weight and power consumption. Normally the various communication mode functions are realized by FPGA dynamic loading because the factors of transceiver′s cost and power consumption. In practical engineering, it is found that the loading time, reset management, clock management and interface timing are inconsistent for FPGA dynamic loading of each version, the abiogenetic function anomaly after loading may occur easily. The above problem phenomenon is random and difficult to locate it, and consumes a large number of manpower, material resource and time. To solve this problem, a reliable FPGA initialization logic design for transceiver is proposed to guarantee the stable working of transceiver after different FPGA loadings, improve the reliability and stability of the transceiver. The practical results show this method is simple and reliable, and has strong engineering extended significance.
Keywords: airborne transceiver; cost; power consumption; FPGA; dynamic loading; initialization logic
0 引 言
在機载通信领域中,为了保证飞机与地面通信链路的稳定可靠,在电台体积、功耗、重量等受限的条件下,往往需要一部电台具备多频段、多模式的通信功能。从电台的体积、功耗、成本等因素考虑,一般选用的FPGA芯片都不支持所有功能同时在线运行,因此,不同的通信功能只能通过不同FPGA版本的动态加载来实现[1?9]。
在工程实际应用中,虽然从技术原理上讲,不同版本的FPGA版本动态加载不存在任何问题,但是对于不同的通信功能而言,由于信号带宽、操作时钟、处理算法的不同,使得各版本FPGA程序在动态加载时的加载时间、复位管理、时钟管理等皆不一致,这种不一致对于整个通信系统而言,很容易导致FPGA动态加载后出现偶发的FPGA功能异常,进而导致整个通信功能失效的情况发生,更进一步地,此类异常情况,问题现象奇怪,极难定位。这在实际工程设计中经常耗费大量的人力、物力。
为解决电台中的此类问题,提高机载通信的稳定性与可靠性,目前比较常见的容错设计是在使用动态加载功能时,系统会检测FPGA加载成功的DONE物理指示信号,当系统检测到DONE信号有效时再继续后续逻辑操作,但是从工程实践中来看,单独检测DONE信号并不可靠,各种动态加载过程中的偶发故障依然层出不穷。因此,本文基于FPGA+DSP的硬件架构,设计了一种针对机载电台FPGA上电初始化逻辑,该设计简单、可靠,能显著减低甚至消除功能切换FPGA动态加载时的错误概率。
1 电台架构简介
现有电台终端基于软件无线电思想,采用模块化实现,在组成上主要包括:电源模块、功放模块、信道模块、信号处理模块和接口与控制模块等,各模块通过背板实现信号互连,架构形态如图1所示[10]。
电源模块:主要实现对外部输入电源的滤波、整形和变换,为设备内其他各模块提供工作电源,是整个电台的电源管理单元。
功放模块:主要实现对射频发射信号的功率放大、滤波,接收信号的限幅、滤波和低噪放等处理。
信道模块:主要实现收发信号的混频、滤波等。endprint
通用信号处理模块:主要实现基带信号处理的调制、解调处理,基于软件无线电的思想,不同通信功能主要靠在该模块上运行不同的程序来实现。
接口与控制模块:主要实现帧协议处理,及与上位机之间的交互和电台参数控制管理等功能。
本文后续所述内容皆是基于通用信号处理模块。一种常用的基于DSP+FPGA架构的通用信号处理模块结构如图2所示。
从图2可以看出,通用信号处理模块主要由DSP、FPGA、时钟管理单元、电源管理单元、基带数据收发串行器/解串器等主要器件及其外围电路构成。
需要指出的是,目前设计的通用信号处理模块是为了做到对多频段、多模式通信算法的支持,将ADC及DAC放置到信道模块内。通用信号处理模块使用串化器和解串器只发送或者接收基带数字信号。
2 FPGA动态加载的风险分析
实际工程中发现不同版本间的FPGA程序在动态加载时存在以下几种风险:
1) 加载时间不一致
由于不同功能的软件工程大小不一致,所以最后生成的配置码流文件大小也不一样,因此,不同版本的功能软件配置码流从存储器加载到FPGA所需要的时间是不一样的,事实上,工程中发现即使同一版本的配置文件,每次动态加载的加载时间也不是固定的。
2) 系统参数下发失败
一般的功能初始化时,系统参数的下发时机是相对固定的,因此动态加载后,如果FPGA还没有加载完成时,参数就已经下发,那么就会出现功能软件收不到系统下发的参数的情况,这将影响该功能的正常通信。因此,必须保证参数下发一定是在FPGA完全加载成功之后。
3) 程序加载失败
FPGA加载的机理是将存储器里面的配置码流读出来,再按照特定的时序与接口关系写入FPGA,用以配置FPGA内部的交叉互联线。在机载复杂的电磁环境下,可能会出现加载异常,如配置过程中某些bit反转等,这将导致程序加载后通信功能异常的情况。
4) 初始复位失败
FPGA加载后,一般的做法是在时钟锁定后依靠FPGA本身内部产生一个复位信号,但是实际工程应用中发现,这种初始复位方法可能会出现复位失败的情况,一旦初始复位失效,将导致FPGA内部许多寄存器变量处于不定状态,状态机很容易处于非法状态,因此将导致通信功能异常。
5) 时钟锁定时间过长
FPGA加载后,每个版本都需要利用数字时钟管理器对输入时钟重新进行锁定,但是每次锁定所需要的锁定时间是不固定的。
在时钟锁定过程中FPGA不能正常工作。因此,如果某个功能版本的FPGA时钟锁定时间较长,系统下发参数时FPGA的时钟还未锁定,那么FPGA将收不到系统下发参数,这也会导致通信功能异常。
6) 收发串行器/解串器失锁
位于通用信号处理模块和信道模块上的收发串化器及解串器组依靠同步字的通信来保证收发两端同步。一般的做法是系统周期监视通用信号处理模块和信道模块上的解串器同步指示信号,同步指示信号经FPGA上报系统,一旦系统发现收发两端失步,将通过FPGA向串化器发送同步建立请求,串化器将重启同步字发送流程。此种方法虽然可以保证收发两端失步后再恢复,但是这种周期监测需要抢占系统底层的资源,对于某些实时性要求很高的通信模式而言,这将引發通信的异常中断,因此,此种情况下,不会允许采用周期监测的方式来监视串化器及解串器两端的同步状态。
依靠收发两端的初始同步非常关键,但是另一方面如果某些FPGA版本加载时间过长,在FPGA还未加载成功之前,系统就下发了初始化同步建立请求,此时该建立请求将被丢失,由于没有周期性的同步监测,串化器与解串器两端将一直处于失步状态,这将导致该功能一直异常。
以上六种情况都将给通信功能带来极高的故障风险,但是对于机载通信的高可靠性要求而言,此类风险是不能接受的。因此,实际工程设计中需要针对FPGA动态加载后的故障风险采取一些容错及纠正措施,以降低此类故障的发生概率。
3 一般的容错设计方法
目前主流的FPGA芯片都提供了FPGA加载完成的指示信号。以XILINX的FPGA为例,当FPGA完成加载后有专用的FPGA加载完成标识,DONE信号输出。因此,一般针对动态加载过程中出现的异常问题,最常见的做法是利用DONE信号来检测FPGA是否完成加载。
最常用的设计是由DSP检测FPGA加载成功的DONE信号来完成,如图3所示,具体流程如下:
1) 从收到系统下发的版本切换指令开始,DSP启动计时器,同时周期检测DONE信号;
2) 如果DSP检测到DONE信号有效,则上报系统FPGA加载完成,可以启动参数下发流程;
3) 当计时达到最大时间时,如果DONE信号无效,则回到1),DSP将重新启动FPGA加载过程,同时加载次数计数器加1;
4) 如果连续[N]次加载失败后,由DSP上报系统,加载失败。
这种处理方式完全依靠FPGA加载后自身的DONE信号,从机理上讲该信号反应了配置码流是否完全送入FPGA,并且成功配置了交叉互联线,但是该信号并不能反映第2节所述的诸如初始复位失效,时钟锁定时间过长等问题。从实际工程应用情况来看,采用该设计后,动态加载中的异常情况有所缓解,但依然非常明显,对于机载航空通信而言,依然不可接受。
因此为提升机载环境下FPGA程序加载的可靠性,有必要设计一种更加可靠的检测逻辑。
4 一种新的动态加载初始化逻辑设计
为解决上述问题,本文设计了一种更加可靠的FPGA加载逻辑,该设计从容错机制上更加严格,且不仅提升了动态加载过程的功能可靠性,还兼顾了功能运行过程中的可靠性。该逻辑设计的流程如图4所示。endprint
1) 从收到系统下发的版本切换指令开始,DSP启动计时器,同时周期检测DONE信号,转至2);
2) DSP周期检测到DONE信号,有效转至3),否则转至4);
3) DSP周期检测FPGA版本标识号,版本号有效则转至5),否则转至9),同时加载次数计数器加1;
4) 当计时达到最大时间时,如果DONE信号无效,则回到9),同时加载次数计数器加1;
5) DSP回读FPGA时钟锁定标识,锁定标识有效则转至6),否则转至9),同时加载次数计数器加1;
6) DSP向FPGA发送复位指示转至7);
7) DSP上报系统FPGA动态加载完成,可以启动参数下发流程,转至8);
8) FPGA正常运行过程中,一旦检测到串化器及解串器处于闲状态,则通知DSP启动同步字发送流程,一旦串化器有数要发送,则立刻停止同步字发送。同时,DSP检测FPGA的时钟锁定指示,一旦发现失锁,则转至6);
9) 如果加载次数计数器小于[N,]则转至1),重启加载过程,否则由DSP上报系统,加载失败。
从上述流程可以看出,该设计相对传统的容错做法主要有以下改进:
在使用DONE信号作为加载完成指示的基础上,增加了DSP,对FPGA进行版本回读及时钟锁定检测。确保动态加载后,FPGA已经开始正常工作。
为保证动态加载后FPGA内部存储器的初始状态固定,增加了DSP对FPGA的初始化复位操作;为了保证FPGA的可靠运行,针对FPGA的时钟锁定信号进行了实时检测;为防止串行器/解串器失步,采用空闲时钟及同步的方法,能有效提高串化器与解串器的稳定性。
5 验证情况
在某通信系统中,使用某型机载航空电台,针对两种初始化设计方法进行了对比测试。
当采用一般的只用DONE信号的初始化逻辑设计时,在不同功能切换,FPGA动态加载时,很容易出现各种偶发且故障现象随机的功能异常情况,针对此类功能异常现象,经过大量的测试及分析后,均定位为与FPGA动态加载密切相关的初始化异常。
在同样的系统中,测试环境不变,对电台中的初始化逻辑进行设计,按照本文提出的方法修改后,重新测试。大量测试下未出现各类通信功能的异常情况,与此同时,一旦将电台中的初始化设计退回原有设计,各种异常情況很容易再次复现,这表明本文提出的方法确实可靠有效。
目前,此方法已在多个平台上推广应用,大量的实际应用表明,该设计能够有效降低FPGA在加载时的功能故障,提升机载电台的稳定性,进而保证各种模式下机载通信的可靠性。因此,本文提出的初始化设计方法在实际工程应用中有非常强的应用前景。
6 结 语
基于实际工程研制中所遇到的FPGA动态加载异常问题,本文设计了一种全新的FPGA初始化逻辑。工程实践验证表明,该方法简单可靠,且非常有效,能有效提升FPGA动态加载的可靠性,能克服电台中在功能切换过程中经常出现的偶发异常情况。因此该方法对于提升电台通信功能的稳定性及机载通信的稳定性有很强的现实意义。同时,该设计是基于DSP+FPGA开发硬件架构的一种通用设计,能非常方便地推广移植到采用类似硬件架构的平台上。
参考文献
[1] 邱永红,刘衫坚,计淑浪.软件无线通信系统模块化体系结构的研究[J].计算机工程与应用,2004(15):171?174.
QIU Yonghong, LIU Shanjian, JI Shulang. Research on modular architecture for software wireless communication systems [J]. Computer engineering and applications, 2004(15): 171?174.
[2] 闫复利.全双工无线数传电台[J].兵工自动化,2009,28(12): 29?31.
YAN Fuli. Full duplex wireless data radio station [J]. Ordnance industry automation, 2009, 28(12): 29?31.
[3] 赵秋明,沈博,胡晓鹏.基于SCA软件无线电硬件平台的设计[J].器件与应用,2011,35(19):48?50.
ZHAO Qiuming, SHEN Bo, HU Xiaopeng. Design of hardware platform based on SCA software radio [J]. Parts & applications, 2011, 35(19): 48?50.
[4] 张振.FPGA内数字时钟管理模块的研究与设计[D].西安:西安电子科技大学,2014.
ZHANG Zhen. Research and design of digital clock manager integrated in FPGA [D]. Xian: Xidian University, 2014.
[5] 王烁,周家喜,王庆华.SCA架构软件无线电台设计与实现[J].通信技术,2011(6):40?42.
WANG Shuo, ZHOU Jiaxi, WANG Qinghua. Design and implementation of a software?defined radio based on SCA [J]. Communications technology, 2011(6): 40?42.
[6] 何春虎,郭强,孟宓.基于认知无线电的军用抗干扰电台的设计[J].科技视界,2013(20):13?14.endprint
HE Chunhu, GUO Qiang, MENG Mi. The design of military and interference radio based on cognitive radio [J]. Science & technology vision, 2013(20): 13?14.
[7] 张剑锋.基于认知无线电的电台架构研究[J].软件,2011(5):56?58.
ZHANG Jianfeng. Research of cognitive radio architecture [J]. Software, 2011(5): 56?58.
[8] 丛键,苏旸,张海燕.一种新型战术电台的关键技术分析与设计[J].通信技术,2012(9):36?38.
CONG Jian, SU Yang, ZHANG Haiyan. Architecture design and analysis of a novel multi?channel multi?mode tactical radio [J]. Communication technology, 2012(9): 36?38.
[9] 吴非,廖文瑜,牛吉发.基于SCA的软件无线电台配置管理设计[J].通信技术,2016(6):794?798.
WU Fei, LIAO Wenyu, NIU Jifa. Design of configure manage framework based on SCA SDR radio [J]. Communications technology, 2016(6): 794?798.
[10] 王战江.基于数字中频交换的多通道通信终端架构设计[J].现代电子技术,2016,39(11):5?8.
WANG Zhanjiang. Design of multichannel communication terminal architecture based on digital intermediate frequency exchange [J]. Modern electronics technique, 2016, 39(11): 5?8.endprint