(三)SoC设计实操------AHB总线协议解读

本文详细介绍了AHB总线协议的特性,包括Burst传输的多种模式、AHB传输控制信号如HTRANS、HSIZE和HWRITE的使用,以及双周期响应、SPLIT和RETRY响应策略。此外,文章还涵盖了地址译码、数据总线结构和端结构的相关知识。
摘要由CSDN通过智能技术生成

Ref:

AHB总线协议  http://t.csdnimg.cn/dCLc5 

AHB总线—wrap burst的理解 http://t.csdnimg.cn/g90Go

AMBA总线协议(0)——目录与传送门  http://t.csdnimg.cn/bPOk5 墙裂建议和第一个一起食用,它们俩优势互补,解释角度相互补充,对照学习理解飞快~

目录

AHB基本特性

AHB总线的组成

AHB基本传输

无等待简单传输

带等待的简单传输

多重传输

Burst传输

四拍回卷Burst

四拍递增Burst

八拍回卷Burst

喜闻乐见的八拍递增

不定长度的递增Burst

AHB 传输控制信号

传输状态HTRANS

传输单位大小HSIZE

传输方向HWRITE

传输类型Hburst

AHB 地址译码

AHB 从设备响应信号

传输完成阶段

传输响应阶段

   其他情况

双周期响应(回答上边提及的生词)

什么是双周期响应

为什么要用双周期响应

错误响应

SPLIT & RETRY

AHB数据总线

HWDATA写数据总线

HRDATA读数据总线

端结构


---------------------------------------------------------分鸽线--------------------------------------------------------------

AHB基本特性

  1. Burst传输:在一次总线事务中,允许一次性传输多个数据,从而提高数据传输效率。

  2. Split事务处理:允许多个总线主设备同时使用总线,从而提高总线的并行性和效率。

  3. 单周期master移交:在总线主设备之间进行切换时只需要一个时钟周期,从而减少总线传输的延迟。

  4. 单一时钟沿操作:所有总线操作都只在时钟信号的上升沿 (或 下降沿)触发,以确保同步和稳定的总线传输。

  5. 无三态:总线上的设备不会处于空闲态(高阻态),以确保总线上始终有 有效的信号传输。

  6. 更宽的数据总线配置(64/128):支持更宽的数据总线,可以一次性传输更多的数据,提高总线的数据吞吐量。

  7. 流水线操作:允许多个(不同设备的)总线事务同时进行,并行处理,提高总线的效率和性能。

  8. 可支持多个总线主设备(最多16个):支持多达16个总线主设备同时使用总线,提高了总线的并行处理能力和灵活性。

AHB总线的组成

AHB基本传输

       无等待简单传输

麻烦的巴拉巴拉话不说了,直接看图:

注意:

第③周期的时候,你的HADDR信号是给下一个周期准备的,这样做可以加快效率,也就是Pipeline技术

写出来HW和HR是方便你看图,单独分析两个过程的时候分别忽略另一方即可

       带等待的简单传输

        同理

需要注意的是:

1.这里①标志着开始Address读取(主机要开始准备东西了)

2.②之后从机确实是收到了,但是没消化完,所以从机把HREADY拉低,让主机等等,这时候主机的HADDR也是 Pipeline 给下次准备的,所以要和本次要传的数据一样 一直等着发出去

3.如果是HRDATA的话,本来主机就是搁那等从机的,从机准备好了自然会把数据端上来,所以没有所谓的 2. 情况

        多重传输

之前说过了Pipeline在单数据传输的影响,这里你应该也能看懂了

传 A数据 的时候已经 端上来 B控制和B地址 了,这里一个低READY是让从机消化 B相关信号的

当然,它的代价就是:如果你准备往从机写(HW),你准备写的数据就会延长一会儿;同样因为Pipeline原因,C我就不说了。而且,读是不延长的,也讲过

在这里你应该也可以看到:我最多预先存一个准备用,然后一个正在用,也就是说:

        AHB的pipeline是两级pipe,总线上你最多有两个正在做但没做完的传输(因为数据读传输、写传输、地址控制传输是分开的。HREADY只有一个,  它的终结  标志着  你准备那一堆  可以被读取),你不可能说是俩都没做完,你master就再搞别的操作,这个时候你这个master只能等。

        Burst传输

        一般递增Burst

你既然知道pipeline了,你也知道一次完整传输的数据和地址信号咋看了(就是“\”这个方向看,先存好地址,下次直接传数据),不过你看到了BUSY的时候好像啥也没传,这是master告诉slave它还没完全把Data和ADDR消化完

但是地址啥的还是要一直保持的,等消化完了,把HTRANS改成正常递增,就可以继续让slave处理了

注意这里HBURST始终保持一致,表示这是 同一次 递增Burst 正在进行时

HREADY拉低那点之前已经说过了,不再解释

        

四拍回卷Burst

四拍回卷的话就是一个“回卷”难懂,其实它意思就是:地址递增到边界的时候会打回初始地址重新开始递增(这个初始地址不一定(大概率不)是你开始传输的那个地址),具体算法看Ref。

不过注意的是:边界地址的范围大概是取决于你的HSIZE大小。

四拍递增Burst

和回卷Burst唯一不同就是地址的变化,连续通过16个字节边界

八拍回卷Burst

就是地址边界变了变,这取决于你的总传输字节数:4Byte(这是一个word) * 8  = 32 Byte

        

       

喜闻乐见的八拍递增

还是那个样,8个连续边界,不回卷,但是你看看总传输大小变了,因为是half word传输:2Byte

        

不定长度的递增Burst

这里有俩传输,字类型不同,不再过多啰嗦

AHB 传输控制信号

传输状态HTRANS

传输单位大小HSIZE

传输方向HWRITE

高就是写,低就是读

传输类型Hburst

注意:

        1.Burst禁止超过1k大小边界,主机别作死(后边解释)

        2.对于回卷Burst:

                如果传输的起始地址并未和猝发(第x拍)中字节总数对齐,那么突发传输地址将在达到边界处回卷

                例如:一个四拍回卷突发的字(4 字节)访问将在16 字节边界回环。因此,如果传输的起始地址是 0x34,那么它将包含四个到地址0x34、0x38、0x3C 和 0x30;

        3.所有Burst传输必须将地址边界传输单位大小对齐。

                例如:字传输(4Byte,8位h)必须对齐到字地址边界(也就是 A[1:0] = 00)

                           半字传输(2Byte,4位h)必须对齐到半字地址边界(也就是 A[0] = 0)

AHB 地址译码

        中央地址译码器去选通设备,选通的信号一般在主机发出的地址信号的高几位,算法简单,不复杂

        从机视角:

                HREADY高的时候我才能采样地址信号、控制信号、选通信号

                选通信号为高表示我传输完了

                如果产生了选通信号HSELx,但是HREADY是低,那么在这个传输过后我才会采样那仨信号

---------------------------------------------------------------------------------------------------------------------------------

        关于为什么Burst禁止超过1k大小边界的问题:

        能够分配给单个从机的最小地址空间是 1KB。

        所有总线主机必须被设计为不能执行超过 1KB 地址边界的Burst增量传输。

        因此,确保了一个突发绝不会超过地址译码的边界。

默认slave是你的设计没用到所有地址空间的情况:

       如果一个 非连续 或者 连续传输 试图访问一个不存在的地址空间时,这个默认从机应该 提供一个 ERROR 响应。 空闲  或者  忙  传输访问不存在的空间时,默认从机应该给出一个零等待状态的 OKAY 响应。

        典型默认从机的功能将以作为中央地址译码器的一部分来实现。

AHB 从设备响应信号

        master发起一笔传输后,slave可以决定这笔传输的进程,而master不能取消已经发出的传输。

只要slave被访问,它必须提供一个表示传输状态的响应:

                slave通过HREADY信号反映传输是否完成;

                slave通过HRESP[1:0]反映传输的状态。

传输方式:

        (1)立刻完成传输;
        (2)插入一个或者多个等待状态以允许有时间来完成传输;
        (3)发出一个错误信号来表示传输失败;
        (4)延时传输的完成,但是允许主机和从机放弃总线,把总线留给其他传输使用

传输完成阶段

        之前传输的时候看到:HREADY低表示扩展数据传输,高表示结束传输

        注:每个从机必须有一个 预先确定的 在从机放弃总线之前 插入的 最大等待状态数目,以便能够计算访问总线的延时。

               建议但不强制规定,从机不要插入多于 16 个等待状态。防止任何单个访问将总线锁定较长的时钟周期。(意思就是站着茅坑不拉shi,就把他踹下去)

传输响应阶段

        一般来说,OKEY + HREADY高 才是正式的传输完成

   其他情况

ERROR 响应被slave用来表示 某种形式的 错误条件 和 相关的 传输

        比如试图写一个ROM

SPLIT 和 RETRY 响应组合允许slave延长传输完成的时间。

SPLIT 会导致总线释放并给其他master用

而 RETRY 会导致这个主机重新传输

......

这些组合通常仅由有高访问延迟的从机请求,并且这个从机能利用响应编码确保其他主机在长时间内一直访问总线

  

当从机  需要插入一定数量的等待状态 优于 决定 将要给出何种响应  时从机必须将响应驱

动为 OKAY。

双周期响应(回答上边提及的生词)

什么是双周期响应

        (1)在倒数第二个(最后一个的前一个)周期,从机驱动 HRESP[1:0]以表示 ERROR、RETRY 或者 SPLIT 响应。并同时驱动 HREADY 为低以给传输扩展一个额外的周期。

        (2)在最后一个周期 HREADY 被驱动为高电平以结束传输,同时HRESP[1:0]保持驱动以表示 ERROR、RETRY 或者 SPLIT。

为什么要用双周期响应

        我们知道,由于pipeline,主机的下一个地址总是自作聪明的先站着茅.....先占在总线上。

        我们知道HRESP信号是slave发给arbiter的,第一拍我们是把HRESP发给arbiter,之后我们留一拍的时间来取消这个可恶的地址,并且在开始下一次传输之前驱动THRANS变成空闲传输,这样它就能保持当前的地址、数据了。

        对于SPLIT和RETRY响应接下来的传输 必须取消。

        因为在当前传输完成之前禁止下一次传输发生。

        然而,对于 ERROR 响应,由于当前传输不被重复,所以可以选择完成接下来的传输。

例子1

 例子2

错误响应

从机提供一个错误响应,主机可以选择取消Burst中剩下的传输。

也允许主机持续Burst中剩下那部分

SPLIT & RETRY

这俩其实就是帮从机的,帮忙抽出总线去干其他东西

对 RETRY 而言,仲裁器将继续使用常规优先级方案。因此只有拥有更高优先级的主机将获准访问总线;

对于 SPLIT 传输而言,仲裁器将调整优先级方案,以便其他任何主机请求总线即能获得访问总线(即使是优先级较低的主机)。为了完成一个 SPLIT 传输,从机必须通知仲裁器何时数据可用。

SPLIT 传输增加了仲裁器和从机的复杂性,但是却有可以完全释放总线给其他主机使用的优点,

但是 RETRY(响应)的情况就只允许较高优先级的主机使用总线。

总线主机应该以同样的方式来对待 SPLIT 和 RETRY(响应)。

主机应该继续请求总线并尝试传输直到传输成功完成  或者  遇到 ERROR 响应时终止。

AHB数据总线

读写分立、最小数据总线宽度是32,但是总线宽度却可以增加

HWDATA写数据总线

如果传输是扩展的那么总线主机必须保持数据有效直到传输完成,由 HREADY 为高表示。

对于宽度小于总线宽度的传输,例如一个在 32 位总线上的 16 位传输,那么总线主机仅需要驱动相应的字节通道。

从机必须负责从正确的字节通道选择写数据,传输位宽小于数据总线宽度的突发传输将在每拍突发中有不同有效字节通道。(比如,第一拍是7-0,第二拍就会变成15-8)

有效字节通道取决于系统的端结构,但是 AHB 并不指定要求的端结构。因此,总线上所有主机和从机的端结构相同这点很重要。

HRDATA读数据总线

        读数据总线在读传输期间由合适的从机驱动。

        如果从机通过拉低 HREADY 扩展读传输,那么从机只需要在传输的最后一个周期提供有效数据,由 HREADY 为高表示。
        对于宽度小于总线宽度的传输。从机仅需要在有效的字节通道提供有效数据(与写数据总线中的表格一致)。总线主机负责从正确的字节通道中选择数据。

 当传输以 OKAY 响应完成时,从机需提供有效数据。SPLIT、RETRY 和 ERROR 响应不需要提供有效的读数据。

端结构

 为了使系统正确运行,所有模块都是相同端结构的并且任何数据通路或者桥接器也是相同端结构的。(在大部分的嵌入式系统中,动态端结构将导致硅晶片开销增大,因此一般不支持动态端结构)

        对于模块设计者而言:

        只有应用场合非常宽泛的模块才应该被设计为双端结构,通过一个配置引脚或者内部控制位来选择端结构。

        对于更多的特定用途的模块,固定端结构为大端或者小端将产生体积更小、功耗更低、性能更高的接口。

### 回答1: ARM3 AHB-Lite总线协议是一种面向片内的总线协议,主要用于连接处理器和各种外设的高性能总线。以下是关于ARM3 AHB-Lite总线协议的一些详细说明: 1. 总线结构:AHB-Lite总线由多个总线工作主体组成,其中包括主处理器、外设、存储器等。这些主体通过总线连接,并可以进行读取和入操作。 2. 总线访问:ARM3 AHB-Lite总线采用了基于请求-应答的访问机制。外设和处理器可以发出读请求,总线控制器处理这些请求并向请求方提供相应的读信息。 3. 宽度和速度:AHB-Lite总线具有可配置的数据总线宽度,可以从8位到1024位。总线速度可以根据系统需求进行调整,以满足不同的应用场景。 4. 总线优先级:AHB-Lite总线支持不同主体之间的总线优先级。当多个主体同时请求总线时,总线控制器将根据优先级设置来确定哪个请求会被优先服务。 5. 总线提供的功能:AHB-Lite总线协议提供了多种功能,如单次和重复传输、突发传输、保留和释放等。这些功能可以高效地执行数据的读取和入操作。 6. 错误处理:AHB-Lite总线具有丰富的错误处理机制,可以检测和处理访问时可能出现的错误,如地址错误、传输错误等,保障数据的可靠性。 总的来说,ARM3 AHB-Lite总线协议是一种高性能、灵活可配置的总线协议,适用于各种应用场景。它可以有效地连接处理器和外设,实现数据的读取和入操作,并提供了丰富的功能和错误处理机制,以满足不同应用需求。 ### 回答2: AHB-Lite总线协议是一种用于系统级集成电路(SoC设计中的总线协议AHB-Lite在ARM公司的AMBA(高级Microcontroller总线架构)规范中定义,作为AMBA总线系列的一部分,为SoC中的模块之间提供快速、高效的通信机制。 AHB-Lite总线协议具有以下特点: 1. 简化的总线结构:AHB-Lite采用万能主/从模式,即同一个模块可以既作为主设备又作为从设备,简化了总线结构的复杂性。 2. 高效的数据传输:AHB-Lite支持高带宽和低延迟的数据传输,在SoC中提供了高性能的通信机制。 3. 分级优先级:AHB-Lite采用基于优先级的访问控制,可以分配不同的优先级给不同的模块,以确保关键任务的优先执行。 4. 突发传输:AHB-Lite支持突发传输,能够在连续的总线周期内传输一系列数据,提高了数据传输效率。 5. 低功耗操作:AHB-Lite可以通过流水线操作和低功耗模式来减少能量消耗,提高系统的功耗效率。 总之,AHB-Lite总线协议是一种灵活、高效、可靠的总线协议,广泛应用于ARM架构的SoC设计中,为多个模块提供了可靠的通信机制,有助于提高系统的性能和可靠性。 ### 回答3: ARM3 AHB-Lite是一种用于高性能系统-on-chip (SoC)设计总线协议。该协议由ARM公司开发,用于连接处理器、内存和外设等各种功能单元,并提供高效的数据传输和控制。 AHB-Lite协议采用了面向事务的设计方法,以提供灵活性、可伸缩性和可扩展性。它支持多个主设备和多个从设备,并且能够在这些设备之间进行高效的数据和控制信号传输。 此外,ARM3 AHB-Lite协议还具有以下特点: 1. 性能优化:AHB-Lite协议支持负责解码的硬件逻辑,以最小化主设备的延迟并提高总线效率。此外,该协议还支持存储器和缓存一致性机制,以提供更高的数据传输速度。 2. 灵活性和可伸缩性:AHB-Lite协议允许设计师根据系统的需求添加或移除总线主从设备。它还支持总线宽度的动态调整,以适应不同的设备和数据传输需求。 3. 低功耗设计AHB-Lite协议通过提供低功耗模式和空闲状态管理来优化能源消耗。它可以根据需要主动控制总线请求和访问,以减少功耗。 总之,ARM3 AHB-Lite总线协议是一种在SoC设计中广泛应用的高性能、灵活和可伸缩的总线协议。它为多个主从设备之间的数据传输和控制提供了一种有效的解决方案,并具有优化性能和功耗的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值