计算机测量与控制.2020.28(12) 
犆狅犿狆狌狋犲狉犕犲犪狊狌狉犲犿犲狀狋牔犆狅狀狋狉狅犾 
·213
 ·
收稿日期:20200515; 修回日期:20200603。
作者简介:王伟伟(1986),男,北京市人,硕士,工程师,主要从
事FPGA嵌入式设计方向的研究。
文章编号:16714598(2020)12021304  DOI:10.16526/j.cnki.11-4762/tp.2020.12.044  中图分类号:V475.5文献标识码:A
基于犉犘犌犃的在线重构设计方法
王伟伟,闫新峰,修 展,徐 进,张 甜
(北京航天长征飞行器研究所,北京 100076)
摘要:为了解决SRAM型FPGA和配置存储器中存在的单粒子反转现象导致的FPGA工作异常和配置失败问题,同时满足FP GA类产品在总装后可以通过和地面通信接口实现远程更新的需求,提出了3种基于XilinxFPGA的软件重构方法;对于7系列以下FPGA,采用ASIC在线重构技术,通过JTAG和SPI接口控制配置存储器读写实现在线重构,该方法简单,适用于多板卡应用场景;对于7系列FPGA,采用MultiBoot多镜像技术实现多镜像启动,通过直接更新M镜像的方式实现在线重构功能,该方法不需要外部控制芯片,电路简单,设计方便,适用于单芯片控制场合;针对ZYNQ类芯片,利用其内部的BootROM和FSBL功能,在配置存储器中通过多镜像方式实现在线重构设计,适用于高性能应用场景;3种方法保证了FPGA可靠启动,同时具备在线更新功能,可以保证在更新失败的情况下,依然可以运行旧版本或可以重新对其进行配置,增强了系统的安全性和可靠性。
关键词:FPGA配置存储器;ASIC;MultiBoot;ZYNQ
犇犲狊犻犵狀犕犲狋犺狅犱狅犳犗狀犾犻狀犲犚犲犮狅狀狊狋狉狌犮狋犻狅狀犅犪狊犲犱狅狀犉犘犌犃
WangWeiwei,YanXinfeng,XiuZhan,XuJin,ZhangTia
(BeijingInstituteofSpaceLongMarchVehicle,Beijing 100076,China)
犃犫狊狋狉犪犮狋:InordertosolvetheproblemofFPGAabnormalworkandconfigurationfailurecausedbysingleparticleinversioninSRAMFPGAandconfigurationmemory,andtomeettherequirementthatFPGAproductscanbeupdatedremotelythroughthecom municationinterfacewiththegroundafterassembly,threesoftwarereconstructionmethodsbasedonXilinxFPGAwereproposed.ForFPGAbelow7series,ASIConlinereconstructiontechnologyisadopted,andJTAGandSPIinterfacecontrolconfigurationmem oryreadandwritetoachieveonlinereconstruction.Thismethodissimpleandsuitableformulti-boardcardsapplicationscenarios.For7seriesFPGA,MultiBootmulti
-imagetechnologyisadoptedtorealizemulti-imagestartup,andtheonlinereconstructionfunctionisrealizedbydirectlyupdatingMimage.Thismethoddoesnotneedexternalcontrolchip,andthecircuitissimpleandthedesignisconvenient,whichissuitableforsingle-chipcontrolsituations.UsingtheBootROMandFSBLfunctions,ZYNQchipisdesignedforonlinereconfigurationwithmultipleimagesintheconfiguredmemory,suitableforhighperformanceapplications.ThethreemethodsguaranteethereliablestartupofFPGAandtheonlineupdatefunction,whichcanensurethattheoldversioncanstillrunorbereconfiguredincaseofupdatefailure,thusenhancingthesecurityandreliabilityofthesystem.
犓犲狔狑狅狉犱狊:FPGAconfigurationmemory;ASIC;MultiBoot;ZYNQ
0 引言
随着航天技术的发展,FPGA凭借其丰富的接口和逻辑
资源,逐渐取代单片机和DSP,越来越多地应用到产品设计
中。它可以大大减小设计规模,提高设计效率。根据可编程
技术不同,FPGA分为SRAM(staticrandomaccessmemory)
型、反熔丝型和Flash型[12]。由于SRAM型FPGA采用
CMOS工艺,集成度高、性能优越、资源丰富、成本低廉,
其可重复编程的特性使它拥有广阔的应用,尤其是在航天器
的在轨更新和维护方面,优势明显。但航天系统是一个可靠
性要求的系统,空间辐射对于SRAM型FPGA影响巨大,会
引起单粒子反转,如果导致关键性能失效,很有可能导致任
务失败,带来巨大的损失。同时航天工程是一个复杂的工
程,需要各系统协同合作才能完成。通常在研制初期,由于
进度原因,细节考虑不全或因为用户需求变化,在总装后需
要对产品中FPGA软件进行升级才能正常工作,这时如果产
品不具备在线重构功能,则必须进行拆卸操作,由此造成了
巨大的时间和成本损失,因此FPGA具备在线重构功能成为
系统越来越迫切的需求[34]。
针对Xilinx7系列以下FPGA、7系列FPGA和ZYNQ提
出了三种提高在线重构可靠性的设计方法,分别为基于ASIC
在线重构设计方法、基于MultiBoot多镜像的设计方法和基于
ZYNQ的在线重构技术[57]。这三种方法几乎涵盖了Xilinx所
有FPGA,实现了在线重构技术,提高了系统可靠性。
1 犉犘犌犃配置方法
在嵌入式领域,FPGA凭借丰富的接口和逻辑资源,
越来越受到工程师的欢迎,尤其是配置方式的多样性和在
线重构技术,给工程师提供了丰富的设计方法和设计空间,
根据实际需求随时改变设计来实现改变或增加新的功能,
提高系统的安全性和可靠性。不同厂家的FPGA配置方式
有所不同但大同小异,本文主要针对Xilinx的FPGA进行
研究,提出设计方法。
XilinxFPGA支持多种配置方式,从配置时钟的来源可
  计算机测量与控制 第28
·214 ·以分为:主模式(MasterModes)和从模式(Slave
Modes);从数据读取方式可分为:并行模式(MasterModes)和串行模式(SerialModes
)。根据这两种不同进行组合,可以得到5种FPGA常用的配置方式:主串、从串、主并、从并和JATG模式。工程上最常使用的是Select MAP(主并)和SPI模式(主从),分开使用Xilinx的配置芯片PROM和FPGA支持的SPIFlash芯片。SelectMAP和SPI模式采用主模式,FPGA在上电后加载片外Flash芯片中的配置比特流,配置所需的时钟信号(CCLK)由FP GA内部产生,且FPGA控制整个配置过程。自动将配置数据从相应的Flash芯片读入到SRAM中。以7系列FPGA为例,其配置流程大致分为8个步骤,如图1所示
图1 FPGA配置流程
上电后,FPGA的PROGRAM_B引脚变低开始整个
配置过程,可以通过控制FPGA硬件硬件PROGRAM_B引脚的变化来重新配置FPGA。上电后,使用JTAGJPRO GRAM指令或IPROG命令,配置存储器将并清空。在此期间,通过使用全局三态将I/O置于高阻态,如果硬件引脚PUDC_B为低电平,则内部上拉。硬件引脚INIT_B在初始化期间内部驱动为低电平,完成后变为高电平。接着设备对外部模式配置硬件M[2:0]进行采样,开始驱动时钟CCLK,将一组32bit特殊的同步字(0xAA995566)发送到配置逻辑。同步字用来将配置数据与内部配置逻辑对齐。设备同步后,先通过设备ID检查才能加载配置数据。如果在配置期间发生ID错误,则设备会尝试重新配置,设备ID检查内置于比特流中。之后FPGA开始加载配置帧,加载配置数据时会根据数据包计算循环冗余校验(CRC),然后和比特流中存储好的CRC值进行比较,匹配通过后FPGA开始进行启动序列,启动完成后,FPGA配置完成,开始正常工作。
根据上述FPGA的配置过程,可以通过软硬件设计保证FPGA能够将配置存储器存储的配置比特流可靠地加载到FPGA中。随着FPGA技术的不断发展,不同代的FP GA产品在重构方便拥有不同的特性。XilinxFPGA7系列具备MultiBoot多镜像启动功能,支持在线更新系统,配置文件可以现场动态升级。7系列以前的FPGA则不具备该功能,需要外置芯片来进行重构设计。而对于ZYNQ系列,由于内置有ARM处理器,因此其配置方式更加灵活多样,
方便实现在线重构设计[810]。
2 基于犉犘犌犃的在线重构设计
FPGA软件的一个重要特性是它具有重构性,可以远程实现配置数据的更新,更改软件,实现新的功能。该功能解决了产品在总装后无法在不拆卸的情况下更新FPGA
软件的难题,缩短了时间,大大节省了人力财力,提高了效率。针对遥测系统不断变化的需求,软件更新频率很高,因此该功能逐渐变为软件设计的基本要求,增强了产品的安全性和可靠性,大大提高了设计效率。典型的在线升级系统如图2所示
图2 典型的在线升级系统设计框图
如图2所示,一般地,目标系统和地面系统进行通信
采用UART、1553B、Ethernet等接口形式中的一种或多
种,实现弹地数据之间的传输。这样就可以将地面系统中更改后的新的FPGA配置文件通过上述接口传输到目标系统上的FPGA控制器,接着FPGA控制flash读写将配置文件正确写入到Flash固定位置,从而实现数据流的更新。FPGA的在线重构技术,关键是要保证在更新失败的
情况下,任然可以运行旧版本或可以重新对其进行配置,否则就失去了在线重构的意义。下面针对上文提到的3种设计方法分别进行描述。
2 1 基于犃
犛犐犆的犉犘犌犃在线重构技术对于Xilinx7系列以下的FPGA芯片,本身不具备在线重构能力,需要外置配置管理芯片进行配置,从而实现在线重构,提高可靠性和安全性。一般地,对于只存在一个FP GA芯片的设备,可以外加一个M
CU或CPLD来实现对FP GA的在线重构设计。X
ilinx的应用笔记中给出了基于Mi croBlaze软核和CPLD的在线重构技术来实现系统的在线更
新。若一个设备中有多个FPGA芯片,且配置芯片也不同,有采用SelectMAP模式的PROM芯片,也有基于SPI模式的Flash存储芯片,各个模块之间通过背板连接。为了减少成本,提高设计效率,可以使用专用ASIC芯片来统一管理各FPGA芯片,实现在线重构,实现框图如图3所示。
该设计可以分别通过JTAG和SPI接口实现对PROM和SPIFlash的读写操作,最大支
持8路JATG和8路SPI接口,同时支持JTAG协议的菊花链设计,可以对一个板卡上的多个FPGA进行配置。上位机可以通过UART接口选择对哪个板卡上的某个FPGA进行操作,实现在线升级。同时也可以直接在设备附近使用JATG下载器对FPGA进行在线调试和升级,这样完全保证了在总装完成后也可以对产品进行调试和升级的需求,解决了软件升级需要重新拆装的难题,大大节约了成本,提高了效率。
2 2 基于犕狌犾狋犻犅狅狅狋多镜像的在线重构设计针对Xilinx7系列FPGA可以使用推荐的MultiBoot方案来实现FPGA的在线重构。MultiBoot直接操作的是两个
第12期王伟伟,等:基于FPGA
的在线重构设计方法·215 
·
图3 在线升级ASIC设计原理框图
镜像,也可以是多个镜像。其中一个镜像永远不会改变,用于令一个镜像在加载失败时可以返回到该镜像上重新加载,称之为G镜像(GoldenImag
e),后面的镜像称之为M镜像(MuliBootImage)。当需要进行远程更新实现重构时,FPGA可以直接对Flash芯片中M镜像存放的位置进行读写操作,G镜像的存储位置和数据永远不变。这样在M镜像出现错误时,可以退回到G镜像,保证FPGA能够正常运行,然后再对M镜像进行更新。MultiBoot实现框图如图4所示
图4 MultiBoot实现流程图
一般的FPGA从Flash的基地址开始存放G镜像,后面存放M镜像。根据前面介绍的FPGA配置方法中,上电后,
FPGA从地址为0的地方开始加载,也就是先加载G镜像,但是在G镜像的开始位置添加了IPROG(内部编程)命令和M镜像的地址,当FPGA运行到这个位置时会直接跳到M镜像位置开始加载,IPROG是一条命令可以在G镜像中生效,也可以在设计中使用,将IPROG通过内部配置访问接口ICAP(internalconfig
urationaccesaport)接口发送,从而实现任意时刻触发重新重构。当加载M镜像过程中遇到ID Code错误、CRC错误、WatchDog超时和B
PI地址越界错误时,FPAG会触发退回(FallBack)操作,同时FPGA内部寄存器会记录,发生退回操作后,会忽略IPROG指令,直接加载G镜像后面的配置文件,运行G镜像。
Xilinx7系列FPGA通过将IRPOG指令潜入到比特流
中的方式,实现了FPGA的多镜像启动,确保了FPGA配置的可靠性。IPROG指令内容如表1所示,其中WBSTAR为WarmBootStartAddressReg
ister的缩写,即热启动地址寄存器。
表1 IPROG指令描述
序号配置数据描述10xFFFFFFFF伪数据20xAA995566同步字30x200000000等待
40x30020001往WBSTAR中写1
50x00200000热启动地址:加载设计的地址
60x30008001往CMD寄存中写170x0000000FIPROG指令
0x30008001
等待
在G镜像中通过加入IPROG指令实现了地址的跳转,当M镜像发生错误后,会触发FallBack操作,退回到基地址位
置,FPGA将忽略该部分指令,继续执行G镜像的后面其他部分内容,实现G镜像的加载,正常运行。G镜像中设计有远程更新程序,可以操作Flash芯片,更新M镜像数据,从而实现对M镜像的在线更新,实现FPGA的远程更新和重构。
2 3 基于犣犢犖犙的在线重构技术
XilinxZYNQ与传统FPGA有着巨大的差异,是一款SoC(可编程片上系统),拥有双核ARMA9处理器和7系列FP GA逻辑资源。启动过程体现了以处理器为核心这一特点,先
启动处理器(PS)再启动逻辑部分(PL),也就是PL的配置是通过ARM核来配置的,不支持从PL端直接启动配置。ZYNQ7000的配置按先后顺序分为3个阶段:stag
e0、stage1、stage2,其中stage2可选。每个阶段的功能及处理过程如表2所示。
表2 ZYNQ配置过程
阶段
处理过程
stag
e0运行BootROM中的代码(
不可修改):1)读取硬件启动配置引脚MIO使能外部对应的非易失存储设备驱动,包括SD卡、NORFlash、NANDFlash以及Quad-SPI等设备,
并开始搜索启动镜像头文件。根据启动方式不同,搜索的范围不同:QSPIFlash:16M空
间;NANDFLash:128M空间;NorFlash:32M空间。
SD卡只加载一次,
不会搜索。2
)读取启动镜像头文件后,确定启动设备位宽、采用安全配置模式及密钥存储位置等;3
)根读取信息确定是否采用安全配置模式,安全配置模式下则启动PL侧的安全组件;4)读取信息确定代码做RSA用户认证;5)继续读入存储设备中的数据FSBL;6
)对读入数据做相关安全校验,通过后存入片上存储器OCM(On-Chip-Memory
),非安全模式下直接导入OCM;7)CPU执行导入OCM内的FSBL,转入下一阶段stage1。stag
e11)初始化MIO、PLL(锁相环)、时钟CLK等,在ps7_init函数中实现,完成PS端初始化;2)判断启动设备,扫描加载FPGA配置文件;
3)配置PL部分,FSBL通过PCAP(processorconfig
ura tionaccessport)接口配置FPGA。
4)移交给下一阶段,执行DDR中的命令。stag
e2导入操作系统(可选)。
  计算机测量与控制 第28
·216 ·根据表2中的内容可知,ZYNQ上电后先运行BootROM,初始化外部存储设备驱动程序,然后从存储设备的0地址开始,搜索第一阶段启动程序FSBL(FirstStageBo
otLoader),然后根据FSBL加载PL镜像和后续的PS镜像。基于Qaud-SPI(QSPI)Flash启动方式的ZYNQ启动流程如图5所示
图5 基于QSPIFlash的ZYNQ启动流程
如图5所示,上电后,ZYNQ运行BootROM,初始化QSPI接口,开始读取Flash中数据,由于BootROM能够
在线代码运行器访问QSPIFlash的最大地址为16M,因此在此地址区间内必须存在完整的FSBL。到FSBL后,根据FSBL开始加载PL和PS镜像。由此可知,如果QSPIFlash中存在多个镜像文件时,ZYNQ只执行第一个镜像,第一个镜像加载不成功才会加载后面的镜像。根据此特性,可设计在线升级方案,如图6所示
图6 ZYNQ多镜像在QSPIFlash中的存储位置
如图6所示,在拿到一个全新的ZYNQ硬件设计后,QSPIFlash为空,不存在任何可执行的镜像文件。这时需要用JTAG模式,将Golden镜像下载到QSPIFLash的高地址位置,该地址要大于一个ZYNQ可执行镜像的大小,保证更新时不会破坏到G镜像。在生成镜像文件时,PPGA和ARM执行文件要选择md5校验,这样可以确保镜像的正确性和唯一性。在Golden镜像中有在线升级程序,可以根据地面指令,更新MultiBoot镜像,即从0地址开始更新最新的镜像,由于G镜像和M镜像中的软件版本有区别,这样可
以在线验证更新是否成功。如果为成功,版本信息显示G镜像版本;如果成功则显示M镜像版本。通过这种方式可以实
现ZYNQ类器件的在线重构,简单方便,稳定可靠。
3 实验结果和分析
针对3种不同的设计方法,通过设计地面软件来实现对FPGA的在线重构。首先打开地面软件,选择待升级的二进制配置bin文件,并计算总CRC。然后再给PFGA上电,FPGA在上电后会发送准备好信号给地面软件,地面收到该信号后会发送在线升级指令给FPGA,如果一分钟内未收
到在线升级指令,则FPGA退出在线升级状态,进入正常工作状态。收到在线升级指令后,FPGA开始对配置寄存器进行擦除操作,擦除完成后给地面反馈擦除结果。地面收到擦除完成指令后,开始以每64字节为一包发送有效配置数据,直到所有都完成后,再发送总CRC。FPGA对每包数据进行校验并计算CRC,所有包完成后计算得到CRC,并和地面传送来的CRC进行对比,正确则烧写成功,否则烧写失败。烧写成功后,对FPGA重新加电,通过版本号判断是否更新成功。通过多次测试,3种方式均100%烧写成功,可靠实现了在线升级功能。
4 结束语
针对FPGA类软件可以在线重构的特性,根据Xilinx三种不同类型的FPGA的不同特性,分别提出基于ASIC的FPGA在线重构技术、基于MultiBoot多镜像的在线重构设计以及基于ZYNQ的在线重构技术设计方法。Xilinx所有的FPGA,均可通过这三种技术中的一种或某种组合实现在线重构,解决了总装后无法进行软件更新的难题,同时保证了在线重构的安全性和可靠性,提高了设计效率。
参考文献:
[1]刘光文,李縮阳,成 亮.CPLD和Flash在线升级及配置FP
GA[J].微处理机,2016(2
):13.[2]汪 灏,张学森.一种基于串行方式的FPGA远程加载电路
[J].电子科学技术,2016,3(2):171173.
[3]张永乐,王永勇,郑 炜.一种基于FPGA的在线程序升级方
案[J].嵌入式技术,2017,43(3):4854.
[4]彭 冰,刘 舒,黄 振.基于共用总线的多片FPGA配置电
路的设计与实现[J].中国新通信,2009(5):7175.[5]吴冬冬,杨晓君,张佩珩.一种FPGA的远程系统设计方法
[J].计算机工程与应用,2006,18:8669.
[6]何 宾.XilinxAllProgrammableZynq-7
000Soc设计指南[M].北京:清华大学出版社,2013.
[7]何 宾,张艳辉.XilinxZynq-7
000嵌入式系统设计与实现[M].北京:电子工业出版社,2016.
[8]谷 銮,徐贵力,王友仁,等.FPGA动态可重构理论及其研
究进展[J].计算机测量与控制,2007,15(11):14151418.[9]尚丽娜,徐新民.FPGA动态重构技术在算术逻辑单元中的应
用[J].电子器件,2007,30(3):365368.
[10]覃祥菊,朱明程,张太镒,等.FPGA动态可重构技术原理
及实现方法分析[J].电子器件,2004,21(2):277282.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。