【ARM】【FPGA】【硬件开发】Chapter.1 AXI4总线协议
Chapter.1 AXI4总线协议
作者:齐花Guyc(CAUC)
一、总线介绍
AXI4总线
AXI4总线就像是SoC内部的“高速公路”,负责在不同硬件模块之间高效传输数据。
AXI4协议通过 5个独立通道 传输数据和控制信号,每个通道都有自己的信号线,互不干扰。
-
写地址通道(Write Address Channel, AW)
主设备(Master)告诉从设备(Slave)要写入数据的地址和相关信息(如突发长度、数据大小等)。
信号:
AWVALID:主设备表示写地址有效。
AWREADY:从设备表示准备好接收写地址。
AWADDR:写操作的目标地址。
AWLEN:突发长度(0表示1次传输,1表示2次,依次类推,最多255)。
AWSIZE:每次传输的字节数(如2表示4字节)。
AWBURST:突发类型(固定、递增、环绕)。 -
写数据通道(Write Data Channel, W)
主设备通过这个通道将数据发送到从设备。
信号:
WVALID:主设备表示写数据有效。
WREADY:从设备表示准备好接收数据。
WDATA:写数据内容。
WSTRB:字节选通信号,指示哪些字节有效。
WLAST:表示当前数据是突发传输的最后一个。 -
写响应通道(Write Response Channel, B)
从设备告诉主设备写操作是否成功。
信号:
BVALID:从设备表示写响应有效。
BREADY:主设备表示准备好接收响应。
BRESP:响应状态(如OKAY、ERROR)。 -
读地址通道(Read Address Channel, AR)
主设备告诉从设备要读取数据的地址和相关信息。
信号:
ARVALID:主设备表示读地址有效。
ARREADY:从设备表示准备好接收读地址。
ARADDR、 ARLEN、 ARSIZE、 ARBURST:类似写地址通道。 -
读数据通道(Read Data Channel, R)
从设备将读取的数据返回给主设备。
信号:
RVALID:从设备表示读数据有效。
RREADY:主设备表示准备好接收数据。
RDATA:读数据内容。
RRESP:响应状态。
RLAST:表示当前数据是突发传输的最后一个。
AXI4总线时序
1.AXI4写操作时序
突发写操作(burst write),一次写操作传输4个数据 [D(A0)、D(A1)、D(A2)、D(A3)]
AXI4写操作使用3个通道:
- 写地址通道(AW):AWADDR、AWVALID、AWREADY
- 写数据通道(W):WDATA、WLAST、WVALID、WREADY
- 写响应通道(B):BRESP、BVALID、BREADY
2.时序图信号解读
时钟(ACLK)
ACLK 是一个周期性的时钟信号,从T0到T10,每周期一个上升沿,用于同步所有信号。
写地址通道(AW)
AWADDR:在T1到T2,主设备(Master)设置写地址为 A,表示目标地址。地址信号在 AWVALID 有效期间保持不变。
AWVALID:在T1,主设备将 AWVALID 置高,表示写地址有效。一直保持高电平直到T2,因为地址传输完成。
AWREADY:在T2,从设备(Slave)将 AWREADY 置高,表示准备好接收地址。
握手:在T2的时钟上升沿,AWVALID 和 AWREADY 同时为高,地址传输完成。
握手机制:
VALID:由发送端(主设备或从设备)置高,表示数据或地址有效。
READY:由接收端置高,表示准备好接收数据或地址。
数据传输只有在 VALID 和 READY 同时为高 时才会发生。
写数据通道(W)
WDATA:从T3到T8,主设备依次发送4个数据:D(A0)、D(A1)、D(A2)、D(A3)。每个数据在一个时钟周期内传输。
WLAST:在T8,发送最后一个数据 D(A3) 时,主设备将 WLAST 置高,表示这是突发传输的最后一个数据。
WVALID:从T3到T8,主设备将 WVALID 置高,表示数据有效。每次数据传输都需要 WVALID 和 WREADY 同时为高。
WREADY:从T3到T4,从设备将 WREADY 置高,表示准备好接收数据。但在T5,WREADY 变低,表示从设备暂时未准备好(可能是处理延迟)。在T6到T8,WREADY 再次变高,继续接收数据。
握手:在T3、T4、T6、T7、T8的时钟上升沿,WVALID 和 WREADY 同时为高,数据传输完成。
写响应通道(B)
BRESP:在T9,从设备设置响应状态为 OKAY,表示写操作成功。
BVALID:在T9,从设备将 BVALID 置高,表示响应有效。
BREADY:在T2到T9,主设备将 BREADY 置高,表示准备好接收响应。
握手:在T9的时钟上升沿,BVALID 和 BREADY 同时为高,响应传输完成。
写操作流程
- 写地址传输(T1-T2):
主设备发送地址 A(通过 AWADDR),并通过 AWVALID 和 AWREADY 握手完成地址传输。 - 写数据传输(T3-T8):
主设备发送4个数据 D(A0) 到 D(A3)。
数据传输在T3、T4、T6、T7、T8完成(因为T5时 WREADY 为低,数据传输暂停了一个周期)。
在最后一个数据 D(A3) 时,WLAST 置高,表示突发传输结束。 - 写响应(T9):
从设备返回 OKAY 响应,表示写操作成功。
通过 BVALID 和 BREADY 握手完成响应传输。
2.AXI4读操作时序
突发读操作(burst length=4),主设备(Master)请求4个连续的数据。
AXI4读操作使用2个通道:
读地址通道(AR):ARADDR、ARVALID、ARREADY
读数据通道(R):RDATA、RLAST、RVALID、RREADY
2.时序图信号解读
时钟(ACLK)
ACLK 是一个周期性的时钟信号,从T0到T13,每周期一个上升沿,用于同步所有信号。
读地址通道(AR)
ARADDR:在T1到T2,主设备设置读地址为 A,表示起始读取地址。地址信号在 ARVALID 有效期间保持不变。
ARVALID:在T1,主设备将 ARVALID 置高,表示读地址有效。一直保持高电平直到T2,因为地址传输完成。
ARREADY:在T2,从设备将 ARREADY 置高,表示准备好接收读地址。
握手:在T2的时钟上升沿,ARVALID 和 ARREADY 同时为高,地址传输完成。
读数据通道(R)
RDATA:从T6到T13,从设备依次返回4个数据:D(A0)、D(A1)、D(A2)、D(A3)。每个数据在一个时钟周期内传输。
RLAST:在T13,发送最后一个数据 D(A3) 时,从设备将 RLAST 置高,表示这是突发传输的最后一个数据。
RVALID:从T6到T13,从设备将 RVALID 置高,表示数据有效。每次数据传输都需要 RVALID 和 RREADY 同时为高。
RREADY:从T4到T6,主设备将 RREADY 置高,表示准备好接收数据。在T7,RREADY 变低,表示主设备暂时未准备好(可能是处理延迟)。在T8到T11,RREADY 再次变高,继续接收数据。在T12,RREADY 变低。在T13,RREADY 再次变高。
握手:RVALID 和 RREADY 同时为高,数据传输完成。
读操作流程
- 读地址传输(T1-T2):
主设备发送地址 A(通过 ARADDR),并通过 ARVALID 和 ARREADY 握手完成地址传输。 - 读数据传输(T4-T13):
从设备在T6到T13返回4个数据 D(A0) 到 D(A3)。
数据传输在T6、T9、T10、T13完成。
在最后一个数据 D(A3) 时,RLAST 置高,表示突发传输结束。
相关文章:

【ARM】【FPGA】【硬件开发】Chapter.1 AXI4总线协议
Chapter.1 AXI4总线协议 作者:齐花Guyc(CAUC) 一、总线介绍 AXI4总线 AXI4总线就像是SoC内部的“高速公路”,负责在不同硬件模块之间高效传输数据。 AXI4协议通过 5个独立通道 传输数据和控制信号,每个通道都有自己的信号线,互…...
青少年编程与数学 02-020 C#程序设计基础 10课题、桌面应用开发
青少年编程与数学 02-020 C#程序设计基础 10课题、桌面应用开发 一、桌面应用1. 主要特点2. 常见类型3. 优势4. 局限性 二、开发步骤1. 准备工作2. 创建项目3. 开发应用4. 运行调试5. 打包发布 三、Windows 窗体应用(一)定义(二)特…...

把 jar 打包成 exe
1. 把自己的项目先正常打成jar包 2. 使用exe4j工具将jar转换为exe 2.1 exe4j下载地址:https://www.ej-technologies.com/download/exe4j/files 2.2 下载完成之后激活 2.3 可以点击Change License,输入秘钥L-g782dn2d-1f1yqxx1rv1sqd 2.4 直接下一步…...

【目标检测】检测网络中neck的核心作用
1. neck最主要的作用就是特征融合,融合就是将具有不同大小感受野的特征图进行了耦合,从而增强了特征图的表达能力。 2. neck决定了head的数量,进而潜在决定了不同尺度样本如何分配到不同的head,这一点可以看做是将整个网络的多尺…...

【经验】Ubuntu中设置terminator的滚动行数、从Virtualbox复制到Windows时每行后多一空行
1、设置terminator的滚动行数 1.1 问题描述 在终端 terminator 中,调试程序时,只能查看有限行数的打印日志,大约是500行,怎么能增加行数 1.2 解决方法 1)安装terminator sudo apt install terminator和 terminato…...

使用微软最近开源的WSL在Windows上优雅的运行Linux
install wsl https://github.com/microsoft/WSL/releases/download/2.4.13/wsl.2.4.13.0.x64.msi install any distribution from microsoft store, such as kali-linux from Kali office website list of distribution PS C:\Users\50240> wsl -l -o 以下是可安装的有…...

HackMyVM-Teacher
信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-01 01:02 EDT Nmap scan report for 192.168.43.1 Host is up (0.0084s latency). MAC Address: C6:45:66:05:91:88 (Unknow…...

BugKu Web渗透之矛盾
开启场景,打开网页。发现是一段php代码。 这段代码也很好理解,就是get方式传参num,如果num不是数字类型,那么输出num的值,并且num1时,输出flag的值。 首先看看is_numeric的意思。 开始我想到了使用科学技术…...
hot100 -- 4.子串系列
1.和为 K 的子数组 问题: 给你一个整数数组 nums 和一个整数 k ,请你统计并返回 该数组中和为 k 的子数组的个数 。 子数组是数组中元素的连续非空序列。 方法1:暴力枚举 # 方法1:暴力枚举(遍历子数组起点和终点&…...

Python实现P-PSO优化算法优化卷积神经网络CNN回归模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 随着人工智能和深度学习技术的快速发展,卷积神经网络(CNN)在图像分类、目标检测…...

ssm 学习笔记day03
环境搭建 spring配置数据库 1.在pom.xml安装相应的依赖 2.在properties里面配置数据库的相关信息,需要强调的一点是,一定不要在properties里面添加任何空格,否则就会像我一样搞了两小时,数据一直报错,然后发现是空格的…...

mkdir: cannot create directory ‘gitlab-stu’: No space left on device
Linux中创建目录时报错“mkdir: cannot create directory ‘gitlab-stu’: No space left on device”,磁盘空间不足。 使用df命令查看,发现 / 下面use%占满了: 查看inode使用情况: 可以看到docker的数据大部分存放在/var/lib/do…...
【前端面经】云智慧一面
写在前面:面经只是记录博主遇到的题目。每题的答案在编写文档的时候已经有问过deepseek,它只是一种比较普世的答案,要学得深入还是靠自己 Q:手撕代码,两个有序数组排序 A: function mysort(arr1, arr2) {…...

ESP8285乐鑫SOCwifi芯片32bit MCU和2.4 GHz Wi-Fi
简介 ESP8285 拥有完整的且⾃成体系的 Wi-Fi ⽹络功能,既能够独⽴应⽤,也可以作为从机搭载于其他主机 MCU 运⾏。当 ESP8285 独⽴应⽤时,能够直接从外接 flash 中启动。内置的⾼速缓冲存储器有利于提⾼系统性能,并且优化存储系统。…...

DL00916-基于深度学习的金枪鱼各类别目标检测含完整数据集
文末有获取方式 🚀 基于深度学习的金枪鱼目标检测——开创智能识别新领域! 在计算机视觉和深度学习的快速发展中,目标检测 技术已成为提升行业效率的核心利器。而对于海洋生物领域,尤其是金枪鱼的 目标检测,更是填补了…...

不可变集合类型转换异常
记录一个异常:class java.util.ImmutableCollections$ListN cannot be cast to class java.util.ArrayList (java.util.ImmutableCollections$ListN and java.util.ArrayList 文章目录 1、原因2、解决方式一3、解决方式二4、关于不可变集合的补充4.1 JDK8和9的对比4…...

【PyQt5】从零开始的PyQt5 - QLabel篇
从零开始的PyQt5 - QLabel篇 引言一、简述二、例程2.1 显示到QWidget窗口上2.2 重新设置Label大小和对齐方式2.3 添加内容,设置边框2.4 显示富文本 三、参考 引言 QLabel主要用于显示文本或图像,不提供用户交互功能。本文主要简述PyQt5中的QLabel以及展…...

多模态AI的企业应用场景:视觉+语言模型的商业价值挖掘
关键词:多模态AI | 视觉语言模型 | 企业应用 | 商业价值 | 人工智能 📚 文章目录 一、引言:多模态AI时代的到来二、多模态AI技术架构深度解析三、客服场景:智能化服务体验革命四、营销场景:精准投放与创意生成五、研…...

数据结构(7)树-二叉树-堆
一、树 1.树的概述 现实生活中可以说处处有树。 在计算机里,有一种数据结构就是像现实中的树一样,有根,有分支,有叶子;一大片树就叫做森林。 这些性质抽象到计算机里也叫树,大致长这个样子: …...
时序数据库IoTDB基于云原生的创新与实践
概述 Apache IoTDB 是一款独立自研的物联网时序数据库,作为 Apache 基金会的顶级项目,它融合了产学研的优势,拥有深厚的科研基底。IoTDB 采用了端边云协同的架构,专为物联网设计,致力于提供极致的性能。 数据模型 I…...

怎么快速判断一款MCU能否跑RTOS系统
最近有朋友在后台中私信我,说现在做项目的时候有时候总是会考虑要不要用RTOS,或者怎么考量什么时候该用RTOS比较好、 关于这个问题,我个人也是深有感触的,做开发这么久了,大大小小的产品都做过不少了。有用RTOS开发的…...

使用原生前端技术封装一个组件
封装导航栏 navbar-template.html <header><nav><ul><li><a href"index.html"><i class"fas fa-home"></i> 主页</a></li><li><a href"#"><i class"fas fa-theate…...

lesson04-简单回归案例实战(理论+代码)
理解线性回归及梯度下降优化 引言 在机器学习的基础课程中,我们经常遇到的一个重要概念就是线性回归。今天,我们将深入探讨这一主题,并通过具体的例子来了解如何利用梯度下降方法对模型进行优化。 线性回归简介 线性回归是一种统计方法&a…...

Java 面试中的数据库设计深度解析
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Java 面试中的数据库设计深度解析一、数据库…...

国内首发!具有GPU算力的AI扫描仪
奥普思凯重磅推出的具有GPU算力的扫描仪,是一款真正意义上的AI扫描仪,奥普思凯将嵌有OCR发票识别核心的高性能NPU算力棒与高速扫描仪相结合,实现软件硬件相结合,采用一体化外观设计,实现高速扫描、快速识别表单&#x…...

【开发技巧指北】IDEA修改默认绑定Maven的仓库地址
【开发技巧指北】IDEA修改默认绑定Maven的仓库地址 Microsoft Windows 11 家庭中文版 IIntelliJ IDEA 2025.1.1.1 默认的IDEA是有自己捆绑的Maven的(这是修改完毕的截图) 修改默认的Maven配置,路径是IDEA安装路径下的plugins D:\Softwares\I…...
数据存储与运算
计算机中的数据存储与运算 输出地址后看不懂格式,为什么? 第一节:进制转换基础 ✅ 常见进制: 十进制(Decimal):日常使用的 0~9二进制(Binary):计算机底层使…...

【2025最新】Java图书借阅管理系统:从课程作业到实战应用的完整解决方案
【2025最新】Java图书借阅管理系统:从课程作业到实战应用的完整解决方案 目录 【2025最新】Java图书借阅管理系统:从课程作业到实战应用的完整解决方案**系统概述** **核心功能模块详解****1. 系统登录与权限控制****2. 借阅管理模块****3. 用户角色管理…...

springcloud openfeign 请求报错 java.net.UnknownHostException:
现象 背景 项目内部服务之间使用openfeign通过eureka注册中心进行服务间调用,与外部通过http直接调用。外部调用某个业务方提供的接口需要证书校验,因对方未提供证书故设置了忽略证书校验代码如下 Configuration public class IgnoreHttpsSSLClient {B…...

【harbor】--配置https
使用自建的 CA 证书来自签署和启用 HTTPS 通信。 (1)生成 CA认证 使用 OpenSSL 生成一个 2048位的私钥这是 自建 CA(证书颁发机构) 的私钥,后续会用它来签发证书。 # 1创建CA认证 cd 到harbor [rootlocalhost harbo…...