芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 8799|回复: 2

FPGA固件存储方案

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 428

    主题

    811

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    16109
    QQ
    发表于 2019-6-13 16:16:24 | 显示全部楼层 |阅读模式

    2.3 FPGA设计的烧写与投产

    [1.1.1 ]()[FPGA]()固件存储方案

    Intel或Xilinx的FPGA芯片,使用的是基于SRAM结构的查找表,而SRAM的一大特性就是掉电数据会丢失,当使用JTAG将SRAM配置文件(.sof)配置到FPGA芯片中后,这些数据是直接存储在SRAM结构的查找表中的,因此,一旦芯片掉电,则SRAM中的数据将丢失,再次上电后,SRAM中将不再有有效的数据。而普通的MCU内部集成了片上程序存储器ROM,即使掉电后也能保存程序。这也就是常见的,使用JTAG下载SOF固件到FPGA中后,板子重新上电,则之前下载的固件又不在了的原因。

    当系统设计完成并验证结束后,准备量产时,希望FPGA能够永久保持电路固件,即让FPGA上电后其查找表中就被写入有效的数据。但是又不能总是每次系统上电后就用JTAG去下载一次程序固件。因此,FPGA支持另外一种配置方式:主动串行配置(AS)。

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

    1.1.2 [Cyclone IV E FPGA]()固件烧写方案

    当需要将设计好的配置固件固化到该器件中时,有两种方式。第一种方式,也就是传统的方式,是使用专用AS接口(与JTAG 10针接口独立)来直接烧写该配置芯片,该种方式需要在电路板上设置一个独立的AS接口,占用PCB板面积较大,使用起来不方便。第二种方式,也是现在流行的方式则是通过JTAG接口,经FPGA芯片间接烧写配置芯片,其电路如图 2.3‑1所示。AC620开发板没有设计独立的AS接口,因此只支持第二种烧写方式。

    [图 ]()2.3‑1 JTAG接口电路图

    [1.1.3 ]()[烧写文件JIC]()的产生

    以下将对第二种烧写方式以一个实际例子来进行讲解说明。

    1打开希望固化的FPGA设计工程,此处以本节的工程为例。

    2在Quartus II软件中点击File—>Convert Programming Files,如图 2.3‑2所示:

    [图 ]()2.3‑2 启动Convert Programming Files

    3在弹出的窗口中,Programming file type 选择JTAG Indirect Configuration File(.jic),Mode选择Active Serial,Configuration device选择EPCS16,File name默认是output_file.jic,这里,我们养成良好的习惯,将其改成工程名字:led_test.jic,如图 2.3‑3所示。

    [图 ]()2.3‑3 转换配置

    4在Input files to convert一栏中,点击Flash Loader一项,在右侧点击Add Device选项,如图 2.3‑4所示:

    [图 ]()2.3‑4 转换选项

    5在上一步弹出的选项卡中,选择Cyclone IV E下的EP4CE10(AC620开发板上的芯片为EP4CE10F17C8,可根据实际情况进行选择),然后点击OK,如下图 2.3‑5所示:

    [图 ]()2.3‑5 选择器件

    6.点击OK后会回到先前的配置页面,此时鼠标再次点击SOF Data,再点击右侧的Add File,如图 2.3‑6所示:

    [图 ]()2.3‑6添加需要转换的sof文件

    7.在弹出的窗口中,在工程生成的output files文件夹下找到“key_filter.sof”文件,点击Open,即可添加进来,如图 2.3‑7所示:

    [图 ]()2.3‑7 添加需要转换的sof文件

    8.点击Open后,回到配置页面,点击Generate按钮,如图 2.3‑8所示:

    [图 ]()2.3‑8 生成jic文件

    9.点击Generate按钮后,软件开始转换文件,转换成功后弹出成功提示窗口,如图 2.3‑9所示:

    [图 ]()2.3‑9 生成jic文件成功

    10.点击OK即可,然后close窗口。 [attach]1335[/attach] 11.打开Quartus II中的下载工具Programmer,将原有的sof文件移出,点击Add Files重新添加Output Files文件夹下的led_test.jic文件进来,勾选Programming/Configuration,如图 2.3‑10所示:

    [图 ]()2.3‑10 下载jic文件

    12.设置完成后,点击Start(确保此时下载器与开发板已经正确连接),则软件开始烧录固件,整个烧录时间大约花费20秒钟左右。

    烧录完成后,此时固件已经保存在了配置芯片中,但是此刻FPGA还不能运行该固件,因为当前的固件是存储在配置芯片中的,并没有被配置到FPGA中,因此需要让FPGA主动执行一次从配置芯片中配置固件的过程,方法很简单,只需开发板断电后重新上电即可。

    此时,使用杜邦线分别接触不同的电平值,就可以看到LED的状态发生变化。断电再上电,固件依旧保持,整个程序固化工作完成。

    至此一个基本的FPGA设计开发流程介绍完毕,在后面的章节中会继续介绍FPGA[]()[开发流程中更多的细节问题]()

    y�\MhJ�

    2.3-1.png
    2.3-2.png
    2.3-3.png
    2.3-4.png
    2.3-5.png
    2.3-6.png
    2.3-7.png
    2.3-8.png
    2.3-10.png
    untitled1.png
    fakename.png
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2021-5-5 09:16
  • 10

    主题

    26

    帖子

    390

    积分

    中级会员

    Rank: 4

    积分
    390
    发表于 2020-3-18 23:50:29 | 显示全部楼层
    请问下下载后的固件如何擦除呢?是编写flash擦除程序擦除吗
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 428

    主题

    811

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    16109
    QQ
     楼主| 发表于 2021-11-18 11:53:58 | 显示全部楼层
    你好,我试试粘贴上传图片
    fakename.png

    如何使用呢?
    untitled2.png

    好的,测试很好用,谢谢

    untitled3.png
    untitled1.png
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-11-23 15:56 , Processed in 0.119314 second(s), 36 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表