深入浅出AXI4协议(1)——概述

news2024/9/24 23:32:54

写在前面

        从这篇文章开始,我们将正式进入AXI4协议的学习,在xilinx系列的FPGA中,AXI4协议的使用是非常广泛的,很多的IP核都会支持AXI接口,而如果使用的是zynq系列,那AXI协议的学习更是重中之重。但是作为一款商用的成熟的总线协议,AXI接口本身的复杂程度也让很多初学者觉得无从下手。本系列希望通过最朴素的语言和一系列的使用实例帮助读者快速入门AXI4协议。但是笔者受限于自身水平有限,难免会有纰漏和理解不深刻的地方,还望读者不吝指正。

一、通信协议

        AXI协议本身是一种数据传输协议,其作用就是把数据从一端传输到另一端,也就是一种通信,所以我们首先来理解一下什么是通信协议。

        通信协议,简单说就是双方进行信息传递所遵循的某种规则,举一个最简单的例子,古代的烽火台就可以理解成一种通信协议:通信的双方约定当烽火台点起,就意味着有敌情,这就是一种最简单的通信协议。

7aeb210523b24d8f8b5c4da88b115048.jpeg

        但是考虑一些现实因素,有时候我们的通信会发生意外,信宿(接收方)无法正确收到信源(发送方)。那么为了使得信息能够确保正确的从一端传输到另一端,看我们就可以引入一个确认信号,当接收方正确收到信息,就给发送方发一个确认信号,如果发送方在一定时间内没有收到确认信号,就认为这次通信是失败的(不管是发送的信息丢失还是确认信号丢失)。

        还有的时候,发送方准备发送数据了,但是接收方却没有做好接收的准备,设想一下,这边烽火狼烟点着了,那边负责接收的工作人员睡着了(好像不太可能,但是在通信中接收端没准备好还是很常见的)。因此,为了确保我们的通信能够正常进行,在真正重要的信息开始传输之前,最好还能有一个建立传输的机制,这里不妨就称之为握手机制吧。

        还有一个问题,烽火台是单向的传输(边境—>中央),但是我们的信息通信有时候需要的双向可传输(你也不想打电话的时候只能听不能说吧),在专业的通信领域,会有很多的方式(例如使用不同的频段进行传输)来实现这一需求,但是对于总线的设计来说,简单才是最重要的,那就开设2个通道嘛,一个用于A->B,一个用于B->A 。

        说了这么多通信协议的内容,主要是因为这是我们理解AXI总线协议设计初衷的必要储备,我们学习总线协议,最低的境界是学会如何使用它,更高的境界是从设计者的角度去理解为什么要这么进行设计。

二、AXI 概述

        言归正传,首先我们来认识一下什么是AXI协议。AXI,是Advanced eXtensible Interface的缩写,其中文含义是高级可扩展接口,它是 ARM 公司所提出的 AMBA (Advanced Microcontroller Bus Architecture)协议的一部分。如今主流的是AXI4,本系列文章也是以AXI4为讨论主题。(AXI4不是意味着AXI的第四代,是因为其是ABMA4协议的一部分,最早的AXI是AXI3,如今在一些地方还依然能看,如今随着AMBA5的推出,已经出现了AXI5,不过版本间都是向下兼容,且变化不大)。

1、AXI特点

        AXI是一种面向高性能、高带宽、低延迟的片内总线,它具有如下的几个特点:

        (1)总线的地址/控制和数据通道是分离的;

        (2)支持不对齐的数据传输;

        (3)支持突发传输,突发传输过程中只需要首地址;

        (4)具有分离的读/写数据通道;

        (5)支持显著传输访问和乱序访问;

        (6)更加容易进行时序收敛。

        这里暂时不做深入的解读,我们随着学习的深入来逐步体会这些特点。

2、AXI优点  

        AXI在如今xilinx的FPGA中有着非常广泛的应用,必然有其特殊的优点,主要就体现在三个方面

2.1 生产性

        (1)将不同的接口整合到一个接口(AXI4)中,因此用户仅需要了解单个系列的接口即可。

        (2)简化了不同领域IP的集成,并使自身或者第三方IP的开发工具更简单易行。

        (3)由于AXI IP已经为实现最高性能、最大吞吐量及最低时延进行了优化,从而进一步简化了设计工作。

2.2 灵活性

        (1)支持嵌入式、DSP及逻辑版本用户

        (2)调节互联机制,满足系统要求,即性能、面积和功耗。

        (3)帮助设计者在目标市场中构建最具号召力的产品

2.3 可获得性

        (1)第三方IP和EDA厂商普遍采用AXI4标准从而使该接口获得广泛的应用。

        (2)基于AXI4的目标设计平台可加速嵌入式处理,DSP及连接功能设计开发。

2.4 优点 小结

        其实很简单,说白了就是好用,和搭积木一样,这个零件只要支持AXI接口,很多地方都能搭起来,而且性能还好,然后大家都在用,就这么简单。 

3、AXI分类

        AXI4下面也有细分:

AXI4(AXI4-full)高性能存储映射接口
AXI4-Lite简化版的 AXI4 接口,用于较少数据量的存储映射通信
AXI4-Stream用于高速数据流传输,非存储映射接口

        这里面设计到了一个概念:存储映射(Memory Map)。如果一个协议是存储映射的,那么主机所发出的会话(无论读或写)就会标明一个地址。这个地址对应于系统存储空间中的一个地址,表明是针对该存储空间的读写操作。简单说就是主机会给出一个地址去对应从机的某个区域。       

        AXI4 协议支持突发传输,主要用于处理器访问存储器等需要指定地址的高速数据传输场景。AXI-Lite 为外设提供单个数据传输,主要用于访问一些低速外设中的寄存器。而 AXI-Stream 接口则像 FIFO 一样, 数据传输时不需要地址,在主从设备之间直接连续读写数据,主要用于如视频、高速 AD、PCIe、DMA 接口等需要高速数据传输的场合。
 

三、AXI4 结构

1、通道结构

AXI4和AXI4-Lite包含5个独立的通道:

        (1)读地址通道(Read address channel,AR)

        (2)读数据通道(Read data channel,R)

        (3)写地址通道(Write address channel,AW)

        (4)写数据通道(Write data channel,W)

        (5)写响应通道(Write response channel,B)

        回想一下我们最开始聊的通信协议,首先分通道是因为会有两个方向的数据要传输,这里由于是存储器映射的方式,所以除了数据通道,还需要有地址通道2条,而这里的读响应通道,就像是我们之前说的确认信号,我们进行一个写操作,但是有没有写成功我们却不知道,所以引入了确认机制(写响应)。为什么没有读响应通道?你在读数据的时候自己有没有读到还能不知道嘛。

2、通道定义

        AXI通道定义:每一个独立的通道都包含一组信息信号、VALID信号和READY信号,用于提供双向的握手机制。握手机制我们之前也在通信协议的部分提到了,这里补充一下AXI的握手机制:

(1)所有的五个通道都是通过相同的VALID/READY握手处理来传输地址、数据和控制信息。

(2)双向握手的机制意味着主机和从机之间传输数据时,都可以控制传输的速率

(3)只有当VALID和READY同时为高电平时,传输才会发生。

(4)信息的源端使用VALID信号表示当前通道地址、数据和控制信息什么什么时候有效

(5)目的端使用READY信号表示什么时候可以接受信息

  • 读数据通道和写数据通道都包含一个LAST信号,用来表示传输的最后一个数据。
  • 读数据通道和写数据通道都包含各自的地址通道,地址通道携带了请求所需的地址和信息。
  • 读数据通道由从机发送给主机,包含了读数据和读响应的信息,读响应的信号用于表示读数据是否操作完成。
  • 写数据通道由主机发送给从机,包含了写数据,然后通过WSTRB信号表示当前数据的哪个字节有效。
  • 写响应通道由从机发送给主机,包含了写响应信号,用于表示当前写操作是否完成。

        这里补充说一下last信号,在通信协议的部分,我们说到了通信前要建立连接,既然有建立,就应该要有释放,所以就要释放约定什么是最后一个数据,这就是我们的last信号。

四、总结

        本文我们主要介绍了什么是AXI协议,AXI协议的特点与优点,然后对于AXI协议非常重要的五通道结构进行了介绍,了解了五通道各自的作用,初步了解了AXI协议中至关重要的握手协议,这是本系列的第一篇文章,带领大家了解一下我们学习的对象,接下来的文章中,我们将正式开始AXI协议深层次的学习。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/930562.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Weblogic漏洞(一)之 Weblogic基本介绍

Weblogic基本介绍 WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。将Java的动态功能和Java Enterprise…

【数据结构】 栈(Stack)的应用场景

文章目录 🌏前言🍀改变元素的序列🚩场景一📌解析: 🚩场景二📌解析: 🎍将递归转化为循环🌳[括号匹配](https://leetcode.cn/problems/valid-parentheses/)&…

指针-C语言(初阶)

目录 一、什么是指针 二、指针和指针类型 2.1 指针-整数 2.2 指针的解引用 三、野指针 3.1 野指针形成原因 3.2 如何规避野指针 四、指针运算 4.1 指针-整数 4.2 指针-指针 4.3 指针的关系运算 五、指针和数组 六、二级指针 七、指针数组 一、什么是指针 指针是内存中一个…

k-近邻算法概述,k-means与k-NN的区别对比

目录 k-近邻算法概述 k-近邻算法细节 k值的选取 分类器的决策 k-means与k-NN的区别对比 k-近邻算法概述 k近邻(k-nearest neighbor, k-NN)算法由 Cover 和 Hart 于1968年提出,是一种简单的分类方法。通俗来说,就是给定一个…

Linux操作系统--网络配置(2)

在上一次课程中,我们对Linux课程中的网络有了一个了解,下面我们来看看如何配置网络IP。 1.配置网络IP地址 在Linux操作系统中,比如搭建集群,这一个时候如果使用DHCP实现动态IP的分配,那么如果需要访问管理其中一个节点操作时候,就需要通过其IP访问。这一个时候还得去查看…

十五、systemctl命令如何使用?

在Linux系统中,一些内置服务可以通过systemctl控制,部分第三方软件也可以通过systemctl控制。 1、基础语法 start:开启服务; stop:关闭服务; status:查看服务当前状态; enable&a…

【推荐】Spring与Mybatis集成整合

目录 1.概述 2.集成 2.1代码演示: 3.整合 3.1概述 3.2 进行整合分页 接着上两篇,我已经写了Mybatis动态之灵活使用,mybatis的分页和特殊字符的使用方式接下来把它们集成起来,是如何的呢👇👇&#x1…

Stm32的时钟系统以及使用SysTick滴答定时器实现延时

前言 STM32的时钟系统由多个时钟源和时钟树组成时钟源包括主时钟源(HSE)、内部高速时钟源(HSI)、内部低速时钟源(LSI)和外部低速时钟源(LSE)。时钟树由多个时钟分频器和时钟门控器组…

五、多表查询-2.概述分类

一、多表查询概述 二、演示 1、准备数据 (1)创建emp1表并注入数据,添加外键: 2、多表查询 一共 102条数据:17个员工,6个部门,176102 3、消除笛卡尔积 一共16条记录: 为啥17个员工&…

Aos插件实现滚动动画效果

aos文档 aos使用感受跟wow相似&#xff0c;但比wow多了浏览器回滚&#xff0c;动画效果会再次展现 安装 npm install aos使用 main.js全局导入css import aos/dist/aos.cssvue文件 <template><div class"box"><div class"code" v-for&q…

Java接收json参数

JSON 并不是唯一能够实现在互联网中传输数据的方式&#xff0c;除此之外还有一种 XML 格式。JSON 和 XML 能够执行许多相同的任务&#xff0c;那么我们为什么要使用 JSON&#xff0c;而不是 XML 呢&#xff1f; 之所以使用 JSON&#xff0c;最主要的原因是 JavaScript。众所周知…

搭建 Qt6 开发环境

作者&#xff1a; 一去、二三里 个人微信号&#xff1a; iwaleon 微信公众号&#xff1a; 高效程序员 Qt 是一个跨平台的 C 应用程序开发框架&#xff0c;它提供了丰富的组件库和工具&#xff0c;使得开发人员可以在各种平台上轻松地开发 GUI 应用程序。 由于我们的教程 《细说…

嵌入式设备应用开发(发现需求和提升价值)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 很多做技术的同学,都会陷入到技术的窠臼之中。对于如何做具体的产品、实现具体的技术,他们可能很感兴趣。但是做出来的东西做什么用,或者说是有没有竞争力,事实上他们不是很关心…

二叉搜索树-----红黑树

✅<1>主页&#xff1a;我的代码爱吃辣&#x1f4c3;<2>知识讲解&#xff1a;数据结构——红黑树☂️<3>开发环境&#xff1a;Visual Studio 2022&#x1f4ac;<4>前言&#xff1a;红黑树也是一颗二叉搜索树&#xff0c;其作为map&#xff0c;set的底层…

AttributeError: module ‘torchvision.io.image‘ has no attribute ‘ImageReadMode‘

我的torch和torchvision版本 import torch torch.__version__‘1.7.1cu110’ import torchvision torchvision.__version__‘0.8.2cu110’ 原代码 mode torchvision.io.image.ImageReadMode.RGB labels.append(torchvision.io.read_image(os.path.join(voc_dir, Segmentat…

文生图模型之Stable Diffusion

原始文章地址 autoencoder CLIP text encoder tokenizer最大长度为77&#xff08;CLIP训练时所采用的设置&#xff09;&#xff0c;当输入text的tokens数量超过77后&#xff0c;将进行截断&#xff0c;如果不足则进行paddings&#xff0c;这样将保证无论输入任何长度的文本&…

Vue2向Vue3过度核心技术综合案例

目录 1 面经基础版-案例效果分析1.面经效果演示2.功能分析3.实现思路分析&#xff1a;配置路由功能实现 2 面经基础版-一级路由配置3 面经基础版-二级路由配置1.使用场景2.语法3.代码实现 4 面经基础版-二级导航高亮1.实现思路2.代码实现 5 面经基础版-首页请求渲染1.步骤分析2…

新开通的抖店体验分太低,达人不愿意合作怎么办?解决办法如下

我是王路飞。 找达人带货的玩法是最适合新手抖店商家的&#xff0c;同时也是最适合长线去玩的方法。 但是新手前期找达人的时候&#xff0c;会有一个难点&#xff0c;就是自己的抖店因为是新开通的&#xff0c;所以要么没体验分&#xff0c;要么就是体验分太低了&#xff0c;…

崔东树:汽车行业正在迎来令人兴奋的时代,智能座舱推动私车普及

随着新能源汽车和智能座舱的不断发展&#xff0c;汽车行业正经历着一场革命性的变革。当前&#xff0c;不仅汽车电动化的进程在加速推进&#xff0c;智能座舱的升级与完善也成为了行业的热点话题。崔东树指出&#xff0c;随着汽车电动化和智能化的发展&#xff0c;智能座舱的快…

学习高等数学需要的初等数学知识

文章目录 名词解释常用希腊字符读音幂、根式和对数常用的三角函数值三角函数变换一元二次方程求解充分条件和必要条件切线方程、斜率和法线隐函数极坐标排列组合 名词解释 教材中存在着许多熟悉且陌生的词汇&#xff0c;作者在此进行了整理&#xff1a; 概念&#xff1a;概念…