最近在做视频解码的项目,遇到一个难题,BT656解码模块写好后,想仿真看看功能是否正确,发现更本无从下手。原因是整个解码模块只有两个输入,一个时钟,一个8位的YUV4:2:2数据流,所有的行场同步信号、消影信号、奇偶场信号都嵌在YUV数据流里。如图所示:
这种情况下,如果仅仅在tb中模拟几个输入数据来测试代码,很难看到效果,毕竟一行信号就有七百多个像素之多,而且自己模拟的数据也不具有真实性,即使是对BT656的时序烂熟于心,也难免会犯错。
那么,这种情况下,我们该怎么办呢?直接上板调试?no no !大家有没有想过如果Modelsim能直接接外部器件进行实时仿真就好了。我要说这么做是可以的,但不用接外部器件。需要用到一个我们常用的工具——SignalTap!
SignalTap中其实有很多好用的功能,其中一个就是波形导出功能。具体操作如下,先选择好深度,将信号抓到,在信号附近鼠标右击,会有一个选项create signaltap II list file,点击保存后,在工程目录下会自动产生一个.txt文件,里面便是你刚抓的波形,只是全部以数字的形式出现罢了。如图所示:
信号太多了,没有全部截图。
右边是信号,左边每个数对应一个采样周期。
将信号数据添加到Modelsim中,便可以进行仿真了,这样的仿真结果真实可靠!