收藏 分销(赏)

altera FPGA程序固化问题.docx

上传人:pc****0 文档编号:6112061 上传时间:2024-11-28 格式:DOCX 页数:6 大小:47.06KB 下载积分:10 金币
下载 相关 举报
altera FPGA程序固化问题.docx_第1页
第1页 / 共6页
altera FPGA程序固化问题.docx_第2页
第2页 / 共6页


点击查看更多>>
资源描述
近来在用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 重新编译Quartus 3 在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 重新编译Quartus 3 在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中打开工程,编译生成配置文件.sof 2 选择File->Convert Programming Files,调出Convert Programming Files对话框 3 Ouput programming file 对话框内,Programming file type选择JTAG Indirect Configuration File(.jic); 4 Configuration device 选择使用的配置芯片,如EPCS16 5 File name填写输出文件名称,如output_file.jic 6 Input files to convert 对话框内,选中Flash Loader,点击Add Device按钮,在弹出对话框中选择你的FPGA芯片 7 选中SOF DATA,点击Add file按钮,在弹出的资源浏览器中找到并选中.sof文件,打开它 8 点击generate按钮生成output_file.jic 9 打开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本身会加载逻辑部分的配置数据,即我们的.sof配置数据;FPGA逻辑允许起来后,EPCS Controller也就准备就绪,那么它里面的Boot-Loader代码就会去执行从配置芯片搬运软件代码的工作,这样软件代码就在已经运行起来的硬件系统中跑起来了。整个过程大体就是这样。 …… 5.10.1 软件工程移植设置和Flash Programmer下载操作 ……   由于图片较多,文件较大,请大家到以下的百度网盘下载: 《SF-CY3 FPGA套件开发指南Ver7.04 (by特权同学).pdf》5.10小节:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 行业资料 > 医学/心理学

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服