FPGA-AXI4接口协议概述

假设我们要传一帧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 得以传输。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Turbo C++ v3.7.8.9的下载和安装(C语言编辑器完整安装步骤详细图文教程)·跟老吕学C语言(C语言必学教程之一)

[TOC](Turbo C v3.7.8.9的下载和安装(C语言编辑器完整安装步骤详细图文教程)) 跟老吕学C语言(C语言必学教程之一) 老吕是通过 Turbo C 编译器开始了 C 编程培训和开发。 本文中,老吕将带你了解如何下载 Turbo C,如何在任何最新 W…

十堰网站建设公司华想科技具有10年的网站制作经验

2018年已经结束了。 华翔科技收到了很多客户的咨询,他们都有一个共同的问题:建一个网站需要多少钱? 但是,我们都会问:您有什么具体需求吗? 大多数人的答案是否定的,他们只是想打听一下价格。 十…

学习JAVA的第十九天(基础)

目录 File 成员方法(判断和获取) 成员方法(创建和删除) 成员方法(获取并遍历) IO流 FileOutputStream FileInputStream 文件拷贝 前言:学习JAVA的第十八天(基础)…

一文读懂:公网IP地址证书

公网IP证书是一种SSL证书,用于验证和确认特定的公网IP地址是否实际属于申请者。如果验证通过,证书颁发机构将向该IP地址持有人颁发一个以IP地址为主题的SSL证书。使用公网IP证书可以有效提升IP身份的辨识度,减少网站链接被假冒的风险&#xf…

办公技巧分享:如何更新二维码的内容,并重新设计二维码样式?

怎样修改已经打印(或发布)的二维码的内容?还有能不能重新设计二维码的样子、颜色?即使二维码已经发布了,打印了。 其实,这都很容易实现。 今天的这篇教程就来详细说明如何更新二维码的内容?以…

这个简历你给几分?

求大家给给建议😭😭 自己算法几乎没刷过,项目也不咋好 打算21号开始投日常实习 好慌

Day31-计算机基础1

Day31-计算机基础1 1. 网络基础介绍1.1 什么是网络?1.2 为什么要有网络?1.3 运维人员需要学习哪些网络知识?1.4 按作用范围对网络分类 2.网络设备知识2.1 网络传输介质及传输信号2.2 网卡设备2.3 中继器(RP repeater)2…

labview的常用小技巧

1.切换:labview中控件函数与函数选板的使用非常频繁,而使用菜单来调用他们非常不方便。最简单的调用方法是:右击前面板,弹出控件选板;右击程序框图,弹出函数选板。然后按住CtrlE组合键,即可快速…

#QT(QString)

1.IDE:QTCreator 2.实验 3.记录 4.代码

Unity之PUN实现多人联机射击游戏的优化

目录 🎮一、 跳跃,加速跑 🎮二、玩家自定义输入昵称 🍅2.1 给昵称赋值 🍅2.2 实现 🎮三、玩家昵称同步到房间列表 🍅3.1 获取全部玩家 🍅3.2 自定义Player中的字段 &#…

优思学院|5S 应该由哪个部门负责推行?

很多人以为5S是生产部的事,负责的部门自然是生产部,事实上这是一个很严重的错误,那么,究竟5S 应该由哪个部门负责推行?我们今天就来讨论一下。如果你喜欢我们的文章,记得点赞和收藏。 5S是全员参与的活动&…

是什么样的父母才是真正内心最强

真正的内心强者:育子之道 在这个世界上,每个人都在追求内心的强大,而真正的内心强者往往是那些在育子之道上执着前行的父母。他们用自己的智慧和爱心,培养出独立、自信、有责任感的孩子,同时也锻造了自己的内心力量。…

第十一届“图灵杯“NEUQ-ACM程序设计竞赛-H(卷王)

思路&#xff1a;二分加爬树&#xff08;本人较为满意&#xff09; #include <bits/stdc.h>#define endl \n using ll long long; typedef unsigned long long ull; using namespace std;void GordenGhost();signed main() { #ifdef Gordenfreopen("in.txt",…

Win11用户必看:Win11 24H2版本更新教程!

随着Win11系统的不断更新&#xff0c;24H2版本带来了许多令人期待的新功能和优化。为了帮助您顺利完成更新&#xff0c;小编给您提供了详细的更新教程。按照本文的步骤进行操作&#xff0c;您将能够轻松完成Win11 24H2版本的更新&#xff0c;并享受全新的系统体验。 Win11 24H2…

助力头部银行10倍提升数据化运营效率,NoETL的破局之道丨爱分析活动

在数字化飞速发展的今天&#xff0c;企业经营者们逐渐认识到数据平台对于企业生产经营所不可或缺的价值。随着数据平台不断发展和进化&#xff0c;数据量、数据源、用数人群也日益增加&#xff0c;对于业务用数敏捷和数据管理有序同样带来了全新的挑战。数据应用层面&#xff0…

[Flutter]自定义等待转圈和Toast提示

1.自定义样式 2.自定义LoadingView import package:flutter/material.dart;enum LoadingStyle {onlyIndicator, // 仅一个转圈等待roundedRectangle, // 添加一个圆角矩形当背景maskingOperation, // 添加一个背景蒙层&#xff0c; 阻止用户操作 }class LoadingView {static f…

CleanMyMac X 4.14.1中文版功能介绍及激活入口

细心的用户发现苹果Mac电脑越用越慢&#xff0c;其实这种情况是正常的&#xff0c;mac电脑用久了会产生很多的缓存文件&#xff0c;如果不及时清理会影响运行速度。macbook就会产生各种各样的垃圾文件,比如说残留的注册表或者无效的注册表,系统碎片以及毫无用处的文件等,这些的…

C++动态二维数组vector<vector<T>>详细讲解

前言 在本文章中&#xff0c;我们将要详细介绍一下C中vector关于动态二维数组vector<vector>。 一、杨辉三角的引入 我们在介绍动态二维数组之前&#xff0c;先来看一下这道题目 在本题目中&#xff0c;我们很容易发现规律&#xff0c;两边数据为1,剩下的按照一定的规…

Dynamo程序添加到Revit工具栏(懒人版)

你是不是想将Dynamo写好的程序添加到Revit工具栏&#xff1f; 你是否还在因为Dyno Browser配置起来太复杂而烦恼&#xff1f; 你是否因为Dynamo不同版本&#xff0c;无法单独配置工具栏而发愁&#xff1f; 今天九哥来给大家弄了一个更简单的工具&#xff0c;是拿网上开源的工…

巫蛊之祸——汉武帝后期的一次重大事件

引 言 “巫蛊之祸”是汉武帝在位后期发生的一次重大政治事件&#xff0c;也是西汉历史上最大的冤案&#xff0c;此案导致皇后卫子夫和太子刘据自杀&#xff0c;数万人头落地&#xff0c;几十万人被牵连。 一、巫蛊之术的由来 《汉书》记载&#xff0c;巫蛊之术起源自胡巫&am…