前面的教程中我们完成了基于 TD 软件工程的创建、 FPGA 代码的创建、 FPGA程序的下载,FPGA modelsim 的仿真调试,我们现在进行FPGA工程的上板调试。
前面我们说了modelsim仿真的优势,这里我们说下用chipwatcher的优势:
modelsim虽然既可以进行功能仿真,也可以进行时序仿真,但它们毕竟都只是仿真,总会有一些情况覆盖不到,另外板子上的真实信号可能很复杂,我们很难写出符合真实环境的test_bench,甚至上板之后有些问题它可能时隐时现,这个时候仿真无法指导调试,反倒是用ChipWatcher抓到真实原因后用来指导test_bench的异常用例编写。
本文中, 我们将添加 chipwatcher 在线逻辑分析仪, 通过 ChipWatcher, 用户无需借助外部设备即可在线监测电路内部信号的变化情况。 在 ChipWatcher 中, 用户可同时添加多个信号, 在设置信号的采样时钟、 采样深度、 触发条件及触发位置后, 经过重新编译、 下载和触发, 即可查看到指定条件下的信号变化情况。 ChipWatcher的工作流程如下图所示。
看着很复杂,其实用起来比前的Modesim仿真要简单得多。
新建chipwater工程
我们先看下怎么打开chipwatcher,在软件的这两个地方都可以打开chipwatcher
- 一个是点击工具栏上的示波器图标
- 另一个是点击菜单栏的 Tools → DebugTools → Chipwatcher
然而可以看到这两个地方都是灰的无法点击,原因是工具现在还没有网表信息,TD工具无法找到需要观察的信号节点。
我们双击FPGA Flow → Optimize Gate,
它会自动运行完前面的其它步骤。
这个时候我们点击示波器图标就可以打开chipwatcher了。
添加采样时钟
chipwatcher的原理就是将信号采集到内部的ERAM中进行存储,然后通过JTAG口进行上传到PC机,既然要采样首先必须指定采样时钟。
点下图右侧的 Chip Configuration 区域中的 Clock: 旁边的三个点的按钮, 然后就会弹出信号选择框,选中clk_ref, 然点击对话框中间的 > 将 clk_ref添加到右侧,最后点击OK即可。
点击OK之后可以看到采样时钟已指定好。
设置采样深度
这里就是设置采样深度,用来确定要采多少个时钟周期的数据。
我们设置为2k
触发位置
所谓触发位置就是我们信号的触发点在哪个波形显示窗口的哪个地方:
- Pre Position, 设置为预触发,就是触发点在波形的前部,我们可以观察从触发点开始向后的数据
- Center Position,设置为预触发,就是触发点在波形的中部,工具会保留触发点之前的数据,这样我们既可观察到触发点之后的也能观测到之前的。
- Post Position,后触发,就是只保留触发点前的数据。
触发条件数
目前不可设,只能为1。
添加观察信号
先确保主窗口处于Setup页面,右键点击 Add Nodes…
跟前面添加采样时钟一样选中并点中间的 > 按钮添加信号。
点击OK之后主界面如下
设置显示格式
因为cnt是一个计数器,为了便于人眼查看我们将cnt的显示格式设置为unsigned DEC即无符号十进字。
在Name列右键点击如下图菜单
设置触发条件
比如我们需要在cnt == 1000时触发,只需点击Operators列,选择 == 即可,可以看到还有其它触发条件。
有的时候我们需同时满足多个条件,比如我们还希望 led_r 为高时才触发。只右键点击Trigger Conditions列,选择High
如果我们希望这两个件是任意一个发生就可以触发该怎么设置呢?在下面这个地方选择Basic OR即可。
最终触发条件如下
保存并重新编译
点击File->Save菜单保存工程,
文件名输入debug或者你喜欢的,文件类型默认为CWC File即可。
选择Yes,将cwc文件添加到工程中
可以看到刚才新建的chipwatcher工程文件已加入到工程中。
点击Run按钮重新编译工程生成位流。
对于我们是新建CWC的也可以点双击这里生成位流。
下载位流并进行数据采集
连接好开发板,点击主窗口左侧的debug.cwc文件,然后点chipwatcher窗口右上部的齿轮按钮进行位流下载。
下载完成之后点击窗口上部的三角形按钮开始采集数据。
很快就触发了,
放大波形
上面的波形触发了,但我们看不以cnt的数值,我们滚动滚轮就可以进行放大,你看到数值跟我图上的可能不同,但都是正确的。
更多
关于chipwathcer的更多说明请参阅https://chipdebug.com/forum-post/53054.html
没有回复内容