AXI4 Traffic Generator仿真研究(之二) - minichao9901/TangNano-20k-Zynq-7020 GitHub Wiki
block design
遇到的问题:我的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;
仿真结果
写
在写第一个数据的时候,可以看到master的awvalid/wvalid/bready是同时有效的。也就是master这3项同时准备好了。
接着下一个周期awread/wready有效,也就是slave这2项同时准备好了。于是数据就写入了。 这个周期末,awvalid/wvalid/awread/wready同时就无效了。
接着下一个周期bvalid有效,表明slave已经发送完毕。这个周期末,bvalid/bready同时无效了。
到此为止,一个完整的数据写周期就结束了。
vivado simulator还能解析AXI协议,看的非常清楚。
读
读的过程,slave的arready是很早有效的。 master的arvalid/rready同时有效,由于arready/arvalid满足了于是写入地址成功。
下一个周期slave的rvalid有效,由于rready/rvalid满足了于是读出数据成功。可以看到这个周期数据读出来了。
最后看到读完之后done信号产生了。
分析
当xx_valid/xx_ready同时有效后,开始执行xx操作。这个操作持续1个周期后,xx_valid/xx_ready同时无效。