AXIS接口教程

免责声明:

本文所提供的信息和内容仅供参考。作者对本文内容的准确性、完整性、及时性或适用性不作任何明示或暗示的保证。在任何情况下,作者不对因使用本文内容而导致的任何直接或间接损失承担责任,包括但不限于数据丢失、业务中断或其他经济损失。

读者在使用本文信息时,应自行验证其准确性和适用性,并对其使用结果负责。本文内容不构成专业技术咨询或建议,具体的技术实现和应用应根据实际情况和需要进行详细分析和验证。

本文所涉及的任何商标、版权或其他知识产权均属于其各自的所有者。若本文中引用了第三方的资料或信息,引用仅为学术交流目的,不构成对第三方内容的认可或保证。

若有任何疑问或需进一步信息,请联系本文作者或相关专业人士。


前言

AXI-Stream (AXIS) 总线是 Xilinx 公司的高级可扩展接口 (AXI) 协议家族中的一种协议,专门用于数据流的传输。它是基于 AXI4 协议简化的版本,设计用于高效传输数据流,常见于高速数据流处理应用,例如视频处理、通信系统和信号处理等。


一、AXI-Stream 的特点

  1. 简化的信号线:AXIS 去掉了地址信号和控制信号,只保留了数据和有效信号,这样可以减少线路和复杂性。
  2. 无握手机制 :与传统的 AXI 总线不同,AXIS 没有明确的握手机制。数据流通过 TVALIDTREADY 信号的配合来进行传输控制。
  3. 宽度可变:AXIS 支持不同位宽的数据传输,可以是 8 位、16 位、32 位或 64 位等,具体取决于系统的设计需求。
  4. 支持多通道:AXIS 可以支持多通道数据传输(TVLAST 和 TKEEP 信号),特别适用于视频和图像数据流,其中每个通道可能代表一个像素或一个颜色通道。
  5. 数据流传输:AXIS 设计用于传输连续的数据流,无需地址空间,可以更高效地处理连续数据的传输,如视频帧、音频流、网络数据包等。

二、AXI-Stream 的主要信号

  • TVALID (Transmit Valid):发送端有效信号,当数据有效时,TVALID 被拉高。
  • TREADY (Transmit Ready):接收端准备好信号,当接收端准备好接收数据时,TREADY 被拉高。
  • TDATA (Transmit Data):传输的数据位线,包含实际的数据内容。
  • TSTRB (Transmit Strobe):字节选通信号,指示哪些字节是有效的(通常用于部分字节有效的情况)。
  • TLAST:指示数据流的结束,用于标识一个数据包或帧的结束。
  • TIDTDEST:用于多路传输时标识数据流的 ID 和目标。
  • TUSER:用户定义信号,可以携带用户自定义的控制信息。

三、编写建议

在设计 AXIS 音视频接口时,如果数据传输的宽度固定且全字节有效,可以忽略 TSTRB 和 TKEEP 信号。TLAST 信号用于标识每行数据的结束,而 TUSER 信号可以作为帧标志或携带其他附加信息,需确保其解码与使用的一致性。 为了简化读时序控制,建议使用 First-Word Fall-Through (FWFT) 模式的 FIFO 作为缓存空间。这不仅减少了读取延迟,还使得数据读取更加直观和高效。确保 FIFO 深度满足设计需求,以避免数据溢出或饥饿现象。

什么时候从FIFO中读数据?

javascript 复制代码
assign rd_en  =  M_AXIS_TVALID && M_AXIS_TREADY;

什么时候产生TLAST?

使用计数器,当计数器到达行数据量 - 2 且M_AXIS_TVALID && M_AXIS_TREADY时,即可产生TLAST,当M_AXIS_TVALID && M_AXIS_TREADY握手完成时即可拉低TLAST

java 复制代码
always@(posedge M_AXIS_ACLK)
  if(!M_AXIS_ARESETN)
        M_AXIS_TLAST <= 'd0;
  else if(M_AXIS_TVALID && M_AXIS_TREADY)
            if(cnt == h_num - 2)
                M_AXIS_TLAST <= 'd1;
            else 
                M_AXIS_TLAST <= 'd0;
  else 
        M_AXIS_TLAST <= M_AXIS_TLAST;

什么时候拉低TUSER?

当一帧的第一次握手即可拉低TUSER,即:

javascript 复制代码
 M_AXIS_TVALID && M_AXIS_TREADY;
相关推荐
乌恩大侠14 小时前
【OAI】 USRP 在conf文件中的配置,RU选项
fpga开发
qq_小单车2 天前
xilinx-DNA
fpga开发·xilinx
Flamingˢ2 天前
FPGA中的嵌入式块存储器RAM:从原理到实现的完整指南
fpga开发
Flamingˢ2 天前
FPGA中的存储器模型:从IP核到ROM的深度解析与应用实例
网络协议·tcp/ip·fpga开发
FPGA小c鸡2 天前
【FPGA深度学习加速】RNN与LSTM硬件加速完全指南:从算法原理到硬件实现
rnn·深度学习·fpga开发
Aaron15882 天前
通信灵敏度计算与雷达灵敏度计算对比分析
网络·人工智能·深度学习·算法·fpga开发·信息与通信·信号处理
博览鸿蒙3 天前
IC 和 FPGA,到底区别在哪?
fpga开发
思尔芯S2C3 天前
FPGA原型验证实战:如何应对外设连接问题
fpga开发·risc-v·soc设计·prototyping·原型验证
Flamingˢ3 天前
FPGA实战:VGA成像原理、时序详解与Verilog控制器设计与验证
fpga开发
FPGA_小田老师3 天前
xilinx原语:OSERDES2(并串转换器)原语详解
fpga开发·lvds·xilinx原语·oserdese·并串转换