数字IC验证:ARM总线协议AMBA中AHB、APB的简介、区别与联系
写在前面:
最近实习项目里用到这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
内容来源:
- 知乎用户@桔里猫,AHB与APB总线你需要知道的事儿
- 博客园@feipeng8848,AMBA总线协议AHB、APB
- 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一般来讲是要弱的。
补充:单工,半双工,全双工
- 单工:数据只在一个方向传播,不能实现双向通信。如电视,广播等。
- 全双工:允许数据在两个方向上同时传播。如手机通话。
- 半双工:允许数据在两个方向上传播,但同一时间数据只能在一个方向上传播(不能同时),本质上是切换的单工。如对讲机。
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
内容来源:
- 知乎用户@桔里猫,AHB与APB总线你需要知道的事儿
- 博客园@feipeng8848,AMBA总线协议AHB、APB
- 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:
- 高性能(High performance)
- 并发操作(Pipelined operation)
- 支持多个总线主设备(Multiple bus masters)
- 支持突发传输(Burst transfers)
- 支持分段传输(Split transactions)
- 单个时钟周期主设备接管(Single-clock bus master handover)
- 单个时钟边沿操作(Single-clock edge operation)
- 非三态的实现方式(non-tristate implementation)
- 可配置64位,128位总线宽度(wider data bus condigurations-64/128 bits)
- 支持字节、半字和字的传输
APB:
- 低功耗(Low power),尤其在非外设总线活动时APB的接口零功耗
- 锁存的地址和控制(Latched address and control)
- 接口简单(Simple interface),控制逻辑简单,只有4个控制信号
- 适用许多外设(Suitable for many peripherals)
- 两个时钟周期传输
- 无需等待周期和回应信号
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的简介、区别与联系相关推荐
- 数字IC验证:总线握手协议(VALID/READY握手机制)
写在前面: 最近学习总线协议,涉及握手,因此整理本文.若内容有疑惑或错误之处,请在评论区指出,感谢! 文章目录 1 什么是"握手"? 2 VALID/READY握手机制 3 Cas ...
- 数字IC验证:ARM协议之AMBA低功耗接口Q-channel
写在前面: 最近实习项目里用到Q-channel,因此简单整理一下,内容大多来自ARM官方文档与网络上的,我主要做一个整合,加上自己的理解补充,内容来源都会分别标出.如有侵权请指出,立刻删帖. 官方文 ...
- 【数字IC验证快速入门】22、SystemVerilog项目实践之AHB-SRAMC(2)(AHB协议基本要点)
导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...
- FPGA可以转行数字IC验证吗?
近期在知乎上看到过一个问答"入职做fpga,后续是否还可以转数字ic设计或者DFT?"浏览量高达24,361,看来有很多小伙伴关心这个问题,今天就来和大家唠一唠FPGA转行的问题. ...
- 数字IC验证工程师加班吗?工资高吗?一天是怎么样的呢?
现阶段的IC行业,数字IC验证工程师非常紧缺,尤其是在这个行业中干了很多年的工程师那更是奇货可居.但是最近和一些在校学生和刚入行的朋友们交流的时候,发现大多数人对数字IC验证工程师的具体工作不了解,甚 ...
- 数字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 ...
- 【数字IC验证快速入门】2、通过一个SoC项目实例,了解SoC的架构,初探数字系统设计流程
导读:作者有幸在中国电子信息领域的排头兵院校"电子科技大学"攻读研究生期间,接触到前沿的数字IC验证知识,旁听到诸如华为海思.清华紫光.联发科技等业界顶尖集成电路相关企业面授课程, ...
- 数字ic验证门槛高吗?
芯片行业薪资翻了3-5倍:2025年人才缺口或超30万 央视网快看消息,随着国产芯片产业高速发展,芯片人才匮乏的现象日渐凸显.如今,薪水增加和高薪挖人成为行业常态.某微电子公司的董事长称,以前招一个人 ...
- 【验证技能】数字IC验证VIP开发总结
数字IC验证VIP开发总结 VIP的用处 VIP开发流程 VIP开发中注意的点 VIP的用处 芯片从开发开始到最终在用户中正常使用,是需要在整个过程的不同阶段进行很多的测试和验证的,证明这个芯片工作复 ...
最新文章
- Git Workflow工作流示意图
- js 短信验证码 6位数字
- SLAM - 01 - 分类
- C语言十进制转二进制
- WPF ComboBox样式
- [BZOJ]1071 组队(SCOI2007)
- [IOS Tableview] cell自定义view显示错误问题
- 点击area不出现黑框_黑框淋浴房,黑得高级,黑得漂亮!
- IDEA Jsp乱码大全
- 网络游戏植入广告案例
- SQL SERVER之填充因子
- 当元宇宙撞上赛博文化 | 成为「大创夜家」
- 电脑报价管理系统C语言,C语言笔记本电脑销售系统课设(附源码).doc
- 第十七届全国大学生智能车竞赛 华南赛区竞赛(线上)事宜通知
- 【技能教学】如何通过FFMPEG编码推RTSP视频直播流到EasyDarwin开源平台时叠加时间水印?
- apache mima 过滤器
- d3dcompiler_43.dll缺失怎么修复方法_d3dcompiler43dll丢失怎么解决
- 刨根问底之链表数据结构
- 微信 jsapi支付 和 Native支付 php
- php钓鱼怎么使用方法,初学钓鱼最详细的方法教程
热门文章
- iOS App 瘦身实践总结
- 深入了解HBASE架构
- 智		能		家		庭
- linux更新python版本命令_Linux升级python版本
- 【VC ++ 2010】 C语言 计算机二级编译器 Visual C ++ 2010 Express(中文学习版)的安装与使用
- Windows 10打开任务管理器的方式
- 2022年中国电力数字化产业研究报告 附下载
- dbi,天线方向图,全方向性天线……这些概念里的坑
- mongodb创建2ds索引语句
- python jsonpath库_Python爬虫(十六)_JSON模块与JsonPath