打印
[Quartus]

Altera FPGA程序固化

[复制链接]
4237|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gaochy1126|  楼主 | 2021-5-29 07:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
Altera FPGA程序固化
对MCU进行烧写程序,程序固件被写入MCU的片上存储器ROM中,现代大部分MCU的片上存储器ROM为FLASH存储器,可以实现掉电保持数据,所以可以掉电程序不丢失。
而对于Altera和Xilinx两家的FPGA芯片而言,FPGA芯片是基于SRAM的查找表(LUT),所以当将.sof下载到FPGA芯片中后,这些数据直接存储在SRAM的查找表中,一旦掉电即会丢失数据。解决方案是在FPGA芯片外部放置一片能够掉电不丢失数据的存储器,如常见的EPCS、QFLASH等,在FPGA内部设计一个专用的硬件电路,在芯片刚上电时就主动去读取该存储器中的固件,并配置到FPGA芯片中。
实验环境
Altera DE0-Nano开发板, FPGA型号:EP4CE22F17C6N
不同实验环境只需要更改对应芯片型号即可。
1. 纯硬件(Verilog)固化
(1)打开要固化的工程,编译得到.sof文件。
(2)在Quartus软件中点击File->Convert Programming Files。


(3)在弹出的窗口中,进行下列设置:







(注:此选项取决于开发板上的Flash类型,阿群测试发现手上的开发板可选EPCS16或4,而不能选64)

  • Programming file type选择JTAG Indirect Configuration File(.jic);
  • Mode选择Active Serial;
  • Configuration device选择EPCS16(或EPCS4经测试也能用。对于DE0-Nano开发板,则应选EPCS64),File name改为工程的名字或者保持默认output_files/output_file.jic。
(4)在Input files to convert一栏中,点击Flash Loader一项,在右侧点击Add Device选项。选择Cyclone IV E和EP4CE22
(注:这里我选的是EP4CE10系列FPGA如图





),点击OK。
(5)点击SOF Data一项,在右侧点击Add File,找到本工程目录下编译生成的.sof文件,点击Open。


(6)选中添加的.sof文件,点击Properties,选中Compression,点击OK。








打上对勾,对FPGA程序文件启用压缩存储



(7)点击Generate,





转换成功后会弹出下图所示窗口:




转换成功

(8)在下载之前先到Tools->options下勾选Iniate Confinguration after programming

否则下载完需要掉电才能应用新配置。




(9)打开Programmer,下载刚生成的.jic文件。
(注:





此步骤从Programmer烧写工具窗口的File菜单选择New File,新建一个选项

使用特权

评论回复

相关帖子

沙发
gaochy1126|  楼主 | 2021-5-29 07:58 | 只看该作者
2.硬件(Verilog)+软件(Nios II软核)固化
(1)打开要固化的工程,编译的到.sof文件,打开相应的Nios II软件工程,编译生成.elf文件。为操作方便,将.sof文件复制到Nios II工程目录下。
(2)在Eclipse中,右键点击Nios II工程,选中Nios II->Nios II Commend Shell进入命令系统。当前命令所在文件夹为Nios II工程文件夹下。
(3)将编译得到的.sof文件转换为.flash文件,用到的命令为:
sof2flash --input=<hwimage>.sof --output=hwimage.flash --epcs --verbose
用编译得到的.sof文件名代替<hwinage>.sof
输出.flash文件的文件名即为hwimage.flash
成功转换显示如下图所示:






(4)将编译得到的.elf文件转换为.flash文件,用到的命令为:
elf2flash --input=<elf file>.elf --output=swimage.flash --epcs --after=hwimage.flash --verbose
用编译得到的.elf文件名代替<elf file>.elf
输出.flash文件的文件名即为swimage.flash
成功转换显示如下图所示:






(5) 将两个.flash文件分别转换为.hex文件,用到的命令为:
nios2-elf-objcopy -I srec -O ihex hwimage.flash hwimage.hex
nios2-elf-objcopy -I srec -O ihex swimage.flash swimage.hex
输出.hex文件名分别为:hwimage.hex、swimage.hex。
(6)在Quartus软件中点击File->Convert Programming Files。
(7)在弹出的窗口中,进行下列设置:Programming file type选择JTAG Indirect Configuration File(.jic),Mode选择Active Serial,Configuration device选择EPCS64,File name改为工程的名字或者保持默认。
(8)在Input files to convert一栏中,点击Flash Loader一项,在右侧点击Add Device。依次选择Cyclone IV E EP4CE22,点击OK。
(9)点击SOF Data一项,在右侧点击Remove。
(10)在右侧点击Add Hex Data,选择Relative addressing,依次添加hwimage.hex和swimage.hex。
(11)点击Generate,转换成功后会弹出下图所示窗口:






(12)检查生成的 .map 文件有hwimage.hex在起始地址0x0,swimage.hex文件在hwimage.hex结束地址后的起始地址+1
(13)打开Programmer,下载刚生成的.jic文件。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:这个社会混好的两种人:一是有权有势,二是没脸没皮的。

1051

主题

11300

帖子

26

粉丝