远程在线更新FPGA多版本程序的方法技术

技术编号:30147704 阅读:13 留言:0更新日期:2021-09-25 14:53
本发明专利技术公开的一种远程在线更新FPGA多版本程序的方法,硬件简单,实时性处理效率高,容错能力强。发明专利技术通过下述技术方案予以实现:PPC处理器接收FPGA程序远程更新指令,向CPLD发送更新指令,CPLD校验更新指令正确后,将FPGA基础版本程序从Flash加载到FPGA内部运行,然后切换Flash高位地址指向待更新功能程序版本对应的Flash区块空间,FPGA接收来自PPC待更新程序文件,采用接收数据帧CRC校验,以及全部待更新程序文件写入后,读取Flash本次更新写入的全部数据,将数据写入到对应的Flash地址空间中,从Flash中读出之前写入的数据,进行二次CRC校验的方式,把校验的结果上报PPC。把校验的结果上报PPC。把校验的结果上报PPC。

【技术实现步骤摘要】
远程在线更新FPGA多版本程序的方法


[0001]本专利技术涉及一种航空综合化系统领域,通过FPGA+PPC+CPLD控制实现FPGA多版本程序远程更新的方法。

技术介绍

[0002]随着航空综合化技术发展,实现的功能日益复杂,需要处理的业务也越来越多。现场可编程门阵列FPGA器件具有高密度、低功耗、高速、高可靠性等优点,在航空航天、通信、工业控制等方面得到了大量应用。通过加载不同版本的FPGA功能程序,实现不同的业务功能。由于FPGA器件采用的是SRAM工艺,在断电的情况下FPGA内的配置数据将丢失,所以需要非易失的存储器来结合FPGA完成嵌入式系统的设计。BPI(Byte

wide Peripheral Interface)Flash,具有接口简单、配置方便的特点,通常用来存储FPGA配置文件。在经过合理的配置后,系统在上电后就可以从Flash中读取配置文件来启动整个系统运行。为了能使系统得到更灵活的应用,充分发挥FPGA的灵活性、高效性,FPGA的软硬件程序都需要方便的更新和升级功能;而当形成产品后,通过JTAG工具来实现Flash更新烧写很不方便。
[0003]结合嵌入式系统应用,典型的信号处理模块,通常采用FPGA+CPLD硬件架构。利用现场可编程门阵列FPGA芯片,具有可编程灵活性高、开发周期短、并行处理能力强大的特点,把外围多个设备集成起来,采集外围设备的数据,处理实现多种通信协议。复杂可编程逻辑器件CPLD一般用做硬件加电控制、健康维护、软件程序更新加载功能。数据处理模块,通常采用PPC处理器作为主要配置芯片,负责系统的管理调度以及与上位机之间的通信。由于FPGA器件所采用SRAM工艺具有挥发性的特点,掉电后数据会丢失,因此它的配置数据需要存储在外置的非易失性存储器中,每次上电后需重新配置SRAM器件。在系统上电后,将FPGA配置程序从外部存储器载入到FPGA内部运行。在调试阶段,FPGA设计师可通过PC机连接FPGA下载电缆,采用JTAG工具调用FPGA可执行程序bit文件把程序加载到FPGA内部运行,实现功能调试。但是在系统联试后期、特别是产品交付用户之后,机箱都是封闭的,除了必要的网口接出来以外,其它的硬件调试接口就会变得不可见。此时,若要采用连接JTAG工具对FPGA程序进行升级维护,就需要打开机箱,取下信号处理模块,再挂接JTAG接口小板,连接FPGA下载电缆。采用上述升级更新FPGA程序的方式,需要相关人员携带安装专业FPGA开发环境的PC机、FPGA下载电缆及JTAG接口小板前往产品安装所在地。这样做,一方面会导致人力成本上升、用户体验性下降;另一方面,若是经常修改程序,频繁取出硬件模块,挂接FPGA下载电缆,也势必对硬件模块产生不利影响。
[0004]基于FPGA器件设计的产品最大的问题是系统维护和升级,在FPGA程序升级时,需连接下载电缆,灵活性较差,这些硬件上的操作,不方便软件人员及用户使用。鉴于上述情况,FPGA外部存储器具备远程更新能力变得尤为重要。FPGA远程系统升级是指从开发地点通过网络或其它数据通路将升级数据发送给系统,系统存储这些数据,然后用这些数据重新配置FPGA器件完成系统升级。如今,大多数通讯系统均将FPGA作为其产品解决方案,且已有大量FPGA应用到通讯系统之中。为了达到降低系统维护成本的目的,需要实现FPGA远程
更新的功能。FPGA加载主要分为两大类,一类是主动模式(master)另一类是从模式(slave)。在主动模式时FPGA会外挂存储器存储FPGA bit映像,FPGA会主动提供时钟访问外部存储器。在从模式时,FPGA作为从设备被挂在控制器CPU上由处理器控制对FPGA编程。上述两种模式中,因为从模式FPGA由外部CPU控制编程,可以通过远程更新CPU文件就可以实现对FPGA的版本更新,非常方便。但是当CPU外挂的FPGA较多时会使系统加载时间过长,降低系统启动速度。由大容量FPGA构成的多节点系统,系统的升级是一个费时费力的工作。此时,FPGA的远程升级能力就显得尤为重要。对于核心器件就是大容量FPGA的系统,如果由FPGA本身来接收升级数据并写入存储配置数据的非易失性存储器,一旦升级失败,将无法再次升级,从而限制了它在许多需要高可靠性要求或者维护人员不便于到达的场合的应用;而如果单纯为了实现系统的远程升级而加入价格昂贵的嵌入式微处理器,又会较大地增加系统成本和复杂性。
[0005]目前,FPGA远程更新技术一般有下述两种方案。
[0006]方案一,利用FPGA本身的逻辑资源实现对外部存储器的读写访问控制,接收外部专用处理器下发的待更新程序文件,写入到外部存储器,在系统上电后,将更新后的程序文件加载到FPGA内部运行。
[0007]方案二,利用复杂可编程逻辑器件CPLD的可编程能力,实现对FPGA外部存储器的读写访问,接收来自串口/外部处理器下发的待更新程序文件。
[0008]现有的技术方案有如下一些不足之处:方案一中,利用FPGA本身的逻辑资源接收待更新升级程序文件并写入外部存储器,一旦遇到升级失败,将无法再次升级,需要取下硬件模块,连接FPGA电缆,在线烧写程序。同时,由于在功能程序中加入FPGA外部存储器读写访问逻辑,该功能属于FPGA平台软件,不属于功能软件范畴,这样会使平台软件与功能软件之间存在一定的耦合关系。
[0009]方案二中,通常CPLD器件与串口/外部处理器之间的通信速率相对较低,内部存储资源受限,会大幅增加与外部设备之间的交互次数,使得FPGA远程更新时间大幅增加。对于大型的航空机载平台来说,几十上百个FPGA芯片,加上部分FPGA芯片包含多个程序版本,一次升级下来,时间成本是非常大的。并且传统设计中在CPLD编程实现Flash远程更新,受到CPLD内部RAM资源的限制,一般单次数据传输限制在2KByte以下,传输20MByte大小的文件,就需要10240次。

技术实现思路

[0010]为了提高FPGA远程更新程序的方便性,本专利技术的目的是针对现有技术存在的不足之处,提供一种硬件设计简单,数据传输速率高,实时性处理效率高,容错能力强,低软件耦合性,远程在线更新FPGA多版本程序的设计与实现方法。
[0011]本专利技术的上述目的可以通过以下措施来达到,一种远程在线更新FPGA多版本程序的方法,其特征在于:采用PPC处理器连接现场可编程逻辑门阵列FPGA和复杂可编程逻辑器件CPLD组成一个FPGA程序远程更新控制单元,PPC采用RapidIO总线与FPGA进行互连通信,CPLD通过高位地址连接Flash,对不同FPGA程序版本的存储;PPC处理器接收FPGA程序远程更新指令,通过本地总线LocalBus向CPLD发送更新指令,CPLD对收到的FPGA远程更新指令有效性进行确认,并加入FPGA基础版本程序远程更新指令过滤措施;启动FPGA基础版本程
序加载流程,将FPGA基础版本程序从Flash加载到FPGA内部运行;然后切换Flash高位地址指向待更新功能程本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种远程在线更新FPGA多版本程序的方法,其特征在于:采用PPC处理器连接现场可编程逻辑门阵列FPGA和复杂可编程逻辑器件CPLD组成一个FPGA程序远程更新控制单元,PPC与FPGA进行互连通信,CPLD通过高位地址连接Flash,对不同FPGA程序版本的存储;PPC处理器接收FPGA程序远程更新指令,向CPLD发送更新指令,CPLD对收到的FPGA远程更新指令有效性进行确认,并加入FPGA基础版本程序远程更新指令过滤措施;启动FPGA基础版本程序加载流程,将FPGA基础版本程序从Flash加载到FPGA内部运行;然后切换Flash高位地址指向待更新功能程序版本对应的Flash区块空间,在确定FPGA基础版本程序加载成功后,设置Flash高位地址指向待更新功能版本程序对应的Flash区块空间,并以中断的方式上报PPC FPGA基础版本加载成功;PPC收到CPLD上报FPGA基础版本程序加载成功后,采用待更新程序文件分帧发送方式,将单个数据帧大小按照Flash单个扇区的大小进行划分;FPGA接收待更新数据帧,对数据帧有效性进行确认,确认有效的待更新数据帧进行CRC校验通过后,将数据写入到对应的Flash地址空间中,并在完整的待更新程序文件全部写入到Flash后,从Flash中读出之前写入的数据,进行CRC二次校验,把校验的结果上报PPC。2.如权利要求1所述的远程在线更新FPGA多版本程序的方法,其特征在于:PPC与FPGA之间采用RapidIO总线进行互连通信,FPGA复位信号PROG_B、初始化完成信号INIT以及启动信号DONE管脚与CPLD连接;CPLD控制Flash最高3位地址,存储基础版本、功能版本1、功能版本2

功能版本7,8个不同的FPGA程序版本,基础版本采用JTAG工具在线烧写方式固化到Flash中,功能版本1~功能版本7支持程序远程在线更新与JTAG工具在线烧写。3.如权利要求1所述的远程在线更新FPGA多版本程序的方法,其特征在于:CPLD包括Cmd解析单元连接的Flash块选择单元和Cmd响应回传单元,PPC接收FPGA程序远程更新指令,通过本地总线LocalBus下发远程更新指令Update_cmd至CPLD;CPLD对收到的更新指令Update_cmd有效性进行确认,确认有效后控制Flash高3位地址指向基础版本程序对应的Flash区块空间,并置PROG_B信号有效,启动FPGA加载流程,加载Flash中FPGA基础版本程序到FPGA内部运行,通过判断FPGA启动信号DONE确定FPGA基础版本程序是否加载成功。4.如权利要求3所述的远程在线更新FPGA多版本程序的方法,其特征在于:CPLD在确定FPGA基础版本程序被加载成功后,通过Flash块选择单元设置Flash高位地址指向待更新功能版本程序对应的Flash区块空间,并通过Cmd响应回传单元,以中断的方式上报PPC更新指令Update_cmd_response指令正确,FPGA基础版本程序被加载成功,若在Cmd解析单元中解析的Update_cmd命令无效,则向PPC上报更新指令Update_cmd_response指令错误。5.如权利要求1所述的远程在线更新FPGA多版本程序的方法,其特征在于:FPGA包含连接在RapidIO收发单元与Flash读写控制单元之间的数据解析单元、响应回传单元以及CRC校验单元;PPC在收到CPLD上报FPGA基础版本程序加载成功后,通过RapidIO总线向FPGA发送待更新程序文件;RapidIO收发单元将接收到的待更新数据帧Recv_RIO_data提取出来送至数据解析单元;数据解析单元对收到的待更新数据帧类型进行有效性确认,若数据帧类型有效,则将解析出来的待更新程序文件校验All_CRC_data、当前数据帧校验Frame_CRC_data、待更新数据Update_data输出至CRC校验单元;若数据帧类型无效,则通过响应回传单元,上报PPC数据帧类型错误。6.如权利要求5所述的远程在线更新FPGA多版本程序的方法,其特征在于:CRC校验单元对数据解析单元送入的待更新数据Update_data进行CRC校验,若计算的CRC数值与数据
解析单元送入的Frame_CRC_data相同,则待更新数据帧数据有效,并将C...

【专利技术属性】
技术研发人员:朱道山蒋凯刘景元邵龙
申请(专利权)人:西南电子技术研究所中国电子科技集团公司第十研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1