FPGA教程系列-Vivado AXI4-Full 仿真测试
还是老一套,建一个AXI-Full的IP核,看看,过程就不再赘述了。
Slave仿真
首先看框图
还是用AXI Verification进行验证,代码解释也略过,简单的看下仿真后的逻辑。
一次写事务
一次读事务
去slave中查看,可以看到突发长度与突发宽度,再深刻的理解一下:
- 传输次数 (Beats)=
AWLEN+ 1 - 每次传输宽度 (Bytes/Beat)=2AWSIZE2^{\text{AWSIZE}}2AWSIZE
情况 1:AWLEN = 7,AWSIZE = 1
这是一个“细长型”的传输。
传输次数 (Beats):7+1=87 + 1 = \mathbf{8}7+1=8次。
Master 会在写数据通道上进行 8 次握手(
WVALID &WREADY)。单次宽度 (Width):21=22^1 = \mathbf{2}21=2字节(即 16-bit)。
这意味着你的数据总线只需要 16 根线(或者你只用了其中的 16 根)。
总数据量 (Total Data):
8 (beats)×2 (bytes)=16 Bytes 8 \text{ (beats)} \times 2 \text{ (bytes)} = \mathbf{16 \text{ Bytes}}8(beats)×2(bytes)=16Bytes
地址变化 (INCR模式):
每传一次,地址增加 2。
例如:
0x00 ->0x02 ->0x04 … ->0x0E。
这就好比用一辆小三轮车(只能装 2 字节),往返跑了 8 趟。
情况 2:AWLEN = 1,AWSIZE = 7
这是一个“短宽型”(或者说是巨型)的传输。
传输次数 (Beats):1+1=21 + 1 = \mathbf{2}1+1=2次。
Master 只需要在数据通道上进行 2 次握手。
单次宽度 (Width):27=1282^7 = \mathbf{128}27=128字节(即 1024-bit)。
注意!这是一个非常恐怖的宽度。通常只有高性能计算(HPC)、GPU 内部或者 HBM(高带宽内存)接口才会有 1024 位宽的数据总线。普通 CPU 总线通常只是 32位 (SIZE=2) 或 64位 (SIZE=3)。
总数据量 (Total Data):
2 (beats)×128 (bytes)=256 Bytes 2 \text{ (beats)} \times 128 \text{ (bytes)} = \mathbf{256 \text{ Bytes}}2(beats)×128(bytes)=256Bytes
地址变化 (INCR模式):
每传一次,地址增加 128。
例如:
0x00 ->0x80。
这就好比开着一辆巨型重卡(能装 128 字节),跑了 2 趟。
Master
框图如下:
发现拿AXI Verification去看对应的读写操作会比直接看ip核更直观一点。
写了一次的事务:
一次事务内,握手了16次,一次2字节,可以看到第二次事务,地址从40000040开始。
一共写了64次:
读也一样,可以看到一次事务只有两个步骤。
打开主的仿真,主要看下突发是否对应: