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 得以传输。

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

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

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

相关文章

深入理解Vue.js中的nextTick:实现异步更新的奥秘

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

javascript实现解决浮点数加减乘除运算误差丢失精度问题【收藏点赞】

相信程序都会遇到这样的问题,有时需要在js上做运算合计等浮点数加减乘除,但会有些浮点数会有误差问题。下面用js来解决浮点数加减乘除运算误差丢失精度这个请 【收藏点赞】。 是程序都会在浮点数加减乘除上有误差问题,这是计算机二进制生成的…

GPU:使用阿里云服务器,免费部署一个开源大模型

前面提到CPU版本如何安装和部署ChatGLM,虽然能部署,但是速度和GPU比起来确实一言难尽。 然后找阿里云白嫖了一个服务器(省点用的话,不用的时候关机,可以免费用两个多月没问题),只要没有申请过 …

计算机网络—eNSP搭建基础 IP网络

目录 1.下载eNSP 2.启动eNSP 3.建立拓扑 4.建立一条物理连接 5.进入终端系统配置界面 6.配置终端系统 7.启动终端系统设备 8.捕获接口报文 9.生成接口流量 10.观察捕获的报文 1.下载eNSP 网上有许多下载eNSP的方式,记得还要下其它三个Virtual Box、Winpa…

【STA】SRAM / DDR SDRAM 接口时序约束学习记录

1. SRAM接口 相比于DDR SDRAM,SRAM接口数据与控制信号共享同一时钟。在用户逻辑(这里记作DUA(Design Under Analysis))将数据写到SRAM中去的写周期中,数据和地址从DUA传送到SRAM中,并都在有效时…

安卓studio安装

安卓studio安装 2024.3.11官网的版本(有些翻墙步骤下载东西也解决了) 这次写的略有草率,后面会更新布局的,因为截图量太大了,有需要的小伙伴可以试着接受一下哈哈哈哈 !(https://gitee.com/jiuzheyangbawjf/img/raw/ma…

mybatis如何打印出完整sql语句

分两步: 1. 在application.properties配置中添加配置项: mybatis-plus.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl logging.level.mapper文件的包路径DEBUG (示例: logging.level.com.test.biztest.service.dalDEBUG, com.test.biztest.service.d…

基于SpringBoot的农产品特色供销系统(蔬菜商城)

基于SpringBoot的农产品特色供销系统(蔬菜商城) 系统介绍 该系统使用Java、MySQL、Redis、Spring Boot和HTML等技术作为系统的技术支撑,实现了以下功能模块: (1)后台管理模块,包括权限、日志、…

MySQL数据库在Windows和Linux中由于大小写默认规则不同,出现大小写问题如何解决?

Windows和Linux差异:在Windows上,lower_case_table_names默认为1,而在Linux上,默认值通常为0。因此,在Linux上更改这个设置更常见,以确保与Windows环境的兼容性或实现特定的大小写敏感性需求。 操作系统的大…

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

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

【数据结构与算法】贪心算法题解(一)

这里写目录标题 一、455. 分发饼干二、56. 合并区间三、53. 最大子数组和 一、455. 分发饼干 简单 假设你是一位很棒的家长,想要给你的孩子们一些小饼干。但是,每个孩子最多只能给一块饼干。 对每个孩子 i,都有一个胃口值 g[i],这…

Visual Studio 2019重装vs2019打不开.netcore项目

无法打开项目文件。 .NET SDK 的版本 7.0.306 至少需要 MSBuild 的 17.4.0 版本。当前可用的 MSBuild 版本为 16.11.2.50704。请将在 global.json 中指定的 .NET SDK 更改为需要当前可用的 MSBuild 版本的旧版本。 无法打开项目文件。 .NET SDK 的版本 7.0.306 至少需要 MSBui…

【JAVA】Collections.sort()方法详解

一、简介 Collections.sort() 是 Java 集合框架(Java Collections Framework)中的一个静态方法,用于对列表(List)中的元素进行排序。此方法利用了 Java 的泛型机制,可以很方便地对各种类型的列表进行排序。…

使用gin框架,编写一个接收数据的api接口

功能:这里主要编写一个接口,将其json 数据存入对应的redis队列中,并统计每天的每小时请求数量 环境: go version go1.22.0 linux/amd64 平台 linux X64 步骤一 新建目录 命令如下: mkdir FormData 步骤二 新增…

当金蝶遇上BI,马上就能看到数据可视化效果

最近整理咨询内容时发现,很多企业用户在咨询时都会问是否有行业案例,究其原因时他们没用过BI数据分析,不知道BI可以做什么,能做到什么地步。其实,要知道这些东西还不简单,只需要注册奥威BI软件,…

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

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

防御保护--第七次作业

题目 要求 在FW5和FW3之间建立一条IPSEC通道,保证10.0.2.0/24网段可以正常访问到192.168.1.0/24 过程 FW5 FW3

Cesium--基于材质旋转图片

材质部分的代码如下 // 自定义材质const customMaterial new Cesium.Material({translucent: true,fabric: {uniforms: {image:circle_img,speed:30.0,},source: czm_material czm_getMaterial(czm_materialInput materialInput){czm_material material czm_getDefaultMateri…

Python之Web开发中级教程----搭建Web框架一

准备环境:ubuntu,Python3.6.9 一、Web应用程序的原理 接收并解析HTTP请求,获取客户的请求信息->处理完成请求的业务逻辑->返回处理结果HTTP响应。 Web框架的架构是这样的: 基于python的web框架,如tornado、flask、webpy都是…

matlab去除图片上的噪声

本问题来自CSDN-问答板块,题主提问。 如何利用matlab去除图片上的噪声? 一、运行效果图 左边是原图,右边是去掉噪音后的图片。 二、中文说明 中值滤波是一种常见的图像处理技术,用于去除图像中的噪声。其原理如下: 1. 滤波器移动:中值滤波器是一个小的窗口,在图像上移…