1 - ahb引言
在上篇文章文章我们已经分析了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信号较多,相应功能也比较强大
系统信号:
hclk
hresetn
地址总线:
haddr
数据总线:
hwdata
hrdata
命令总线:(支持突发)
hwrite
hsize
hburst
hprot
hselx
htrans
hready
hresp
仲裁总线:(支持多主机)
hbusreqx
hlockx
hgrantx
hmaster
hmasterlock
hsplitx
从这张大表可以看出,为了克服apb的缺点从而支持多主机模式、提升效率操作****,所在 总线接口上付出的代价 。至少ahb总线位宽和信号个数远远超过了apb总线。
根据上面的ahb信号列表,结合之前的类比和概念我们基本上就知道ahb该怎么运行,相应的信号如何动作也有了一般的概念。
接下来会从这种总体传输的概念分析到ahb总线内部的时序逻辑和相关的具体操作,希望大家多多支持。
瑞萨推首款用于全功能智能手机的集成LTE三模平台
安卓8.0开发者预览版今日发布!安卓8.0不远了!
RISC-V联盟年会看点回顾 2023年是RISC-V高性能计算元年
闪迪备份充电座怎么样 值不值得买
百度输入法新版上线 新增河北、昆明、武汉三种单方言识别
聊聊AMBA总线-AHB
国产8位单片机TM52F1376用于LED小夜灯上,宽电压供电2.2V到5.5V
激光技术助力实现室温下固态可编程的量子处理器
华为nova8 Pro新“声”体验
什么是静态图像可视电话
为预防疫情,美国研发可交互新冠疫情风险地图
瑞萨电子加速面向ADAS和自动驾驶应用的深度学习开发
Vishay新款薄膜条MOS电容器为混合装配提供高功率
国产超大屏电视打破两项纪录,TCL成QD-Mini LED电视领域代表
PTC与Unity展开合作 AR应用性能将大大提升
水库信息化,小型水库监测预报预警系统
荣耀俱乐部APP即将上线
智能安防:算力、算法与数据是最为关键的三要素
智慧小镇建设怎样利用好物联网技术
华为荣耀Magic 3曝光,最新的麒麟990处理器+标配5G基带