Flash基础入门之使用Vivado实现Bpi Flash的快速烧写
小标 2019-03-18 来源 : 阅读 11282 评论 0

摘要:本文主要向大家介绍了Flash基础入门之使用Vivado实现Bpi Flash的快速烧写,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

本文主要向大家介绍了Flash基础入门之使用Vivado实现Bpi Flash的快速烧写,通过具体的内容向大家展现,希望对大家学习Flash基础入门有所帮助。

Flash基础入门之使用Vivado实现Bpi Flash的快速烧写

使用Vivado可以通过Jtag直接对Xilinx的FPGA进行编程,也可以间接的对基于Flash的存储配置信息的器件进行编程。为了实现对此Flash的编程,首先需要对FPGA加载一个特殊的Bit,这个Bit的作用是提供Jtag到Flash接口之间的数据通道。之后再使用这个数据通道来对flash进行编程。

对Flash进行编程需要遵循以下步骤。

1. 生成Bit文件,创建Mcs文件。

2. 在Vivdao中使用Hardware Manager扫链,并在链路中添加Flash器件。

3. 使用Vivado烧写Flash。

4. 软启动或自启动测试(可选)。

配置Vivado,生成Bit文件,创建Mcs文件

1. 打开implemented design,选择Tools->Edit Device Properties,打开Edit Device Properties对话框,如下所示。在对话框左上角的Find窗口中输入BPI,Vivado会筛选出所有相关的相关配置选项,根据Flash型号,选择合适的配置。之后通过Generate Bitstream生成Bit文件。


2. 可以通过Vivado图形界面,使用Bit创建Mcs文件,也可以使用Tcl指令write_cfgmem来创建Mcs文件。

图形界面如下所示,也需要选择合适的的配置,28f00am29ew芯片对应的配置如下图。


直接使用write_cfgmem指令方式如下:

write_cfgmem -format mcs -interface bpix16 -size 128 -loadbit “up 0x0 design.bit"-file design.mcs

注意:-size参数是Mbytes为单位的,这里是指定flash的大小,不是mcs文件的大小,mcs文件的大小是根据bit文件的大小自动适配的。更多的语法信息可以查询ug835-vivado-tcl-commands。

 bit Swapping等参数的理解,可以参考ug470_7Series_Config。

在Vivdao中使用Hardware Manager扫链,并在链路中添加Flash器件

1. 使用仿真器连接PC和电路板,打开Vivado Hardware Manager,通过Open target找到仿真器并扫描整个Jtag链路。


2. 扫链成功后,右键单击目标FPGA,选择“Add Configuration Memory Device”。


弹出“Add Configuration Memory Device”对话框,可以通过Search选中电路中使用的28f00am29ew-bpi-x16。


单击OK,会回到Hardware Manager主界面,此时链路上的vio和ila核会消失,flash的器件信息会出现在链路中。


使用Vivado烧写Flash

1. 在链路中成功添加Flash信息后,Vivado会自动弹出对话框,“Do you want to program the configuration memory device now?” 如下所示。


2. 单击OK,打开 Program Configuration Memory Device对话框。并在Configuration file中选着第一步生成的mcs文件,其它配置选项也需要依据电路和器件的具体连接及想要实现的具体操作做出合适的配置。


3. 点击Apply会存储当前设置,点击OK则会启动 Erase, Blank Check, Program, and Verify等操作。每一步操作完成,Vivado都会有提示,所有操作都完成后,弹出如下对话框,表明Mcs文件以及加载到了Flash芯片中。


软启动或自启动测试(可选)

Flash烧写结束后,可以通过Vivado下发JPROGRAM指令来进行软启动,也可以断电后再次加电进行自启动,通过Hardware Manager观察FPGA是否成功启动,间接判断Flash烧写是否成功。

1. 软启动测试。

使用Hardware Manager扫链,在目标FPGA上右击,在弹出的菜单中选择“Boot from Configuration Memomy Device”,这实际上实在下发JPROGRAM指令,FPGA的配置逻辑会读取Flash的配置信息对自身进行加载,如果加载成功,则目标FPGA右侧状态会变成“Programmed”,同时链路上会出现工程中定义的ila和vio核,且两种核的信号数目、信号定义和ltx文件中的定义保持一致。


2. 自启动测试。

目标板断电,稍等几秒钟,等待电容放电完毕,重新加电,FPGA会按照M2/M1/M0引脚定义的启动方式,从对应的存储器件中读取配置信息对自身进行加载。稍等几秒后,连接仿真器,使用Hardware Manager扫链,如果自启动加载成功,则目标FPGA右侧状态会变成“Programmed”,同时链路上会出现工程中定义的ila和vio核,且两种核的信号数目、信号定义和.ltx文件中的定义保持一致。


3. 主模式下自启动失败

如果目标板设置成了Master BPI或者Master SPI模式,且通过仿真器和Vivado Hardware Manager连接,会导致自启动失败。原因是Hardware Manager的查询和恢复功能会中断主配置模式。为了避免此种情况发生,Vivado2017以后版本可以在Tcl控制台中输入如下指令:

set_param xicom.allow_cfgin_commands false

缩短Flash编程所需时间

1. 压缩Bitstream

打开implemented design,选择Tools->Edit Device Properties,在General中设置“Enable Bitstream Compression”为“TRUE”通常会缩短编程和配置所需的时间。这项设置是可选项,并不能保证100%缩短配置时间。


用同样的implemented design,生成compressed和uncompressed的bit文件,进一步创建对应Mcs文件。设置仿真器速率为15MHz,对Flash加载时间进行测试,结果如下图,此图截取自xapp1220-ultrascale-bpi-config-prog-nor-flash。


2. 设置较高的仿真器Jtag时钟频率。

提高Jtag总线的Tck速率直接加快了仿真器与目标板之间的数据交换的速度,但是Vivado到仿真器之间的数据交换速度并不会受此影响,所以Jtag时钟频率的变高与加载时间的缩减并不是正比的关系。

不同的品牌的仿真器支持的最高JTAG时钟频率不一样,Digilient的USB-JTAG最高支持30MHz的频率。

Jtag时钟频率的设置也需要考虑到Jtag总线的信号完整性。


以上就介绍了Flash的相关知识,希望对Flash有兴趣的朋友有所帮助。了解更多内容,请关注职坐标常用软件Flash频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 1 不喜欢 | 0
看完这篇文章有何感觉?已经有1人表态,100%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程