1.简述
这儿遇到到ps端与pl端大量实时数据交互问题,实验了axi-lite总线,发现不行,实在太慢。接下来就只有axi-full总线了,但是这个好像比较复杂,所以先认真学习一下。
2.zynq的三种总线
- AXI-full(AXI4) 用于高性能的内存映射需求,说白了就是可以读写ddr,类似dma。
- AXI-lite (AXI4-Lite) 用于简单的低吞吐量内存映射通信(例如,与控制和状态寄存器之间的通信),一般用于低速少量的数据通信,比如传递参数。
- AXI-stream (AXI4-stream)用于高速流数据,没有地址信号,速度更快,可以承担更大的数据量。
3.zynq ps端几种接口
总共有9个接口:
- 4个GP,其中,ps作为主设备2个,从设备2个。这个对应AXI-lite总线使用。这接口我用的挺多,传输速度也不快,用于ps与pl少慢数据通信。
- 4个HP,ps都作为从设备,对应AXI-full总线。因为这个高速传输接口,ps太慢了,要顺着 pl走。
- 1个ACP,全称acceleratorcoherency port (ACP),加速一致性接口。这个直接通往arm内部,不经过ddr,所以速度是最快的。
4.AXI-full通道介绍
- 读地址通道
- 写地址通道
- 读数据通道
- 写数据通道
- 写响应通道
5.AXI-full接口
如下图,bd工程的截图,可以看出AXI-full接口的信号很多,看得头皮发麻,但是不慌,下面我按通道分类。
扫描二维码关注公众号,回复:
12289649 查看本文章
1)写地址通道接口
信号名 | 方向 | 描述 |
M_AXIAWID | 输出 | 接口写入地址 |
M_AXI_AWADDR | 输出 | 接口写入地址 |
M_AXI_AWLEN | 输出 | 突发长度。突发长度给出了突发中传输的确切数量 |
M_AXI_AWSIZE | 输出 | 突发大小。此信号指示突发中每个传输的大小 |
M_AXI_AWBURST | 输出 | 突发类型。突发类型和大小信息,确定如何计算突发内每次传输的地址。 |
M_AXI_AWLOCK | 输出 | 锁定类型。提供有关传输的原子特性的附加信息。 |
M_AXI_AWCACHE | 输出 | 内存类型。此信号指示事务如何在系统中进行。 |
M_AXI_AWPROT | 输出 | 保护类型。此信号指示事务的权限和安全级别,以及事务是数据访问还是指令访问。 |
M_AXI_AWQOS | 输出 | 服务质量,为每个写事务发送的QoS标识符。 |
M_AXI_AWUSER | 输出 | 写入地址通道中的可选用户定义信号。 |
M_AXI_AWVALID | 输出 | 有效地址该信号表明信道是信号有效写入地址和控制信息。 |
M_AXI_AWREADY | 输入 | 写地址准备好了。此信号表示从机准备好接受地址和相关的控制信号 |
2)写数据通道
信号名 | 方向 | 描述 |
M_AXI_WDATA | 输出 | 接口写入数据。 |
M_AXI_WSTRB | 输出 | 写有效字节。此信号指示哪个字节通道保存有效数据。写入数据总线的每8位有一个写入选通位。 |
M_AXI_WLAST | 输出 | 最后写。此信号表示写入突发中的最后一次传输。 |
M_AXI_WUSER | 输出 | 写入数据通道中的可选用户定义信号。 |
M_AXI_WVALID | 输出 | 写入有效。此信号表示有效的写入数据和频闪可用 |
M_AXI_WREADY | 输入 | 写入准备。此信号表示从机可以接受写入数据。 |
3)写响应通道
信号名 | 方向 | 描述 |
M_AXI_BID | 输入 | 主接口写入响应。 |
M_AXI_BRESP | 输入 | 写回应。此信号表示写入事务的状态。 |
M_AXI_BUSER | 输入 | 写入响应通道中的可选用户定义信号 |
M_AXI_BVALID | 输入 | 写入响应有效。此信号表示通道正在发出有效的写入响应信号。 |
M_AXI_BREADY | 输出 | 响应就绪。此信号表示主机可以接受写入响应。 |
4)读地址通道
信号名 | 方向 | 描述 |
M_AXI_ARID | 输出 | |
M_AXI_ARADDR | 输出 | 读地址。此信号表示读突发事务的初始地址。 |
M_AXI_ARLEN | 输出 | 突发长度。突发长度给出了突发中传输的确切数量 |
M_AXI_ARSIZE | 输出 | 突发大小。此信号指示突发中每个传输的大小 |
M_AXI_ARBURST | 输出 | 突发类型。突发类型和大小信息,决定如何计算突发中每个传输的地址。 |
M_AXI_ARLOCK | 输出 | 锁类型。提供有关传输的原子特性的附加信息。 |
M_AXI_ARCACHE | 输出 | 内存类型。此信号指示事务如何在系统中进行。 |
M_AXI_ARPROT | 输出 | 保护类型。此信号指示事务的权限和安全级别,以及事务是数据访问还是指令访问。 |
M_AXI_ARQOS | 输出 | 服务质量,为每个读取事务发送的QoS标识符 |
M_AXI_ARUSER | 输出 | 读取地址通道中的可选用户定义信号。 |
M_AXI_ARVALID | 输出 | 写入地址有效。此信号表示通道正在发送有效的读取地址和控制信息 |
M_AXI_ARREADY | 输入 | 已准备好读取地址。此信号表示从机已准备好接受地址和相关控制信号 |
5)读数据通道
信号名 | 方向 | 描述 |
M_AXI_RID | 输入 | 读取ID标记。该信号是从机生成的信号的读取数据组的标识标签。 |
M_AXI_RDATA | 输入 | 读取数据 |
M_AXI_RRESP | 输入 | 读取响应。此信号表示读取传输的状态 |
M_AXI_RLAST | 输入 | 最后一次读。此信号表示读突发中的最后一次传输 |
M_AXI_RUSER | 输入 | 读取地址通道中的可选用户定义信号。 |
M_AXI_RVALID | 输入 | 读取有效。此信号表示通道正在发送所需读取数据的信号。 |
M_AXI_RREADY | 输出 | 阅读准备。此信号表示主机可以接受读取的数据和响应信息。 |
6)其他信号
信号名 | 方向 | 描述 |
M_AXI_ACLK | 输入 | 全局时钟信号。 |
M_AXI_ARESETN | 输入 | 全局复位信号。此信号处于低激活状态 |
INIT_AXI_TXN | 输入 | 启动AXI传输 |
TXN_DONE | 输出 | 传输完成时确定 |
说明:这是按axi-full官方源码注释翻译的,有些可能不太准确,后面我有新的更加准确的描述再改。