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

简介: 深入理解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设计当中,转接桥是非常常见的。转接桥的设计很大程度上决定了系统的工作能力,做好转接桥的设计需要对转接桥两端的协议都有充分的理解,此外当时钟频率不一样的时候,还会涉及跨时钟域的知识。接下来的文章将通过一系列文章给大家讲解AHB2APB转接桥的设计和相关的跨时钟域的知识。

欢迎和我一起学习AMBA总线,完整的专栏在这里:

https://www.zhihu.com/column/c_1663245806869291008

目录
相关文章
第一章MCS-51单片机结构,单片机原理、接口及应用
第一章MCS-51单片机结构,单片机原理、接口及应用
547 0
第一章MCS-51单片机结构,单片机原理、接口及应用
|
4月前
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
stm32f407探索者开发板(十六)——串行通信原理讲解-UART
261 0
|
5月前
|
IDE 开发工具
【CAN总线】手把手教你学习CAN总线(一)
【CAN总线】手把手教你学习CAN总线(一)
|
芯片 SoC
深入理解AMBA总线(零)绪论
深入理解AMBA总线(零)绪论
356 0
|
存储 网络性能优化 vr&ar
深入理解AMBA总线(十七)AXI是如何提高性能的
深入理解AMBA总线(十七)AXI是如何提高性能的
2040 1
|
SoC
深入理解AMBA总线(十六)AXI设计的关键问题(二)
深入理解AMBA总线(十六)AXI设计的关键问题(二)
841 0
深入理解AMBA总线(十六)AXI设计的关键问题(二)
|
存储 SoC
深入理解AMBA总线(十一)AXI协议导论
深入理解AMBA总线(十一)AXI协议导论
1707 0
|
存储 Go 芯片
单片机外围模块漫谈之四,USB总线基本概念。
单片机外围模块漫谈之四,USB总线基本概念。
|
监控 芯片
单片机外围模块漫谈之三,CAN总线
单片机外围模块漫谈之三,CAN总线
|
缓存 内存技术
深入理解AMBA总线(十六)AXI设计的关键问题(一)
深入理解AMBA总线(十六)AXI设计的关键问题
473 0