写在前面:
最近实习项目里用到这2个协议,因此简单整理一下,内容大多来自ARM官方文档与网络上的,我主要做一个整合,加上自己的理解补充,内容来源都会分别标出。如有侵权请指出,立刻删帖。
官方文档入口:AMBA(包括AHB, ASB, APB)

文章目录

  • 1 AMBA总线
  • 2 AHB
    • 2.1 一个典型的基于AHB的微控制器
    • 2.2 AHB总线互联结构:中心选择器连接master与slave
    • 2.3 AHB的关键信号
    • 2.4 典例:AHB的传输
    • 2.5 AHB的其他问题(持续更新)
  • 3 APB
    • 3.1 APB的接口信号
    • 3.2 典例:APB传输状态机与信号图
  • 4 AHB和APB的区别与联系
    • 4.1 AHB与APB的特性
    • 4.2 AHB和APB的适用情况
    • 4.3 AHB与APB的联系

1 AMBA总线

内容来源:维基百科词条-Advanced Microcontroller Bus Architecture。

AMBA总线的全称为“高级微处理器总线架构(Advanced Microcontroller Bus Architecture)”,是ARM架构下SoC设计的一种总线架构。AMBA包括AHB(Advanced High-perfomance Bus,高级高性能总线),ASB(Advanced System Bus,高级系统总线),APB(Advanced Peripheral Bus,高级外设总线)。

2 AHB

内容来源:

  1. 知乎用户@桔里猫,AHB与APB总线你需要知道的事儿
  2. 博客园@feipeng8848,AMBA总线协议AHB、APB
  3. ARM官方文档AHB部分

AHB,Advanced High-performance Bus,高速总线,用来接高速外设。

2.1 一个典型的基于AHB的微控制器

如下图所示,AHB的强大之处在于可以将高速ARM微控制器(High-performance ARM processor)、高带宽的片上RAM(High-bandwidth on-chip RAM)、高带宽的外部存储器接口(High-bandwidth Memory Interface)、DMA总线master等各种拥有AHB接口的控制器连接起来构成一个完整的SoC系统。其中一个特殊的slave是AHB2APB的桥,用于连接APB总线系统。AHB可以成为一个完整独立的SoC芯片的骨架。

2.2 AHB总线互联结构:中心选择器连接master与slave


AHB总线里有:一个仲裁器(Arbiter)用于仲裁多个主设备(Master)同时访问总线的情况;三个多路选择器(地址选择,写数据选择,读数据选择)用于选通master和slave之间的data和addr。
AHB的ADDR没有分读和写的ADDR:AHB是半双工的,读和写不能同时进行,因此性能上比AXI一般来讲是要弱的。

补充:单工,半双工,全双工

  1. 单工:数据只在一个方向传播,不能实现双向通信。如电视,广播等。
  2. 全双工:允许数据在两个方向上同时传播。如手机通话。
  3. 半双工:允许数据在两个方向上传播,但同一时间数据只能在一个方向上传播(不能同时),本质上是切换的单工。如对讲机。

2.3 AHB的关键信号

信号名称 信号方向 信号描述
HGRANTx 输入 总线授权信号,设置为高表示可以用总线
HREADY 输入 Slave的输出,表示传输完成了,可以进行下一次传输
HRESP 输入 Slave的输出,一些额外信息,如成功、失败等
BUSREQ 输出 申请使用总线
LOCK 输出 直接锁定总线,设置为高且不再低之后仲裁器就不会把总线让给其他设备,属于霸道信号
HTRANS 输出 标识传输类型,有NONSEQUENTIAL, SEQUENTIAL, IDLE, BUSY四种状态
HWRITE 输出 标识数据方向,0为读,1为写
HSIZE 输出 标识数据位宽,典型的有8-bit(字节)、16-bit(半字,halfword)、32-bit(字,word),最多可以1024-bit
HBURST 输出 burst的长度,即一次连续传输要传多少个数


除前面表格里的,slave还有个信号HSELx,用于标识当前总线在访问这个slave。

2.4 典例:AHB的传输


上图是总线已经申请到了(BUSREQ -> HGRANTx=1),之后(T1)首先将HTRANS[1:0],HADDR[31:0],HBURST[2:0]设置好放到总线上,这里burst4个;(T2)把HWDATA[31:0]设置好放总线,即DATA是比ADDR慢一个周期的;(T3之后)每个数据传输完成都会收到HREADY=1。
发新的ADDR时,若HTRANS为BUSY,则要把ADDR保留/重复一个周期(T3上升沿检测到BUSY,则ADDR重复0x24)。T3之后检测到HREADY没有变高时,HTRANS、HADDR、HWDATA要保留当前值,等待slave传回来的HREADY变高了,再传新的信号(T6上升沿检测到HREADY=0,这几个都保留原值,没传新的)。

2.5 AHB的其他问题(持续更新)

(1)HSIZE是什么,怎么用?
HSIZE表示的是一次传输的数据包大小/位宽,有8/16/32/…/1024 bit。传输的数据位宽(Master -> slave,主要取决于slave的数据带宽)和总线位宽可以不一样,借助HSIZE可以实现总线和slave数据位宽的匹配。如下图,总线位宽比较低,是32bit,而我们需要一个高带宽的slave,是64bit的,HSIZE就设置为64bit来告诉总线一个数是64bit的。总线的处理就是,第一个数放到slave的DATA[31:0],第二个数放到slave的DATA[63:32](顺序可能相反),两个整合在一起再把64位整体传给slave。

(2)既然每次(每个beat)master都要传对应的地址,slave接收到地址之后对应进行读/写操作,为什么需要还要HBURST信号来告诉slave有几个burst?
一般来说,确实slave按部就班根据地址操作就行了。但是对于有的slave,提前知道了burst长度有助于提高效率,比如提前腾出burst长度的buffer。

(3)什么是AHB lite?
当总线只允许有一个主设备Master时,那么AHB只有一个master,也不需要仲裁器arbiter了,这就是AHB lite。

3 APB

内容来源:

  1. 知乎用户@桔里猫,AHB与APB总线你需要知道的事儿
  2. 博客园@feipeng8848,AMBA总线协议AHB、APB
  3. ARM官方文档AHB部分

APB,Advanced Peripheral Bus,高级外设总线,主要应用在低带宽的外设上,如UART,I2C,中断控制、定时器、GPIO等。对性能要求不高,主要是低功耗。

3.1 APB的接口信号

APB的架构不像AHB那样是多主设备的架构,APB只有唯一的主设备APB桥(与AXI或AHB相连),因此不需要仲裁一些BUSREQ,GRANT,接口信号很简单。下图是一个典型的慢速APB Slave需要的接口。

信号名称 信号方向 信号描述
PSELx 输入 总线选通
PENABLE 输入 标识可以访问该slave

只有PSELx = 1 & PENABLE = 1时才可以读数据。APB只有一个master(APB桥),因此无需等待周期和回应信号,控制逻辑简单。

3.2 典例:APB传输状态机与信号图


IDLE状态:没有传输操作,也没有选中任何从设备。
SETUP状态:当有传输要进行时,PSELx = 1(PENABLE不变还是0),进入SETUP状态,该状态只持续一个周期。当PCLK的下一个上升沿到来时,PENABLE=1且进入ENABLE状态。
ENABLE状态:相比于SETUP状态,PADDR、PSEL、PWRITE不变,PENABLE设为1。ENABLE状态也只持续一个周期。

可以看到,APB固定两个周期完成一次读或写操作。在ENABLE状态之后,若没有传输要进行,则进入IDLE状态等待;若有连续的传输,则直接进入下一次SETUP状态。
下图是往外设写一个数据的例子:

4 AHB和APB的区别与联系

4.1 AHB与APB的特性

AHB:

  1. 高性能(High performance)
  2. 并发操作(Pipelined operation)
  3. 支持多个总线主设备(Multiple bus masters)
  4. 支持突发传输(Burst transfers)
  5. 支持分段传输(Split transactions)
  6. 单个时钟周期主设备接管(Single-clock bus master handover)
  7. 单个时钟边沿操作(Single-clock edge operation)
  8. 非三态的实现方式(non-tristate implementation)
  9. 可配置64位,128位总线宽度(wider data bus condigurations-64/128 bits)
  10. 支持字节、半字和字的传输

APB:

  1. 低功耗(Low power),尤其在非外设总线活动时APB的接口零功耗
  2. 锁存的地址和控制(Latched address and control)
  3. 接口简单(Simple interface),控制逻辑简单,只有4个控制信号
  4. 适用许多外设(Suitable for many peripherals)
  5. 两个时钟周期传输
  6. 无需等待周期和回应信号

4.2 AHB和APB的适用情况

AHB接口一般用于:

  • 总线主设备(bus masters)
  • 片上存储模块(on-chip memory blocks)
  • 外部存储接口(external memory interfaces)
  • 带有FIFO接口的高带宽外设(high-bandwidth peripherals with FIFO interfaces)
  • DMA从设备外设(DMA slave peripherals)
    APB接口一般用于:
  • 简单的寄存器分布的从设备(simple register-mapped slave devices)
  • 非常低功耗的接口,尤其是时钟无法全局分布时(very low power interfaces where clocks cannot be globally routed)
  • 集合总线为窄位宽的外设,来避免每次都加载系统总线(grouping narrow-bus peripherals to avoid loading the system bus)

4.3 AHB与APB的联系

APB架构上的master即APB桥,可以作为AHB的一个slave进行数据传输。下图表示AHB对APB的一次突发读数据:

数字IC验证:ARM总线协议AMBA中AHB、APB的简介、区别与联系相关推荐

  1. 数字IC验证:总线握手协议(VALID/READY握手机制)

    写在前面: 最近学习总线协议,涉及握手,因此整理本文.若内容有疑惑或错误之处,请在评论区指出,感谢! 文章目录 1 什么是"握手"? 2 VALID/READY握手机制 3 Cas ...

  2. 数字IC验证:ARM协议之AMBA低功耗接口Q-channel

    写在前面: 最近实习项目里用到Q-channel,因此简单整理一下,内容大多来自ARM官方文档与网络上的,我主要做一个整合,加上自己的理解补充,内容来源都会分别标出.如有侵权请指出,立刻删帖. 官方文 ...

  3. 【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AHB协议基本要点)

    导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...

  4. FPGA可以转行数字IC验证吗?

    近期在知乎上看到过一个问答"入职做fpga,后续是否还可以转数字ic设计或者DFT?"浏览量高达24,361,看来有很多小伙伴关心这个问题,今天就来和大家唠一唠FPGA转行的问题. ...

  5. 数字IC验证工程师加班吗?工资高吗?一天是怎么样的呢?

    现阶段的IC行业,数字IC验证工程师非常紧缺,尤其是在这个行业中干了很多年的工程师那更是奇货可居.但是最近和一些在校学生和刚入行的朋友们交流的时候,发现大多数人对数字IC验证工程师的具体工作不了解,甚 ...

  6. 数字IC验证:电路基础知识(数字IC、SOC等)

    文章目录 0 SOC结构 1 数字IC设计的流程 1.1 逻辑综合的流程 2 电路基础 2.1 三极管BJT 2.2 MOSFET 2.3 CMOS 2.4 锁存器与触发器:RS/D/JK/T 2.5 ...

  7. 【数字IC验证快速入门】2、通过一个SoC项目实例,了解SoC的架构,初探数字系统设计流程

    导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...

  8. 数字ic验证门槛高吗?

    芯片行业薪资翻了3-5倍:2025年人才缺口或超30万 央视网快看消息,随着国产芯片产业高速发展,芯片人才匮乏的现象日渐凸显.如今,薪水增加和高薪挖人成为行业常态.某微电子公司的董事长称,以前招一个人 ...

  9. 【验证技能】数字IC验证VIP开发总结

    数字IC验证VIP开发总结 VIP的用处 VIP开发流程 VIP开发中注意的点 VIP的用处 芯片从开发开始到最终在用户中正常使用,是需要在整个过程的不同阶段进行很多的测试和验证的,证明这个芯片工作复 ...

最新文章

  1. Git Workflow工作流示意图
  2. js 短信验证码 6位数字
  3. SLAM - 01 - 分类
  4. C语言十进制转二进制
  5. WPF ComboBox样式
  6. [BZOJ]1071 组队(SCOI2007)
  7. [IOS Tableview] cell自定义view显示错误问题
  8. 点击area不出现黑框_黑框淋浴房,黑得高级,黑得漂亮!
  9. IDEA Jsp乱码大全
  10. 网络游戏植入广告案例
  11. SQL SERVER之填充因子
  12. 当元宇宙撞上赛博文化 | 成为「大创夜家」
  13. 电脑报价管理系统C语言,C语言笔记本电脑销售系统课设(附源码).doc
  14. 第十七届全国大学生智能车竞赛 华南赛区竞赛(线上)事宜通知
  15. 【技能教学】如何通过FFMPEG编码推RTSP视频直播流到EasyDarwin开源平台时叠加时间水印?
  16. apache mima 过滤器
  17. d3dcompiler_43.dll缺失怎么修复方法_d3dcompiler43dll丢失怎么解决
  18. 刨根问底之链表数据结构
  19. 微信 jsapi支付 和 Native支付 php
  20. php钓鱼怎么使用方法,初学钓鱼最详细的方法教程

热门文章

  1. iOS App 瘦身实践总结
  2. 深入了解HBASE架构
  3. 智 能 家 庭
  4. linux更新python版本命令_Linux升级python版本
  5. 【VC ++ 2010】 C语言 计算机二级编译器 Visual C ++ 2010 Express(中文学习版)的安装与使用
  6. Windows 10打开任务管理器的方式
  7. 2022年中国电力数字化产业研究报告 附下载
  8. dbi,天线方向图,全方向性天线……这些概念里的坑
  9. mongodb创建2ds索引语句
  10. python jsonpath库_Python爬虫(十六)_JSON模块与JsonPath