深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言

article/2025/7/13 23:11:43

**

深入理解AMBA总线(七)AHB设计要点和AHB2APB同步桥设计前言

**
前面的几篇文章介绍了AHB-lite协议。主要内容其实就是文档的介绍加上我自己的一些理解,希望对大家有帮助。今天这篇文章将带来AHB设计需要注意的一些事项,然后带来一个AHB的实战项目AHB2APB转接桥的设计前沿。

1、AHB设计要点和规则

1.1、HREADYOUT和HREADYIN

很多人包括我自己在第一次接触AHB的时候,会被它的两个HREADY信号搞混,分别是HREADYOUT和HREADY(IN)信号。 其中HREADYOUT信号是由Slave发出,送给MUX选择器,用来表示Slave是否已经准备进行真正的数据传输(data phase阶段),例如写操作时,Slave是否可以将数据存下来。本质上是Slave对Master的反压信号。而HREADYIN,由MUX输出返回到所有的Slave,通知各个Slave,是否还有别的SLAVE有未完成的传输。每个Slave在采样地址和控制信号的时候,都要看这个HREADYIN信号是否为1,如果为0的话则代表别的Slave还有未完成的传输,因此不能采样地址和控制信号。
在这里插入图片描述

首先我们思考一个问题,HREADYOUT默认的复位值应该是多少?
假设都为0,那么HREADY信号自然也为0。这样返回给所有的Slave的HREADYIN信号就为0,则Slave会认为还存在别的transaction还没有结束。则会一直等待,那么整个系统就会不工作了!这也是很多人设计AHB-Slave的时候会犯的错误。
然后我们再思考一下,如果没有HREADYIN信号会怎么样?
假设此时有两个Slave,Slave1和Slave2。没有HREADYIN,则对Slave自身而言。没有人去反压它自己,也就意味着只要HSEL选中它的情况下,它都可以接收控制信号。
假设在T0->T1这个时间段,S1接收了一笔控制信号(ADDR PHASE)。按理来说T1->T2它应该要返回数据或者将写数据存下来(DATA PHASE),但如果S1不能接收,在T1->T2这个时间段S1的HREADYOUT为0同时T1->T2又进入了新的addr phase,假设此时Master选中的是S2,控制信号什么的都发生了变化。那么请问Master在T2->T3这个阶段应该怎么做?
如果Master是看S1,那么S1的HREADYOUT为0,则MASTER会维持住当前的控制信号。但是T2->T3的时候,实际上选中的是S2,那么S2就会接收两笔控制信号。并且还是一模一样的控制信号,如果都是NONSEQ信号,地址还一样,则直接不符合协议报错。
如果Master是看S2,此时S2的HREADYOUT为1,那么Master会变化控制信号和写数据。那么T2->T3的时候写数据变了,则等到S1的hreadyout拉高的时候,它拿不到正确的数据(此时还是针对S1的DATA PHASE)。
在这里插入图片描述
在这里插入图片描述

其实核心的逻辑在于,如果没有HREADYIN信号,那么HSEL选中的情况下,Slave就可以接收控制信息和数据信息。这个时候Master无论选择哪个Slave的HREADY,都有可能导致其它的Slave接收到错误的信息。还有一点导致这个原因就是AHB具有pipeline传输,当前的CYCLE有可能既是上一个Slave的data pahse也是下一个Slave的addr phase。
因此如果只靠Slave反压master,选择哪个Slave反压Master就成了问题,这样一来,不管选择哪个Slave都会出问题。

1.2、Memory Mapping

AHB slave最小是按照1KB对齐的,也就是译码的结果,只会看1KB以上的地址。
如果没有做好1KB对齐,这时候HSEL信号会同时选中Slave1和Default Slave。这时候自然就不符合预期了。所以应该按照协议的规则,做好1KB对齐。
在这里插入图片描述

Default Slave是用来干嘛的?我们做Memory Map的时候,自然不可能所有的地址都覆盖掉。我们需要考虑有一个Default Slave,这样访问缺省地址的时候,会有一个符合你需求的Response。如果没有相关逻辑的话,就会有问题,总线会卡住。

在这里插入图片描述

2、AHB2APB同步桥设计前言

在这里插入图片描述

我们再看一下这个典型的基于AMBA的SoC子系统,左右两边分别是AHB和APB子系统。两边子系统的时钟频率通常不一样。所以我们才需要两个子系统,那如何建立二者之间的通信。这个时候就需要AHB2APB转接桥实现协议的转换,实际上在SoC设计当中,转接桥是非常常见的。转接桥的设计很大程度上决定了系统的工作能力,做好转接桥的设计需要对转接桥两端的协议都有充分的理解,此外当时钟频率不一样的时候,还会涉及跨时钟域的知识。


http://www.hkcw.cn/article/QJMCsojvAM.shtml

相关文章

消除F/1噪声

目录 简介 如何测量及规定1/f噪声? 1/f噪声对电路有何影响? 如何消除或降低1/f噪声? 简介 本文阐释1/f噪声是什么,以及在精密测量应用中如何降低或消除该噪声。1/f噪声无法被滤除,在精密测量应用中它可能是妨碍实…

洛谷-P3912素数个数题解

P3912 素数个数 题目描述 求 1 , 2 , ⋯ , N 1,2,\cdots,N 1,2,⋯,N 中素数的个数。 输入格式 一行一个整数 N N N。 输出格式 一行一个整数,表示素数的个数。 输入输出样例 #1 输入 #1 10输出 #1 4说明/提示 对于 40 % 40\% 40% 的数据, …

【环境搭建】Java、Python、Nodejs等开发环境搭建

1. 前言 趁着 618 活动,我新换了一台电脑。开发的同学都知道,重新在新电脑搭建开发环境是一件相对繁琐的事,这篇文章我将介绍如何搭建Java(jdk、maven等)、Python(uv、conda等)、Nodejs、Docke…

【机器学习基础】机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法)

机器学习入门核心算法:层次聚类算法(AGNES算法和 DIANA算法) 一、算法逻辑二、算法原理与数学推导1. 距离度量2. 簇间距离计算(连接标准)3. 算法伪代码(凝聚式) 三、模型评估1. 内部评估指标2. …

设计模式——迭代器设计模式(行为型)

摘要 本文详细介绍了迭代器设计模式,这是一种行为型设计模式,用于顺序访问集合对象中的元素,同时隐藏集合的内部结构。文章首先定义了迭代器设计模式并阐述了其核心角色,包括迭代器接口、具体迭代器、容器接口和具体容器。接着&a…

【文献阅读】Learning Transferable Visual Models From Natural Language Supervision

摘要 最先进的计算机视觉系统经过训练,可预测一组固定的预先确定的对象类别。这种受限的监督形式限制了它们的通用性和可用性,因为指定任何其他视觉概念都需要额外的标记数据。 直接从关于图像的原始文本中学习是一种很有前途的替代方法,它…

字符函数和字符串函数

目录 1.字符分类函数 2.字符转换函数 3.strlen函数的使用和模拟实现 4.strcpy函数的使用和模拟实现 5.strcat函数的使用和模拟实现 6.strcmp函数的使用和模拟实现 7.strcnpy函数的使用和模拟实现 8.strcnat函数的使用和模拟实现 9.strncmp函数的使用 10.strstr的函数使…

苹果电脑深度清理,让老旧Mac重焕新生

在日常使用苹果电脑的过程中,随着时间推移,系统内会积累大量冗余数据,导致电脑运行速度变慢、磁盘空间紧张。想要让设备恢复流畅,苹果电脑深度清理必不可少。那么,如何进行苹果电脑深度清理呢?接下来为你详…

android binder(1)基本原理

一、IPC 进程间通信(IPC,Inter-Process Communication)机制,用于解决不同进程间的数据交互问题。 不同进程之间用户地址空间的变量和函数是不能相互访问的,但是不同进程的内核地址空间是相同和共享的,我们可…

2025年ESWA SCI1区TOP,改进成吉思汗鲨鱼算法MGKSO+肝癌疾病预测,深度解析+性能实测

1.摘要 本文针对肝癌(HCC)早期诊断难题,提出了一种基于改进成吉思汗鲨鱼优化算法(MGKSO)的计算机辅助诊断系统。由于HCC在早期症状不明显且涉及高维复杂数据,传统机器学习方法易受噪声和冗余特征干扰。为提…

性能测试实例(http和ldap协议压测)

一、某授权服务器生成授权码效率验证(http协议) 测试背景 在存量数据23万条的情况下,生成一条授权数据,需要10秒左右,用户反应数据生成效率太差,需要优化。初步判断是由于在授权数据生成时,有查…

解锁设计师创意魔法:Onlook赋能你的Web创作

在数字时代的今天,设计和开发的界限正在逐步模糊。无论是经验丰富的程序员,还是初出茅庐的设计师,能在统一的环境中高效实现创意是任何设计工具的理想。而Onlook,不仅是一个开源的视觉编码编辑器,更是一座连接设计与开…

智慧零工平台前端开发实战:从uni-app到跨平台应用

智慧零工平台前端开发实战:从uni-app到跨平台应用 本文将详细介绍我如何使用uni-app框架开发一个支持微信小程序和H5的零工平台前端应用,包含技术选型、架构设计、核心功能实现及部署经验。 前言 在当今移动互联网时代,跨平台开发已成为提高开发效率的重要手段。本次我选择…

用go从零构建写一个RPC(4)--gonet网络框架重构+聚集发包

在追求高性能的分布式系统中,RPC 框架的底层网络能力和数据传输效率起着决定性作用。经过几轮迭代优化,我完成了第四版本的 RPC 框架。相比以往版本,这一版本的最大亮点在于 重写了底层网络框架 和 实现了发送端的数据聚集机制,这…

云服务器突发宕机或无响应怎么办

当云服务器突发宕机或无响应时&#xff0c;需快速定位问题并恢复服务。以下是分步骤的解决方案&#xff1a; 1. 初步确认问题 检查网络连接 本地网络是否正常&#xff1f;尝试 ping 其他网站 排除本地问题。 使用 ping <服务器IP> 或 traceroute <IP> 测试网络连通…

掌握HttpClient技术:从基础到实战(Apache)

目录 前言 一、Apache HttpClient简介 二、HttpClient基础使用 1. 添加依赖 2. 创建HttpClient实例 3. 发送GET请求 4. 发送POST请求 三、HttpClient高级配置与实战案例 1. 连接池优化 2. 超时与重试配置 3. 文件上传&#xff08;Multipart&#xff09; 总结 前言 …

EXCEL--累加,获取大于某个值的第一个数

一、函数 LET(data,A1:A5,cumSum,SCAN(0,data,LAMBDA(a,b,ab)),idx,MATCH(TRUE,cumSum>C1,0),INDEX(data,idx)) 二、函数拆解 1、LET函数&#xff1a;LET(name1, value1, [name2, value2, ...], calculation) name1, name2...&#xff1a;自定义的变量名&#xff08;需以字…

D. Gellyfish and Camellia Japonica【Codeforces Round 1028 (Div. 2)】

D. Gellyfish and Camellia Japonica 思路 贪心构造&#xff08;其实是思维题&#xff09; 先找必要性&#xff0c;再验证充分性&#xff1a; 倒着求出每个位置的下界作为这个位置的值&#xff0c;再正着验证构造出的这个数列是否合法。 代码非常短&#xff0c;这个题如果当时…

GODOT引擎学习日志

最近在学习使用GODOT引擎&#xff0c;发现这个东西很好很强大。此为背景。 刚开始学习&#xff0c;在使用camera3D的时候&#xff0c;发现使用鼠标滚轮进行视角缩放的时候&#xff0c;网上有些内容不全&#xff0c;于是找了一下。其实很简单&#xff1a; Camera3D有个属性是siz…

普通二叉树 —— 最近公共祖先问题解析(Leetcode 236)

&#x1f3e0;个人主页&#xff1a;尘觉主页 文章目录 普通二叉树 —— 最近公共祖先问题解析&#xff08;Leetcode 236&#xff09;&#x1f9e0; 问题理解普通二叉树与 BST 的区别&#xff1a; &#x1f4a1; 解题思路关键思想&#xff1a;&#x1f4cc; 举个例子&#xff1a…