一、协议介绍

1、AXI4_Stream:适用于高速数据流,去掉了地址项,允许无限制的数据突发传输。除了总线时钟和总线复位,其他的接口信号都是以字母T开头。

2、信号接口描述:

(1)、ACLK---------时钟源-----全局时钟信号,所有信号在主时钟信号的上升沿采样。

(2)、ARESETN------复位------低电平有效。

(3)、Tvalid-------主机数据有效信号,(区别AXI4、AXI4-Lite,AXI4_Stream去掉了地址项),由主机发出,高速从机发出的数据有效。源为master。

(4)、Tdata[31:0]--主机发出的数据,数据宽度可选,32/64/1278/256 bit。源位master。

(5)、Tkeep[3:0]---字节修饰符,用于表明Tdata相关字节的内容是否为有效数据,未被Tkeep位确认的字节为孔子杰,视为无关字节,可以从字节流中去除。源为master。

(6)、Tlast--------主机通知从机这时最后一个数据,即为数据包的边界。源为master。

(7)、Tid---------由主机发出,Identity标识符,在存在多个stream数据传输时起作用,用于识别不同的数据流。源为master。

(8)、Tready------从机发出的接收准备好信号。

二、通信机制

最重要的就是牢记只有 Tvalid & Tready == 1 时才能开始数据传输,Valid信号由数据传输源产生,Ready信号由目的源产生(来自米联客book,这句话总结的太经典了,因为在其他的AXI4总线进行数据读取时,主机也会产生Rready信号)。

因为AXI4-stream去掉了地址线(依靠Tid进行数据流识别),不涉及数据的读写通信,仅涉及简单的发送与接收,减少了传输延时。

三、举例说明

  reg [:]S_AXIS_tdata;//发送数据
reg S_AXIS_tlast; //突发传输的结尾
reg S_AXIS_tvalid; //本次传输有效
wire FCLK_CLK0; //传输时钟
wire s_axis_aclk;
wire s_axis_aresetn;
wire [:]S_AXIS_tkeep;//4个byte皆有效
wire S_AXIS_tready; //接收来自从机的ready信号
wire [:]gpio_rtl_tri_o;
wire [:]peripheral_aresetn;
reg [:] state;//状态机 assign S_AXIS_tkeep = 'b1111;
assign s_axis_aclk = FCLK_CLK0;
assign s_axis_aresetn = peripheral_aresetn; always@(posedge FCLK_CLK0)
begin
if(!peripheral_aresetn) begin
S_AXIS_tvalid <= 'b0;
S_AXIS_tdata <= 'd0;
S_AXIS_tlast <= 'b0;
state <=;
end
else begin
case(state)
: begin //等待允许发送且接收到来自从机的ready信号
if(gpio_rtl_tri_o&& S_AXIS_tready) begin
S_AXIS_tvalid <= 'b1; //主机PL将valid位置一
state <= ;
end
else begin
S_AXIS_tvalid <= 'b0;
state <= ;
end
end
:begin //如果从机准备好,开始数据发送
if(S_AXIS_tready) begin
S_AXIS_tdata <= S_AXIS_tdata + 'b1;
if(S_AXIS_tdata == 'd510) begin //发送完第511个数据之后置位last信号
S_AXIS_tlast <= 'b1;
state <= ;
end
else begin
S_AXIS_tlast <= 'b0;
state <= ;
end
end
else begin
S_AXIS_tdata <= S_AXIS_tdata;
state <= ;
end
end
:begin //等待从机接收完毕,准备下一次船传输
if(!S_AXIS_tready) begin
S_AXIS_tvalid <= 'b1;
S_AXIS_tlast <= 'b1;
S_AXIS_tdata <= S_AXIS_tdata;
state <= ;
end
else begin
S_AXIS_tvalid <= 'b0;
S_AXIS_tlast <= 'b0;
S_AXIS_tdata <= 'd0;
state <= ;
end
end
default: state <=;
endcase
end
end

AXI4-Stream协议总结与分析的更多相关文章

  1. 学习笔记20151211——AXI4 STREAM DATA FIFO

    AXI4 STREAM DATA FIFO是输入输出接口均为AXIS接口的数据缓存器,和其他fifo一样是先进先出形式.可以在跨时钟域的应用中用于数据缓冲,避免亚稳态出现.支持数据的分割和数据拼接.在 ...

  2. 网络协议图形化分析工具EtherApe

    网络协议图形化分析工具EtherApe   在对网络数据分析的时候,渗透测试人员往往只关心数据流向以及协议类型,而不关心具体数据包的内容.因为这样可以快速找到网络的关键节点或者重要的协议类型. Kal ...

  3. 协议解析Bug分析

    协议解析Bug分析 源自邮件协议RPC(远程过程调用)处理的Request请求数据包的bug.        一.Bug描写叙述 腾讯收购的Foxmailclient能够作为outlookclient ...

  4. http协议请求流程分析

    http协议请求流程分析 用户输入URL(地址链接)(http://www.baidu.com:80/tools.html)客户端获取到端口及主机名后,客户端利用DNS解析域名,首先客户端的浏览器会先 ...

  5. Ripple 20:Treck TCP/IP协议漏洞技术分析

    本文由“合天智汇”公众号首发,作者:b1ngo Ripple 20:Treck TCP/IP协议漏洞技术分析 Ripple20是一系列影响数亿台设备的0day(19个),是JSOF研究实验室在Trec ...

  6. 物联网应用层协议选择和分析--MQTT、CoAP 、HTTP、XMPP、SoAP

    MQTT协议 MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)最早是IBM开发的一个即时通讯协议,MQTT协议是为大量计算能力有限且工作在低带宽.不 ...

  7. 六:分布式事务一致性协议paxos的分析

    最近研究paxos算法,看了许多相关的文章,概念还是很模糊,觉得还是没有掌握paxos算法的精髓,所以花了3天时间分析了libpaxos3的所有代码,此代码可以从https://bitbucket.o ...

  8. PPTP协议握手流程分析

    一  PPTP概述 PPTP(Point to Point Tunneling Protocol),即点对点隧道协议.该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网,可 ...

  9. ARP 协议抓包分析

    ARP(Address Resolution Protocol)- 地址解析分析 ARP 协议是根据IP地址获取物理地址的一个TCP/IP协议. 当PC1 想与 PC2 进行通信时,需要同时知道PC2 ...

随机推荐

  1. iOS 组件化路由框架 WisdomRouterKit 的应用

    [前言] 大家好,写作是为了和读者沟通交流,欢迎各位开发者一起了解 WisdomRouterKit SDK 的功能. 关于 iOS 组件化路由方案框架: WisdomRouterKit 的功能介绍,之 ...

  2. Scala 学习笔记之集合(6)

    object CollectionDemo7 { def main(args: Array[String]): Unit = { //数组使用 val arr = Array("red&qu ...

  3. 分享8点超级有用的Python编程建议

    我们在用Python进行机器学习建模项目的时候,每个人都会有自己的一套项目文件管理的习惯,我自己也有一套方法,是自己曾经踩过的坑总结出来的,现在在这里分享一下给大家,希望多少有些地方可以给大家借鉴.

  4. python编程基础之十六

    for in 循环,与其说是循环不如说精确点交遍历 for 变量名 in + 迭代对象 语句A else: 语句B 作用:一次访问迭代对象中的元素并赋值给变量 循环终止时,执行else语句块,如果br ...

  5. 【LeetCode刷题】——两数之和.1

    ---恢复内容开始--- 一直想在leetcode上面刷题,但是java刚刚摸了一下门,所以迟迟没有动手,今天做了第一道题,感觉自己实在菜的不行,但是还是学到了很多东西, 就记录一下遇到的问题. 首先 ...

  6. django数据库迁移时候异常

    django数据库迁移时候异常 一.错误信息 Django在根据models生成数据库表时报 init() missing 1 required positional argument: 'on_de ...

  7. 什么是STM32的ISP?

    上一篇笔记分享了STM32的串口IAP实例:STM32串口IAP分享.其中,下载IAP程序时用ISP的方式进行下载.这里的ISP又是什么呢? ISP方式下载程序原理 ISP:In System Pro ...

  8. 如何成为一个伟大的 JavaScript 程序员

    这篇文章主要概述在我5年工作经验的基础上,我成为优秀JavaScript开发人员所使用的技术和资源. 当前大多数Web开发人员面临着这样一个共同的问题:他们必须在多个不同的领域领先于他人——从数据库到 ...

  9. PHP array_slice

    1.函数的作用:返回数组中的部分区间的元素 2.函数的参数: @params  array  $array @params  int      $offset @params  int      $l ...

  10. [CODEVS3366] 矿石

    题目描述 Description 经历了千辛万苦,小J找到了N块矿石.这些矿石都有毒性,但只要将两块矿石放在一起,再分开即可解毒.但任一两块矿石都可以互相吸引.为了降低吸引力,小J将他们放入一个直径仅 ...