聊聊数字信号的模拟化呈现

电子说

1.3w人已加入

描述

使用 Verdi 的过程中,难免会碰到表示某种变化量的多位宽数字信号,我们关心的是它的变化趋势。今天主要聊聊数字信号的模拟化呈现。

数字信号的模拟化呈现

Verdi 提供了既简单又直观的操作,去绘制数字信号的模拟变化趋势。尤其是在观察周期性计数的数字信号时,例如调制频率的变化,还有 FIFO 读写地址的变化,这种方式基本是可以做到一目了然的。

操作方式:nWave 窗口菜单 - Waveform - Analog Waveform

数字信号

对于 Verdi 这个工具来说,它对于数字信号本身的含义目前还没有智能到可以自动识别。所以我们需要指定特定数字信号的表示方式(Notation),是无符号、二补码还是补码等等。

操作方式:nWave 窗口菜单 - Waveform - Set Notation

数字信号

模拟波形的显示范围

还有一个可能遇到的局限性就是,Verdi 在绘制数字信号的模拟波形时,默认会按照整个波形的动态范围来绘图。如果一个数字信号的初始值和工作时实际的动态范围差别很大,那么观察实际工作时的模拟波形时,波形变化的幅度相比整个动态范围就会太小,无法明了的看到小动态范围的变化趋势。

手动调节显示范围

还好 Verdi 提供了手动调节显示范围的功能。

操作方式:nWave 窗口菜单 - Analog - Zoom Value...

数字信号

根据需要调节上限和下限,调节过程中波形是实时更新的。

数字信号

对比效果如下图,第一个信号是默认范围的,动态变化缩成一条直线了,没有观察价值。第二个信号是调整了范围的,可以清楚的看到变化趋势。第三个是原始的数字信号。

数字信号

自动调节:切换 FSDB 文件

还有一个比较笨的解决方法是,写出 FSDB 文件时,根据特定信号,从数字信号开始动态变化的时候,做一个文件切换。这样就把数字信号初始化部分的波形分离出去。当我们着重分析动态变化的部分时,就不需要加载初始化部分的波形。Verdi 在绘制模拟波形的时候,只会看到小动态范围的数值,绘制出来的变化趋势就足够清楚了。

$fsdbDumpfile("tb_000.fsdb");
    $fsdbDumpvars(0, tb);
    @(posedge some_trigger_signal);
    $fsdbSwitchDumpfile("tb_001.fsdb");
自动调节:加载特定时间范围

当然作为团队项目的螺丝钉,有时候不方便控制 FSDB 文件的产生方式,那么在加载 FSDB 文件的时候,可以选择指定一个时间范围。感谢读者 @Erik Li 提供的这个技巧。

操作方式:nWave窗口菜单 - Open,选择 FSDB 文件到 Target Name 后,点击左下方的 Options... 按钮。

数字信号

在弹出的对话框中选中 Open File By Time Range,然后点击 OK 按钮。

数字信号

再点击 OK 按钮,在弹出的对话框中就可以选择感兴趣的时间起止范围了。

数字信号

如何提高螺丝钉的自我修养

今天就到这里。最后再分享一个最近才发现的 Verdi 调用参数。

verdi -preTitle "some text"

螺丝钉做久了,需要同时打开的 Verdi 窗口数量与日俱增。怎么从密密麻麻的任务栏图标中找到要找的那个,是个麻烦但不紧急的问题。除了贯彻断舍离、及时关闭短期内不需要的窗口之外,用上面的选项为每一个 Verdi 窗口做个简洁唯一的命名,也是一个不那么有效的解决之道。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分