3930|2

6892

帖子

0

TA的资源

五彩晶圆(高级)

楼主
 

Quartus II中FPGA片上存储器初始值更新的方法 [复制链接]

最近在调试中遇到了这样一个问题:一组参数预先存储在FPGA的片上存储器内;在系统运行过程中部分参数会被读出,修改后写回;为了调试,需要经常变换参数的初始化值。 riple

    实现存储器中数值的初始化比较容易,在生成RAM模块时指定一个初始化文件(.hex或.mif)即可。 riple

    实现部分参数的动态修改也容易,设计一个状态机在需要的时候写入该RAM即可。 riple

    为了调试,更新初始化数值就难了些,可供选择的方法有这样几种: riple

1. 采用In-system Memory Content Editor,通过Import File的方式把修改后的初始化文件更新到RAM中。 riple

2. 采用Virtual JTAG定制一个RAM写入接口,连接到双端口RAM的一个空闲端口用于调试,双端口RAM的另一个端口用作正常使用。 riple

3. 修改初始化文件,把初始化文件更新到编程文件中,通过重新下载更新到RAM中。 riple

    第一种方法原理上没有任何问题,在MegaWizard Plug-in Manager中选择Allow In-system Memory Content Editor...即可。但是,在实际应用中,只有单端口ROM可以采用该方法;单端口RAM采用该方法可以生成代码,但是不能正确编译,总是报出一些奇怪的错误;此外。双端口的ROM和RAM都不支持In-system Memory Content Editor。 riple

    第二种方法在本质上与第一种方法相同,在实际应用中也能正确编译,唯一的缺点是需要对Virtual JTAG有较深入的认识,需要手工编写一些代码,还要编写TCL脚本。 riple

    第三种方法可以不修改代码,也不需要执行全编译,只要在Quartus II集成开发环境中执行两个简单的操作即可。下面就是具体的步骤: riple

1. Processing -〉Update Memory Initialization File riple

2. Processing -〉Start -〉Start Assembler riple

    上述操作执行完毕,把Assembler生成的编程文件下载到FPGA中,修改后的初始化文件就更新到片上存储器中了。 riple

    该方法的原理是,在Update Memory Initialization File过程中,只更新db文件夹中与RAM初始化内容相关的文件,其余文件不更新,所以不需要执行全编译;更新后执行Assembler,把新的初始化内容更新到编程文件中去。该方法类似于软件编译过程中的部分编译和重新链接。 riple

    该方法只适用于静态更新RAM内容,如果需要对RAM进行动态调试,还是用第二种方法才行。 riple

此帖出自FPGA/CPLD论坛

最新回复

顶~~~~~~~~~~~  详情 回复 发表于 2011-4-2 10:54
点赞 关注
 

回复
举报

54

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

回复 楼主 eeleader 的帖子

顶~~~~~~~~~~~
此帖出自FPGA/CPLD论坛
 
 

回复

6892

帖子

0

TA的资源

五彩晶圆(高级)

板凳
 

我也顶一下, 否则就下去了

此帖出自FPGA/CPLD论坛
个人签名一个为理想不懈前进的人,一个永不言败人!
http://shop57496282.taobao.com/
欢迎光临网上店铺!
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表