AMBA APB4 与 AMBA3 AHB-Lite 1.0 协议介绍
AMBA APB4 与 AMBA3 AHB

AMBA APB4 与AMBA3 AHB而我们检查, 即使是 transfer with no wait state, 也最少消耗了 3 cycles. 这里我们理解, 在图例1中, T3 状态下, finish 本次transfer后, 假如要延续操作下一个写传递的过程, 那么则在 T3 状态下保持 PSEL asserted, 协作 PREADY unasserted, 恰好又进入了如T1 cycle 相同的 setup state, 这时需要 bridge 更新地址 PWRITE, 以及数据 PWDATA. 也就是在延续 transfer(针对同一个 slave)的操作中, transfer 最少只消耗 2 cycle.我们没有在 APB 协议中, 获得上述猜想的详解, 我们保留上述对 "2 cycles" 的理解猜想于此.总结我们通过对 APB protocol 的理解, 得知 APB 是 unpipeline 的 bus.无论如何, setup state 将占领一个 cycle, 而 access state 将占领另一个. 这种 unpipeline 的设计, 很可能就是 APB 被作为衔接外围的, 而不是用于 processor 之间的 memory 衔接的 BUS 的重要缘由. 因其不要求外围在一个 cycle 中对 address 举行取样, 这也给外围更多的时光反应, 起码比较而言, 用法 APB 的外围可以具备更小的bandwidth.[AMBA AHB-Lite]AHB-LiteAHB: Advanced High-performance Bus用于高表现力高clock频率的系统. 最常常的用法是衔接 internal memeory device, external memory interface, 以及 high bandwidth 外围. 其基本组元是: Master, Slave, Decoder, Multiplexor.在 address/control phase 与 data phase 中, 存在 fixed pipeline.AHB: 仅仅支持 AMBA AXI protocol 的功能子集(subset).AHB-Lite: 假如除去在 master 与 slave IP 开发中不需要的部分, 则 AHB protocol 的这个 subset 则定义为 AHB-Lite.Operation每一个 trasfer 都包括 Address phase 与 Data Phase.Address 不允许被 extend, 即便是来自 Slave 的哀求, 因此我们可以想象, 所有的 Slaves 都必需在 Address phase(1 cycle) 完成sampling address.但是与 APB 一样, Slave 也可以通过 HREADY signal 哀求 extend data phase, 增强额外的时光去 sample data.HRESP signal 被用来解释 transfer 的胜利与否.Address 总是可以在一个 single HCLK cycle 中完成, 除非是之前的bus transfer 被 extend(我们理解, 这里应当是惟独 data 才干做这个 extend).Data 可以占有数个 HCLK cycle, 这取决于 HREADY signal 是否extend transfer.因此, Address phase 可以与 Data phase 的 overlapping, 就是pipeline 的基础.[图例4: 在不同地址上的3个transfer的例子]。
AMBA_3_APB协议规范

AMBA_3_APB协议规范AMBA(高级微处理器总线)是一种用于系统级互连的开放标准协议,它由ARM公司开发,被广泛应用于嵌入式系统中。
AMBA_3_APB(高级微处理器总线第3代-高性能总线)是AMBA协议的一部分,它定义了一种高性能、低功耗的片内总线协议,用于连接处理器和外设。
1.信号:AMBA_3_APB协议规范定义了一系列信号,包括时钟信号、复位信号、总线控制信号、数据传输信号等。
时钟信号主要包括时钟线以及时钟使能信号,用于控制数据传输的时序。
复位信号用于重置外设以及总线控制器的状态。
总线控制信号用于控制总线的访问权限以及传输模式等。
数据传输信号用于在总线上传输数据。
2.传输:AMBA_3_APB协议规范定义了四种传输类型,分别是单个传输、设置传输、清除传输以及数据传输。
单个传输用于传输单个数据项,例如读取外设的寄存器值。
设置传输用于设置外设的寄存器值,例如写入配置信息。
清除传输用于清除外设的寄存器值,例如重置外设。
数据传输用于传输大量数据,例如读取或写入外设的缓冲区。
3.协议:AMBA_3_APB协议规范定义了一套协议,包括方法、地址空间、读写传输、保持传输、错误传输以及确认传输。
方法用于指示执行的操作类型,包括读、写等。
地址空间用于指定外设的寄存器地址。
读写传输用于实现读取或写入寄存器的操作。
保持传输用于在外设的寄存器繁忙时保持总线传输。
错误传输用于指示总线传输过程中的错误信息。
确认传输用于确认总线传输的完成。
4.时序:AMBA_3_APB协议规范定义了一套时序要求,包括时钟周期、数据有效性以及总线传输的顺序。
时钟周期用于控制数据传输的时序,包括时钟上升沿和下降沿的作用周期。
数据有效性用于指示数据在总线上的有效时间段,以及数据的采样时间。
总线传输的顺序用于指示多个传输之间的先后顺序,以及传输的优先级。
总结起来,AMBA_3_APB协议规范是一种用于连接处理器和外设的高性能、低功耗的片内总线协议。
AMBA_3_APB协议规范

AMBA 3 APB 协议规范关于该规范该规范使用于AMBA 3 APB 协议,引用自AMBA 3 (不适用AMBA 2 或更早版本)使用范围该规范用来帮助硬件或软件工程师设计使用APB协议的系统或模块使用该规范该规范按照以下章节进行组织:Chapter 1 简介Chapter 2 传输Chapter 3 操作状态Chapter 4 信号描述目录第一章简介 (2)1.1 关于AMBA 3 APB (2)1.2 AMBA 3 APB 协议规范v1.0修改 (2)第二章传输 (3)2.1 写传输 (3)2.1.1 无等待状态 (3)2.1.2 有等待状态 (3)2.2 读传输 (4)2.2.1 无等待状态 (4)2.2.2 有等待状态 (4)2.3 错误响应 (5)2.3.1 写传输 (5)2.3.2 写传输 (6)2.3.3 PSLVERR映射 (6)第三章操作状态 (7)3.1 操作状态 (7)第四章信号描述 (8)4.1 AMBA 3 APB 信号 (8)1.1 关于AMBA 3 APBAPB属于AMBA 3 协议系列,它提供了一个低功耗的接口,并降低了接口的复杂性。
APB接口用在低带宽和不需要高性能总线的外围设备上。
APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB 外围设备的设计流程,每个传输至少耗用两个周期。
APB可以与AMBA高级高性能总线(AHB-Lite) 和AMBA 高级可扩展接口(AXI)连接。
1.2 AMBA 3 APB 协议规范v1.0修改该版本包括:• 一个准备好信号PREADY, 来扩展APB传输• 一个错误信号PSLVERR, 来指示传输失败2.1 写传输写传输包括两种类型:• 无等待状态• 有等待状态2.1.1 无等待状态图2-1 显示了一个基本的无等待状态的写传输。
图2-1 无等待的写传输地址、写入数据、写入信号和选择信号都在时钟上升沿后改变。
amba发展历史

AMBA发展历史
AMBA(Advanced Microcontroller Bus Architecture)是一种用于在微控制器和其他系统中实现高性能、低功耗互连的总线架构。
下面是AMBA的发展历史:
1. AMBA 1.0:于1995年发布,包括ASB(Advanced System Bus)和APB(Advanced Peripheral Bus)两种总线协议。
ASB提供高速数据传输和低功耗,而APB则提供简单的单周期访问。
2. AMBA 2.0:于2001年发布,引入了AHB(Advanced High-performance Bus)协议,用于高速数据传输。
AHB提供了更好的带宽和更低的延迟,适用于需要快速响应的应用场景。
3. AMBA 3.0:于2007年发布,引入了AXI(Advanced eXtensible Interface)协议,用于高级可扩展性和灵活性。
AXI 支持各种不同的数据传输大小和地址映射方式,适用于不同的应用场景。
4. AMBA 4.0:于2013年发布,进一步增强了AMBA的性能和可扩展性。
AMBA 4.0引入了AHB3和AXI4协议,支持更高的带宽和更低的延迟,并提供更灵活的协议配置选项。
总的来说,AMBA的发展历程是从简单的ASB和APB
协议到更复杂的AHB和AXI协议,不断地提高性能和可扩展性,以适应不断发展的应用需求。
AMBA、AHB、APB总线简介

AMBA、AHB、APB总线简介AMBA简介随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大。
数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用。
在基于IP复用的SoC设计中,片上总线设计是最关键的问题。
为此,业界出现了很多片上总线标准。
其中,由ARM公司推出的AMBA片上总线受到了广大IP开发商和SoC系统集成者的青睐,已成为一种流行的工业标准片上结构。
AMBA规范主要包括了AHB(Advanced High performance Bus)系统总线和APB(Advanced Peripheral Bus)外围总线。
AMBA片上总线AMBA 2.0规范包括四个部分:AHB、ASB、APB和Test Methodology。
AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。
AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。
下面将简要介绍比较重要的AHB和APB总线。
基于AMBA的片上系统一个典型的基于AMBA总线的系统框图如图3所示。
大多数挂在总线上的模块(包括处理器)只是单一属性的功能模块:主模块或者从模块。
主模块是向从模块发出读写操作的模块,如CPU,DSP等;从模块是接受命令并做出反应的模块,如片上的RAM,AHB/APB 桥等。
另外,还有一些模块同时具有两种属性,例如直接存储器存取(DMA)在被编程时是从模块,但在系统读传输数据时必须是主模块。
如果总线上存在多个主模块,就需要仲裁器来决定如何控制各种主模块对总线的访问。
虽然仲裁规范是AMBA总线规范中的一部分,但具体使用的算法由RTL 设计工程师决定,其中两个最常用的算法是固定优先级算法和循环制算法。
AHB总线上最多可以有16个主模块和任意多个从模块,如果主模块数目大于16,则需再加一层结构(具体参阅ARM公司推出的Multi-layer AHB规范)。
AMBA AHB APB 概述

AHB Decoder
• AHB系统中有一个核心地址译码器,它提供HSELx信号到各 个AHB Slave; • Decoder本身只负责位地址译码,为纯组合逻辑电路; • Slave只有在HSELx和HREADY都为High才采样地址/控制信号; • AHB地址线有32条,为简化译码器译码时间,AHB Spec.规 定每个Slave的最小地址空间为1KB,因此译码器最多只需 要对22条地址线进行译码。
HWRITE & HSIZE[2:0]
• Transfer Direction、Transfer Size由Master发出: – HWRITE为HIGH,Master在data phase将数据通过write data bus(HWDATA[31:0])发往Slave – HWRITE为LOW,Slave在data phase将数据通过read data bus (HRDATA[31:0])发往Master
允许某个主设备控制总线 发起一个请求给仲 裁器
驱动地址和控 制信号
仅选中的从设备响应地 址/控制信号
拉高HREADY信号,总线 传输完成
AHB Transfer
• Basic transfer – Address phase
• 传输address和control signal
– Data phase
• 传输write/read data和response signal
• 传输在data phase时若一个clock cycle无法完成传 输,Slave可通过拉低HREADY信号延长传输,传输 结束时状态由Slave HRESP信号反映。
Master sample the data
Master release address and control
AMBA_AHB_APB_AXI协议对比分析..

9
HREADY:S应答M是否读写操作传输完成: 1-传输完 成, 0-需延长传输周期。需要注意的是,HREADY 做 为总线上的信号,它是M和S 的输入;同时每个S 需 要输出自己的HREADY。所以对于S 会有两个 HREADY 信号,一个来自总线的输入,一个自己给到 多路器的输出。 HRESP:S应答当前传输状态,OKAY、ERROR、 RETRY、SPLIT HRDATA:读数据总线,从S读到M
3
一个典型的基于AMBA 总线的SOC 系统架构
这种SOC架构以AHB为主干,挂上CPU,片上内 存,和其它DMA设备。
4
AHB 主要是针对高效率、高频宽及快速系统模块所设 计的总线,它可以连接如微处理器、芯片上或芯片外 的内存模块和DMA等高效率模块 AMBA 中的APB 主要用在低速且低功率的外围,可 针对外围设备作功率消耗及复杂接口的最佳化 APB在AHB和低带宽的外围设备之间提供了通信的桥 梁,所以APB是AHB或者ASB的二级扩展总线
19
APB/AHB/AXI对比
APB 低功耗 AHB 高速度 AXI 高速度,高带宽 管道化互联 单向通道 只需首地址 读写并行 支持乱序 支持非对齐操作 有效支持初始延迟 较高的外设
20
连线非常多
AHB总线互连
7
允许某个主设备控制总线 发起一个请求给仲 裁器
驱动地址和控 制信号
仅选中的从设备响应地 址/控制信号
拉高HREADY信号,总线 传输完成
8
AHB基本信号
HADDR:32位系统地址总线 HTRANS: M指示传输状态,NONSEQ、SEQ、IDLE、 BUSY HWRITE:传输方向:1-写,0-读 HSIZE:传输单位 HBURST:传输的burst类型 HWDATA:写数据总线,从M写到S
AMBAAPB协议规范

AMBA 3 APB 协议规范关于该规范该规范使用于AMBA 3 APB 协议,引用自AMBA 3 (不适用AMBA 2 或更早版本)使用范围该规范用来帮助硬件或软件工程师设计使用APB协议的系统或模块使用该规范该规范按照以下章节进行组织:Chapter 1 简介Chapter 2 传输Chapter 3 操作状态Chapter 4 信号描述目录第一章简介 (2)1.1 关于AMBA 3 APB (2)1.2 AMBA 3 APB 协议规范v1.0修改 (2)第二章传输 (3)2.1 写传输 (3)2.1.1 无等待状态 (3)2.1.2 有等待状态 (3)2.2 读传输 (4)2.2.1 无等待状态 (4)2.2.2 有等待状态 (4)2.3 错误响应 (5)2.3.1 写传输 (5)2.3.2 写传输 (6)2.3.3 PSLVERR映射 (6)第三章操作状态 (7)3.1 操作状态 (7)第四章信号描述 (8)4.1 AMBA 3 APB 信号 (8)1.1 关于AMBA 3 APBAPB属于AMBA 3 协议系列,它提供了一个低功耗的接口,并降低了接口的复杂性。
APB接口用在低带宽和不需要高性能总线的外围设备上。
APB是非流水线结构,所有的信号仅与时钟上升沿相关,这样就可以简化APB 外围设备的设计流程,每个传输至少耗用两个周期。
APB可以与AMBA高级高性能总线(AHB-Lite) 和AMBA 高级可扩展接口(AXI)连接。
1.2 AMBA 3 APB 协议规范v1.0修改该版本包括:• 一个准备好信号PREADY, 来扩展APB传输• 一个错误信号PSLVERR, 来指示传输失败2.1 写传输写传输包括两种类型:• 无等待状态• 有等待状态2.1.1 无等待状态图2-1 显示了一个基本的无等待状态的写传输。
图2-1 无等待的写传输地址、写入数据、写入信号和选择信号都在时钟上升沿后改变。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AMBA APB4 与 AMBA3 AHB-Lite 1.0 协议介绍2013年09月18日 16:09 绝对好文关键词:AMBA , APB4 , AHB-Lite作者:Allen Zhan[介绍]根据ARM的说法, 今天 AMBA 已经成为了业界事实上的总线标准. 本文我们简单对AMBA4 中的 APB v2.0(也称为 APB4), 以及 AMBA3 AHB-Lite v1.0 进行简单的了解. 我们的介绍集中在, 我们比较有兴趣的地方. 尽管如此, 也可能几乎覆盖了协议中几个最重要的部分.[AMBA APB]AMBAAdvanced Microcontroller Bus Architecture, 由ARM定义的总线架构(标准), 由一个协议家族组成. ARM 声称这一标准已经称为事实上的 uController 业界通用标准.APBThe Advanced Peripheral Bus(APB) 是 AMBA 协议家族中一个组成部分.它被定义为一个 low-cost 的接口, 为了最小能耗与减小接口的复杂性进行的优化设计.被用于连接通用外围, 比如 timers, inerrupt controllers, UART是, and IOs. 通过 system-to-peripheral bus bridge 与 main system bus 相连, 有助于降低能耗.APB 版本当前(2013年9月), 最近的 APB协议版本是 AMBA APB Protocol Specification v2.0. 或者因为属于 AMBA4 家族中的发布协议, 一般也被称为 APB4.而在第一个版本(APB2 )中, APB 的基本组元, APB bridge 与 APB slave 被定义.而在 APB3 中, Ready signal 被引入, 这意味着增加了操作状态中, 增加了wait state. 另外增加了 PSLVERR, 用于错误报告的 signal.最近的 APB4, 增加了 PPROT 与 PSTRB signal.APB bridge 与 APB slave我们可以挂载各种"慢速"的外设在 APB 上, 比如 IO, 比如 UART, 比如 SPI, etc. 它们都作为 slave 的角色存在.但是, 我们想想看, bridge 这个 role 就蛮有意思. 它实际上暗示我们, APB 不能"单独存在". 我们这里所谓不能"单独存在"的意思, 是说 APB 一定不能直接连接在 processor 上(或者说 arm core上). 而最可能的, 是通过 APB bridge 而连接在高速的 bus 上.实际上, 在 AHB-Lite 协议中, 我们发现 APB bridge 被作为 AHB-Lite 的slave 而被定义.Data busesAPB 协议有两个独立的 data bus, 一个用来读 data, 一个用来写 data.因为没有独立的握手信号, 所以在两根bus上, 同一时刻数据传输不能同时发生.Write Transfers我们简单对 APB 的 trasfers 过程进行分析, 比如我们分析 write transfer with no wait states:[图例1: Write transfer with no wait states]T0: Idle stateT1: Setup statewrite address PADDR, write data PWDATAsetup state 仅仅只保持 1pcs clock cycle, 而在下一个 PCLK 的上升沿, 一定进入 Access state.T2: Access stateAPB bridge 通过拉高 PENABLE, 通知slave 第二阶段(也就是 access phase)开始.因为是 no wait states, 我们见到了 PREADY 在此被拉高, 表示 slave 通知bridge, 在下一个 PCLK 的上升沿, 本次 transfer 的过程可以结束.T3: finish transfer, then enter Idle state again or the next setup. PREADY 拉低, 说明 slave 通知本次 transfer 结束. 在 PREADY unasserted 之前, PADDR, PWDATA, 以及其他的 signals 都应该保持有效.从上述时序中, 我们了解到, write transfer 看来至少需要 3 cycles. setup - access - finish而在一个 write transfer with wait states 时序中,[图例2: Write transfer with wait states]我们见到了, Slave 通过 unassert 的方式(拉低), 延迟了2pcs cycles(根据图例的例子), 这样在 T2 状态上的拉高动作, 被延时到 T4 进行拉高. 也就是Slave 通知在 T5 cycle 中结束本次 transfer.这就是通过 PREADY 引入了 wait state 后现象, 我们注意到, 一般的术语被称为"extend the transfer".Operating StatesRead Transfer 的情形与 Write Transfer 类似, 这样, 我们就基本完备讲述了APB protocol, 附上 Operating States 进行理解:[图例3: State Diagram]transfer cyclesAPB protocol 中, 明确指出: "每个 Transfer 至少消耗 2 cycles".而我们检查, 即使是 transfer with no wait state, 也最少消耗了 3 cycles. 这里我们理解, 在图例1中, T3 状态下, finish 本次 transfer后, 如果要连续操作下一个写传递的过程, 那么则在 T3 状态下保持 PSEL asserted, 配合PREADY unasserted, 恰好又进入了如 T1 cycle 相同的 setup state, 这时需要 bridge 更新地址 PWRITE, 以及数据 PWDATA. 也就是在连续 transfer(针对同一个 slave)的操作中, transfer 最少只消耗 2 cycle.我们没有在 APB 协议中, 获得上述猜测的详解, 我们保留上述对 "2 cycles" 的理解猜测于此.总结我们通过对 APB protocol 的理解, 得知 APB 是 unpipeline 的 bus. 无论如何, setup state 将占据一个 cycle, 而 access state 将占据另一个.这种 unpipeline 的设计, 很可能就是 APB 被作为连接外围的, 而不是用于processor 之间的 memory 连接的 BUS 的重要原因. 因其不要求外围在一个cycle 中对 address 进行取样, 这也给外围更多的时间反应, 至少比较而言, 使用 APB 的外围可以具备更小的 bandwidth.[AMBA AHB-Lite]AHB-LiteAHB: Advanced High-performance Bus用于高表现力高clock频率的系统. 最经常的使用是连接 internal memeory device, external memory interface, 以及 high bandwidth 外围. 其基本组元是: Master, Slave, Decoder, Multiplexor.在 address/control phase 与 data phase 中, 存在 fixed pipeline. AHB: 仅仅支持 AMBA AXI protocol 的功能子集(subset).AHB-Lite: 如果除去在 master 与 slave IP 开发中不需要的部分, 则 AHB protocol 的这个 subset 则定义为 AHB-Lite.Operation每一个 trasfer 都包括 Address phase 与 Data Phase.Address 不允许被 extend, 即便是来自 Slave 的请求, 因此我们可以想象, 全部的 Slaves 都必须在 Address phase(1 cycle) 完成 sampling address.但是与 APB 一样, Slave 也可以通过 HREADY signal 请求 extend data phase, 增加额外的时间去 sample data.HRESP signal 被用来说明 transfer 的成功与否.Address 总是可以在一个 single HCLK cycle 中完成, 除非是之前的 bus transfer 被 extend(我们理解, 这里应该是只有 data 才能做这个 extend).Data 可以占有数个 HCLK cycle, 这取决于 HREADY signal 是否 extend transfer.因此, Address phase 可以与 Data phase 的 overlapping, 就是 pipeline 的基础.[图例4: 在不同地址上的3个transfer的例子]Transfer typesTransfer types 包括: IDLE, BUSY, NONSEQ, SEQ同猜想的一样, 对于 Slave, 可以通过 HREADY 实现 extend transfer, 我们觉得, 这或者就是"较为慢速"的 Slave 实现 delay 的方式.而 Master 如果在 HTRANS[1:0] 中使用 BUSY, 也可以在 burst transfer 的过程中, 插入idle cycles. 这让人觉得, 这应算是 master 试图做 delay 的方式.[图例5: BUSY Transfer type]值得注意的是, 该例子, 使用了 4-beat 的 burst operation.Locked transfers通过 HMASTLOCK, master 可以要求完成"锁定"的 transfer, 不能被打断. 而这个用法, 往往在多个 master 的用法中存在.[图例6: Locked transfers]Default slave如果不存在的的 memory map 被 master 点中, AHB-Lite 协议给出了一个解决方案, 就是必须存在一个增加的 default slave 来进行回应.Slave transfer responsesAHB-Lite 协议中指出, Master 一旦开始一个 transfer后, 将无法主动取消这个 transfer.因此, 通过来自 Slave 的 HRESP signal 的状态, 判断 transfer 的成功与否将是重要的.HWDATA 与 HRDATA同 APB 协议一样, data bus 的 read 与 write 是分离的.所以不需要"三态"的 drivers. 我们此时有点大脑短路, 不太理解这里的意思, 这应该是说, 如果我们在单一的, 而不是分离的 data bus 上实现 read data 以及 write data, 那么我们就需要"三态驱动器"? 这里的 tristate 为何意? --有知道的同行, 这里定能有教于我.[参考文献]1. AMBA3 AHB-Lite Protocol v1.0 Specification2. AMBA APB protocol v2.0 Specification[结语]让我们引用 Sailing 的文章 "ARM与x86之4--EAGLE is Coming!" (From: /s/blog_6472c4cc0100mnza.html) 中的论述 AMBA 的片段作为结语:<剪切>"最令Intel尴尬的是,x86处理器并没有一个与 AMBA 总线类似的SoC平台总线,这是Intel 进军嵌入式领域一个不小的障碍。