AXI4 Traffic Generator仿真研究(之二) - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki

block design

image image image

遇到的问题:我的BRAM_CTRL模块是灰色的,不能配置。我的是vivado 2018.3版本,应该是软件的bug。

coe文件

addr.coe

memory_initialization_radix=16;
memory_initialization_vector=
0
4
8
c
0
4
8
c
ffffffff;

data.coe

memory_initialization_radix=16;
memory_initialization_vector=
10000000
20000000 
30000000  
40000000
10000000
20000000 
30000000  
40000000
ffffffff;

ctrl.coe

memory_initialization_radix=16;
memory_initialization_vector=
00030100
00030201
00030302
00030403
00020504
00020605
00020706
00020807
ffffffff;

mask.coe

memory_initialization_radix=16;
memory_initialization_vector=
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff
ffffffff;

仿真结果

image

在写第一个数据的时候,可以看到master的awvalid/wvalid/bready是同时有效的。也就是master这3项同时准备好了。
接着下一个周期awread/wready有效,也就是slave这2项同时准备好了。于是数据就写入了。 这个周期末,awvalid/wvalid/awread/wready同时就无效了。 接着下一个周期bvalid有效,表明slave已经发送完毕。这个周期末,bvalid/bready同时无效了。
到此为止,一个完整的数据写周期就结束了。

image

vivado simulator还能解析AXI协议,看的非常清楚。

image

读的过程,slave的arready是很早有效的。 master的arvalid/rready同时有效,由于arready/arvalid满足了于是写入地址成功。
下一个周期slave的rvalid有效,由于rready/rvalid满足了于是读出数据成功。可以看到这个周期数据读出来了。
最后看到读完之后done信号产生了。

分析

当xx_valid/xx_ready同时有效后,开始执行xx操作。这个操作持续1个周期后,xx_valid/xx_ready同时无效。