alteraFPGA程序固化问题.docx_第1页
alteraFPGA程序固化问题.docx_第2页
alteraFPGA程序固化问题.docx_第3页
alteraFPGA程序固化问题.docx_第4页
alteraFPGA程序固化问题.docx_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

近来在用NIOS2完成一个项目,遇到一个奇葩问题:前些天,用Quartus II 11.0 配合 Qsys搭建了NIOS2 Project,程序调好了,打算用板子上的EPCS64N 固化一下代码。首先,把 NIOS2的Reset Vector设置为EPCS基地址,EPCS基地址则配置为0x00,然后在NIOS2中导出EPCS的四个引脚DCLK,SDO,SCE,DATA0并且连接和分配,再把Dual-Pourpose Pin 都设置为Regular I/O Pins。然后使用的是 EDS 11.0,用EDS 11.0的 NIOS2 Flash Programmer,可以识别CPU ID(Name ,Timestamp都OK),发现可以正常擦出和烧写程序,但是奇怪的事情是,Run as Hardware NIOS2 程序 可以正常运行。EDS11 Flash Programmer 烧写之后,FPGA的硬逻辑部分可以正常运行,NIOS2 的软逻辑(ELF文件生成的flsh)部分却始终无法执行,断电重启,复位都不好使,心拔凉拔凉的按照别人帖子和Altera官方的JIC格式转化下载,同样还是NIOS2逻辑无法运行,以至于整个人都不好了。后来发现很多人都遇到这个奇葩问题,开始怀疑是软件的bug(因为不少人提到),后来把Quartus 11,12.1,13.0都遍历一个遍,还是没有解决今天,决定不用Quartus 11 的Qsys了,随便用SPPC Builder配置了一个系统,发现竟然可以烧写了成功了,NIOS2程序部分可以正常执行了这尼玛太让我抓狂了我感觉是Qsys有bug,为毛SOPC下使用 NIOS2 IDE就可以正常烧写,这说明我的硬件没有问题。唯一区别就是,SOPC的ECPS可以正常烧写和启动,但是Qsys搭建的系统在EPCS烧写下就boot不起来了Nios II下载程序到串行配置芯片EPCS方法:1 在SOPC Builder内添加epcs_controller模块,将cpu的reset地址设置在epcs_controller上2 重新编译Quartus3 在Nios II IDE里将system library的Program memory(.text)和Read_only data memory(.rodata)设置为onchip_mem或者sdram,编译。4 下载sof文件到板子5 进入Nios II IDE,在Tool菜单下选择FLASH Programmer,选择要下载的工程和与工程配套的.sof文件一起下载到EPCS中,注意一定要同时选择两个一起下载,hardware image选择custom即可,memory选择epcs controller。系统会自动分配地址。如果不选择同时下载配置文件,会出现提示。Nios II下载程序到CFI FLASH,配置文件到串行配置芯片EPCS的方法:1 在SOPC Builder内添加CFI_FLASH模块,将cpu的reset地址设置在CFI_FLASH上2 重新编译Quartus3 在Nios II IDE里将system library的Program memory(.text)和Read_only data memory(.rodata)设置为onchip_mem或者sdram,编译。4 下载sof文件到板子5 进入Nios II IDE,在Tool菜单下选择FLASH Programmer,选择要下载的工程到CFI FLASH里,配置程序下载到EPCS中(也可以不加epcs_controller模块,通过POF方式固化配置程序)不用AS接口,用JTAG口配置EPCS器件,具体步骤如下:1 在Quartus中打开工程,编译生成配置文件.sof2 选择File-Convert Programming Files,调出Convert Programming Files对话框3 Ouput programming file 对话框内,Programming file type选择JTAG Indirect Configuration File(.jic);4 Configuration device 选择使用的配置芯片,如EPCS165 File name填写输出文件名称,如output_file.jic6 Input files to convert 对话框内,选中Flash Loader,点击Add Device按钮,在弹出对话框中选择你的FPGA芯片7 选中SOF DATA,点击Add file按钮,在弹出的资源浏览器中找到并选中.sof文件,打开它8 点击generate按钮生成output_file.jic9 打开Quartus的Programmer对话框,选择JTAG模式10 点击add file按钮,选择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)等配置器件来完成,在PS配置期间,配置数据从外部储存部件,通过DATA0引脚送入FPGA。配置数据在DCLK上升沿锁存,1个时钟周期传送1位数据。(见附图)JTAG接口是一个业界标准,主要用于芯片测试等功能,使用IEEE Std 1149.1联合边界扫描接口引脚,支持JAM STAPL标准,可以使用Altera下载电缆或主控器来完成。AS PS JTAG的区别:AS模式: 烧到FPGA的配置芯片里保存的,FPGA器件每次上电时,作为控制器从配置器件EPCS主动发出读取数据信号,从而把EPCS的数据读入FPGA中,实现对FPGA的编程;PS模式:EPCS作为控制器件,把FPGA当做存储器,把数据写人到FPGA中,实现对FPGA的编程。该模式可以实现对FPGA在线可编程;JTAG:直接烧到FPGA里面的,由于是SRAM,断电后要重烧;.pof文件可以通过AS方式下载(保证byteblasterII/usb blaster连接正确);.sof文件或者转换的.jic可以通过JTAG方式下载。 FPGA在正常工作时,它的配置数据存储在SRAM中,加电时须重新下载。在实验系统中,通常用计算机或控制器进行调试,因此可以使用PS。在实用系统中,多数情况下必须由FPGA主动引导配置操作过程,这时FPGA将主动从外围专用存储芯片中获得配置数据,而此芯片中fpga配置信息是用普通编程器将设计所得的pof格式的文件烧录进去。专用配置器件:epc型号的存储器常用配置器件:epc2,epc1,epc4,epc8,epc1441(现在好象已经被逐步淘汰了)等对于cyclone cycloneII系列器件,ALTERA还提供了针对AS方式的配置器件,EPCS系列.如EPCS1,EPCS4配置器件也是串行配置的.注意,他们只适用于cyclone系列.除了AS和PS等单BIT配置外,现在的一些器件已经支持PPS,FPS等一些并行配置方式,提升配置了配置速度。当然所外挂的电路也和PS有一些区别。还有处理器配置比如JRUNNER 等等,如果需要再baidu吧,至少不下十种。比如Altera公司的配置方式主要有Passive Serial(PS),Active Serial(AS),Fast Passive Parallel(FPP),Passive Parallel Synchronous(PPS),Passive Parallel Asynchronous(PPA),Passive Serial Asynchronous(PSA),JTAG等七种配置方式,其中Cyclone支持的配置方式有PS,AS,JTAG三种.一般在做FPGA实验板,(如cyclone系列)的时候,用AS+JTAG方式,这样可以用JTAG方式调试,而最后程序已经调试无误了后,再用 AS模式把程序烧到配置芯片里去,关于工程中不同后缀名的文件的适用范围:sof(SRAM Object File)当直接用PS模式下将配置数据下到FPGA里用到,USB BLASTER,MASTERBLASER,BBII,BBMV适用,quartusII会自动生成,所有其他的配置文件都是由sof生成的.pof(Programmer Object File)也是由quartusII自动生成的,BBII适用,AS模式下将配置数据下到配置芯片中rbf(Raw Binary File)用于微处理器的二进制文件.在PS,FPP,PPS,PPA配置下有用处rpd(Raw Programing Data File)包含bitstream的二进制文件,可用AS模式配置,只能由pof文件生成hex(hexadecimal file)这个就不多说了,单片机里很多ttf(Tabular Text File)适用于FPP,PPS,PPA,和bit-wide PS配置方式sbf(Serial Bitstream File)用PS模式配置Flex 10k和Flex6000的 基于JTAG和Flash Programmer的NIOS II工程代码固化烧录 2014-05-28 20:04发表 系统分类:可编程逻辑 自定义分类:默认 标签:jtag flash基于JTAG和Flash Programmer的NIOS II工程代码固化烧录5.10.1 概述 Quartus II硬件工程会产生一个.sof的下载文件,通常用于JTAG在线下载调试。如果把这个文件转化为.pof文件可通过AS接口对FPGA的配置芯片(通常是一片FLASH,小规模器件的FLASH一般会选择接口简单、体积较小的SPI FLASH)进行固化;也可以将.sof转化为.jic,仍然使用JTAG接口进行配置芯片的固化。而NIOS II软件工程会产生一个.elf文件,由于软件必须依赖于硬件.sof文件的配置才能够运行,因此软件工程产生的.elf通常必须和.sof文件一起固化到配置芯片中,它们的固化烧录则需要在Qsys中添加一个名为EPCS Controller的组件来完成。这个EPCS Controller顾名思义就是EPCS芯片的控制器,这是由于Altera原厂提供的SPI FLASH就命名为EPCS,如1Mbits容量的EPCS1、4Mbits容量的EPCS4等。而这个EPCS芯片其实和市场上各种SPI FLASH其实完全兼容,出于采购方便和成本考虑,一般设计应用会选择购买兼容的SPI FLASH来提到EPCS芯片,如我们SF-CY3板载的就是一颗Micron的M25P40。大家不要担心,M25P40和EPCS4是完全兼容,不存在任何以次充好的嫌疑,Micron和三星是存储器行业的老大,弄不好Altera也是买的它们的die封装下忽悠咱们呢。好了,言归正传,回到这个EPCS Controller的功能上来,它的一个功能是配合EDS的Flash Programmer将我们工程产生的.sof和.elf烧录到配置芯片中。那么大家可就纳闷了,它既然老实现这个功能,势必它必须在FPGA中先跑起来。没错,在我们使用Flash Programmer前,我们通常都需要使用JTAG在线烧录.sof文件到FPGA中,这样我们就可以借助已经运行起来的EPCS Controller进行配置芯片的固化操作了。此外,已经固化好的EPCS Controller也在整个NIOS II系统软件启动过程中扮演Boot-Loader的角色。如图所示,我们可以先了解一下基于NIOS II应用的FPGA系统的启动过程,由于我们已经使用Flash Programmer将FPGA的.elf软件和.sof硬件配置bits流固化在了配置芯片中。当FPGA上电时,和没有软件的FPGA器件一样,FPGA

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论