一种基于fpga控制的远程fpga逻辑代码的下载方法

文档序号:10593893阅读:467来源:国知局
一种基于fpga控制的远程fpga逻辑代码的下载方法
【专利摘要】本发明公开了一种基于FPGA控制的远程FPGA逻辑代码的下载方法,通过FPGA逻辑控制代码更新,当更新失败时,FPGA加载备份版本,系统可以正常工作,同时可以进行下一次代码更新。所述下载方法包括:逻辑代码经以太网传输给CPU,处理后通过IIC接口传输给FPGA,在FPGA内部由逻辑代码控制擦除FLASH存储器内的更新代码比特流,将更新代码下载到FLASH存储器中并校验,从而实现FPGA的远程更新。通过对更新代码比特流的校验,使得系统具有了更高的自我诊断功能和冗余度。
【专利说明】
一种基于FPGA控制的远程FPGA逻辑代码的下载方法
技术领域
[0001]本发明涉及现场可编程门阵列配置技术领域,具体涉及一种基于FPGA控制的远程FPGA逻辑代码的下载方法。
【背景技术】
[0002]FPGA是一种电路逻辑器件,同时具有静态可重复编程和在线动态重构特性,这种电路功能表现为硬件,但是却可以像软件一样通过编程的方式来修改,大大提高了电子系统的通用性和设计灵活性。FPGA的特性使得它在电路系统中广泛使用。
[0003]现有的FPGA逻辑代码下载方式主要有两种:一种是使用FPGA厂家提供的烧写器通过联合测试行动组(JTAG,Joint Test Act1n Group),将逻辑代码下载到存储器中,每次上电时存储器将逻辑代码加载到FPGA中去;另一种方式是PC将逻辑代码通过以太网传输给CPU,CPU模拟JTAG接口将逻辑代码下载到存储器中,每次上电时存储器将逻辑代码加载到FPGA 中。
[0004]上述下载方式有如下缺点:
[0005]第一种下载方式需要配套的烧写器,并将其插到板上JTAG接插件上,适合调试和批量生产前下载代码,但对于一件组装完成的产品进行测试或者升级代码版本,拆开产品或者使用调试用的下载设备都是广受工程人员诟病的,因为这样面临着时间风险和保密风险。
[0006]第二种下载方式可以实现FPGA的远程更新,但通过CPU模拟JTAG接口方式下载速率太慢,第一种方式15分钟可以更新完成的代码用第二种方式需要花费接近10小时,这不仅耗费大量时间并且增加了下载出错的概率;
[0007]因此,目前业界迫切需要一种更加方便快捷的FPGA逻辑代码下载方式,在时间、成本和灵活性上取得优势。

【发明内容】

[0008]本发明提供了一种基于FPGA控制的远程FPGA逻辑代码的下载方法,用于对组装完成的系统产品进行测试或者升级代码版本,能够有效缩短下载时间,提高FPGA调试效率。
[0009]一种基于FPGA控制的远程FPGA逻辑代码的下载方法,实现所述下载方法的系统包括一个CPU,至少一个和CPU通讯连接的FPGA,每个FPGA对应通讯连接有一个基于SPI的FLASH存储器,所述下载方法包括:
[0010]步骤I,CPU解析更新代码,并依据FPGA的读控制命令,将更新代码写入FPGA的寄存器,同时,CPU向FPGA发送写控制命令;FPGA的寄存器中的更新代码通过FIFO缓存重构成更新代码比特流;
[0011 ]步骤2,在更新代码时,FPGA从前往后依次擦除FLASH存储器中的初始更新代码比特流和校验字,擦除成功后,FLASH存储器从后往前下载FPGA中的更新代码比特流,下载成功后,对FLASH存储器中的更新代码比特流进行校验,校验成功后,FLASH存储器下载FPGA中的校验字,若擦除、下载和校验均成功,将FLASH存储器中的转换命令字设定为开启,否则转换命令字设定为关闭;
[0012]步骤3,重新上电后,当转换命令字为开启状态时,FPGA加载FLASH存储器中的更新代码比特流;
[0013]当转换命令字为关闭状态时,FPGA加载FLASH存储器中的备份代码比特流。
[0014]FLASH存储器中的存储区域包括:快速启动数据头区域,备份代码比特流区域、以及更新代码比特流区域。快速启动数据头区域用于存储转换命令字和启动跳转命令;备份代码比特流区域用于存储备份代码比特流;更新代码比特流区域用于存储更新代码比特流。
[0015]所述的初始更新代码比特流是指:更新开始前,存储在更新代码比特流区域的代码。更新代码比特流区域是校验正常状态下,上电后FPGA加载的区域,也是在更新过程中擦除、下载和校验的区域。
[0016]当代码更新成功或第一次更新之前,转换命令字设置为开启状态。
[0017]作为优选,FPGA和CPU之间通过11C总线和读写控制线进行通讯连接。
[0018]作为优选,CPU接收到FPGA的读控制命令后,每次将8比特数据通过IIC通讯线写入FPGA的寄存器中。
[0019]作为优选,FPGA和FLASH存储器之间通过SPI总线通讯连接。
[0020]FPGA调用SPI FLASH接口模块(即SpiSerDes)控制FPGA和FLASH存储器中的MISO信号、MOSI信号、SCLK信号和CS信号通讯,FPGA调用FLASH更新状态机模块(SpiFlashProgrammer)控制FLASH存储器的擦除、下载和校验。
[0021]作为优选,更新代码比特流和备份代码比特流中均包含校验信息。每次更新下载完成后都会进行循环冗余码校验(Cyclic Redundancy Check),确保代码更新成功,保证了系统的正确性和稳定性。
[0022]备份代码比特流和更新代码比特流中都包含FLASH更新状态机模块(SpiFlashProgrammer)和SPI FLASH接口模块(SpiSerDes),可以继续实现远程更新。
[0023]作为优选,在代码更新前,FLASH存储器中对初始更新代码比特流进行备份,作为备份代码比特流。
[0024]当代码更新出现故障时,由快速启动数据头(QuickBootHeader)控制FPGA加载备份代码比特流,以实现初始的逻辑功能。
[0025]FLASH存储器中的远程更新初始代码文件通过JTAG烧写器下载,作为FPGA的远程更新的基础代码。
[0026]本发明中,通过FPGA逻辑专用模块控制FLASH存储器,实现对FLASH存储器(FlashMemory)的擦除、下载和校验,从而提高FPGA逻辑代码远程快速的速度。
[0027]本发明中,在代码更新前,FLASH存储器存储备份代码比特流,当更新失败时,FPGA加载备份代码比特流,系统可以正常工作,同时可以进行下一次代码更新,提高了系统的安全性和可靠性。
[0028]相对于现有技术,本发明具有以下有益的技术效果:
[0029]本发明下载方法,通过FPGA逻辑控制代码的更新,相比于CPU模拟JTAG接口的下载方式具有更快的下载速度;相比于烧写器直插的下载方式,不用拆开产品可以实现远程更新,更加方便灵活。
[0030]采用本发明提供的下载方法,即使更新异常,FPGA也能够加载备份代码比特流,实现初始功能,并且可以实现下一次代码更新,大大提高了系统的可靠性。
[0031 ]本发明提供的下载方法,各链路间通过千兆以太网、IIC和SPI接口连接,线路简单,传输稳定,可以保证良好的信号质量,对于复杂系统无需拆板,代码更新更加稳定灵活。
【附图说明】
[0032]图1为本发明FPGA远程更新的硬件链路示意图。
[0033]图2为实施本发明FPGA远程更新的流程示意图。
[0034]图3为本发明FPGA上电加载逻辑代码的流程示意图。
[0035]图4为本发明FPGA远程更新逻辑代码控制FLASH擦除、下载和校验的状态机示意图。
【具体实施方式】
[0036]下面结合实施例和附图来详细说明本发明,但本发明并不限于此。
[0037]以下以含有FPGA的系统为例来详细说明本发明的下载方法,其中,FPGA以XiI inx公司的FPGA芯片为例,硬件链路示意图如图1所示。
[0038]如图2所示,一种基于FPGA控制的远程FPGA逻辑代码的下载方法,包括:
[0039](I)通过Xilinx提供的开发环境ISE生成远程更新初始代码bit文件initial_quickboot.bit,再通过ISE生成对应的mcs文件initial_quickboot.mcs,将该mcs文件通过JTAG烧写器下载到SPI FLASH(即基于SPI的FLASH存储器),作为FPGA远程更新的基础代码。
[0040]initial_quickboot.bit 包括 3 个模块:
[0041 ] FLASH更新状态机模块(S卩SpiFlashProgrammer模块),该模块是FPGA逻辑控制SPIFLASH擦除、下载和校验的状态机模块;
[0042]SPI FLASH接口模块(S卩SpiSerDes模块),该模块是FPGA专用模拟SPI FLASH接口丰旲块;
[0043]备份逻辑代码模块(S卩BakLoc模块),该模块是备份逻辑代码模块,可实现基础功會K。
[0044]如图3 所不,initial_quickboot.mcs 包括三部分:
[0045]快速启动头(即QuickBoot Header),其中包括转换命令字(即critical switchword)和启动跳转命令(即warm boot jump sequence),当转换命令字为on(0xAA995566)时,启动跳转命令控制FPGA加载更新代码比特流(S卩update bitstream),当否则转换命令字为off时,启动跳转命令控制FPGA加载备份代码比特流(即golden bitstream)。
[0046]备份代码比特流(即goIdenbitstream),是由initial_quickboot.bit加上校验字和校验信息后转换为mcs格式的比特流,其作用是在更新出现故障时,由快速启动头控制FPGA加载备份代码比特流,可以实现初始逻辑功能,备份代码比特流包括FLASH更新状态机模块(即SpiFlashProgrammer ^PISPI FLASH接口模块(即Spi SerDes模块)以便进行下一次更新;
[0047]更新代码比特流(即update bitstream),是校验正常状态下FPGA加载的mcs比特流,也是在更新过程中被替代的部分,在initial_quickboot.mcs文件中更新代码比特流与备份代码比特流相同。
[0048](2)通过Xi I inx提供的开发环境I SE生成远程更新代码bit文件update_quickboot.bit,再通过ISE生成对应的mcs文件update_quickboot.mcs,将该mcs文件通过千兆以太网传输存储在power PC0
[0049]update_quickboot.bit 包括 3 个模块:
[0050]FLASH更新状态机模块(即 SpiFlashProgrammer模块);
[0051]SPI FLASH接口模块(SPSpiSerDes模块);
[0052]更新逻辑代码模块(即UpdateLoc模块)。
[0053]update_quickboot.mcs 是由 update_quickboot.bit 加上校验字和校验信息转换为mcs格式的文件。
[0054](3)Power ?(^将卯(^七6_911;^1<:13001:.1110 8文件的比特流解析通过IIC接口传输给FPGA,FPGA接收到数据后经过FIFO缓存,重构mcs比特流,经过FLASH更新状态机模块和SPIFLASH接口模块模拟SPI接口,擦除初始更新代码比特流,下载并校验新的更新代码比特流。
[0055]FLASH更新状态机模块控制SPI FLASH的擦除和下载,其流程如图4所示,当接收到更新代码比特流后,FLASH更新状态机开始工作,先进入ID校验状态(S卩check ID),如校验正确则进入校验字擦除状态(即Erase SwitchWord ),否则报错ID校验错误(SPerrorIDCode)。
[0056]在进行校验字擦除时,FLASH更新状态机控制SPI FLASH从前往后擦除SPI FLASH内的更新代码比特流的校验字(switch word),若擦除成功,则进入更新区域擦除状态(gpEraseUpdateArea),若擦除错误报擦除错误(即ErrorErase),若擦除超时报擦除超时(即ErrorEraseTO)。
[0057]在更新区域擦除状态时,FLASH更新状态机下从前往后擦除SPI FLASH内更新代码比特流(即update bitstream)的代码更新部分,若擦除成功进入更新区域加载状态(SPProgramUpdateArea),否则报错。
[0058]在更新区域加载状态时,FLASH更新状态机控制FPGA将update_quickboot.mcs的代码更新部分从后往前下载到SPI FLASH,若下载成功进入更新区域校验状态(SPVerifyUpdateArea),否则报错。
[°°59] 在更新区域校验状态时,FLASH更新状态机对下载到update bitstream的比特流的校验信息进行校验,如校验成功进入ProgramSwitchWord (校验字加载)状态,否则报CRC校验错误(即ErrorCRC)。
[0060]在校验字加载状态时,FLASH更新状态机从后往前下载校验字(switch word),如下载成功FLASH更新状态机接收,否则报错。
[0061 ] SPI FLASH接口模块(S卩SpiSerDes模块)模拟SPI接口,接收FLASH更新状态机模块(SpiFlashProgrammer)的指令,对SPI FLASH进行擦除、校验和下载操作。
[0062](4)下载过程结束后,若FLASH更新状态机模块(SpiFlashProgrammer模块)控制的擦除、校验和下载指令全部操作成功,则远程更新成功,重新上电后,转换命令字(criticalswitch word)为on,FPGA加载更新后的更新代码比特流(update bitstream);若更新过程有错误,转换命令字(critical switch word)为off,FPGA加载备份代码比特流(go I denbitstream)ο
[0063]备份代码比特流(golden bitstream)和更新代码比特流(update bitstream)中都包括FLASH更新状态机模块(SpiFlashProgrammer)和SPI FLASH接口模块(SpiSerDes),可以继续实现远程更新。
【主权项】
1.一种基于FPGA控制的远程FPGA逻辑代码的下载方法,其特征在于,实现所述下载方法的系统包括一个CPU,至少一个和CPU通讯连接的FPGA,每个FPGA对应通讯连接有一个基于SPI的FLASH存储器,所述下载方法包括: 步骤I,CPU解析更新代码,并依据FPGA的读控制命令,将更新代码写入FPGA的寄存器,同时,CPU向FPGA发送写控制命令;FPGA的寄存器中的更新代码通过FIFO缓存重构成更新代码比特流; 步骤2,在更新代码时,FPGA从前往后依次擦除FLASH存储器中的初始更新代码比特流和校验字,擦除成功后,FLASH存储器从后往前下载FPGA中的更新代码比特流,下载成功后,对FLASH存储器中的更新代码比特流进行校验,校验成功后,FLASH存储器下载FPGA中的校验字,若擦除、下载和校验均成功,将FLASH存储器中的转换命令字设定为开启,否则转换命令字设定为关闭; 步骤3,重新上电后,当转换命令字为开启状态时,FPGA加载FLASH存储器中的更新代码比特流; 当转换命令字为关闭状态时,FPGA加载FLASH存储器中的备份代码比特流。2.如权利要求1所述的基于FPGA控制的远程FPGA逻辑代码的下载方法,其特征在于,FPGA和CPU之间通过11C总线和读写控制线进行通讯连接。3.如权利要求2所述的基于FPGA控制的远程FPGA逻辑代码的下载方法,其特征在于,CHJ接收到FPGA的读控制命令后,每次将8比特数据通过IIC通讯线写入FPGA的寄存器中。4.如权利要求3所述的基于FPGA控制的远程FPGA逻辑代码的下载方法,其特征在于,FPGA和FLASH存储器之间通过SPI总线通讯连接。5.如权利要求4所述的基于FPGA控制的远程FPGA逻辑代码的下载方法,其特征在于,更新代码比特流和备份代码比特流中均包含校验信息。6.如权利要求5所述的基于FPGA控制的远程FPGA逻辑代码的下载方法,其特征在于,在代码更新前,FLASH存储器中对初始更新代码比特流进行备份,作为备份代码比特流。
【文档编号】G06F9/445GK105955783SQ201610305001
【公开日】2016年9月21日
【申请日】2016年5月9日
【发明人】陈耀武, 蒋荣欣, 黄余格
【申请人】浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1