前言
在FPGA中完成在运用程序编写(In Application Pro—gramming,IAP)有这两种方式:一种是,在线路板上添外电源电路。比如用MCU或CPLD来接受配备数据信息,在处于被动串行通信(PS)方式下由外电路程序编写FPGA或者程序编写Flash元器件(包含EPCS和Flash),随后操纵FPGA的配备校准管脚来校准全部FPGA,最终FPGA选用主串方法开展个人配备。另一种是,根据FPGA中的Nios CPU或者专用型IP来接受程序编写数据信息,并程序编写Flash集成ic,随后根据外界简单电路将FPGA校准运行,以积极串行通信(AS)方式开展配备。
为了更好地减少线路板总面积,节约成本,提升稳定性,本设计方案选用第二种方式。本设计方案的需要是:硬件配置电源电路须配备为积极串行通信方式,即挑选MSEL[1:O]为l:O;具有EPCS,或与此同时具有EPCS和Flash;具备与PC机通讯的作用。FPGA接受升级数据信息,并将其存进Flash元器件,随后校准Nios或FPGA 对硬件软件开展升级。
1、系统软件的硬件开发
统关键由Cyclone FPGA、EPCS、Flash和串口通信等构成,硬件配置构造如下图1所显示。
EPCS选用Altera企业的EPCS4,容积做到4 Mb,管脚较少,低成本,适用3.3 V低压实际操作。Flash集成ic选用AMD企业的Am29LV640MH/L,适用3.O V低压实际操作,具备功耗低特点,集成ic容积为64 Mb,达到大空间数据分析的储存;并口实际操作,与Cyclone FPGA彻底兼容,并且在SOPC中有与之相对的CFI_FLASH核,有利于硬件配置电源电路的设计方案。
2、原理
2.1 好多个定义
FPGA配备数据信息:是sof文档,将sof文档程序编写到Flash中,通电后FPGA可以从Flash中配备。sof文档是别的环境变量的基本,其他文件均可由sof文件格式转换获得。
APP数据信息:根据NiosII IDE建立elf文件,将客户程序编写到Flash中,容许校准后从F1ash中载入软件系统,进而运行NiosII CPU。
2.2 程序编写文档
程序编写文档为Flash文件格式的文档,即S—reeorld(通称“SREC”)文件格式。SREC文件格式是Motorola企业制订的一种烧录文件格式规范。SREC 文件格式是由一组ASCII码构成,全部的十六进制数据信息均为英文大写方式,构造表明如下所示:
①起止编码。以S做为一个数据信息行的逐渐。
②纪录种类。1个十进制数据(O~9),定义数组域的种类。
③字节。1个字节数,界定字节以后除详细地址字节数、校检字节数以外别的字节数的数量。
④详细地址。由4(或6、8)个字节数构成,界定了第一个数据信息字节数储存的部位。
⑤数据信息字节数。由n个字节数构成,数据信息字节数为具体合理的程序编写信息内容。
⑥校检字节数。1个字节数,作校检应用,全部十六进制字节数累加后取8位,为0xFF。
2.3 AS配备方式
FPGA 的配备数据储存在內部SRAM模块中。因为SRAM断电后数据信息会遗失,因而每一次通电时需要再次将配备数据信息载入SRAM中。这一全过程称之为“FPGA的配备”。不难看出,FPGA的配备信息内容是储存在FPGA內部RAM之中的。得知在积极串行通信方式下,FPGA将配备数据信息从EPGS中载入,随后存进內部RAM 中。
AS配备方式适用StraTIxII和Cyclone系列产品的FPGA,根据配备MSEL[1:O]为1:0,挑选积极配备方式(除JTAG方式不会受到 MSEL操纵外,别的配备方法均由MSEL决策)。AS配备方式应用串行通信配备元器件(EPCS1/EPCS4/EPCSl6/EPCS64)。在AS配备流程中,StraTIxlI和Cy—clone系列产品的FPGA是关键设备,串行通信配备元器件为从机器设备。如下图2所显示,在AS配备方式下,FPGA根据DATA0接受配备数据信息,配备数据信息和DCLK是同时的。每一个钟表周期时间传送1位配备数据信息。根据操纵nCONFIG、nSTATUS、CONF_DONE来表明配备全过程。串行通信配备集成ic在DCLK上升沿时锁存键入数据信号和操纵数据信号,在降低沿时导出配备数据信息。Cyclone集成ic在DCLK降低沿时导出操纵数据信号,并锁存配备数据信息。
3、工作内容
3.1 系统配置的升级
如下图3所显示,FPGA的配备全过程分成:校准、配备和复位。
(1)校准FPGA
通电校准:在客户方式下,当nCONFIG管脚不断低电频40μs时,FPGA将进到校准情况。校准时,FP—GA取样MSEL管脚的脉冲信号值,以明确选用的配备方法;与此同时,nSTATUS和CONF_DONE管脚由FPGA置为低电频,全部I/0管脚为三态且FPGA內部配备存储器被清除。
FPGA校准的2种方式:
①另加RC延时电路或是校准集成ic,全自动造成通电校准单脉冲。
②参照集成ic指南。假如集成ic给予了通电校准单脉冲(一般是全局性校准数据信号),则应用它做为校准数据信号;若沒有给予,则搜索集成ic是不是得出了寄放模块通电初始值(一般是O),运用该特点校准或是造成校准单脉冲。
(2)配备FPGA
校准后,nCONFIG被外界下拉电阻器拉升,进到配备环节。这时,nSTATUS被FPGA释放出来并由外界上拉电阻拉为高电平后进到配备情况。 Cyclone集成ic根据将nCSO导出的数据信号置低来也就能串行通信配备集成ic,nCS0管脚联接配备集成ic的片选段(nCS),用串行通信钟表(DCLK)和串行通信数据源导出(ASDO)管脚来推送实际操作命令,及/或将详细地址数据信号读到串行通信配备集成ic中。然后配备集成ic将数据信息送至串行通信数据源导出(DATA)管脚,DATA管脚联接 Cyclone集成ic的DATA0键入脚。配备数据信息在DCLK钟表的上升沿加载FPGA。当接受完全部的配备位后(CRC校验准确无误),Cyclone集成ic悬在空中CONF_DONE管脚,该管脚由外界10 kΩ电阻器拉升;与此同时,终止推动DCLK数据信号。仅有当CONF_DONE抵达一定的逻辑性高电平后,复位才逐渐。
(3)复位环节
在Cyclone集成ic中,原始钟表源是Cyclone集成ic的lOMHz(典型性的)內部晶振电路,或是是可选择的CLKUSR管脚。內部晶振电路是默认设置的复位钟表源。假如用了內部钟表,则Cyclone集成ic为合理的复位给予充足的钟表。应用內部钟表的作用取决于,复位时不用从外界推送别的的钟表到 CLKUSR管脚,并且可以把CLKUSR管脚作为I/O管脚。
(4)客户方式
复位完毕后,FPGA进到客户方式。在客户方式下,客户I/O管脚不会再有弱上拉电阻,反而是实行设计方案中分派的作用。Cyclone集成ic可以根据将 nCONFIG降低而逐渐重新部署。nCONFIG低数据信号应当最少不断40μs。当nCONFIG被拉低时,Cyclone集成ic被校准并进到校准环节。 Cyclone集成ic也会把nSTATUS和CONF_DONE降低,全部的I/O管脚处在三态。一旦nCONFIG返回逻辑性高电平,Cyclone集成ic将释放出来nSTATUS,从头开始配备。
(5)配备时经常出现的不正确
假如在配备时发生不正确,则Cyclone集成ic将nSTA—TUS数据信号置低来表明一个数据帧不正确,CONF_DONE数据信号为低。假如在QuartusAPP的 Device&Pin OpTIons对话框的General项中,选定Auto—restart configuraTIon aftererror选择项,则Cyclone集成ic根据激话nCSO来完成校准,在校准无效時间(40μs)后释放出来nSTATUS,并再度试着配备。假如该选择项未被选定,则外界系统软件务必监控nSTA—TUS数据信号防止错误,随后将nCONFIG数据信号降低并不断最少40μs来重新部署。
电子计算机与总体目标板上的Nios程序流程创建联接,根据通讯插口将Flash文件传送给FPGA;Nios程序流程分辨出传输文件的对于总体目标后,将程序编写数据信息储存在 EPCS或Flash中。接受到的数据信息最先暂存进SDRAM,而不是立即对EPCS和Flash开展实际操作。那样做的益处是,一旦传输失败或中断,不容易毁坏原来EPCS和Flash中的数据信息。
根据sof2Flash指令来转化成Flash文件时,可以根据SOPC Builder开启NioslI command shell,应用“sof2 Flash—epcs-input=《输入文件名.sof》一output=《输出文件名.Flash》”指令,转化成的 Flash文件存有于工程项目文件目录下。还可以将sof文档拷贝到“〈quartus安装文件〉\kits\nios2_60\examples”下,立即开启 NiosII command shell,应用“sof2Flash-epcs—input=《输入文件名.sof》一output=《导出文件夹名称.Flash& gt;”,转化成的Flash文件存有于“〈quartus安装文件〉\kits\nios2_60\examples”下。
3.2 软件系统的升级
如前所述,软件系统既可以储放在Flash中,还可以储放在EPCS中。转化成APPFlash文件的比较简单的方法是,在NiosII IDE自然环境下系统对开展编译程序,转化成的Flash文件存有于“《目标工程》\software\debug\《软件工程》\Debug\obj\”文件目录下。
Nios程序流程可以储放在Flash中,在SDRAM或On—chip RAM(下列通称“RAM”)中运作。这样的事情必须有一个专业的Bootloader,该文件存有于“ quartus安装文件》\kits\nios2_60\components\altera_nios2”文件目录下,名字为 “boot_loader_cfi.srec”。它把储放在Flash中的每个代码段搬到程序运行时每个段真真正正的部位。
如下图4所显示,Bootloader编码坐落于Flash的低详细地址处,NiosII就被逻辑性中的延时电路校准,从reset详细地址处逐渐实行编码。假如 reset详细地址设定在Flash中,那麼校准后最先运作Flash前边的Bootloader编码,由Bootloader编码将后边的可执行程序正确引导到指定位置。实行elf2Flash应用软件在elf文件时会插进一个正确引导拷贝(Boot—copier)程序流程,前提条件是,elf将被连接到RAM中运作。
Bootloader的工作内容如下图5所显示。
NiosII C程序流程在运作以前须要做一些复位工作中。假如程序流程立即从Flash中运作,则Crt0.S是最开始实行的编码;假如程序流程并不是立即从Flash中运作,则 Crt0.S是实行完Bootloader后最初实行的编码。
运作完Bootloader后依然要实行CrtO.s,但这时Crt0.s的工作流程和程序流程在Flash中立即运作的状况有一些差别:它沒有复位命令 Cache,也不会妄图去运载其他段,这种流程早已在Boot—loader中进行。程序流程印象早已包括这种段,在搬运程序流程印象的并且也运载了相对的段 (.rodata段,.rwdata段和.exceptions段)。程序流程印象中不包含.bss段和栈,因此依然必须清.bss段,及其设定栈表针sp和全局性表针gp。Bootloader沒有读写能力储存器数据信息,因而沒有复位数据信息Cache,因此Crt0.S依然要复位数据信息Cache。如下图6所显示,当 Bootloader载入到L时,L=0表明前边全部的程序流程纪录早已重新处理,这也是最终的程序流程纪录,因此就立即跳到详细地址A的地区实行。显而易见A务必是程序流程的通道详细地址。假如L=Oxffffffff(即一1),那麼就忽视A并关机,那样,即使是一个仅有FPGA配备数据信息而沒有程序流程的EPCS也是安全可靠的。当一个 EPCS仅有配备数据信息而沒有程序流程时,sof2Flash会在配备数据信息的结尾提升4个字节数的Oxff,使Bootloader不容易有错误操作。 Bootloader的工作内容与Flash中同样,如下图5所显示。
4、软件编程
Altera企业给予给顾客二种类别的函数公式:SimpleFlash Access(简易的Flash浏览),及其Fine—GrainedFlash Access(粗粒度Flash浏览)。文中应用Fine—Grained Flash Access函数,尽管比Simple Flash Access繁杂一些,但可以防止通常的跨块擦掉问题。由于Flash是依照块(Block)机构起來的,通常一次擦掉一全部块。假如写Flash的详细地址与Flash块的组织机构不符合,例如超越了Flash块的边沿,那麼很有可能会擦祛除其他的数据信息。在应用Flash的读写能力函数公式时,库函数时要包括 “sys/alt_Flash.h”和“sys/alt_Flash_dev.h”,这两个库函数给予了浏览Flash元器件的推动插口。
应用以前要开启Flash。开启Flash,如同C程序流程开启电脑硬盘中的数据库文件一样。这儿应用alt_Flash_open_dev()开启Flash,它回到一个返回值。比如:
在其中,fd是alt_Flash_open_dev()回到的返回值;offset是相对性Flash基详细地址的偏移,是读实际操作时要读出数据第一个字节数的详细地址;length是此次实际操作的信息长短,企业是字节数。当传参为时,表明读提交成功。
在其中,fd是a1t_Flash_open_dev()回到的返回值;offset是相对性Flash基详细地址的偏移,是写实际操作时要载入的数据信息第一个字节数的详细地址;length是此次实际操作的信息长短,企业是字节数。当传参为 O时,表明写提交成功。
应用完后别忘了关掉该Flash,如同读写能力完电脑硬盘中的数据库文件后要关掉一样。其原形如下所示:
void alt_Flash_close_dev(alt_Flash_fd*fd);
在其中,fd是alt_Flash_open_dev()回到的返回值。
编者注:Flash元器件读写能力程序流程略。
总结
现阶段,在FPGA的研发流程中,每一次开展程序流程的调节和升级时都必须将商品与电子计算机传送数据,开展线上实际操作,那样就限定了调试程序和升级的区域范畴。而根据 FPGA的在运用技术编程便是为了更好地摆脱这类限定而制定的。在运用技术编程对硬件配置规定极低,只需达到FPGA是Cy—clone系列产品,具备Flash元器件,具备上下位机的通讯工作能力,不用提升过多的硬件平台,都能够完成在运用程序编写。假如商品具备互联网作用或无线网络作用,那麼在严酷的工业生产当场和郊外可以免去到当场不断拆装、调节的不便。针对保密产品,此项技术性可以维护专利权,根据互联网升级商品的硬件软件,提升了更新过程中被解决的难度系数。
责编:gt
该文章内容提高散播新技术应用新闻资讯,很有可能有转截/引入之状况,若有侵权行为请联络删掉。