AXI Stream总线说明和测试


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

1 AXI Stream总线介绍

1.1 AXI Stream总线端口定义

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

信号方向说明
aclkinput时钟,上升沿有效
aresetninput复位, 低电平有效

2.写通道

信号方向说明
treadyinputslave写数据就绪信号
tvalidoutputmaster写数据有效信号
tdataoutputmaster写入数据
tkeepoutputmaster写数据有效位信号
tlastoutputmaster写入最后一个数据
tuseroutputmaster写入用户边带数据
tstrboutput表示关联数据为Position byte还是Data byte
tidoutput数据Stream ID,表示不同数据流
tdestoutput为Data Stream提供路由信息
tkeeptstrbdata typedescription
HHData byte需要传输的数据字节
HLPosition byte表述数据在数据流中位置的字节
LLNull byte无效字节
LHReserved保留,不强制使用

3.读通道

信号方向说明
treadyoutputslave写数据就绪信号
tvalidinputmaster写数据有效信号
tdatainputmaster写入数据
tkeepinputmaster写数据有效位信号
tlastinputmaster写入最后一个数据
tuserinputmaster写入用户边带数据
tstrbinput表示关联数据为Position byte还是Data byte
tidinput数据Stream ID,表示不同数据流
tdestinput为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信号进行输出通道的选择,仿真结果如下图所示。

在这里插入图片描述

  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值