一、概述
EPCS系列器件属于串行Flash器件,具有掉电非易失性,常用作Altera公司的FPGA的周边器件,存储FPGA的配置数据。尤其在NiosII系统中,集成有EPCS serial flash controller core,利用这个控制接口不但可以将FPGA的配置数据存储在内部,也可以将用户数据存储在内部,下面展示了EPCS serial flash controller core的功能:
从中可以看出,EPCS器件中存储分为两个部分一部分是config memory,用于存储FPGA的配置数据,另一部分是General-Purpoe Memory用于存储用户数据;
另外关于EPCS的引脚和FPGA之间的连接,官方手册是这样描述的:
In all Altera device families except Cyclone III and Cyclone IV,the EPCS serial flash controller core does not create any I/O ports on thetop-level Qsys system module. When you compile the Qsys system in the QuartusII software, the EPCS serial flash controller core signals are routedautomatically to the device pins for the EPCS device.
在Qsys窗口中配置系统时,一定要将EPCS Controller模块的rest连接到CPU模块,否则Flash编程时会出现无法读取EPCS寄存器的错误,这个问题困扰了我好久才解决;
二、带NiosII内核的程序下载方式:
注意:下载配置文件(.sof和.elf)到EPCS里面之前必须先通过Quartuars将.sof文件下载到FPGA中,它起到一个配置引导作用,将.elf文件和.sof文件通过JTAG接口下载在FPGA中然后传送至EPCS中,要注意这和AS下载模式的区别,AS下载模式(如下载.pof或.jic文件)是通过AS接口直接将配置文件下载到EPCS中,配置过程不需要FPGA的参与;换句话说,NiosII SBT的flash 编程相当于通过JTAG接口间接的将配置文件下载到EPCS中,然后上电运行;
1)关于编程文件格式:
à.sof文件:.sof被称为“硬件”或“固件”文件,JTAG下载方式,掉电丢失;
à.pof文件:.pof被称为“硬件”或“固件”文件,AS(Active Slave)下载方式,掉电不丢失;
à.jic文件:JTAG(Indirection Configuration File) 为间接配置文件,可由.sof文件转换而来,下载到串行方式的Flash中,即EPCS系列,掉电不丢失;
à.elf文件:.elf被称为 “软件”文件,原文件为C代码,该文件不能单独运行,必须与“硬件”文件一起下载才能运行;
2)Flash编程方式:
à在Nios II SBT环境中,点击NiosII—>Flashprogrammer;
à在弹出的NiosII Flash Programmer界面点击File—>new,然后添加硬件配置文件,如下图所示:
à更新连接,如果Sys ID和Systimestamp不匹配,则会连接失败,可点击connections,屏蔽掉校验,则连接正常;然后添加.sof文件和.elf文件,最后点击Start即可。
说明:利用Flash编程,在Qsys系统中必须添加EPCS控制模块并将其复位引脚连接至CPU;另外EPCS的引脚不需要引出,一般FPGA会自动连接到专用引脚上(除了Cyclone III和IV系列可以引出引脚,详情见手册);
如果是Win10或者win8系统可能还会出现1 [main] bash 33460 find_fast_cwd: WARNING: Couldn'tcompute FAST_CWD pointer. Please reportthis problem to the public mailing list cygwin@cygwin.com这样的错误提醒,但好像对过程没有影响,暂且不去理睬,网上说的cygwin版本导致的,下载更新替换就行了,但是测试会出现更多问题,暂时不予理睬。
3)基于.jic的Flash配置方式:
网上小梅歌介绍了另一种新的配置方式(https://www.cnblogs.com/xiaomeige/p/5366512.html),将.sof和.elf文件转换成一个.jic文件,然后通过AS接口将.jic文件配置到EPCS当中,不过该方式我暂时测试未通过,后续;