前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FPGA的调试-在线存储器内容编辑工具(In-system Memory Content Editor)

FPGA的调试-在线存储器内容编辑工具(In-system Memory Content Editor)

作者头像
碎碎思
发布2020-06-30 10:59:11
1.4K0
发布2020-06-30 10:59:11
举报
文章被收录于专栏:OpenFPGAOpenFPGA

于FPGA调试,主要以Intel FPGA为例,在win10 Quartus ii 17.0环境下进行仿真和调试,开发板类型EP4CE15F17。主要包括一下几个部分:

- FPGA的调试-虚拟JTAG(Virtual JTAG)

- FPGA的调试-在线存储器内容编辑工具(In-system Memory Content Editor)

- FPGA的调试-内嵌逻辑分析仪(SignalTap)

- FPGA的调试-LogicLock

- FPGA的调试-调试设计的指导原则

上述内容主要参考《通信IC设计》,有兴趣的可以自己购买书籍进行研读。

FPGA的调试-在线存储器内容编辑工具(In-system Memory Content Editor)

In-System Memory Content Editor,其主要功能就是能实时更改RAM,ROM中的数值,同时也可以修改FPGA内部定义的常数值。它是通过JTAG调试接口去完成RAM,ROM中的数据读写,是一种在线调试工具。注意目前该功能只能用于单口ram,不支持双口ram。下面就介绍下如何通过In-System Memory Content Editor去读取或修改RAM中的数据以及常数值的修改。 (1)首先肯定是新建一个工程。名为 test(下图是我已经例化好IP后的工程)

该工程例化了2个IP核,一个是单口ram,一个是constant 常数设置IP核,利用常数IP的输出值作为单口ram的读地址。这样当我通过In-System Memory Content Editor更新了一个常数值,即更新了ram的读地址。而ram默认写wren使能为低,则为读我更新地址的数值。 (2)例化一个单口ram IP核。 单口ram位宽为8 ,深度为32

  • Widths/Bclk Type/Clks 设置如下
  • Regs/Clken/Byte Enable/Acls 设置 如下
  • Read During Write Option 默认设置
  • Mem Init 注意:该页设置时,需要勾选上红框1 ,表示允许In-System Memory Content Editor独立地去读取和修改RAM中的数据。另外还需在红框2处给该RAM取个例化ID名:RAM8 用于区分多个实例
  • 最后finish 就例化好了一个单口RAM。

(3)同样再例化一个constant IP核。 设置成如下图所示 设置输出数据位宽为5 初始化设置该数值为0 勾选使能In-System Memory Content Editor 取一个ID名:CONS 其余页设置为默认 ,点击finish即可。

(4)完成后,在工程中做如下例化,同时添加系统时钟管脚

代码语言:javascript
复制

(5)进行全编译 (6)为了验证In-System Memory Content Editor是否能修改memory的数值,需要加入Singal Tap ii 对信号进行抓取。加入需要抓取的信号,第一个即是常数值信号。采样时钟就用系统时钟clk。深度为512,其余设置保持默认。

(7)再次全编译,完成后将.sof文件通过JTAG下载到FPGA芯片中。 (8)Tools ->In-System Memory Content Editor打开In-System Memory Content Editor工具调试界面

In-System Memory Content Editor工具调试界面如下图所示,从图上可以看到我们例化的两个IP核

(9)读取操作 在下图中左键选择你要读取的信号,比如这里要读取Instance ID 为CONS的常数信号的值,则选中它,然后鼠标右键->鼠标左键 Read Data from In-System Memory。

在下图中,就读出了CONS的数值为0x00 ,跟我们在例化IP核时设置的数值一致。

同样在signaltapii中抓取constant_ip 核的输出也是 0x00。

(10)更改数值操作 首先把ram里地址从0x00到0x04 5个地址的值更新为0x01,0x02,0x03,0x04,0x05。

接着在上面窗口中选中该ID ,鼠标右键->左键单击Write Data to In-System Memory项。通过JTAG将ram里地址从0x00到0x04存储的值修改成0x01,0x02,0x03,0x04,0x05。

此时可以通过signaltapii 查看ram里的值是否已经被修改,此时由于地址0存储的数是0x01,读地址没变还是0,那ram的输出值应该是0x01,signaltapii 抓取发现ram的输出值是0x01.证明通过In-System Memory Content Editor成功修改了ram的地址为0的值。

接着可以通过In-System Memory Content Editor修改常数值(ID位CONS)为0x01,即更新了ram的地址为0x01。

同样通过signaltapii去获取对应信号的值,看是否与设置的一致。从下图可以看出ram的地址为0x01读出的数为0x01与In-System Memory Content Editor设置的一致,同时常数值(ID位CONS)为0x01也与In-System Memory Content Editor设置的一致。


到这里,结束

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 OpenFPGA 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • - FPGA的调试-虚拟JTAG(Virtual JTAG)
  • - FPGA的调试-在线存储器内容编辑工具(In-system Memory Content Editor)
  • - FPGA的调试-内嵌逻辑分析仪(SignalTap)
  • - FPGA的调试-LogicLock
  • - FPGA的调试-调试设计的指导原则
  • FPGA的调试-在线存储器内容编辑工具(In-system Memory Content Editor)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档