本文是《zynq 7000 自定义ip实验》一文的继续,也是《AXI4 协议分析》一文的基础上写出来的,如果没看这2文,可以根据你的需要去看看。设计axi4 ip 是个复杂的工作,在正式测试前做仿真测试可以排除很多bug,保证产品开发高效高质量。
下载链接总失效, 把testbench.v直接放这里了。
本文主要介绍仿真程序的设计。在ip设计工程的Simulation sources中,添加或新建一个测试文件testbench.v,然后仿真操作就好了。
关于仿真的操作请看另文: Vivado 下的仿真入门
程序设计中用了2个task 或者函数,
axi_write(addr,data) 写入函数,
axi_read(addr,data) 读取函数,本来不需要data 的, 但你修改一下,可以用于比较读取值和预计值。
程序中注释了比较这一部分。
除了这2个task 外,主流程就是对这2个task 的调用,这与实际情况比较一致。
我这里是写一个,然后读取一个。地址01, 00, 02 其实都是操作reg0。 依次写读为 02, 01,02,04,08, 我们看到led 的相应变化,说明控制有效。
后面写读的地址是 04,08,0c, 也就是验证对reg1,reg2,reg3操作, 结果也是有效的。
对于实际情况,你可以修改程序的读写内容和时间点,仿真测试你设计的ip。我是免费提供这个代码, 你也就保留我程序设计的名字。
至于怎么设计这个仿真程序,请看Axi4 协议分析一文。我是根据分析后写出来的,也做了多次反复的测试,开始波形不出来的。
这个图是写入部分的仿真。读取被收取了。
这个集中于读取部分,打开了读取的仿真组信号。