热度 5
2013-10-31 11:03
757 次阅读|
0 个评论
EDN博客精华文章 作者: ilove314 Testbench仿真串口自收发通信 以前仿真用的都是ISE自带的Test Bench Waveform。图形化界面,只要点点添加把信号拉高或者拉低进行激励添加,可谓方便快捷。但是所有的仿真激励都用TBW里做恐怕在大一些的项目模块仿真时就会遇到困难了,之前的IIC收发通信用TBW里添加仿真激励就显得有些为难了,所以在对RTL级的verilog设计有了一定程度的掌握后,下一步就该加强自己编写verilog testbench的能力了。 今天就以一个简单的串口自收发通信开始吧,这个RTL级代码在前面的日志里。 仿真后的波形如下:(明显比单纯用TBW来得方便) 点击看原图 rs232_rx信号为仿真PC发送数据到FPGA里,上图可以看到rs232_rx线的变化。 点击看原图 rs232_tx为FPGA发送数据给PC,数据正是PC发送过来的原数据,tran_data是模拟PC接收到来自FPGA的数据,可以看到最终PC接收FPGA发送回来的数据和PC发送给FPGA的数据是一致的。自此,这个仿真说明了源代码设计是正确的。 前面的testbench只是比较简单的,因为就做了一次的数据收发。然而在实际中要验证一个设计的正确与否,往往应该是要经受住无数次的考验才算满足要求。基于此,下面的testbench的任务就是从0开始一直发到255一共就是256此验证。这么多此的测试光看波形可不成,尤其定位错误的时候非累死你不可,所以就应该采用$display这个命令,在modulsim的命令窗口里观察就可以了: 上面这个截图会将写入的数据和读出的数据实时的显示出来,而且监视着当前是否错误。这样的仿真验证就比较容易差错了。 Testbench代码如下: