10499|14

6423

帖子

16

TA的资源

版主

楼主
 

8月原创【FPGA 烧写器】 [复制链接]

 
当我们在产品中使用FPGA时,我们大概有以下几种方式来进行量产,1、使用USB blaster进行烧写;2、使用烧写器进行烧写,将flash烧写后进行贴片焊接; 3、进行板上烧写;4、使用被动加载方式,不需要提前对fpga进行量产。
第一种方式使用usb blaster,这种方式是在进行调试时使用的烧写方法,不太适合批量生产使用,而且对于有高度要求的场合不可能在最终产品上焊接牛角座来进行烧写。
第二种方式使用先烧写器对flash进行烧写,然后进行贴片焊接,这是一种比较常用的方法。
第三种方式进行板上烧写,这有一个前提就是板上不仅有fpga还有其他MCU等,而且要占用MCU的一部分引脚(SPI和GPIO),对于板上有MCU而且GPIO资源够用的情况下简直是不二选择。而且该方法便于在线更新升级。
第四种方式就要求必须要有MCU的支持,每次上电时对FPGA进行数据配置,这种方式可以节约FPGA的配置flash,但缺点是需要每次上电都进行配置,当配置数据比较大时(很多都上M)配置时间显然有些长。这种方式一般是将FPGA的工程比特文件放在MCU片内,在量产MCU时一起烧写。
这里不讨论第一种和第四种方式了,简要来说一下第二种和第三种方式。其实这两种方式有些相似之处,第三种方式的相当于实现了一个板上烧写器的功能,相当于每块板子都带了一个烧写器。也可以说我们的第三种方式将MCU拿下来就可以做一个烧写器。一言以蔽之,我们这里讲的是做一个altera FPGA所使用flash的烧写器。
烧写器重点分为以下几块工作:1、用于量产的上位机程序,主要负责将工程比特文件下发给下位机; 2、下位机MCU对量产功能的支持;
上位机程序可以使用USB或者串口方式下发数据,如果要做一个单独的烧写器那么肯定要选USB了,这个速度比较快。这一块没什么好说的。
FPGA配置的flash,一般都是SPI接口,比如EPCS,因此MCU要支持SPI接口,单独的烧写器肯定要选择一款带有SPI接口的MCU,板载的就有没有可能选择性就小多了,不过这都无所谓,只要有GPIO就可以使用模拟SPI。

各个系列略有不同,这里给出一个Cyclone III/IV的示意图


Pin Descriptions for FPGA Configuration from SPI Flash


这是FPGA从flash主动配置的管教功能描述,这不是我们关心的,我们只关心fpga什么状态下我们可以对flash进行操作,不影响fpga功能。如果要进行在线升级什么的这是要考虑的。对于单独的烧写器那就不关fpga什么事了。nCONFIG拉低将使FPGA已经配置的数据丢失,所有IO管脚呈三态。当拉高时fpga重新配置数据,如果要复位fpga可以使用这个引脚。 接下来是我们下位机的软件处理流程(对于板载烧写)。1. 将FPGA nCONFIG拉低2. 将从上位机接受到的数据从flash 0地址开始顺序写入3. 将与FPGA nCONFIG连接的GPIO设置为高阻态或输入态,将与flash连接的SPI所有接口设置为高阻态或输入态。  那么,我们需要烧写什么格式的工程文件呢,使用usb blaster时AS模式使用pof文件,JTAG模式时使用jic或者sof文件。那么我们使用我们自己的烧写器使用什么文件呢?答案是rbf(Raw Binary File)文件!无论什么格式的文件下载最后下载到FPGA的文件都是rbf的原始二进制文件。因为FPGA上电,无论工程系统大小都会初始化整片FPGA,所以对于同一款FPGA,无论设计大小最后的烧写文件大小都是固定的。 如何得到rbf文件呢?请移步这里https://bbs.eeworld.com.cn/thread-421829-1-1.html,将这个帖子中选择生成jic的那一步改为选择rbf文件。

到这里,将rbf文件烧写进norflash就能使FPGA配置起来吗?NO.虽然我们的flash是MSB(Most Significant Bit)模式,SPI接口也是MSB模式,但是我们的烧写结果要求我们是以LSB(Least Significant Bit)形式存在。即写入flash时我们需要将rbf文件的每个byte高地位反转然后按MSB模式写入,也可以将SPI接口修改为LSB模式。这个秘密是怎么发现的呢?开始在网上查找资料只提到烧写rbf文件,但将rbf文件写入后FPGA并不能配置起来。这时候我们用usb blaster烧录flash一个工程,然后通过MCU将数据读出,经过对比发现读出的数据是rbf文件高地位反转之后的数据。这才发现这个惊天秘密。之前有网友不知道如何生成烧写的bin文件https://bbs.eeworld.com.cn/thread-450142-1-1.html是不是有了答案呢?
说的乱七八糟,总结一下:
单独烧写器:使用MCU烧写rbf文件LSB格式数据到flash

板载烧写:使用MCU烧写rbf文件LSB格式数据到flash,烧写时拉低nCONFIG,烧写完成后拉高nCONFIG






此帖出自FPGA/CPLD论坛

最新回复

已解决,还需要拉高nCE, 配置管脚才会变成三态  详情 回复 发表于 2017-12-15 17:46

赞赏

3

查看全部赞赏

点赞 关注(2)
个人签名training
 

回复
举报

581

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
此帖出自FPGA/CPLD论坛
个人签名Net:Wxeda.taobao.com
QQ:1035868547
Blog:https://home.eeworld.com.cn/space-uid-390804.html
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

板凳
 
赞一个~
此帖出自FPGA/CPLD论坛
个人签名construction complete!
 
 
 

回复

954

帖子

0

TA的资源

纯净的硅(初级)

4
 
赞。。。。
此帖出自FPGA/CPLD论坛
 
 
 

回复

6423

帖子

16

TA的资源

版主

5
个人签名training
 
 
 

回复

1891

帖子

2

TA的资源

纯净的硅(中级)

6
 
我是来学习的。。。。。
此帖出自FPGA/CPLD论坛

点评

共同学习  详情 回复 发表于 2015-8-22 14:15
个人签名
分享铸就美好未来。。。




 
 
 

回复

6423

帖子

16

TA的资源

版主

7
 
574433742 发表于 2015-8-22 13:05
我是来学习的。。。。。

共同学习
此帖出自FPGA/CPLD论坛
个人签名training
 
 
 

回复

2

帖子

0

TA的资源

一粒金砂(初级)

8
 
好复杂(@_@)
这一篇要收藏
等学多一点东西之后再来看
此帖出自FPGA/CPLD论坛
 
 
 

回复

105

帖子

0

TA的资源

一粒金砂(中级)

9
 
对于epcs器件应该怎么操作啊
此帖出自FPGA/CPLD论坛

点评

altera有相关的文档,基本上和nor flash命令都是一样的,走spi接口  详情 回复 发表于 2016-12-20 21:22
 
 
 

回复

6423

帖子

16

TA的资源

版主

10
 
chunlei9924 发表于 2016-12-20 21:16
对于epcs器件应该怎么操作啊

altera有相关的文档,基本上和nor flash命令都是一样的,走spi接口
此帖出自FPGA/CPLD论坛
个人签名training
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

11
 
你好。我现在想远程在线升级FPGA,通过MCU控制FPGA和EPCS。现在的问题是,MCU只需要拉低FPGA的nCONFIG,就可以读写EPCS了吗?nCE保持低电平?我这边发现拉低nCONFIG以后,MUC不跑了,会不会是FPGA的影响?
FPGA本身写代码可以读写自己的EPCS吗?
此帖出自FPGA/CPLD论坛

点评

具体操作时间久远记不得了,建议看手册,手册上都有,mcu拉低nconfig之后mcu不跑了分析不出来是什么原因,兴许你的电路有问题,fpga本身可以写代码读写epcs,epcs就是一个spi接口的norflash  详情 回复 发表于 2017-11-1 20:03
 
 
 

回复

6423

帖子

16

TA的资源

版主

12
 
luzujia 发表于 2017-11-1 16:07
你好。我现在想远程在线升级FPGA,通过MCU控制FPGA和EPCS。现在的问题是,MCU只需要拉低FPGA的nCONFIG,就 ...

具体操作时间久远记不得了,建议看手册,手册上都有,mcu拉低nconfig之后mcu不跑了分析不出来是什么原因,兴许你的电路有问题,fpga本身可以写代码读写epcs,epcs就是一个spi接口的norflash
此帖出自FPGA/CPLD论坛
个人签名training
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

13
 
白丁 发表于 2017-11-1 20:03
具体操作时间久远记不得了,建议看手册,手册上都有,mcu拉低nconfig之后mcu不跑了分析不出来是什么原因 ...

感谢回复。mcu不跑了是电路和mcu配置的原因。也试了fpga读出epcs的数据。
此帖出自FPGA/CPLD论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

14
 
拉低nconfig,FPGA的IO变成高阻,但是和EPCS相连接的spi管脚不是高阻?
mcu拉低nconfig之后,和EPCS相关的的spi管脚还受FPGA控制,导致MCU拉低CS拉不低,CLK拉不高。请问这个问题你是怎么处理的?做了开关吗?
此帖出自FPGA/CPLD论坛

点评

已解决,还需要拉高nCE, 配置管脚才会变成三态  详情 回复 发表于 2017-12-15 17:46
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(中级)

15
 
luzujia 发表于 2017-12-14 17:07
拉低nconfig,FPGA的IO变成高阻,但是和EPCS相连接的spi管脚不是高阻?
mcu拉低nconfig之后,和EPCS相关的 ...

已解决,还需要拉高nCE, 配置管脚才会变成三态
此帖出自FPGA/CPLD论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表