AXI Stream总线说明和测试

  • Post author:
  • Post category:其他


本文主要介绍AXI Stream总线的端口定义、数据传输流程,以及仿真测试结果。同时介绍AXI Stream Interconnect的使用方法,尤其是路由选择。



1 AXI Stream总线介绍



1.1 AXI Stream总线端口定义

本节主要介绍AXI Stream总线各个端口的定义(从Master的角度看,Slave则相反)

1.时钟和复位

信号 方向 说明
aclk input 时钟,上升沿有效
aresetn input 复位, 低电平有效

2.写通道

信号 方向 说明
tready input slave写数据就绪信号
tvalid output master写数据有效信号
tdata output master写入数据
tkeep output master写数据有效位信号
tlast output master写入最后一个数据
tuser output master写入用户边带数据
tstrb output 表示关联数据为Position byte还是Data byte
tid output 数据Stream ID,表示不同数据流
tdest output 为Data Stream提供路由信息
tkeep tstrb data type description
H H Data byte 需要传输的数据字节
H L Position byte 表述数据在数据流中位置的字节
L L Null byte 无效字节
L H Reserved 保留,不强制使用

3.读通道

信号 方向 说明
tready output slave写数据就绪信号
tvalid input master写数据有效信号
tdata input master写入数据
tkeep input master写数据有效位信号
tlast input master写入最后一个数据
tuser input master写入用户边带数据
tstrb input 表示关联数据为Position byte还是Data byte
tid input 数据Stream ID,表示不同数据流
tdest input 为Data Stream提供路由信息



1.2 AXI Stream数据传输流程

1.写数据流程

slave在准备好接收数据后,将tready拉高。master在准备好写数据后,拉高tvalid信号,并给tdata、tkeep和tuser赋值,在传输完最后一帧数据后,拉高tlast信号,本次传输结束。

2.读数据流程

slave在准备好读出数据后拉高tready,接收来自master的tvalid、tdata、tkeep和tuser信号,在接收到tlast信号后,结束本次数据传输。



2 AXI Stream总线测试

本节主要介绍对AXI Stream总线所做的测试和对测试结果的分析。

工程源文件:

AXI Stream总线测试工程



2.1 测试工程说明

为了加深对AXI Stream协议的理解,使用Vivado创建测试工程,测试工程的框图如下图所示。

vio

产生写控制信号,

data_gen

模块按AXI Stream协议的要求生成写控制信号和写数据,写入到

axis_data_fifo

模块中。在写入数据完成后,

vio

产生读控制信号,

data_recv

模块从

axis_data_fifo

模块读出数据。通过

ila

模块监控数据传输过程。

在这里插入图片描述



2.1.1 写状态机

状态机复位后处于

idle

状态,在接收到start和tready信号后,进入

ready

状态,拉高tvalid信号,并给tdata、tkeep赋值。在计数器计数到最后一帧数据时,拉高tlast信号,进入

last

状态,在完成最后一帧数据传输后,进入

idle

状态。在tready信号无效后进入

susp

状态,暂停数据传输,在tready信号恢复有效后,数据传输也恢复。

在这里插入图片描述



2.1.2 读状态机

状态机复位后处于

idle

状态,在接收到start信号后拉高tready信号,开始接收来自master的tvalid、tdata、tkeep和tuser信号,在接收到tlast信号后,结束本次数据传输。

在这里插入图片描述



2.2 测试结果分析



2.2.1 仿真波形

在这里插入图片描述



2.2.2 写数据波形图

在这里插入图片描述



2.2.3 读数据波形图

在这里插入图片描述



3 AXI Stream Interconnect说明



3.1 IP介绍

AXI Stream Interconnect可以将多个AXI Stream通道汇聚成一个,也可以将一个AXI Stream通道发散为多个,尤其是可以通过TDEST的信号选择输入的信号从哪个通道输出,IP的设置界面和输入输出端口如下图所示。

在这里插入图片描述

  • Arbiter Type

    • Round-Robin:对每个Slave端口采用轮询的方式。
    • Fixed:S00的优先级最高,S01次之,以此类推。
  • Arbitrate on TLAST transfer:如果勾选,传输会在上一个通道的所有数据都传输完成后(tlast信号),才会结束这个通道的传输,开始传输下一个获得仲裁的通道的数据。
  • Arbitrate on maximum number of transfers:在传输完设置次数的数据后,switch放弃控制,其它通道可获得传输数据的权限。
  • Arbitrate on number of LOW TVALID cycles:如果一个通道获得传输数据的权限,但它传输的次数没到Arbitrate on maximum number of transfers设置的次数,在tvalid信号有指定数量的低电平后,其它通道可获得传输数据的使用权。

在这里插入图片描述

  • Slave Interface

    • Register Slice:有时序问题时可以使能。
    • Asynchronous Clock:有异步时钟的时候需要使能,使能后会添加时钟转换模块。
    • Clock Ratio:同步时钟设置时钟比例。
    • FIFO Mode:

      • Disabled:无FIFO
      • Normal:正常FIFO,与Register Slice效果一致。
      • Packet:存储完一帧数据(tlast信号)后开始数据传输。
    • FIFO Depth:FIFO深度。

在这里插入图片描述

  • Connectivity:互联设置
  • Routing:路由设置



3.2 IP测试

创建

IP的测试工程

,输入一个信号,通过TDEST信号进行输出通道的选择,仿真结果如下图所示。

在这里插入图片描述



版权声明:本文为weixin_43956013原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。