漫谈AMBA总线-AHB

6 篇文章 0 订阅

以下文章来源于微信公众号“IC解惑君”,作者木飞

原文链接:漫谈AMBA总线-AHB


1 - AHB引言

    在上篇文章文章我们已经分析了AMBA总线系列中的APB总线的优点和缺点。(链接如下:漫谈AMBA总线-APB)总结得出:

缺点1: APB支持且仅支持一个主机

缺点2: APB两个周期才能完成一个数据的传输,数据传输效率不高。

    所以针对以上的缺点,ARM 开发了更高级的总线AHB,下文将详述AHB基于APB的改进点,改进策略,以及AHB的协议运行机制。

1-1 背景

    在漫谈AMBA总线-APB文章中我们知道只有一个水果店,只卖三种水果分别是:草莓蓝莓和苹果。随着该地区人数的上涨,一个水果店(单主机)已经不能满足该地区的要求,又因为水果店和厂商的配合时间太长(传输效率低),所以大家在商议之下,又开了一家水果店,两家水果店独立运营。在这样的情况下,之前设计的水果运输总线(类比APB)就不能满足当前的需求,所以需要根据当前的需求重新定制水果运输总线V2。

如下左图到右图:    

          

 

对于V2版本的水果运输总线,在寻求制定策略方面碰到很多问题,但是最主要的两个问题如下:

问题1 : 当水果店1和水果店2同时缺货,所以同时使用大喇叭广播自己的订单需求,那么供应厂商由于两个大喇叭同时通知,会听不清订单的需求,因为互相干扰

概念 1:总线碰撞(Bus Collision )

    由于水果店1和水果店2同时使用大喇叭广播自己的需求,导致供货商听不清订单需求,那么这次水果运输的任务就算是失败的。

    类比:

    在AHB总线里面,ARM在设计的时候就支持连接多个主机进行操作。当两个或者两个以上的主机同时发起数据操作的时候,那么总线就会产生混乱,导致数据传输失败。

本质原因:一条总线服务两个主机,难免会产生冲突,比如两个人同时打第三个人的电话,第三个人只能接其中某一个人的电话,主要是资源冲突

解决方法:

(1)每个水果店配套一个水果运输总线,同时供应厂商也再配套三个,专门为对应的水果店服务(因为供应商同时只能服务一家客户),在IC设计中也叫资源复制。这种方案设计最简单,但是耗费大量的资源。

(2)当出现两个水果店同时进行订单需求的时候,水果店自己需要先确认一下另一个水果店有没有广播,如果有,就等另一个水果店使用大喇叭广播完毕,自己再使用大喇叭广播,在总线协议中,这个动作也叫总线侦听

(3)两个水果店不想派人力进行侦听广播(或者不具备条件),所以购买一个仲裁设施,该设施对水果店进行等级分类,如果两个水果店同时发起要求,那么最重要的水果店先获得使用这个仲裁设施的允许再使用大喇叭广播(这个获取仲裁设施的允许也叫获取总线授权),等最重要的水果店完成订单之后,仲裁设施再服务相对比较不重要的水果店,总线仲裁中称为优先级仲裁策略

结论:ARM在升级APB的时候,为了支持多主机,同时为了解决总线冲突的问题,引入了第三种解决方法(优先级仲裁),给每个主机分配不同的优先级,优先级高的主机先发送数据,优先级低的等待完成之后再进行数据发送。

PS:CAN总线,IIC总线使用的是第二种解决方法(总线侦听)来解决总线碰撞的问题。一般来说,分布式总线比较倾向于使用第二种策略,集中式总线比较倾向于第三种(例如SOC片内总线)。

Q1:可能有同学会问,那两个水果店同时发起请求的几率很小,有没有必要引入优先级仲裁策略:

答:如果为了安全的完成数据的策略,即使这种情况出现的概率很小,但是也要考虑这种最坏的情况。同时同样的问题,在SOC设计中遇到这种情况的概率相对较大。

问题2:在上一版本水果运输总线的时候,水果店需要一箱水果,则厂家就需要提供一次水果的运输,水果店再需要一箱,又得再次提供一次水果的运输,这就导致了水果店订单小,但是经常发起订单,浪费了厂家有效运输的时间,因为等待订单和运输是串行工作,先订单发出再运输再发出订单再运输

概念2:突发传输(Burst)

    水果店发起请求的时候,不是按照一箱水果作为订单的单位,而是10箱或者其他数目N个作为订单请求(Burst类型),虽然厂家运输单位是一箱(也就是一辆车只能运送1箱),但是厂家可以派出多辆车同时运输,形成运输的车队流水线),这样n拍运输时间就基本满足水果店的需求,而之前是2n拍时间才能满足需求。所以这个方案需要水果店和水果厂家同时改进方案。

    类比:

    在AHB总线中,数据传输时基于Burst类型进行传输的,每次传输都是多个(总线位宽的)数据,通过数据形成多拍(流水的)效果,相比APB总线提升数据的传输效率。

这两个点是AHB针对APB总线提升最大的两个点,当然AHB为了兼容一些其他的问题,有自己独立的一些信号,这个下面继续讨论。

在这里我们总结一下多主机总线的正式概念

    总线是被总线上所有的部件所共享的一组通路(连线),对于支持多主机的总线,如果某一个主机想要与其他的部件进行通信(获得数据),首先需要向总线内部的仲裁器发起使用总线的请求,获得内部仲裁器授予所有权。其次需要将地址(厂商名字)、数据(水果)、命令(进货还是退货)放到总线上,其他的部件对总线上的数据进行侦听,检查地址数据和命令的是否与自己相关,最后相关从机部件做出命令响应。


2 - AHB总线详解

2-1 AHB在SOC内使用的部分:

如上图:

CPU : CPU是操作的发起者,CPU发起读写外设数据的操作。

DMA:   DMA也是操作的发起者,DMA从一个部件搬移数据到另一个部件。

比如Mem 2 Mem 、 Mem 2 Peri 、 Peri  2 Mem 、Peri 2 Peri

AHB_interconnect(AHB_Bridge):

根据上文所说的总线协议和传输信号的要求,构建出来的设计实体,该实体首先接收主机端发送过来的独占AHB总线和通路的请求,其次根据内部的仲裁算法拒绝或者授予该主机访问总线的权利。当主机端被授予访问总线的权利时,该AHB_interconnect(AHB_Bridge)接收主机端的命令、数据、地址总线并传播和生成相应的信号到外设。同时接收外设返回的数据并交付给主机端。

SLAVE:对AHB_interconnect输出数据和指令进行响应。

Q2 : 是否可以不需要AHB_interconnect,AHB_Interconect的作用是什么?

同上篇APB文章类似,当CPU只有一个外设,那么直接可以和外设相连,不需要AHB_Interconect。同时也不需要总线的仲裁逻辑,所以关于总线仲裁逻辑的接口直接根据信号状态tie相应的值或者悬空。

当CPU需要连接多个外设的时候,且不止有一个主机(还有DMA)时,需要AHB_interconnect进行仲裁、路由、相应外设信号的生成。

2-2 AHB总线接口:(AMBA AHB 2.0)

AHB信号较多,相应功能也比较强大

系统信号:
HCLKAHB总线的时钟,所有的设备的操作都在时钟下进行,上升沿有效。
HRESETnAHB总线复位信号,给AHB 总线电路结构初始值
地址总线:
HADDRAHB传输主机想要操作的地址
数据总线:
HWDATA主机需要给外设写入的数据通道
HRDATA外设给主机返回的数据通道
命令总线:(支持突发)
HWRITE传输AHB主机的读写操作,1写0读
HSIZE传输数据的位宽(Byte、HalfWord、Word)
HBURST传输数据的个数
HPROT提供给外设一定级别的保护
HSELx仲裁器根据配置输出的选中外设的标志
HTRANS本次传输的类型
HREADY此次传输数据是否完成,只关注完成,不关注对错
HRESP此次传输数据外设给出的响应,表示外设处理的对错等
仲裁总线:(支持多主机)
HBUSREQx主机请求仲裁器,想要获得总线所有权
HLOCKx主机请求锁定总线一段时间(在这段时间内这个主机独占,不能被再授予
HGRANTx获得总线所有权标志(还要结合其他信号)
HMASTER哪个主机正在使用总线和支持SPLIT从机寻找对应的主机(后面这个附加其他功能,后文详解)

HMASTER
LOCK

表示使用总线的主机正在尝试一次锁定次序的传输(附加其他功能,后文详解
HSPLITx从机指示仲裁器,对应的主机应该重新发起一次SPLIT传输。(附加其他功能,后文详解

从这张大表可以看出,为了克服APB的缺点从而持多主机模式、提升效率操作,所在总线接口上付出的代价。至少AHB总线位宽和信号个数远远超过了APB总线

根据上面的AHB信号列表,结合之前的类比和概念我们基本上就知道AHB该怎么运行,相应的信号如何动作也有了一般的概念。


接下来会从这种总体传输的概念分析到AHB总线内部的时序逻辑和相关的具体操作,希望大家多多支持。

未完待续。。。。。。。

 

 

 

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: AMBA 3 AHB-Lite是一种总线协议,用于在集成电路中连接不同模块或外设。AMBA(Advanced Microcontroller Bus Architecture)是ARM公司开发的一种标准总线,旨在促进系统级集成的设计。 AHB-Lite是AMBA 3总线规范的一部分,它是ARM公司为嵌入式系统提供的低功耗和高性能的解决方案。AHB-Lite的设计目标是提供一个简化版本的AHB总线,以满足对较小和简单系统的需求。 AHB-Lite总线采用了一种简化的总线传输方法,同时保留了AHB总线的一些重要特性和功能。它支持主从模式,其中一个设备充当主设备,能够发起数据传输请求,而其他设备作为从设备,能够应答主设备的请求。 AHB-Lite总线具有低功耗和低复杂性的特点,可以减少面积和功耗,并提供高性能的数据传输。它支持多个主设备和从设备的连接,并使用分时复用的方式进行数据传输。主设备可以通过读写传输和直接存储器访问(DMA)来实现数据交换。 AHB-Lite总线还支持优先级访问,可根据不同模块的需要分配不同的优先级,以确保高优先级的数据传输能够及时处理。此外,它还支持错误检测和纠正机制,以确保数据传输的可靠性和完整性。 总之,AMBA 3 AHB-Lite是一种低功耗、高性能和简化的总线协议,用于连接不同模块和外设,并提供可靠的数据传输和处理能力。它在嵌入式系统中广泛使用,以满足对小型和简单系统的要求。 ### 回答2: AMBA 3 AHB-Lite是一种轻量级、高性能的总线协议,用于连接处理器、内存和外设等不同设备,提供高效的数据传输和控制信号交互。 AMBA是ARM公司提出的一系列总线标准,AHB-Lite则是其中的一种。AHB-Lite是AMBA总线的一种精简版本,相对于更为复杂的AHB和APB总线AHB-Lite更加简单、易于实现和集成。 AHB-Lite总线结构包括主设备(如处理器)和从设备(如内存和外设),通过地址线、数据线、控制线和时钟信号等进行通信。主设备通过发起地址传输来读取或写入从设备的数据。AHB-Lite总线采用分片事务的方式,可以高效地支持多个主设备的并行访问。 AHB-Lite总线的特点之一是具有低功耗和低延迟。由于其采用有效的传输机制和轻量级的设计,能够在多个主设备之间快速传输数据,降低功耗消耗和延迟。 此外,AHB-Lite还支持多种访问模式,如单次传输、增量传输和乱序传输等。这些传输模式可以根据不同的应用场景和要求进行选择,提高系统的灵活性和性能。 总之,AMBA 3 AHB-Lite是一种高效、低功耗、低延迟的总线协议,适用于连接不同设备的通信和数据交互,为系统提供了快速、可靠的数据传输和控制机制。 ### 回答3: AMBA是一种应用于ARM处理器的总线架构,其中AMBA 3是第三代的AMBA总线标准。而AHB-Lite则是AMBA 3中的一种总线协议。 AMBA 3 AHB-Lite是一个高性能、低功耗的总线协议,适用于处理器和外围设备之间的通信。它具有如下特点: 1.简单易懂:AHB-Lite协议相对于AMBA 3中的其他总线协议来说,是比较简单的,因此易于理解和实现。这使得开发者可以更容易地集成和实现AHB-Lite接口。 2.低功耗:AHB-Lite设计了一些较低功耗的机制,如低功耗模式和动态功耗缩减技术,以帮助节省能源,并延长设备的待机时间。 3.高性能:尽管AHB-Lite是AMBA总线中较简单的协议,但它仍然提供了较高的性能,可以处理高速数据传输和多个总线事务同时发生的情况。因此,它适用于嵌入式系统中对性能要求较高的场景。 4.灵活可扩展:AHB-Lite具有良好的可扩展性,它支持连接多个处理器和外围设备,并允许通过添加信号进行系统扩展。这使得AHB-Lite适用于各种不同规模和配置的系统。 总之,AMBA 3 AHB-Lite是一种高性能、低功耗、简单易懂且灵活可扩展的总线协议,适用于ARM处理器和外围设备之间高效通信的嵌入式系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值