CN113434162B - 远程在线更新fpga多版本程序的方法 - Google Patents
远程在线更新fpga多版本程序的方法 Download PDFInfo
- Publication number
- CN113434162B CN113434162B CN202110338023.3A CN202110338023A CN113434162B CN 113434162 B CN113434162 B CN 113434162B CN 202110338023 A CN202110338023 A CN 202110338023A CN 113434162 B CN113434162 B CN 113434162B
- Authority
- CN
- China
- Prior art keywords
- data
- fpga
- flash
- program
- crc
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开的一种远程在线更新FPGA多版本程序的方法,硬件简单,实时性处理效率高,容错能力强。发明通过下述技术方案予以实现:PPC处理器接收FPGA程序远程更新指令,向CPLD发送更新指令,CPLD校验更新指令正确后,将FPGA基础版本程序从Flash加载到FPGA内部运行,然后切换Flash高位地址指向待更新功能程序版本对应的Flash区块空间,FPGA接收来自PPC待更新程序文件,采用接收数据帧CRC校验,以及全部待更新程序文件写入后,读取Flash本次更新写入的全部数据,将数据写入到对应的Flash地址空间中,从Flash中读出之前写入的数据,进行二次CRC校验的方式,把校验的结果上报PPC。
Description
技术领域
本发明涉及一种航空综合化系统领域,通过FPGA+PPC+CPLD控制实现FPGA多版本程序远程更新的方法。
背景技术
随着航空综合化技术发展,实现的功能日益复杂,需要处理的业务也越来越多。现场可编程门阵列FPGA器件具有高密度、低功耗、高速、高可靠性等优点,在航空航天、通信、工业控制等方面得到了大量应用。通过加载不同版本的FPGA功能程序,实现不同的业务功能。由于FPGA器件采用的是SRAM工艺,在断电的情况下FPGA内的配置数据将丢失,所以需要非易失的存储器来结合FPGA完成嵌入式系统的设计。BPI(Byte-wide PeripheralInterface)Flash,具有接口简单、配置方便的特点,通常用来存储FPGA配置文件。在经过合理的配置后,系统在上电后就可以从Flash中读取配置文件来启动整个系统运行。为了能使系统得到更灵活的应用,充分发挥FPGA的灵活性、高效性,FPGA的软硬件程序都需要方便的更新和升级功能;而当形成产品后,通过JTAG工具来实现Flash更新烧写很不方便。
结合嵌入式系统应用,典型的信号处理模块,通常采用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下载电缆,也势必对硬件模块产生不利影响。
基于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本身来接收升级数据并写入存储配置数据的非易失性存储器,一旦升级失败,将无法再次升级,从而限制了它在许多需要高可靠性要求或者维护人员不便于到达的场合的应用;而如果单纯为了实现系统的远程升级而加入价格昂贵的嵌入式微处理器,又会较大地增加系统成本和复杂性。
目前,FPGA远程更新技术一般有下述两种方案。
方案一,利用FPGA本身的逻辑资源实现对外部存储器的读写访问控制,接收外部专用处理器下发的待更新程序文件,写入到外部存储器,在系统上电后,将更新后的程序文件加载到FPGA内部运行。
方案二,利用复杂可编程逻辑器件CPLD的可编程能力,实现对FPGA外部存储器的读写访问,接收来自串口/外部处理器下发的待更新程序文件。
现有的技术方案有如下一些不足之处:
方案一中,利用FPGA本身的逻辑资源接收待更新升级程序文件并写入外部存储器,一旦遇到升级失败,将无法再次升级,需要取下硬件模块,连接FPGA电缆,在线烧写程序。同时,由于在功能程序中加入FPGA外部存储器读写访问逻辑,该功能属于FPGA平台软件,不属于功能软件范畴,这样会使平台软件与功能软件之间存在一定的耦合关系。
方案二中,通常CPLD器件与串口/外部处理器之间的通信速率相对较低,内部存储资源受限,会大幅增加与外部设备之间的交互次数,使得FPGA远程更新时间大幅增加。对于大型的航空机载平台来说,几十上百个FPGA芯片,加上部分FPGA芯片包含多个程序版本,一次升级下来,时间成本是非常大的。并且传统设计中在CPLD编程实现Flash远程更新,受到CPLD内部RAM资源的限制,一般单次数据传输限制在2KByte以下,传输20MByte大小的文件,就需要10240次。
发明内容
为了提高FPGA远程更新程序的方便性,本发明的目的是针对现有技术存在的不足之处,提供一种硬件设计简单,数据传输速率高,实时性处理效率高,容错能力强,低软件耦合性,远程在线更新FPGA多版本程序的设计与实现方法。
本发明的上述目的可以通过以下措施来达到,一种远程在线更新FPGA多版本程序的方法,其特征在于:采用PPC处理器连接现场可编程逻辑门阵列FPGA和复杂可编程逻辑器件CPLD组成一个FPGA程序远程更新控制单元,PPC采用RapidIO总线与FPGA进行互连通信,CPLD通过高位地址连接Flash,对不同FPGA程序版本的存储;PPC处理器接收FPGA程序远程更新指令,通过本地总线LocalBus向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。
本发明相比现有技术方法的有益效果是:
硬件设计简单。本发明采用FPGA+PPC+CPLD组成一个FPGA程序远程更新控制单元,外部存储器选用BPI Flash。Flash高位地址与CPLD连接,通过CPLD控制Flash高3位地址,可以存储8个不同的FPGA程序版本,实现不同FPGA程序版本的存储与加载;这种使用系统内硬件板卡固有的控制单元FPGA+PPC+CPLD组合实现FPGA多版本程序远程更新的方法,不会带来系统硬件设计复杂度的提高。
数据传输速率高。本发明采用PPC接收FPGA程序远程更新指令,通过本地总线LocalBus向CPLD发送更新指令,CPLD对收到的FPGA远程更新指令有效性进行确认,启动FPGA基础版本程序加载流程,将FPGA基础版本程序从Flash加载到FPGA内部运行;在确定FPGA基础版本程序加载成功后,切换Flash高位地址指向待更新功能版本程序对应的Flash区块空间,并以中断的方式上报PPC FPGA基础版本加载结果。采用RapidIO总线进行待更新程序文件发送,使用5Gbps线速率4X模式,有效数据速率可达到16Gbit/s,相比传统的总线100Mbit/s左右的传输速率,速率有极大的提升。
实时性效率高。本发明中PPC单次数据帧发送采用Flash单个扇区的大小方式进行。通过利用FPGA内部RAM缓存资源,提高单次数据包发送长度,按照Flash单个扇区的大小进行数据交互。例如单个待更新BIN文件大小为20MByte,选择S29GL01GP型号的Flash,单个扇区的大小为128KByte。传输20MByte大小的BIN文件,只需要160次。相比于传统设计中在CPLD编程实现Flash远程更新,受到CPLD内部RAM资源的限制,单次数据传输限制在2KByte以下,传输20MByte大小的文件需要10240次,极大地减少了与处理器之间的交互次数,从而在应用中能够使基于FPGA的产品更加快速高效地进行维护升级。
容错能力强。本发明采用一方面选择高可靠性的RapidIO总线用于数据包传输;另一方面在PPC端加入待更新数据程序的总帧数、当前数据帧序号、当前数据帧CRC校验以及全部数据帧CRC校验作为数据帧有效性内容的判定。FPGA远程更新逻辑对收到的数据的帧序号以及CRC校验等信息进行确认,有效避免了数据传输中可能出现错误情况的产生。在完整的待更新程序文件全部写入到Flash后,从Flash中读出之前写入的数据,进行CRC二次校验,并把校验的结果上报给PPC,再次确认本轮远程更新文件是否正确写入Flash。同时,通过在CPLD中加入对FPGA基础版本程序远程更新指令的过滤措施,避免了人为误操作使得FPGA基础版本程序被破坏。
低软件耦合性。本发明采用在Flash中划分一个区块用于存储可以实现Flash在线更新能力的FPGA基础版本程序,用于实现FPGA程序远程更新。避免因使用FPGA内部逻辑资源读写访问Flash,导致平台软件与功能软件耦合在一起。
附图说明
下面结合附图和具体实施方式对本方法进一步说明。
图1是本发明远程在线更新FPGA多版本程序方法原理示意图。
图2是图1CPLD加载处理流程图。
图3是图1FPGA更新处理流程图。
具体实施方式
参阅图1。根据本发明,采用PPC处理器连接现场可编程逻辑门阵列FPGA和复杂可编程逻辑器件CPLD组成一个FPGA程序远程更新控制单元,PPC采用RapidIO总线与FPGA进行互连通信,CPLD通过最高3位地址连接Flash,对8个不同FPGA程序版本的存储;PPC处理器接收FPGA程序远程更新指令,通过本地总线LocalBus向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。
PPC与FPGA之间采用RapidIO总线进行互连通信,FPGA复位信号PROG_B、初始化完成信号INIT以及启动信号DONE管脚与CPLD连接。CPLD控制Flash最高3位地址,存储基础版本、功能版本1、功能版本2…功能版本7,8个不同的FPGA程序版本,基础版本采用JTAG工具在线烧写方式固化到Flash中,功能版本1~功能版本7支持程序远程在线更新与JTAG工具在线烧写。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基础版本程序是否加载成功。CPLD在确定FPGA基础版本程序被加载成功后,通过Flash块选择单元设置Flash高位地址指向待更新功能版本程序对应的Flash区块空间,并通过Cmd响应回传单元,以中断的方式上报PPC更新指令Update_cmd_response指令正确,FPGA基础版本程序被加载成功。若在Cmd解析单元中解析的Update_cmd命令无效,则向PPC上报更新指令Update_cmd_response指令错误。
FPGA包含连接在RapidIO收发单元与Flash读写控制单元之间的数据解析单元、响应回传单元以及CRC校验单元。PPC在收到CPLD上报FPGA基础版本程序加载成功后,通过RapidIO总线向FPGA发送待更新程序文件。RapidIO收发单元将接收到的待更新数据帧Recv_RIO_data提取出来送至数据解析单元;数据解析单元对收到的待更新数据帧类型进行有效性确认,若数据帧类型有效,则将解析出来的待更新程序文件校验All_CRC_data、当前数据帧校验Frame_CRC_data、待更新数据Update_data输出至CRC校验单元;若数据帧类型无效,则通过响应回传单元,上报PPC数据帧类型错误。CRC校验单元对数据解析单元送入的待更新数据Update_data进行CRC校验,若计算的CRC数值与数据解析单元送入的Frame_CRC_data相同,则待更新数据帧数据有效,并将CRC校验结果CRC_result输出至数据解析单元及响应回传单元。数据解析单元在收到CRC校验结果CRC_result正确后,将解析出的数据帧最大值Frame_cnt_max、当前数据帧序号Frame_cnt、待更新数据Update_data输出至Flash读写控制单元。Flash读写控制单元通过控制Flash双向数据线Flash_data、Flash低位地址Flash_low_addr、Flash写使能Flash_we、Flash输出使能Flash_oe信号实现Flash扇区擦除、Flash写入、Flash读取等功能。
本实施示例中采用待更新数据帧大小和Flash扇区大小一致,即当前数据帧序号就是要写入的扇区首地址,这样做一方面可以大幅较少PPC与FPGA之间的数据交互次数;另一方面简化Flash读写控制单元的操作。Flash读写控制单元根据当前帧序号Frame_cnt数值,执行对应Flash的扇区擦除操作;当扇区擦除完成后,执行扇区数据写入操作;在当前扇区数据写入完成后,置扇区写入完成指示信号Sector_done有效,输出至响应回传单元,上报PPC当前扇区写入完成。重复上述操作,直至所有的数据帧都被写入到对应的Flash扇区。当FPGA待更新程序文件全部写入Flash对应的区块空间后,Flash读写控制单元执行Flash读操作,读出本次FPGA远程更新过程中被写入Flash中的所有数据,送至CRC校验单元;CRC校验单元对Flash读写控制单元送入的Flash读出数据Flash_dout进行CRC校验,若计算的CRC数值与数据解析单元送入的待更新程序文件校验All_CRC_data相同,则本次FPGA远程更新程序文件写入有效,并将CRC校验结果CRC_result输出至响应回传单元,上报PPC本次FPGA远程更新程序文件写入成功。若计算的CRC数值与数据解析单元送入的待更新程序文件校验All_CRC_data不同,则通过响应回传单元上报PPC本次FPGA远程更新程序文件写入失败。
参阅图2。CPLD在上电后,Flash加载处理流程在复位完成后进入初始状态,监测来自PPC处理器本地总线LocalBus输入,将接收数据送至Cmd解析单元进行更新指令Update_cmd数据帧类型确认,若数据帧类型无效或者是要对FPGA基础版本程序执行在线更新操作,则通过Cmd响应回传单元上报PPC更新指令无效,然后返回初始状态。若Update_cmd数据帧类型有效,则通过Flash块选择单元设置Flash高位地址High_addr指向FPGA基础版本程序对应的Flash区块空间,并置FPGA复位信号PROG_B有效;在FPGA初始化信号INIT有效后,置PROG_B无效;在设定的超时时间内,若FPGA启动信号DONE有效,则通过Flash块选择单元设置Flash高位地址High_addr指向FPGA待更新功能版本程序对应的Flash区块空间,并通过Cmd响应回传单元上报PPC FPGA基础版本程序加载成功。若在设定的超时时间内,FPGA启动信号DONE一直无效,则通过Cmd响应回传单元上报PPC FPGA基础版本程序加载失败。
参阅图3。FPGA在上电后,Flash更新处理流程在复位完成后进入初始状态,RapidIO收发单元对接收到的数据进行合并处理,待完整的一帧数据接收完毕后,输出待更新数据帧Recv_RIO_data至数据解析单元。数据解析单元对接收到待更新数据帧进行数据帧类型有效性判定,若数据帧类型无效,则通过响应回传单元,上报PPC数据帧类型错误;若数据帧类型有效,则将数据解析单元解析出来的程序文件校验All_CRC_data、当前数据帧校验Frame_CRC_data、待更新数据Update_data输出至CRC校验单元进行CRC校验;若计算的CRC数值与当前数据帧校验Frame_CRC_data不同,则数据帧接收错误,通过响应回传单元,上报PPC数据帧接收有误;PPC执行数据帧重传操作,若同一个数据帧连续3次接收错误(在PPC处理器内完成),则PPC不再发起数据帧重传操作,本次待更新程序文件流程终止;若计算的CRC数值与当前数据帧校验Frame_CRC_data相同,则数据帧接收正确。Flash读写控制单元根据数据解析单元输入的当前数据帧序号Frame_cnt执行对应扇区的擦除操作,然后判断扇区是否擦除完成,在确认扇区擦除完成后,执行扇区写操作;在当前扇区所有数据写入完成后,再判断所有扇区是否写入完整数据,确认是否所有待更新扇区都已经写入完整数据;若未完成所有扇区写入数据操作,则通过响应回传单元,上报PPC当前数据帧写入完成。PPC收到当前数据帧写入完成响应后,依次将后续数据帧通过RapidIO总线发送至FPGA。当所有扇区完成数据写入操作后,执行Flash读操作;读出本次远程更新写入的所有数据,送至CRC校验单元。CRC校验单元对Flash读写控制单元送入的Flash读出数据Flash_dout进行CRC校验,若计算的CRC数值与数据解析单元送入的待更新程序文件校验All_CRC_data相同,则本轮更新程序文件写入有效,则通过响应回传单元上报PPC本轮更新程序文件成功,若CRC校验值与数据解析单元送入的待更新程序文件校验All_CRC_data不同,则通过响应回传单元上报PPC本轮更新程序文件写入失败。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和原则下,所作的任何修改、等同替换、改进等,均包含在本发明的保护范围之内。
Claims (10)
1.一种远程在线更新FPGA多版本程序的方法,其特征在于:采用PPC处理器连接现场可编程逻辑门阵列FPGA和复杂可编程逻辑器件CPLD组成一个FPGA程序远程更新控制单元,PPC与FPGA之间采用RapidIO总线进行互连通信,通过RapidIO总线向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相同,则待更新数据帧数据有效,并将CRC校验结果CRC_result输出至数据解析单元及响应回传单元。
7.如权利要求6所述的远程在线更新FPGA多版本程序的方法,其特征在于:数据解析单元在收到CRC校验结果CRC_result正确后,将解析出的数据帧最大值Frame_cnt_max、当前数据帧序号Frame_cnt、待更新数据Update_data输出至Flash读写控制单元;Flash读写控制单元通过控制Flash双向数据线Flash_data、Flash低位地址Flash_low_addr、Flash写使能Flash_we、Flash输出使能Flash_oe信号实现Flash扇区擦除、Flash写入、Flash读取功能。
8.如权利要求1所述的远程在线更新FPGA多版本程序的方法,其特征在于:Flash读写控制单元根据当前帧序号Frame_cnt数值,执行对应Flash的扇区擦除操作;当扇区擦除完成后,执行扇区数据写入操作;在当前扇区数据写入完成后,置扇区写入完成指示信号Sector_done有效,输出至响应回传单元,上报PPC当前扇区写入完成;重复上述操作,直至所有的数据帧都被写入到对应的Flash扇区;当FPGA待更新程序文件全部写入Flash对应的区块空间后,Flash读写控制单元执行Flash读操作,读出本次FPGA远程更新过程中被写入Flash中的所有数据,送至CRC校验单元;CRC校验单元对Flash读写控制单元送入的Flash读出数据Flash_dout进行CRC校验,若计算的CRC数值与数据解析单元送入的待更新程序文件校验All_CRC_data相同,则本次FPGA远程更新程序文件写入有效,并将CRC校验结果CRC_result输出至响应回传单元,上报PPC本次FPGA远程更新程序文件写入成功;若计算的CRC数值与数据解析单元送入的待更新程序文件校验All_CRC_data不同,则通过响应回传单元上报PPC本次FPGA远程更新程序文件写入失败。
9.如权利要求1所述的远程在线更新FPGA多版本程序的方法,其特征在于:FPGA在上电后,Flash更新处理流程在复位完成后进入初始状态,RapidIO收发单元对接收到的数据进行合并处理,待完整的一帧数据接收完毕后,输出待更新数据帧Recv_RIO_data至数据解析单元;数据解析单元对接收到待更新数据帧进行数据帧类型有效性判定,若数据帧类型无效,则通过响应回传单元,上报PPC数据帧类型错误;若数据帧类型有效,则将数据解析单元解析出来的程序文件校验All_CRC_data、当前数据帧校验Frame_CRC_data、待更新数据Update_data输出至CRC校验单元进行CRC校验;若计算的CRC数值与当前数据帧校验Frame_CRC_data不同,则数据帧接收错误,通过响应回传单元,上报PPC数据帧接收有误;PPC执行数据帧重传操作,若同一个数据帧连续3次接收错误,在PPC处理器内完成,PPC不再发起数据帧重传操作,本次待更新程序文件流程终止;若计算的CRC数值与当前数据帧校验Frame_CRC_data相同,则数据帧接收正确; Flash读写控制单元根据数据解析单元输入的当前数据帧序号Frame_cnt执行对应扇区的擦除操作,然后判断扇区是否擦除完成,在确认扇区擦除完成后,执行扇区写操作;在当前扇区所有数据写入完成后,再判断所有扇区是否写入完整数据,确认是否所有待更新扇区都已经写入完整数据;若未完成所有扇区写入数据操作,则通过响应回传单元,上报PPC当前数据帧写入完成。
10.如权利要求1所述的远程在线更新FPGA多版本程序的方法,其特征在于: PPC收到当前数据帧写入完成响应后,依次将后续数据帧通过RapidIO总线发送至FPGA,当所有扇区完成数据写入操作后,执行Flash读操作;读出本次远程更新写入的所有数据,送至CRC校验单元,CRC校验单元对Flash读写控制单元送入的Flash读出数据Flash_dout进行CRC校验,若计算的CRC数值与数据解析单元送入的待更新程序文件校验All_CRC_data相同,则本轮更新程序文件写入有效,则通过响应回传单元上报PPC本轮更新程序文件成功,若CRC校验值与数据解析单元送入的待更新程序文件校验All_CRC_data不同,则通过响应回传单元上报PPC本轮更新程序文件写入失败。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110338023.3A CN113434162B (zh) | 2021-03-30 | 2021-03-30 | 远程在线更新fpga多版本程序的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110338023.3A CN113434162B (zh) | 2021-03-30 | 2021-03-30 | 远程在线更新fpga多版本程序的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113434162A CN113434162A (zh) | 2021-09-24 |
CN113434162B true CN113434162B (zh) | 2022-10-28 |
Family
ID=77753031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110338023.3A Active CN113434162B (zh) | 2021-03-30 | 2021-03-30 | 远程在线更新fpga多版本程序的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434162B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113938238B (zh) * | 2021-09-29 | 2023-05-16 | 山东浪潮科学研究院有限公司 | 一种时间同步方法及系统 |
CN114172803B (zh) * | 2021-10-12 | 2023-08-01 | 四川恒湾科技有限公司 | 基于以太网交换技术的多fpga版本控制和配置系统及方法 |
CN113918001B (zh) * | 2021-10-14 | 2022-08-23 | 武汉长江计算科技有限公司 | 一种嵌入式网络设备系统升级数据保护装置和方法 |
CN114489742B (zh) * | 2021-12-31 | 2023-09-05 | 杭州加速科技有限公司 | 一种提升ate设备中fpga在线升级效率的升级方法及系统 |
CN114579155A (zh) * | 2022-01-24 | 2022-06-03 | 湖南艾科诺维科技有限公司 | 一种多fpga系统在线更新方法、系统及计算机设备 |
CN115048130B (zh) * | 2022-08-17 | 2022-11-11 | 北京左江科技股份有限公司 | 一种基于fpga的固件程序可靠在线升级系统和方法 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8402409B1 (en) * | 2006-03-10 | 2013-03-19 | Xilinx, Inc. | Method and apparatus for supporting run-time reconfiguration in a programmable logic integrated circuit |
CN102750175A (zh) * | 2012-07-10 | 2012-10-24 | 中国船舶重工集团公司第七二四研究所 | 基于Nand Flash多版本程序的FPGA加载技术 |
CN104063257B (zh) * | 2014-07-23 | 2017-06-27 | 武汉邮电科学研究院 | 一种fpga自动加载系统及方法 |
CN105302593B (zh) * | 2015-07-17 | 2018-12-18 | 天津市英贝特航天科技有限公司 | PowerPC主机板的远程升级系统及方法 |
CN106201605B (zh) * | 2016-06-30 | 2019-02-19 | 成都金本华电子有限公司 | 基于FPGA和PowerPC的FPGA启动加载FLASH升级系统及方法 |
CN107977217B (zh) * | 2017-11-22 | 2020-10-23 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 在线加载xilinx-fpga多版本更新程序的方法 |
-
2021
- 2021-03-30 CN CN202110338023.3A patent/CN113434162B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN113434162A (zh) | 2021-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113434162B (zh) | 远程在线更新fpga多版本程序的方法 | |
CN102609286B (zh) | 一种基于处理器控制的fpga配置程序远程更新系统及其方法 | |
CN107977217B (zh) | 在线加载xilinx-fpga多版本更新程序的方法 | |
US8566644B1 (en) | System and method for debugging a target computer using SMBus | |
CN113377408B (zh) | 一种高可靠sram型fpga在线升级方法及系统 | |
CN101645055B (zh) | 逻辑器件在线加载的方法、系统和处理器 | |
CN112231005B (zh) | 一种基于uboot管理fpga版本的方法 | |
US20060224821A1 (en) | System for parallel updating flash memory and method for the same | |
CN102917242A (zh) | 一种多格式视频解码器的测试系统和测试方法 | |
CN108664264A (zh) | 一种基于cpu通过jtag方式远程更新fpga的装置和方法 | |
CN104077166A (zh) | 基于fpga中ip核的epcs与epcq存储器在线升级方法 | |
US11579977B2 (en) | Data storage device restoring method | |
CN102253845B (zh) | 服务器系统 | |
CN103376777A (zh) | 控制器的Modbus通讯接口的测试方法及上位机 | |
CN113157334B (zh) | Fpga多版本程序加载方法 | |
CN111414182A (zh) | 一种基于spi的fpga远程升级方法 | |
JP2907808B1 (ja) | フラッシュメモリエミュレーション装置及びそれを用いたデバッグシステム | |
CN114692540A (zh) | 一种基于fpga的flash应用验证系统 | |
CN114281390A (zh) | 一种基于Zynq 7000的在线升级系统及方法 | |
CN109445686B (zh) | 一种存储磁盘以及存取数据的方法 | |
CN113806282A (zh) | 异构控制系统及异构控制系统的加载方法 | |
CN110119284B (zh) | Flash存储器烧写系统及方法 | |
TWI794996B (zh) | 為固態硬碟裝置除錯的裝置及系統 | |
CN118394394B (zh) | 一种fpga配置项文件在线升级的方法 | |
CN114036097B (zh) | 一种提升光电产品维护性的国产fpga逻辑在线升级方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |