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.hqwc.cn/news/511572.html

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

相关文章

基于springboot+vue的医院挂号就诊系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

管家婆订货易在线商城 VshopProcess 任意文件上传漏洞

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

高级货,极大提高效率,个人非常喜欢

软件简介: 软件【下载地址】获取方式见文末。注:推荐使用,更贴合此安装方法! FileConverter中文版是一款免费软件,具有强大的功能。它支持多种文件格式的转换,包括视频、音频、文档等。您可以批量转换文件…

代码随想录算法训练营第五一天 | 买股票3

目录 最佳买卖股票时机含冷冻期买卖股票的最佳时机含手续费 LeetCode 309.最佳买卖股票时机含冷冻期 LeetCode 714.买卖股票的最佳时机含手续费 最佳买卖股票时机含冷冻期 给定一个整数数组prices,其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计算…

爬虫入门到精通_实战篇10(使用Redis+Flask维护动态代理池)

1 目标 为什么要用代理池 许多网站有专门的反爬虫措施,可能遇到封IP等问题。互联网上公开了大量免费代理,利用好资源。通过定时的检测维护同样可以得到多个可用代理。 代理池的要求 多站抓取,异步检测定时筛选,持续更新提供接…

Discuz IIS上传附件大于28M失败报错Upload Failed.修改maxAllowedContentLength(图文教程)

下图:Discuz X3.5的系统信息,上传许可为1024MB(1GB) 论坛为局域网论坛,仅供内部同事交流使用! 使用官方最新的Discuz! X3.5 Release 20231221 UTF-8 下图:选择上传附件(提示可以最大上传100M)…

嵌入式中volatile关键字的使用方法

Hi,大家好! 今天我们来学习一下volatile关键字,volatile关键字想必大家在平时编程中都见过或用过。可是小伙伴们有没有想过什么时候需要使用volatile关键字吗? 在C语言中,volatile是一个关键字,用于告诉编译器不要优化…

重构笔记系统:Docker Compose在微服务架构中的应用与优化

虽然我的笔记系统的开发是基于微服务的思想,但是在服务的配置和编排上感觉还是不太合理,具体来说,在开发上的配置和在生产上的配置差别太大。现在规模小,后面规模变大,估计这一块会成为系统生长的瓶颈。 因此&#xff…

Electron-builder打包安装包——编译篇

突然有一天想打包个桌面程序,没有打包过,经过九牛二虎之力终于打包出来,在此感谢那些热于分享的前辈! 本篇只讲打包运行和出现的问题 一、准备工作:提前下载相关资源包,否则在国内环境下可能因为网络问题…

C语言qsort函数介绍

前言 学到了函数指针,那这篇博客我们可以根据函数指针,了解一个函数qsort的应用与模拟实现 欢迎关注个人主页:小张同学zkf 若有疑问 评论区见 目录 1.回调函数 2.qsort函数使用 3.qsort模拟实现 1.回调函数 讲这个东西之前我们来认识一下…

开发者分享:利用 EMQX Cloud 与 ESP32 微控制器实现智能液冷散热系统

作者:陶德坤,EMQX Cloud 开发者。 作为一名后端开发人员,我经常需要同时运行多个 Jetbrains IDE (集成开发环境),所以经常面临笔记本电脑过热问题。我曾尝试过各种散热方法,从传统的风扇到更先…

《数字图像处理(MATLAB版)》相关算法代码及其分析(3)

目录 1 对边界进行子采样 1.1 输入参数检查 1.2 处理重复坐标 1.3 计算边界最大范围 1.4 确定网格线数量 1.5 构建网格位置向量 1.6 计算曼哈顿距离 1.7 整理输出结果 1.8 返回结果 2 改变图像的存储类别 2.1 函数输入 2.2 数据类型转换 2.3 错误处理 2.4 返回结…