《QuickBoot基础知识与在FPGA逻辑远程更新的应用.docx》由会员分享,可在线阅读,更多相关《QuickBoot基础知识与在FPGA逻辑远程更新的应用.docx(5页珍藏版)》请在第一文库网上搜索。
1、QuickBoot基础知识与在FPGA逻辑远程更新的应用一、概述对于成熟的电子产品,高效稳定的工作是非常重要的一项指标。而一款刚推向市场的走星则需要研发人员或者技术维护人员进行必要的维护或者更新,以求达到更稳定的效果。对于FPGA的逻辑更新来说,因为它直接贴在板卡上,如果将板卡从产品中将拆卸下来是非常的不方便。QuickBoot提供了FPGA逻辑远程更新近乎完美的解决方案。二、QuickBoot原理Figure1:SystemWithRemoteUpdateCaPabigJ该方案是通过在FPGA内部增加额外的逻辑功能,无需改变硬件电路,只需要将原来的配置近左的容量扩大(如果需要的话)。上位机可
2、以通过以太网、PCIe.莫等将更新数据发送到FPGA,FPGA再通过配置搂旦将数据传输到F1ashMemory0FPGA可以通过自动从FIaSh工载数据,从而完成逻辑远程更新,如果配置过程中发现配置出错,或者CRC校验失败,那么FPGA就会从存放正确位流区域(go1denbitstreamarea)下载数据。QuickBoot提供以下主要功能:支持全部的7系列FPGA基于HD1的f1ashprogrammer参考设计远程更新代码最小化,更新位流和原设计位流大小基本一样简单的可编程传输接口协议内部远程错误自修复/自动返回go1den位流快速的配置时间可兼容多个配置方式:BPI/SPI/加密位流/
3、多片FPGA菊花链配置三、QuickBoot远程更新流程QuickBoot远程更新流程框图如下图所示:FactxyD9nCenterrUpdM0BVeaEFigure3:EcosystemforQuickBootRemoteUpdateRemoteSystemUpdatMB4*raE(C)0-3iF1ashMemory1*0ooVH-d-JQuickBoot远程更新设计的关键有两点:1、是如何通过FPGA实现自动更新F1aSh。2、如果发现配置错误的话如何自动将原来g。IC1en设计重新配置到FPGA。为此QuickBoot制定了如下一套机制:QuickBootConfigurationMet
4、hodFigure4i11ustratestheQuickBootconfigurationmethodforremoteupdate.ConfigurationStep1:FPGAConfigurationStartsHere-ReadCntica1SwitchWordAddrOF1ashMemoryComponent1:QuickBootHeader、Critica1SwitchWordConfigurationStep2A:Ifcritica1switchwordsON,thenexecutewarmbootandjumptoupdatebitstream.WarmBootIJUrnPS
5、eqUenCeJComponent2:Go1denBitstreamConfigurationStep3A:Ifcritica1switchwordisOFF,tenignorewarmbootsequence.ConfigurationStep3B:Synchronizeand1oadgo1denbitstream.Component3:UpdateBitstreamConfigurationStep2B:Synchronizeand1oadupdatebitstream.Figure4:QuickBootF1ashMemoryComponentsandCon.ra1icMethod由于FP
6、G配置是从f1ash的O地址开始读取数据,所以将QUiCkBOOtHeader放在。地址非常关键。QuickBootHeaC1er包括两个部分,第一部分就是关键开关字,第二部分就是热启动跳转序列。关键开关字,根据配置模式的不同而不同,如B型模式就是OXOO0000BB,而SPI模式就是0x0x995566o如果关键开关字是ON,那么就执行热启动跳转序列,热启动跳转序列包含了需要跳转的地址。然后就跳转到UPdatebitstreamarea0并且将UPdatebitstream下载下来。如果关键开关字是OFF,那么就忽略热启动跳转序列,并且继续往下读取数据,这样就可以将go1denbitstre
7、amarea的数据下载到FPGA。四、QUiCkBOot的实现QuickBoot的实现主要包含以下几个关键点:1、关键开关字的控制。2F1ash存储器与QuickBootf1ash模块的地址映射。3、位流包的大小以及FIaSh存储器大小的确定。4、QuickBoot配置时间5、QuickBoot验证updatebitstream的正确性一、关键开关字的控制关键开关字为ON:就是关键开关字存储地址含有准确的、预先设置的值,对于BPI是OXOOOooOBB,对于SPI是0xAA9955660关键开关字为OFF:就是关键开关字存储地址不含有准确的、预先设置的值。QuickBootf1ashprogr
8、ammerA1gorithm:1、擦除存放关键开关字的丽者SeCtor,使得关键开关字变成OFF。2、擦除更新包存放的区域。3、将updatebitstream写进到更新包区域。4、验证UPdatebitstream的正确性。5、验证完成之后写开关关键字,使之变成ON。所以在验证UPdatebitstream正确之前不能将关键开关字设置为ON。验证完成之后需要将开关关键字设置为ON0二、F1ash存储器与QuickBootf1ash模块的地址映射我们以MiCronN25Qf1ashmemory为例说明F1aSh存储器与QUiCkBOotf1ash模块的地址映射关系,如下图所示HMb-MBytA
9、ddftMOvoooccrvcMoeemMMC30wf1C*X0o*omMCMmrOBOm*MMe,zxocXdUpdeteWOVMMCOUXDCUOQOOfittI-曰嬴,+一*aj*wiIb-:八比CAAMMe340Mvxitddtdrrfc*QFigure6:QuickBootSPIF1ashMemoryMapforGoodandBadUpdate从O地址开始存放数据,因为一个地址是代表一个字节,所以对于一个32bit的数据需要4个地址来代表也就是地址的递增是以4为单位递增的。OXoOoOJ)OO(TOXOOoOj)EEQ对应的是QUiCkBootHeaderPART10OXooo0OO(ToXoooo1020是QUiCkBootHeaderPRT20紧接着PART2存放的是go1denbitstream0跳转地址是OXOO200000,所以从这个地址开始存放的是UPe1atebitstrean,紧接着是UPCIatebitstrean的是OXffffffff填充字,最后32bit是CRC校验值。三、位流包的大小以及FIaSh存储器大小的确定根据xi1inx公司提供的ug470_7series_config.pdfpage13我们可以看到如下表