近来在用NIOS2完成一个项目,遇到一个奇葩问题:前些天,用QuartusII11.0配合Qsys搭建了NIOS2Project,程序调好了,打算用板子上的EPCS64N固化一下代码。首先,把NIOS2的ResetVector设置为EPCS基地址,EPCS基地址则配置为0x00,然后在NIOS2中导出EPCS的四个引脚DCLK,SDO,SCE,DATA0并且连接和分配,再把Dual-PourposePin都设置为RegularI/OPins。然后使用的是EDS11.0,用EDS11.0的NIOS2FlashProgrammer,可以识别CPUID(Name,Timestamp都OK),发现可以正常擦出和烧写程序,但是……奇怪的事情是,RunasHardwareNIOS2程序可以正常运行。EDS11FlashProgrammer烧写之后,FPGA的硬逻辑部分可以正常运行,NIOS2的软逻辑(ELF文件生成的flsh)部分却始终无法执行,断电重启,复位都不好使,心拔凉拔凉的……按照别人帖子和Altera官方的JIC格式转化下载,同样还是NIOS2逻辑无法运行,以至于整个人都不好了。后来发现很多人都遇到这个奇葩问题,开始怀疑是软件的bug(因为不少人提到),后来把Quartus11,12.1,13.0都遍历一个遍,还是没有解决……今天,决定不用Quartus11的Qsys了,随便用SPPCBuilder配置了一个系统,发现竟然可以烧写了成功了,NIOS2程序部分可以正常执行了……这尼玛太让我抓狂了……我感觉是Qsys有bug,为毛SOPC下使用NIOS2IDE就可以正常烧写,这说明我的硬件没有问题。唯一区别就是,SOPC的ECPS可以正常烧写和启动,但是Qsys搭建的系统在EPCS烧写下就boot不起来了……NiosII下载程序到串行配置芯片EPCS方法:1在SOPCBuilder内添加epcs_controller模块,将cpu的reset地址设置在epcs_controller上2重新编译Quartus3在NiosIIIDE里将systemlibrary的Programmemory(.text)和Read_onlydatamemory(.rodata)设置为onchip_mem或者sdram,编译。4下载sof文件到板子5进入NiosIIIDE,在Tool菜单下选择FLASHProgrammer,选择要下载的工程和与工程配套的.sof文件一起下载到EPCS中,注意一定要同时选择两个一起下载,hardwareimage选择custom即可,memory选择epcscontroller。系统会自动分配地址。如果不选择同时下载配置文件,会出现提示。NiosII下载程序到CFIFLASH,配置文件到串行配置芯片EPCS的方法:1在SOPCBuilder内添加CFI_FLASH模块,将cpu的reset地址设置在CFI_FLASH上2重新编译Quartus3在NiosIIIDE里将systemlibrary的Programmemory(.text)和Read_onlydatamemory(.rodata)设置为onchip_mem或者sdram,编译。4下载sof文件到板子5进入NiosIIIDE,在Tool菜单下选择FLASHProgrammer,选择要下载的工程到CFIFLASH里,配置程序下载到EPCS中(也可以不加epcs_controller模块,通过POF方式固化配置程序)不用AS接口,用JTAG口配置EPCS器件,具体步骤如下:1在Quartus中打开工程,编译生成配置文件.sof2选择File->ConvertProgrammingFiles,调出ConvertProgrammingFiles对话框3Ouputprogrammingfile对话框内,Programmingfiletype选择JTAGIndirectConfigurationFile(.jic);4Configurationdevice选择使用的配置芯片,如EPCS165Filename填写输出文件名称,如output_file.jic6Inputfilestoconvert对话框内,选中FlashLoader,点击AddDevice按钮,在弹出对话框中选择你的FPGA芯片7选中SOFDATA,点击Addfile按钮,在弹出的资源浏览器中找到并选中.sof文件,打开它8点击generate按钮生成output_file.jic9打开Quartus的Programmer对话框,选择JTAG模式10点击addfile按钮,选择output_file.jic文件,并将Program复选框上打勾11确定好JTAG电缆后,点击start,Quartus会先配置FPGA,然后再对FPGA烧写配置芯片主动配置方式(AS)和被动配置方式(PS)和最常用的(JTAG)配置方式:AS由FPGA器件引导配置操作过程,它控制着外部存储器和初始化过程,EPCS系列.如EPCS1,EPCS4配置器件专供AS模式,目前只支持Cyclone系列。使用Altera串行配置器件来完成。Cyclone期间处于主动地位,配置期间处于从属地位。配置数据通过DATA0引脚送入FPGA。配置数据被同步在DCLK输入上,1个时钟周期传送1位数据。(见附图)PS则由外部计算机或控制器控制配置过程。通过加强型配置器件(EPC16,EPC8,EPC4)等配置器件来完成...