原创 【博客大赛】小梅哥FPGA学习笔记之Altera FPGA使用JIC文件配置固化教程

2016-1-27 17:37 3418 14 15 分类: FPGA/CPLD 文集: FPGA深入学习

    很多做过单片机的朋友都知道,我们在对MCU烧写完程序固件后,那么该程序固件就存储在了该MCU内部。即使MCU断电了再重新上电,程序也能继续运行。这是因为对MCU烧写固件的实质就是将程序固件写入到MCU的片上程序存储器ROM中,而现代的大部分MCU这个ROM都是FLASH存储器。FLASH存储器能够掉电保持数据,所以可以实现掉电程序不丢失。Altera或Xilinx的FPGA芯片,使用的是基于SRAM结构的查找表,而SRAM的一大特性就是掉电数据会丢失,当我们使用JTAG将SRAM配置文件(.sof)配置到FPGA芯片中后,这些数据是直接存储在SRAM结构的查找表中的,因此,一旦芯片掉电,则SRAM中的数据将丢失,再次上电后,SRAM中将不再有有效的数据。这也就是我们常见的,使用JTAG下载SOF固件到FPGA中后,板子重新上电,则之前下载的固件又不在了的原因。当我们的系统做稳定后并量产时,当然希望能够永久保持电路固件,即让FPGA上电后其查找表中就被写入有效的数据。但是我们又不能总是每次系统上电了就用JTAG去下载一次程序固件。因此,FPGA支持另外一种配置方式:主动串行配置。

 

   所谓主动串行配置,就是在FPGA芯片外部放置一片能够掉电数据不丢失的存储器,例如最常见的EPCS、QFLASH、并口FLASH,来存储设计好的电路固件。而FPGA芯片内部,则设计了一个专用的硬件电路,在芯片刚上电的时刻就主动去读取存储在该存储器中的固件,并配置到FPGA芯片的每一个SRAM中去。通过这样一种方式,即可在不改变FPGA芯片SRAM工艺的查找表结构前提下,让每次芯片上电后,都能获得有效的配置数据。外部存储电路配置信息的芯片,我们称之为配置芯片。前些年,Altera的FPGA芯片指明只能使用其公司自己发售的EPCS芯片作为外部配置器件,该EPCS芯片实质就是一个SPI接口的串行FLASH芯片,不过是经过了Altera的严格测试,性能优异。而近些年,随着芯片生产工艺的不断发展,很多其他厂家生产的SPI接口的FLASH芯片也能够达到EPCS的技术标准,因此Altera就放开了该限制,并指出可以使用其他芯片厂家生产的SPI接口的FLASH芯片代替EPCS。我们芯航线starter board上就使用了一片ST公司生产的16Mbit的串行FLASH芯片M25P16来作为配置芯片。该芯片性能优异,完全能够达到EPCS的性能标准,而成本则只有相同容量的EPCS芯片的一半不到。

 

   当我们需要将设计好的配置固件固化到该器件中时,有两种方式,第一种方式,也就是传统的方式是使用专用AS接口(与JTAG 10针接口独立)来直接烧写该配置芯片,该种方式需要在电路板上设置一个独立的AS接口,占用PCB板面积。第二种方式,也是现在流行的方式则是通过JTAG接口,经由FPGA芯片间接烧写该配置芯片。我们的开发板没有做独立的AS接口,因此只支持第二种烧写方式。以下对该种烧写方式以一个实际例子来进行讲解说明。

 

打开希望固化的FPGA设计工程,这里我直接打开按键消抖这节课的工程。

 

在quartus ii软件中点击File—>Convert Programming Files,如下图所示:(温馨提示:点击图片可查看高清大图)
11.jpg

 

在弹出的窗口中,Programming file type 选择JTAG Indirect Configuration File(.jic),Mode选择Active Serial,Configuration device选择EPCS16,File name默认是output_file.jic,这里,我们养成良好的习惯,将其改成工程名字:key_filter.jic。(温馨提示:点击图片可查看高清大图)
22.jpg

 

四、在input files to convert一栏中,点击Flash Loader一项,在右侧点击Add Device选项,如下图所示:(温馨提示:点击图片可查看高清大图)

33.jpg

 

五、点击Add Device选项后在弹出的选项卡中,选择EP4CE10,然后点击OK,如下图所示:(温馨提示:点击图片可查看高清大图)

44.jpg

 

六、点击OK后会回到先前的配置页面,此时再次鼠标点击SOF Data,再点击右侧的Add File,如下图所示:(温馨提示:点击图片可查看高清大图)

55.jpg

 

七、在弹出的窗口中,在output files文件夹下找到“key_filter.sof”文件,点击open,即可添加进来,如下图所示:(温馨提示:点击图片可查看高清大图)

66.jpg

 

八、点击open后,回到配置页面,点击Generate按钮,如下图所示:(温馨提示:点击图片可查看高清大图)

77.jpg

 

九、点击Generate按钮后,则软件开始转换文件,转换成功后弹出成功提示窗口,如下图所示:(温馨提示:点击图片可查看高清大图)

88.jpg

 

十、点击OK即可,然后close窗口。

十一、打开Quartus II中的下载工具programmer,将原有的sof文件移出,重新添加key_filter.jic文件进来,勾选programming/configuration,如下图所示:(温馨提示:点击图片可查看高清大图)

99.jpg

 

十二、设置完成后,点击Start(前提是下载器与开发板已经正确连接),则软件开始烧录固件,整个烧录时间大约花费20秒钟左右。烧录完成后,此时固件已经保存在了配置芯片中,但是此刻FPGA还不能运行该固件,因为当前的固件是存在配置芯片中的,并没有被配置到FPGA中,因此需要让FPGA执行一次从配置芯片中主动配置固件的过程,方法很简单,给开发板断电后重新上电即可。此时,我们按下按键0或者按键1,就可以看到LED的状态发生变化了。断电再上电,固件依旧保持,整个设计固化工作完成。

 

如有更多问题,欢迎加入芯航线 FPGA 技术支持群:472607506


各位朋友,接下来的一年到半年里,小梅哥将持续发布各种原创资料,各位如果对我们的内容感兴趣的,可以选择关注我的博客,这样每次我有新的动态,大家就能收到邮件了。

小梅哥

芯航线电子工作室

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户1849145 2016-1-28 11:51

644398774_263592779 2014-3-30 11:30

JLINK有时候确实令人郁闷
相关推荐阅读
小梅哥 2019-09-04 22:10
小梅哥FPGA时序分析笔记(6.2)深入现象看本质——庖丁解牛之FPGA内数据传输模型
通过上一节,我们了解了FPGA内部数据的传输形式,接下来我们就可以根据上一节的内容来总结一下FPGA内部的数据传输模型了。 时钟和数据传输路径 通过上一节内容中,我绘制的那个FPGA内部数据在逻辑...
小梅哥 2019-09-01 21:28
小梅哥FPGA时序分析笔记(6.1)深入现象看本质——庖丁解牛之FPGA可编程原理
上一次发博客,已经是2个月前了,这中间两个月,干了件很有意义的事情,尤其是对于自己来说,感觉学到了非常多的知识和经验,每天都很忙,忙到没时间逛网站博客,终于忙完闲下来了,连载的事情可不能忘,终于可以书...
小梅哥 2019-07-02 08:57
小梅哥FPGA时序分析笔记(五)I/O约束显神威——深入龙潭
大家一定对我上一节的突然结尾表示一脸茫然:我是来学习时序约束的,然后你告诉我时序约束里面IO约束很重要,然我又跟着你的文章继续往下看,本以为你就要讲如何进行IO约束了,结果呢,你一个取反时钟就把我们打...
小梅哥 2019-06-30 11:07
小梅哥FPGA时序分析笔记(四)I/O时序定成败——化险为夷
小梅哥FPGA时序分析从遥望到领悟系列没有遇见过I/O时序问题,没有通过I/O约束方式实际解决过I/O时序问题,就很难明白I/O约束的重要性,也很难相信各种EDA软件真的有那么的傻白甜。 我遇到的最...
小梅哥 2019-06-22 10:32
小梅哥FPGA时序分析笔记(三)时钟约束真重要——事实说话
小梅哥FPGA时序分析从遥望到领悟系列以前,那是在以前,经常有网友(原谅我行文动不动就是网友说,网友问,毕竟我是卖开发板的,正面接触学FPGA的网友相对多一些,所以这些也都是事实存在的事情)问我:小梅...
小梅哥 2019-06-21 10:33
小梅哥FPGA时序分析笔记(二)时钟质量是生命——初遇时序
小梅哥FPGA时序分析从遥望到领悟系列第一次遇到时序问题并通过相应的手段解决问题,算是2年前做百兆以太网图像传输的时候了吧。当时遇到的问题为:同一个工程,每次编译结果的效果都不一样,有的时候编译了,下...
EE直播间
更多
我要评论
1
14
关闭 站长推荐上一条 /1 下一条