2 Flash Programmer简介
NiosII IDE提供了Flash Programmer工具来对目标板上遵循通用Flash接口(Common Flash Interface,简称CFI),规范的Flash及EPCS配置器件进行编程。IDE的FlashProgrammer通过使用Altera的下载电缆能够方便地对目标板上连接在FPGA上的Flash及串行配置器件EPCS进行编程。
2.1 Flash Programmer编程工作过程
NiosII的IDE Flash Programmer采用两步骤将数据写入Flash中。第一步,用一个Altera提供的特殊Flash编程设计(Flash Programmer Design)对FPGA进行配置;第二步,IDEFlash Programmer将要编程到Flash中的文件内容传送到在FPGA上运行的Flash编程设计,然后Flash编程设计将接收到的数据编写到Flash中。其编程工作过程如图1所示。
2.2 Flash编程设计
Flash编程设计实际就是一个由SoPC Builder系统生成的最小FPGA设计。Flash编程设计是IDE Flash Programmer的关键组成部分。不同的目标板往往使用不同的Flash器件,并且Flash与FPGA的引脚连接以及FPGA的型号也不相同。因此,每个Flash编程设计都是与具体的目标板相联系的,不能用于其他的目标板。如果使用自己的目标板,那么设计者必须创建该目标板的Flash编程设计。Altem公司的Nios开发板都提供了相应的Flash编程设计,可以在NiosII开发套件安装目录的、ipnios2_ip文件夹中找到。
2.3 Flash编程设计信息
目标板Flash编程设计描述了系统与目标板之间的关系。目标板Flash编程设计对Flash编程必不可少,它提供了Flash Programmer对Flash编程所需的全部信息。一个目标板Flash编程设计是一组SOPC Builder文件,其中必须指明FPGA与Flash的连接关系。一个目标板Flash编程设计包含下列信息:①每一个连接到电路板FPGA上的F1ash的参考元件标号,如U7,U7Flash,U3EPCS等;②Flash器件在F1ash编程设计中的基地址;③用于配置目标板上FPGA的Flash编程设计的SOF文件。
参考元件标号用于区分设计中不同的Flash器件。目标板上的Flash器件在设计时的命名和基地址可能不同,但参考元件标号总是相同的。
3 目标板Flash编程设计的创建
用户自制目标板,而在Target选项区中的Board下拉列表框中没有相应的目标板Flash编程设计,用户就必须自己创建目标板Flash编程设计。
3.1目标板Flash编程设计文件创建
下面以QuaausII 7.0为例,详细说明目标板Flash编程设计的创建。目标板Flash编程设计在SoPC Builder中实现。在QuaausII中新建一个工程,在[Tools]菜单中选择[SoPC Builder],打开Ahera SOPC Builder图形编辑界面环境。在SoPC Builder图形编辑界面中,在[File]菜单中选择[New Board Description],打开Board Description Editor对话框,在此对话框中选择NetList页面,在Device Familv栏中正确选择目标板的FPGA系列,这里以Cyclone II为例,如图2所示。
选择Flash Memory页面,单击New Flash Memory按钮添加目标板的Flash器件,并输入正确的连接到目标板FPGA的参考元件标号和Flash器件类型。参考元件标号可命名为用户的任意字符串,如U7,EPCS,Flash等,但不能命名成U7(CFIFlash),U3(EPCS)等形式。再单击此页面的New HardwareImage按钮,指定FPGA硬件配置程序的存储位置,一般选择EPCS器件。如果设置为Flash器件,需要有相应的外部控制器、单片机或CPLD配合使用。设置如图3所示。
FPGA硬件配置可放在NOR Flash中,也可放在EPCS中。在Hardware Image Name栏下输入硬件配置映像的名称,如epcs,user,factory等。对于每一个Hardware Image Name,都要选择一个用来存储的Flash。如果用户设计中,即采用EPCS,又采用NOR Flash对FPGA的配置数据进行存储,则可在Hardware Image Name栏下输入两个硬件配置映像名,如user,factory,然后分别指定为前面的参考元件标号;对于offset栏的设置,如果对应的Device栏为Flash器件,则可以指定硬件映像在Flash中的编程偏移地址;如果对应的Device栏为EPCS器件,则不能在offset栏中指定偏移地址。最后选择Files页面,输入Board Description Name,Version和System Template,单击Finish按钮完成目标板Flash编程设计的创建,如图4所示。