AXI4协议的物理模型
AXI4的物理传输模型
1、AXI4的组成部分
首先说一下文章是学习《基于AXI4的IP核互联的设计与验证》莫锦辉的学习笔记。文中大部分的知识都是来源于这篇论文,这里学习以便理解AXI4协议。
AXI4是由五个通道构成的:写地址、读地址、写数据、读数据和写数据响应。主机和从机的概念具有区分。每个通道的作用的在后面的传输流程中会有具体的介绍。这里的通道应该是一些小型总线。具体的信号在设计中会偶具体的介绍。
2、AXI4的数据传输流程
AXI4的数据传输采用的是猝发机制,所谓猝发,就是一方发出申请,等待另一方回答。回答后就传输数据。类似于打电话,有一个人打,一个人接。打的人要等待接电话的,接电话的要有人打电话。这里比较特殊的就是写数据响应的发出。这个信号是用来确认主机的数据写入是否成功。但是没有从机的写数据响应,因为主机的数据用户可以直接访问来验证。这里也是区分主从机的一个方法:主机为直接操控、从机为黑盒子。
五个通道的概念解释了AXI4传输数据的基本概念,但是每个通道内部的传输方法还是需要补充的。这里就需要考虑AXI4通道的握手协议。
这里做个简单假设,如果每个通道就是一个时钟线和数据线,也就是IIC协议。这样其实在一个从机的时候是可以工作的。每个通道都可以传输数据。显然,对于需要实现多个设备之间的传输的AXI4总线协议是不够的。这里需要一个可以表示当前通道的工作状态的信号。由于传输的对象只有两个:主机和准备连接的从机,所以需要两个信号来标注。主机的信号为VALID,从机的信号为READY。两个信号均采用高电平有效。即高电平时表示一方准备完成。对于数据位INFORMATION的操作也是随着状态变化而变化的。
VALID有效,数据位开始占用。此时数据已经保持在数据线内。READY有效,数据开始传输。
对于有五个通道的AXI4协议来说,每个通道之间的握手信号是有一定的约束的。例如,在写操作中,主机写地址就绪,写地址有效,写数据就绪这三个信号没有时间依存。而对于从设备必须等待确认写地址有效和写地址就绪后握手成功和写数据有效信号和写数据就绪信号建立连接后再确认写回应有效信号和写数据就绪信号是否建立连接。这段话比较绕,简单理解就是要确保握手成功不违背通道传输的规则。不可能写数据传输握手还没有成功写响应握手就成功了,这违背了写响应的规则。同样的道理也在地址握手和数据握手之间体现。
3、AXI4的传输流程
读猝发传输:
一次读猝发传输四个数据的例子
主机发出读地址为A的请求-----读地址通道处于A地址占用------从机响应数据传输。
这个流程就像主机利用读地址构建了一个单一的单向通道,写数据通道的握手成功与否决定了数据传输与否。这样的优势在于可以选择不同的设备构建临时通道。
显然,可以利用通道的临时性实现两个临时通道的交替进行。这说明从机是支持存储两个甚至更多的地址的。这个功能落到具体的设计就需要一个缓存器来解决了。后面应该会有这部分的具体内容。
写猝发传输:
就是将读猝发的对象对调然后加上写响应。在通道上的原理就是这么简单,但是对于主从机的收发结构来说这里还是有一个比较复杂的内容的。后面可能会介绍这个主机和从机所需的结构。
4、AXI4的小结
AXI4传输的模式是标准的,传输的模式也是多种多样的。其相对于IIC的特点是将数据线拆分为两个通道。相对于UART的优点是加入了时钟线而不需要主机通过人工的方式加入传输波特率。相对于SCCB协议的优点是将地址传输和数据传输分立进行以提高效率。这四种传输协议都有其各自的适用范围。
AXI4协议的物理模型的更多相关文章
- AXI协议(一)
最近弄Zynq,不懂AXI协议Zynq很难玩儿的转.这些笔记主要攻克AXI中的一些难题. 所有的AXI4包含了5个不同的通道: (1)读/写地址通道(Read/Write address ch ...
- AXI总线简介
AXI全称Advanced eXtensible Interface,是Xilinx从6系列的FPGA开始引入的一个接口协议,主要描述了主设备和从设备之间的数据传输方式.在ZYNQ中继续使用,版本是A ...
- 【高速接口-RapidIO】5、Xilinx RapidIO核例子工程源码分析
提示:本文的所有图片如果不清晰,请在浏览器的新建标签中打开或保存到本地打开 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:Vivado2015.4.2 ...
- zynq里面的AXI总线(2017-1-11)
在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议.其中三种AXI总线分别为: AXI4:(For high-performance memory-mapped requir ...
- 5.Xilinx RapidIO核例子工程源码分析
https://www.cnblogs.com/liujinggang/p/10091216.html 一.软件平台与硬件平台 软件平台: 操作系统:Windows 8.1 64-bit 开发套件:V ...
- 【转】AXI_Lite 总线详解
目录: · 1.前言 · 2.AXI总线与ZYNQ的关系 · 3 AXI 总线和 AXI 接口以及 AXI 协议 · 3.1 AXI 总线概述 · 3.2 AXI 接口介绍 ·3.3 AXI 协议概述 ...
- S02_CH12_ AXI_Lite 总线详解
S02_CH12_ AXI_Lite 总线详解 12.1前言 ZYNQ拥有ARM+FPGA这个神奇的架构,那么ARM和FPGA究竟是如何进行通信的呢?本章通过剖析AXI总线源码,来一探其中的秘密. 1 ...
- AXI总线简介、ID分析、DMA、Vivado烧录、系统集成
转载:https://blog.csdn.net/CrazyUncle/article/details/89918030?depth_1-utm_source=distribute.pc_releva ...
- PowerDesigner创建物理模型
原文:PowerDesigner创建物理模型 Using PowerDesigner Create PDM 1.打开PowerDesigner 按Ctrl+N 创建物理模型 2.创建后修改名称,并在工 ...
- 接口与协议学习笔记-AMBA片上通信协议_APB_AHB_AXI_AXI4不同版本(二)
随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的SoC设计中,片上总线设计是最 ...
随机推荐
- test-02-java 单元测试框架 junit5 入门介绍
拓展阅读 junit5 系列 基于 junit5 实现 junitperf 源码分析 Auto generate mock data for java test.(便于 Java 测试自动生成对象信息 ...
- 【Unity3D】选中物体描边特效
1 前言 描边的难点在于如何检测和识别边缘,当前实现描边特效的方法主要有以下几种: 1)基于顶点膨胀的描边方法 在 SubShader 中开 2 个 Pass 渲染通道,第一个 Pass ...
- 【Unity3D】碰撞体组件Collider
1 前言 Unity3D 中碰撞体(Collider)组件用于检测运动的物体之间是否发生碰撞,也可以作为触发器使用.产生碰撞的条件是: 2 个游戏对象都有 Collider 至少有一个游戏对象有 ...
- CSS实现渐隐渐现效果
CSS实现渐隐渐现效果 实现渐隐渐现效果是比较常见的一种交互方式,通常的做法是控制display属性值在none和其它值之间切换,虽说功能可以实现,但是效果略显生硬,所以会有这样的需求--希望元素消失 ...
- 使用 Visual Studio 断点调试 DLL
继上文说到使用 IDA 和 WinDbg 调试无 dmp 文件 那么在有源码的情况下可以直接断点调试 DLL,目的是查看 DLL 内部的函数调用 场景: 程序执行到某个 DLL 时突然崩溃,先确定 ...
- win32改变静态控件的文本大小
HWND static_ = CreateWindow(L"STATIC", NULL, WS_CHILD | WS_VISIBLE | SS_LEFT, 100, 100, 10 ...
- 【Android逆向】修改so文件方式修改程序行为
1. 还是之前的那个apk 链接:https://pan.baidu.com/s/1vKC1SevvHfeI7f0d2c6IqQ 密码:u1an 尝试使用 010Editor来修改so文件 2. 使用 ...
- 【Azure 媒体服务】记录一个简单的媒体视频上传到Media Service无法播放问题
问题描述 从本地上传到Azure Media Service Portal的视频,并且新增定位符后,无法播放.但是上传的其他视频是可以的.疑惑中!! 问题自查 自查发现,是视频的文件名中有个特殊符号. ...
- 【Azure 应用服务】Azure Function 中运行Powershell 脚本,定位 -DefaultProfile 引发的错误
问题描述 突然之间,使用PowerShell脚本 Get-AzVirtualNetwork 获取虚拟网络信息时,如果带上 -DefaultProfile $sub 参数,就出现 Azure cred ...
- BeanShell Sampler 前置处理器
一概念: 前置处理器主要作用: 用于修改即将发送的http的请求数据 BeanShell预处理器可以在取样器发送请求之前被执行,可以通过它完成发送请求所需的数据 其中的ctx.vars.props.p ...