FPGA-AXI4接口协议概述

news2024/11/15 8:34:52

假设我们要传一帧1080P的图片到显示屏显示,那么需要多大的储存空间呢?

        一帧1080P的RGB565图像数据需要1920*1080*16=33.1776Mb 存储空间

下图是ZYNQ-7000系列中Block RAM的大小:

可以看到最大存储空间的BRAM都不能存储一帧图片,那么该用什么存储呢?

DDR: Double Data Rate Synchronous Dynamic Random Access Memory,双倍数据率同步动态随机存储器。

DDR是一种高性能的随机存储器,它能够在时钟的上升沿和下降沿各进行一次数据传输,从而实现双倍速率。发展至今DDR已经一直迭代到了DDR5,不同版本的DDR有着各自独特的应用领域。

DDR3挂载在PS端,內部设计了DDR_Controller,通过可编程逻辑到内存互联与PL端交互。

存在以下三个问题

ZYNQ核:就是PS端到PL端一个功能的的封装。

前两个问题就可以用ZYNQ核实现,最后一个问题用AXI总线实现。

ZYNQ7000(PS端开发流程)系列PS端使用的是ARM公司的硬核CPU,内部使用的是ARM公司的AMBA架构,该架构包含AHB,ASB,APB,AXI四种协议。

 

1,AXI总线

AXI最早的版本为 AXI3,协议中地址/控制和数据相位是分离的,支持不对齐的数据传输、Outstanding 传输访问和乱序访问。数据以突发(burst)的形式组织,只需要首地址,就能完成一次多数据的突发传输。 2010 年,ARM 公司发布了 AMBA 4.0 协议,AXI协议也由AXI3 升级为 AXI4。相较于AXI3,AXI4协议移除了一些不太实用的信号,比如移除了用于标志写指令 ID 的 WID 信号,因此 AXI4 不再支持乱序写;除此之外添加了一些新的信号,比如说用户信号和 Qos 信号(Quality of Service);对一些功能也进 行了修改,比较有代表的就是突发长度由原来的最高 16,变为了最高 256;除 了这些之外,AXI4 还定义了一种新的协议——AXI4-Lite,这是一种简化版的 AXI4 协议,应用于一些总线性能要求较低的场景。

AXI4协议中设备有主机和从机之分,主从机通信时所有信号都是在全局时钟ACLK上升沿采样的,传输的数据以Burst形式组织,传输Burst这个操作称为AXI Transaction,每个Burst可被拆分为多次传输,每个拆分的数据称为Beat

所以:AXI Transaction =m*burst= m*n*beat= m*n*transfer (m,n>= 1)

AXI协议总共有3种总线接口,不同接口面向不同的应用场景:

 AXI4:主要面向高性能地址映射(memory map)通信的需求,是面向 地址映射的接口,在单地址传输的情况下最大允许 256 个时钟周期的数 据突发长度。AXI4 总线允许符合 AXI4 的系统实现非常高的数据吞吐 量,同时还支持数据大小调整、多个 outstanding 操作和乱序事务处理。 在硬件级别,AXI4 允许每个 AXI 主从使用不同的时钟构建系统。 此外, AXI4 协议允许插入寄存器片以帮助时序收敛。

 AXI4-Lite:用于简单、低吞吐量的内存映射通信(例如,与控制寄存 器和状态寄存器之间的通信)。是一个轻量级的地址映射单次传输接口, 占用很少的逻辑单元。该接口是 AXI4 接口的简化版,突发长度从 256 被限制到 1,也就意味着无法进行突发传输,逻辑资源的减少,也就导 致无法实现较为复杂功能。

 AXI4-Stream:主要面向高速流数据传输;与 AXI4 的区别是没有了地 址接口,因此不涉及读写数据的概念,数据只是进行简单的接收与发 送。这种方式减少了传输时的延时,允许无限制的数据突发传输规模。

AXI4 和 AXI4-Lite 接口由五个不同的通道组成,即: 1. 写地址通道(write address channel,AW) 2. 写数据通道(write data channel,W) 3. 写响应通道(write response channel,B) 4. 读地址通道(read address channel,AR) 5. 读数据通道(read data channel,R)

2,读写事务通道

AXI4 和 AXI4-Lite 接口由五个不同的通道组成,即:

1. 写地址通道(write address channel,AW)

2. 写数据通道(write data channel,W)

3. 写响应通道(write response channel,B)

4. 读地址通道(read address channel,AR)

5. 读数据通道(read data channel,R)

写事务,读事务中主机与从机之间的交互关系:

这两种事务包含以下特点:

1 这 5条独立的通道都包含一个双路的 VALIDREADY握手机制。信息源通过VALID 信号来指示通道中的数据和控制信息什么时候有效。目地源用 READY 信号来表示何时准备好接收数据。传输地址信息和数据都是在 VALID 和 READY 同时为高时有效。

2 读数据和写数据通道都包括一个 LAST 信号,用来指明一个事务传输的最后一个数据。

3 读/写事务都有自己的地址通道,地址通道携带着传输事务所必须的地址 和信息。

4 读数据通道传送着从设备到主机的读数据和读响应信息。读响应信息指明读事务的完成状态

5 写数据通道传送着主机向设备的写数据和写控制信息(TLAST)。写响应通道提供了设备响应写事务的一种方式。在每一次突发式写会产生一个完成信 号。 

而每个AXI4-Stream 都充当具有握手数据流的单个单向通道。因此,AXI4- Stream 接口没有以上五个通道,但是传输前需要先进行上述握手过程,在握手 完成后,数据会被直接传输。

3,通道信号介绍

(1)写事务中写地址通道的信号和源:

(2)写事务中写数据通道的信号和源:

(3)写事务中写响应通道的信号和源:

(4)读事务中读地址通道的信号和源:

(4)读事务中读数据通道的信号和源:

读事务之间的依赖关系:

4,典型时序

下图分别 为 AXI4 突发写的典型时序和AXI4 突发读的典型时序,其中绿色信号为全局信号,红色信号为主机发送给从机的信号,蓝色信号为从机发送给主机的信号。

        在进行写事务时,主机首先会将待写入数据的地址以及控制信号放入写地址通道,随后进行握手,握手成功后,地址和控制信号被写入从机。这里的控制信号包括突发长度、数据包大小、突发类型等等。接着主机通过写数据通道向从机传输数据,每传输一次数据就要进行一次握手,只有握手成功,数据才会被写入到从机中。当最后一组数据被放到写数据通道时,主机还会产生一个 写控制信号WLAST,用来告诉从机这是最后的数据。从机在接收了最后一 Beat 以及 WLAST 信号后,会通过写应答通道向主机发送写响应信号 BRESP,以告知主机,本次传输状态。

        在进行读事务时,主机同样首先将待读取的地址以及控制信号放入读地址通道,随后进行握手,握手成功后,地址和控制信号被写入从机。接着从机将指定地址的读数据放入写数据通道,并产生读响应信号,当读数据通道握手成 功时,数据与响应信号被发送给主机。当最后一 Beat 数据被放到读数据通道时, 从机会拉高读控制信号 RLAST,以告知主机本次读传输结束。

5,握手机制

        五个通道想要进行数据交互首先需要进行双向握手,握手时,传输源(发送方)会产生 VALID 信号来指明此时的数据或控制信号是否有效,目的源(接收方)会产生 READY 信号来告诉传输源,是否已经准备好接收数据或控制信号了。只有当这两个信号都为高时,才算握手成功,传输源会在握手成功时的时钟上升沿进行一次数据传输。

        这种双向流控机制使得发送与接收双方都有能力控制传输速率,通过控制 VALID 和 READY 的高低电平来控制传输的时机以及速度。

        既然是握手机制,自然也就跟我们平时握手时一样,会有个先后顺序, VALID 和 READY 在握手时共有三种关系:

1. VALID 信号先拉高, READY 信号后拉高

此时握手信号与数据以及时钟的关系如下:

这里的 ACLK 为 AXI4的全局时钟,INFORMATION 为待传输的内容, VALID/READY 为握手信号。从图中可以看到,VALID 信号在 T1 信号之后到来 (拉高),与其一起来的还有数据、地址或者控制信号。而 READY 信号则是在 T2之后被拉高,因为错过了上升沿,直到T3时刻才被检测到,此时握手成功, 内容得以被传输。

AXI4 协议中规定,VALID 信号一旦拉高,在握手成功之前不能被拉低,因 此,VALID 信号会一直等待,直到在上升沿时刻检测到 READY 为高后 VALID 才能被拉低。

2. READY 信号先拉高,VALID 信号后拉高

此时握手信号与数据以及时钟的关系如下:

可以看到,T1 时刻之后 READY 信号拉高,而 VALID 信号则是在 T2 时刻 之后拉高,因为错过了时钟上升沿,所以在 T3 时刻才握手成功,此时, INFORMATION 中的信息被传输。

实际上,即使 READY 信号被拉高,只要 VALID 信号没有被拉高,接收方也可以拉低 READY 信号。例如,接收方置高 READY后,发现自己还有传输需 要完成,而此时发送方还没准备好数据(未置高VALID),这时候接收方便能够拉低 READY信号,转去处理其他传输,传输完成后再回来拉高 READY等待接 收数据。

3. VALID 信号和 READY 信号一起拉高

这种情况下就比较简单,READY 信号与 VALID 信号同时拉高,在下一个 时钟上升沿也就是 T2 被检测到,此时握手成功,INFORMATION 得以传输。

五个通道都有自己的握手信号对,对应的名称如下:

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

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

相关文章

#QT(智能家居界面-布局)

1.IDE:QTCreator 2.实验: 水平布局,垂直布局,栅格布局(弹簧) 界面自动调整 3.记录 注意弹簧不是拖拽拉长,而是使用栅格布局 运行发现窗口放大缩小可以自动调整 如果想要重新布局,需…

【短时交通流量预测】基于双层BP神经网络

课题名称:基于双层BP神经网络的短时交通流量预测 版本时间:2023-04-27 代码获取方式:QQ:491052175 或者 私聊博主获取 模型简介: 城市交通路网中交通路段上某时刻的交通流量与本路段前几个时段的交通流量有关&…

为什么各品牌主食冻干差价那么大?真正性价比高的主食冻干分享

随着科学养猫知识的普及,主食冻干喂养逐渐受到了许多铲屎官的青睐。然而,也有不少的铲屎官看到主食冻干的价格望而却步。实际上,像我这样的资深铲屎官早已开始主食冻干喂养。虽然主食冻干的价格相对于烘焙粮和膨化粮要高一些,但它…

es6 相关面试题

1 var, let ,const 区别? 2 手写将对象进行合并 手写合并对象 3 普通函数和箭头函数区别? 4 find 和 filter的区别? 5 some和every区别?

OCR 文字识别在未来会有哪些发展趋势?

随着技术的不断进步,OCR(光学字符识别)文字识别技术也在不断发展。未来,OCR 文字识别技术将会呈现以下几个发展趋势: 一、更高的识别准确率 OCR 技术的核心是识别准确率。随着深度学习等人工智能技术的发展&#xff0c…

测温线夹装置

测温线夹是一种用于测量温度的装置,通常用于电力系统中监测电气设备的温度。它可以安装在电气设备的导线上,通过感应导线的温度来测量电气设备的运行状态。测温线夹通常由金属材料制成,具有耐高温、耐腐蚀等特点,适用于各种恶劣的…

一文读懂Persistence One- 如何将Restaking带入Cosmos

Persistence One正在将Restaking引入Cosmos。用户将能够通过pSTAKE、Stride、Quicksilver和Milkyway将Liquid Staked Tokens(如ATOM、TIA、DYDX等)存入Persistence One,对其进行Restaking,从而安全地连接更多区块链,首…

苹果电脑专业的Mac垃圾清理工具CleanMyMac X4.14.7

CleanMyMac X是一款专业的Mac清理工具,它具有强大的功能和易用的界面,可以帮助用户快速清理Mac上的无用文件和垃圾,优化系统性能,提升电脑运行速度。 该软件的核心功能包括智能扫描与清理、应用程序管理、隐私保护和系统维护等。…

Python的http模块requests

模块简介: requests 库是一个 python中比较有名的 http请求的库,能处理 get,post,put,delete 等 restful请求,能设置 header,cookie,session 等操作,也是作为爬虫的基础库,它目前还不能异步请求,如果要支持…

Spring循环依赖:原因与解决方法

在Spring框架中,处理循环依赖一直备受关注。这是因为Spring团队在源代码中为了解决这个问题做了大量的处理和优化。同时,循环依赖也是Spring高级面试中的必考问题,对其深入了解可以成为面试中的制胜法宝。本文将详细介绍Spring循环依赖的产生…

【Datawhale组队学习:Sora原理与技术实战】Attention和LLM

Attention Attention 注意力,从两个不同的主体开始。 论文:https://arxiv.org/pdf/1703.03906.pdf seq2seq代码仓:https://github.com/google/seq2seq 计算方法: 加性Attention,如(Bahdanau attention&…

备战蓝桥杯---图论应用1

目录 1.增加虚点建图: 2.抽象图的迪杰斯特拉: 3.用bitset优化弗洛伊德: 4.有向图的Prim/kruskal: 1.增加虚点建图: 我们当然可以每一层与上一层的点再连上一条边,但这样子边太多了超内存,我们…

【学习心得】网站运行时间轴(爬虫逆向)

一、网站运行时间轴 掌握网站运行时间轴,有助于我们对“请求参数加密”和“响应数据加密”这两种反爬手段的深入理解。 二、从网站运行的时间轴角度来理解两种反爬手段 1、加载HTML: 这是浏览器访问网站时的第一步,服务器会返回基础…

6.Java---二维数组

打印二维数组的每个元素 上图所示,我们打印的时候将行列的数字写死,但是实际上如果这个数组有很多元素我们还要一个个数数嘛?这不是很占用我们的时间啦!因此引出下文. 代码精进 二维数组的每个元素是一个一维数组 打印二维数组的法2 打印出的格式如下: 不规则的二维数组…

LeetCode每日一题之 复写0

目录 题目介绍: 算法原理: 特殊位置处理: 代码实现: 题目介绍: 题目链接:. - 力扣(LeetCode) 算法原理: 这种对数组元素进行修改,移动的题目我们仍然可以…

使用Android Native Hook技术解决VLC播放器闪退的问题

文章目录 1.概述2.问题描述3.问题分析4.问题解决5.总结 1.概述 在做公司的一个TOB的需求时,发现调起Unity提供的3D播放器播放网络在线视频时闪退了,然后就拉着相关部门的人一起分析问题,最后定位到是VLC里面用到的系统日志打印函数在部分的系…

《UE5_C++多人TPS完整教程》学习笔记26 ——《P27 在线会话测试(Testing An Online Session)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P27 在线会话测试(Testing An Online Session)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&#xff0…

二分查找是偏爱细节的魔鬼

大家好,我是 方圆。二分查找本质上是一个规模退化且固定规模减小一半的分治算法,它的 思路很简单,但细节是魔鬼。通常我们会认为二分查找的应用场景是数组有序(单调),但实际上它也能在无序数组中应用&#…

【轻快图片管理系统】-系统预览截图

在线体验 如果你觉得项目不错,还望动动你的手指给点点star,让更多人看到优秀的项目!!! 为了便于大家在线体验,本系统提供了演示地址,可以通过下面的演示地址和账号进行登录体验系统功能。 演示…

leetcode 热题 100_和为 K 的子数组

题解一: 前缀和数组哈希表:可以计算所有子数组之和暴力求解,但复杂度太高。对于子数组求和的过程,我们可以采用前缀和数组进行优化,前缀和数组中pre[index]代表nums[0]~nusm[index]之和,当我们要计算子数组…