FPGA在线烧程序方法(用MCU直接配置FPGA)

1、用CPU配置Altera公司的FPGA概述目前很多产品都广泛用了FPGA虽然品种不同,但编程方式几乎都一样:利用专用的EPRO对FPGA进行配置。专用的EPRO价格不便宜,且大不跟上都是一次性OPT方式编程。一旦更改FPGA设计,代价不小。为了进一步降低产品的成本和升级成本,可以考虑利用板上现有CPU子系统中空闲的ROM空间存放FPGA勺配置数据,并由CPU模拟专用EPRO对FPGA进行配置。本文将以PowerPC860和EP1K3C为例,讲解如何利用CPU来配置FPGACPU配置FPGA勺优点与ConfigurationEPROM方式相比本设计有如下优点:1.降低

2、硬件成本一一省去了FPGA专用EPROM的成本,而几乎不增加其他成本。以ALTERA勺10K系列为例,板上至少要配一片以上的EPC1每片EPC啲价格要几十元,容量1M位。提供1Mb的存储空间,对于大部分单板来说(如860系统的单板),是不需要增加硬件的。即使增加1Mb存储空间,通用存储器也会比FPGA专用EPROI便宜。2.可多次编程FPGA专用EPROML乎都是OTP旦更换FPGA版本,旧版本的并不便宜的EPRO只能丢弃。如果使用本设计对FPGA配置,选用可擦除的通用存储器保存FPGA勺编程数据,更换FPGA版本,无须付出任何硬件代价。这也是降低硬件成本的一个方面。

3、3.实现真正"现场可编程"-FPGA的特点就是"现场可编程",只有使用CPU对FPGA编程才能体现这一特点。如果设计周全的话,单板上的FPG/可以做到在线升级。4.减少生产工序-省去了对"FPGA专用EPROM烧结的工序,对提高生产率,降低生产成本等均有好处。对于双面再流焊的单板,更可省去手工补焊DIP器件的工序。当然,与ConfigurationEPROM方式相比也有一些需要注意的的地方:1.需要CPU提供5根I/O线-一般来说,这并不困难。对于MPC86一类的CPU来说,区区5根I/O线是不成问题的。即使是某

4、些设计中实在没有多余的I/O供配置使用,也可通过板上的PLD扩展。虽然这样做可能会增加成本,但获得的真正"现场可编程"的功能是非常宝贵的。2.CPU的Boot应不依赖于FPGA-这在单板设计时需要特别考虑的。由于CPU对FPGA进行配置所需的资源很少,这一点比较容易做到。设计摘要本设计严格按照FPGA勺PS配置流程进行,并在配置过程中始终监测工作状态,在完善的软件配合下,可纠正如上电次序导致配置不正常等错误。因此,采用此方法对FPGA进行配置,性能将优于ConfigurationEPROM方式。本设计是利用板上现有CPU子系统中空闲的ROM间存放

5、FPGA勺配置数据,并由CPU模拟专用EPRO对FPGA进行配置,以降低硬件成本并实现FPGA勺在线升级。本设计已在MPC86C和EP1K30环境下完成验证,适用于有5个多余I/O的CPU对AlteraFPGA的配置。参考资料ALTERA:AN-116ConfiguringSRAM-BasedLUTDevicesALTERA:ACEX1KProgrammableLogicDeviceFamily二.硬件设计1.配置基本原理RAM-BasedFPGA由于SRAM工艺的特点,掉电后数据会消失。因此,每次系统上电后,均需对FPGA进行配置。对于A

8、OconfigurationdataDCLKOconfigurationclocknCONFIGOdevicereset(alowtohightransitionstartstheconfigurationwithinthedevice)Conf_doneIStatusbit(getscheckedafterconfiguration,willbehighifconfigurationcomplete)nSTATUSIStatusbitindicatinganerrorduringconfigurationiflowMi

9、croprocessorMSElLI->CONI-DONEMSELD>nSJA7US->nCEnCEQ->DATAD->nCONFIG->DCLKAPEXILAPEX20KACEX1K.MercuryorFLEX10KDeviceGNDNC图3PS配置单片FPGA的硬件连接图4PS配置多片FPGA的硬件连接3.配置操作过程CPU按下列步骤操作I/O口线,即可完成对FPGA的配置:1.nCONFIG="0"、DCLK="O",保持2gS以上。2.检测nSTATUS,如果为"0

10、",表明FPGA已响应配置要求,可开始进行配置。否则报错。正常情况下,nCONFIG="0"后1gS内nSTATUS将为"0"。3.nCONFIG="1",并等待5gSo4.Data0上放置数据(LSBfirst),DCLK="1",延时。5.DCLK="0",并检测nSTATUS,若为"0",则报错并重新开始。6.准备下一位数据,并重复执行步骤4、5,直到所有数据送岀为止。7.此时Conf_done应变成"1",表

11、明FPGA的配置已完成。如果所有数据送出后,Conf_done不为"1",必须重新配置(从步骤1开始)。8配置完成后,再送出10个周期的DCLK,以使FPGA完成初始化。注意事项:1.DCLK时钟频率的上限对不同器件是不一样的,具体限制见下表:型号最咼频率ACEX1KFLEX10KEAPEX20K33MHzFLEX10K16MHzAPEXII、APEX20KEAPEX20KC57MHzMercury50MHz2.步骤7中FPGA完成初始化所需要的10个周期的DCLK是针对ACEX1K和FLEX10KE的。如果是APEX20K,则需要40个周期。3.

12、在配置过程中,如果检测到nSTATUS为"0",表明FPGA配置有错误,则应回到步骤1重新开始图5操作流程框图4.实现在线升级采用本模块的最大优点是可以实现单板FPGA的在线升级。要实现在线升级,单板设计必须考虑以下几个问题:1.CPU的启动必须不依赖于FPGA,即CPU子系统应在FPGA被配置前可独立运行并访问所需资源。CPU对FPGA进行配置所需的资源很少,一般来说,仅RAM和BootROM的访问而已。2.FPGA配置前(或配置过程中)必须保证控制的设备处于非工作态或不影响其他设备工作的稳定态。3.为了实现FPGA的在线升级,存放FPGA配置数据的存

13、储器器必须是CPU可重写的,且此存储器应是非易失性的,以保证单板断电后,FPGA数据不需从后台重新获得。具体过程结合图6的实例,对FPGA在线升级作一具体描述。图6FPGA在线升级1.使用编译和连接工具,将FPGA的第一个版本与MPC860的工作程序连接在一起,分别占用地址为0x70000-0X7FFFF和0x00000-0x6FFFF的存储空间。2.单板启动时,MPC860自动将0x70000-0x7FFFF的数据下载到FPGA中,完成FPGA配置。3.当FPGA需升级时,将新的RBF配置文件放在后台计算机中。4.MPC860把BOOTROM的0x70000-0

14、x7FFFF空间当作普通数据存储区,通过后台将新的RBF配置文件放在0x70000-0x7FFFF中。5.MPC860调用BOOTROM中的FPGA配置子程序,对FPGA从新下载数据,完成FPGA升级。以MPC860和AlteraEP1K30为例,电原理图如下:软件编程文件格式的转换MAX+plusll或Quartusll生成的SOF或POF文件不能直接用于CPU配置FPGA中,需要进行数据转换才能得到软件可用的配置数据。在MaxplusIl中的具体步骤如下:1.进入数据转换对话框图1进入数据转换对话框2选择需要转换的SOF文件,对于配置多个FPGA的场合,应选择所有的SOF文

15、件并排好次序。输岀文件的格式我们选则二进制的rbf(Sequential)。(也可以选择其他格式,如HEX等,在CPU软件编写上会与本文例子略有区别,关于不同文件格式的区别,在altera的AN116号文档上有详细解释)图2选择相应的输岀数据格式在QuartusII软件的file菜单下,同样可以找到类似菜单进行格式转化。CPU程序设计以MPC860为例,我们可以将转换完成的RBF文件作为二进制文件,直接写到MPC860系统的某一ROM/Flash区域。由于这段数据的起始地址和长度都是已知的,相应的软件编写是很方便的。本设计的CPU源程序voidInitPORT

16、(void)/初始化PB口相应位:/PB24-输出,PB25-输入,PB26-输出,PB27-输入,PB28-输出IMMR->pip_pbpar=0x00000000;IMMR->pip_pbdir=0xFFFFF5AF;IMMR->pip_pbodr=0x00000000;IMMR->pip_pbdat=0xffffff57;UBYTEFpga_DownLoad(void)/FPGA配置UBYTE*Bootaddr;UWORDCountNum=0x0;UBYTEFpgaBuffer,i;/获得Boot区首地址Bootaddr=(UBYT

17、E*)(IMMR->memc_or0&IMMR->memc_br0&0xFFFF8000);Set_nCONFIG(0);/nCONFIG="0",使FPGA进入配置状态Set_DCLK(0);DELAY5us();if(Read_nSTATUS()=1)/检测nSTATUS,如果为"0",表明FPGA已响应配置要求,可开始进行配置。否则报错Err_LED(1);return0;Set_nCONFIG(1);DELAY5us();/开始输出配置数据:while(CountNum&

18、lt;=0x0e74e)FpgaBuffer=*(Bootaddr+0x70000+CountNum);for(i=0;i<8;i+)/DCLK="0"时,在Data0上放置数据(LSBfirst)Set_Data0(FpgaBuffer&0x01);Set_DCLK(1);/DCLK->"1",使FPGA读入数据FpgaBuffer>>=1;/准备下一位数据if(Read_nSTATUS()=0)/检测nSTATUS,如果为"0",表明

19、FPGA配置出错Err_LED(1);return0;Set_DCLK(0);CountNum+;/FPGA初始化:/ACEX1K和FLEX10KE需要10个周期,APEX20K需要40个周期for(i=0;i<10;i+)Set_DCLK(1);DELAY100us();Set_DCLK(0);DELAY100us();Set_Data0(0);if(Read_nCONF_Done()=0)/检测nCONF_Done,如果为"0",表明FPGA配置未成功Err_LED(1);return0;return1;/

20、成功返回/Data0输出voidSet_Data0(UBYTEsetting)/PB24if(setting)IMMR->pip_pbdat|=0x00000080;elseIMMR->pio_pbdat&=0xFFFFFF7F;/读nSTATUS状态UBYTERead_nSTATUS(void)/PB25if(IMMR->pio_pbdat&0x00000040)return1;elsereturn0;/设置nCONFIG电平voidSet_nCONFIG(UBYTEsetting)/PB26if

21、(setting)IMMR->pip_pbdat|=0x00000020;elseIMMR->pio_pbdat&=0xFFFFFFDF;/读nCONF_Done状态UBYTERead_nCONF_Done(void)/PB27if(IMMR->pio_pbdat&0x00000010)return1;elsereturn0;/输出DCLKvoidSet_DCLK(UBYTEsetting)/PB28if(setting)IMMR->pio_pbdat|=0x00000008;elseIMMR-&g

22、t;pio_pbdat&=0xFFFFFFF7;/结束我们已在某单板上实现了该设计。现以该单板为例,说明如何实现CPU对FPGA的配置。在该单板上是使用MPC860作CPU,BootROM采用SST39VF040,一片FPGA型号EP1K30QC208-3。我们在MCP860的PB口选5根线与EP1K30连接成PS配置方式,硬件连接参考第二章,Data0也由MPC860输出,信号定义见下表:MPC86引脚I/O信号名称EP1K3C引1脚PB24ODATA0156PB25InSTATUS52PB26OnCONFIG105PB27ICONF_DONE2PB28ODCLK1

23、55EP1K30所需要的配置数据为58kB(准确的长度参见生成的RBF文件),由于BootROM比较空,我们将配置数据安排在BootROM的0x700000X7FFFF区间内。第一次的配置数据可利用编程器将RBF文件当作二进制文件写到BootROM的起始地址为0x70000的区域,也可以通过860仿真器把数据写到指定位置。具体软件操作参见第二章。FPGA在线更改配置为检验FPGA在线升级的可能性,我们在CPU的BootROM中放置了不同逻辑的FPGA配置数据。CPU正常运行时,测试软件随意更换FPGA的配置数据。在每次配置完成后,FPGA均能实现相应的逻辑功能。如果和系统软

24、件配合,在线更改EPROM中的配置数据,FPGA的在线升级是完全可以实现的。为了便于调试和实际生产,我们将FPGA的初始配置数据放置在BootROM中。如某些单板BootROM的写功能必须禁止,此时FPGA配置数据可放在其它存储器中,如存放应用程序的FLASH中,升级FPGA配置数据可以和升级应用程序一并完成。电缆下载为了提高调试进度,通常会采用电缆下载的方式。在单板上兼容这两种配置方式有多种办法,我们采用了比较简单又便于生产的"0欧姆电阻连接方式"。电气连接的示意图如下:图1兼容电缆下载在最初调试FPGA时,R1R5不焊,直接用电缆下载。同时,MPC860的

25、程序中跳过FPGA配置的代码。等FPGA设计定型后(相当于准备使用EPC1时),焊上R1R5,利用CPU配置FPGA。当然,R1R5也可改用跳线或拨动开关。这两种连接方式在开发调试中比0欧姆电阻方便,但实际使用中可靠性0欧姆电阻连接方式最0欧姆电阻连接方式。不如0欧姆电阻高,如跳线会出现短路块脱落、拨动开关会出现接触不良等现象。而且,便于生产,价格也最低。建议开发阶段的单板可以用跳线或拨动开关,转产时采用在使用下载电缆时需要注意电源的选择。由于Altera以前的Byteblaster下载电缆是5V供电的,有不少设计都把下载电缆插座接到5V电源上,这种5V供电的下载电缆可能导致不能忍受5V信号的CPU损坏。因此,使用本模块时,下载电缆应使用低电压版本的Byteblaste

THE END
1.多平台FPGA工程快速移植与构建腾讯云开发者社区作为一名FPGA工程师,经常需要在多个FPGA设备之间移植项目,核心的问题是IP的管理和移植,今天通过安装和使用 FuseSoC 在多个 AMD FPGA 之间移植一个简单的项目。从 AMD Spartan? 7 更改为 AMD Artix? 7 设备,然后是 AMD Kintex? UltraSacle?。 https://cloud.tencent.com/developer/article/2476014
2.芯作者例如,针对Cisco Unified Industrial Wireless Software的命令注入漏洞和Google Chrome的资源管理错误漏洞,厂商已发布升级补丁以修复漏洞。0day漏洞利用增加根据FBI、NSA等网络安全机构的报告,2023年恶意网络人员利用更多的0day漏洞攻陷企业网络。漏洞修复和防护措施针对已披露的漏洞,相关厂商和网络安全机构积极发布修复补丁和防护https://me.csdn.net/follow/QQ_778132974
3.CPLDFPGA在线升级程序.docCPLDFPGA在线升级程序 用CPU配置Altera公司的FPGA 一. 概述 目前很多产品都广泛用了FPGA,虽然品种不同,但编程方式几乎都一样:利用专用的EPROM对FPGA进行配置。专用的EPROM价格不便宜,且大不跟上都是一次性OPT方式编程。一旦更改FPGA设计,代价不小。 为了进一步降低产品的成本和升级成本,可以考虑利用板上现有CPU子系统https://max.book118.com/html/2016/0920/55247186.shtm
4.一种基于FPGA的在线升级方案2020 文章编号: 2096鄄1618(2020)05鄄0493鄄06 一种基于 FPGA 的在线升级方案 万摇 垚,摇 李摇 蠡 ( 成都信息工程大学通信工程学院,四川 成都 610225) 摇摇 摘要:一般对 FPGA 程序升级,需要使用下载器通过 JTAG 接口与 FPGA 连接,在一些不方便开盖的环境下,此 种升级方案非常困难. 基于 XILINX 公司的 XChttp://xb.cuit.edu.cn/OA/pdfdow.aspx?Sid=202005002
5.通过MCU实现AlteraFPGA在线升级.docx通过MCU实现Altera-FPGA在线升级 通过MCU实现Altera FPGA在线升级一.问题背景 在实际工程应用中,我们时常会遇到为解决某个老产品的BUG,须要在工程现场更新设备的FPGA代码,或者参与电信测试时须要现场升了容量不一样,其他方面几乎完全相同,在引脚上也完全兼容https://www.taodocs.com/p-725939679.html
6.如何实现FPGA通过串口在线升级FPGACPLDASIC论坛能不能通过串口给FPGA发送mcs文件的数据比特,FPGA把数据比特缓存起来,然后再将缓存的数据比特写入到FLASH里?这样断电在重启后,FPGA从Flash里读取程序就得到更新?有人试过吗? 0 已退回5积分 2016-4-2 18:08:30 评论 淘帖 邀请回答 jameswu2013 相关推荐 ? FPGA在线升级 6040 ? 请问有人在安卓https://bbs.elecfans.com/jishu_576452_1_1.html
7.埃科光电取得FPGA在线升级方法专利,实现方便稳定的FPGA在线升级功能金融界2023年11月21日消息,据国家知识产权局公告,合肥埃科光电科技股份有限公司取得一项名为“一种基于NiosII软核的FPGA在线升级方法”,授权公告号CN112148341B,申请日期为2020年10月。 专利摘要显示,本发明公开了一种基于NiosII软核的FPGA在线升级方法,其步骤是,1、FPGA上运行NiosII软核,用于响应在线升级指令,并读写https://finance.jrj.com.cn/2023/11/21202038513326.shtml
8.一种基于FPGA的在线程序升级方案AET摘要: 介绍了一种基于XILINX FPGA的在线程序升级方案,该方案不需要额外增加器件,在不改变硬件状态的前提下,实现产品的软件功能升级。由于对配置芯片(PROM)的所有操作均由FPGA的内部逻辑实现,故此方案具有良好的移植性和扩展性。 关键词: FPGA 在线升级 JTAG http://www.chinaaet.com/article/3000062220
9.基于DSP28335的FPGA软件在线升级方法在理论分析的基础上,给出了所提方法的硬件原理图和软件实现流程。大量实验结果表明,该方法具有较好的可行性、稳定性和可靠性,可以实现DSP+FPGA架构下不拆产品就可升级FPGA软件的目的。 引用:2次下载:278次 下载PDF版下载EPUB版 关键词 DSPFPGA在线升级配置PROMhttps://read.cnki.net/web/Journal/Article/GWDZ202403004.html
10.ARM在线升级FPGA程序方法(逆向工程)公司有款产品采用FPGA做处理器,需要远程升级—— 不使用烧写器,通过网络对其升级。领导提议既然程序是存储在外部存储器上的,那么能否通过EPCS4与ARMSPI总线通信连接刷新FPGA程序呢?于是就有了下文的实践。 要实现该功能有几种方式: 1. 解析编译出的FPGA下载文件jic、pof,将解析后的内容烧录到EPCS4中。但是否这两种https://news.eda365.com/tech/qrskaifa/120010017061479.html
11.各位大神fpga远程在线升级怎么做呀求指导谢谢您需要登录才可以下载或查看,没有账号?注册 x 各位大神 fpga远程在线升级怎么做呀 求指导谢谢 https://bbs.eetop.cn/thread-763842-1-1.html
12.Re:FPGA的在线升级方案求证FPGA的在线升级方案求证 Abonnieren Mehr Aktionen H1123 Einsteiger ?04-11-2021 02:41 AM 3.337Aufrufe 已知通过解析SVF文件可以利用MCU模拟JTAG时序烧写sof文件到FPGA中。 然而大多数的CPLD因为内部自带EEPROM等模块 ,所以可以通过JTAG直接完成程序的固化。但是FPGA如果需要通过JTAG固化程序,则需要https://community.intel.com/t5/Intel-Quartus-Prime-Software/FPGA%E7%9A%84%E5%9C%A8%E7%BA%BF%E5%8D%87%E7%BA%A7%E6%96%B9%E6%A1%88%E6%B1%82%E8%AF%81/m-p/1273451/highlight/true?profile.language=de
13.非常好的FPGA量产烧程序及在线更新程序方法(amobbs.com阿莫电子结合图6的实例,对FPGA在线升级作一具体描述。图6 FPGA在线升级 1. 使用编译和连接工具,将FPGA的第https://www.amobbs.com/thread-5491178-1-1.html
14.LATTICEFPGA通过SlaveSPI在线升级,怎样可以将JEDEC文件转换成关于Slave SPI升级方式的问题,怎样可以将JEDEC文件转换成二进制烧录文件?https://chipdebug.com/forum-post/43.html
15.FPGA板卡固件更新方法装置设备及介质本发明实现了对FPGA板卡进行在线升级,减少了板卡的拆卸,提高了固件更新的可靠性,利于产品的保密性并降低了开发的难度。 主权项:1.一种FPGA板卡固件更新方法,应用于计算机设备,所述计算机设备包括至少一FPGA板卡,其特征在于,所述方法包括:获取目标升级固件版本的BIN文件;将所述BIN文件转换为双字节模式文件,并将转换后https://pbs.lotut.com/zhuanli/detail.html?id=669e1a745dbd827390ca56d5
16.何绪金:FPGA双镜像备份升级方法摘要:基于FPGA的硬件系统的现场升级是通过FPGA更新其外挂的EEPROM中存储的配置文件来实现的。但是如果在更新EEPROM的配置文件过程中,突发系统掉电,会导致EEPROM中的配置文件不完整,再次上电后FPGA无法工作,从而导致系统失效。本文讲述了一种基于Xilinx的Multiboot的备份升级方法,该方法可以有效的解决产品在线升级FPGA过程中http://m.yuncaijing.com/news/8749086.html
17.Xilinx系列FPGA远程网络升级实现简介FPGA开发圈在实际应用中有很多FPGA板卡离工程师是有一定的距离,导致升级FPGA的mcs文件需要到现场,这样不方便也浪费时间。为此我们实现了基于通用网络传输方式来做远程升级的方案。此方案框图如下所示,本方案硬件平台基于米联客KU040FA板卡来做实现,当然此方案适用Xilinx的其他型号FPGA芯片。在Vivado工程上面例化了一个MircoBlaze核作http://xilinx.eetrend.com/content/2021/100556371.html