硕士研究生学位论文
题目:基于 AMBA 的手机芯片 SOC 总线架
构设计与应用
姓 名: 廖 凯
学 号: 10548086
院 系: 信息科学与技术学院
专 业: 电子与通信工程
研究方向: 集成系统芯片(SOC)
导师姓名: 王新安
二 00八 年 六 月
版权声明
任何收存和保管本论文各种版本的单位和个人,未经本
论文作者同意,不得将本论文转借他人,亦不得随意复制、
抄录、拍照或以任何方式传播。否则,引起有碍作者著作权
之问题,将可能承担法律责任。
摘 要
随着可携带式消费型电子产品的应用日益广泛,需求的功能越来越多,导致
一个嵌入式系统的开发时间难以预测及控制;而嵌入式系统越来越复杂,架构规
格又时常更新改变,整合困难且耗时,产品生命周期又越来越短,迫使设计者在
设计硬件架构时必须从本质上要较有弹性去考量。而系统总线设计的灵活、弹性,
允许系统开发者可以选择最理想的架构,有效地满足各种各样的系统所需要的效
能,是 Reuse 的关键所在。在系统总线设计中,AMBA 是一个公开的标准,详叙
了组成一个系统的功能模块互联和管理的机制,将使设计者在不需要更改总线界
面下,直接整合现有的 IP 核,这使得系统的整体效益倍增。SOC 设计者有时为
了和周边装置配置及频宽,要在通道数和时间频率最优化间选择一个最佳化的的
组合,因而选择 AMBA Multi-layer 的架构。AMBA 系统总线中 AHB 主要是针对高
效率,高频率的模块所设计的总线,它可以连接如微处理器、晶片上或晶片外的
记忆体模块和直接记忆体存取机制等高效率模块。它可以支持多个 masters 管理
机制而达到最大的系统效能,是一个高速、高频率的总线。本论文则是基于智能
手机开发当中对系统总线的选择与设计所做的研究。
本论文的目的即是研究基于 AMBA 这种片上总线系统的智能手机 SOC 系统
架构的设计和应用。本论文的主要工作是在研究和分析 AHB 协议的基础上,完
成智能手机芯片中 AHB 总线的设计和验证以及各 IP 核的互联。具体的工作包括:
AHB 总线协议的研究;手机芯片各模块互连结构的设计;手机芯片各模块总线接
口的设计;总线模块的设计,包括仲裁器、地址译码器、多路选择器、AHB2AHB
总线桥的设计、AHB2APB 总线桥的设计。
关键字:总线桥,SOC,AHB 总线,APB 总线,主设备,从设备,仲裁器,
地址译码器
Abstract
With the development of micro-electronics technology, especially progress
on SOC technology, it is great required a more flexible on-chip bus to properly
connect sorts of IP modules .For the on-chip bus, flexibility is the key to reuse
by enabling developers to select the optimal architecture to efficiently meet the
performance requirements of a wide variety of systems. AMBA is an open
standard, on-chip bus specification that details a strategy for the
interconnection and management of functional blocks that makes up a
System-on-Chip(SOC).AMBA will let designers multiply the total bandwidth
available in a system without changing the bus interface on existing
intellectual property(IP) cores. Sometimes, the SOC designer to select the
optimal combination of bus frequency and the number of channels, using the
AMBA Multi-layer architecture. The AHB of the AMBA System Bus connects
embedded processors such as an ARM core to high-performance peripherals,
DMA controllers, on-chip memory and interfaces. It is a high-speed,
high-bandwidth bus that supports multi-master bus management to maximize
system performance. This paper is based on the research of on-chip bus’ use
in smart phones’ develop.
This paper presents the design of AHB bus and Bridge in the smart phone
after studying and analyzing the AHB protocol. The works mainly include the
design of AHB and the AHB Arbitrator Device, the Address Decoders, the
Multiplexers, the Bi-directional AHB-to-AHB Bridge , zhe APB Bridge and the
connection of all Intellectual Property for the application of our mobile phone.
Key Words : AHB Bridge, SOC, AHB, APB, master, slave, Arbitrator,
Decoder
目 录
摘 要 ............................................................................................................................I
Abstract..........................................................................................................................II
目 录..........................................................................................................................III
第一章 绪论..................................................................................................................1
总线的发展历史与现状.................................................................................1
IP 互连策略及片上总线系统 .........................................................................4
基于 IP 重用的设计方法学 ................................................................4
几种常用的片上总线比较..................................................................6
IBM 的 CoreConnect 总线 ........................................................6
ARM 的 AMBA 总线................................................................7
Silicore 的 Wishbone 总线 ........................................................8
OCP-IP 的 OCP .........................................................................9
Altera 的 Avalon 总线 .............................................................10
智能手机芯片设计要求与 AMBA 片上总线标准的优势.........................11
智能手机芯片设计要求....................................................................11
模块标准化和可复用性.........................................................11
验证层次的可划分性.............................................................12
AMBA 总线协议的优势....................................................................12
AMBA 在技术上的优势.........................................................12
利于 SOC 的集成、验证和测试 ...........................................13
良好的维护和发展前景.........................................................14
课题的意义...................................................................................................14
第二章 AMBA 总线架构分析...................................................................................15
概述................................................................................................................15
AMBA AHB 总线协议 .................................................................................15
AHB 总线简介 ...................................................................................15
AHB 总线系统互连结构 ...................................................................16
AHB 信号描述 ...................................................................................17
AHB 全局信号 ........................................................................17
AHB 仲裁信号 ........................................................................17
AHB 控制信号 ........................................................................17
传输响应(Response)信号.......................................................18
AHB 数据总线信号 ................................................................18
AHB 地址译码信号 ................................................................18
AHB SPLIT 能力信号.............................................................19
AHB 基本传输 ...................................................................................19
AHB 传输类型 ...................................................................................20
AHB 猝发操作 ...................................................................................21
AHB 传输响应 ...................................................................................22
传输响应类型.........................................................................23
两个周期的响应.....................................................................23
分立(SPLIT)与重试(RETRY)比较........................................24
AHB 仲裁协议 ...................................................................................24
请求总线访间.........................................................................24
授权总线访问.........................................................................25
猝发传输提前终止.................................................................26
锁定传输.................................................................................26
外设总线 APB..............................................................................................26
APB 特性 ............................................................................................26
第三章 AHB 总线控制模块设计 ..............................................................................28
仲裁器单元...................................................................................................28
仲裁器................................................................................................29
仲裁器仲裁机制................................................................................30
AHB 仲裁器的设计 ..........................................................................32
AHB 总线地址解码器设计 ..........................................................................35
多路选择器设计...........................................................................................37
AHB 控制器的设计 .....................................................................................37
控制器结构与接口信号....................................................................38
控制器算法实现................................................................................39
主从接口信息地址(即插即用信息)............................................41
AHB 传输通过 AHB 控制器设计的实现 ....................................................44
AHB 读写传输分析 ...........................................................................44
AHB 传输信号划分 ...........................................................................49
传输信号的通路的实现....................................................................50
AHB 传输实现的仿真结果 ...............................................................51
Debug 打印输出 ......................................................................51
仿真波形分析.........................................................................53
AHB 其他 IP 设计简述.................................................................................54
AHBtrace 设计....................................................................................54
AHBUART------Serial debug interface for AHB ...............................55
传送协议.................................................................................56
波特率速率产生.....................................................................57
APBUART –支持 APB 接口的 UART .............................................57
APBBUART 简介 ...................................................................57
发送器操作.............................................................................58
接收器操作.............................................................................59
波特率产生.............................................................................60
中断产生.................................................................................60
APB uart 的代码描述..............................................................61
第四章 AHBBRIDGE 设计与应用 ...........................................................................62
总论...............................................................................................................62
AHB2APB bridge 设计 .................................................................................62
AHB2APB 总线桥设计方案..............................................................63
同频或倍频........................................................................................64
AHB2APB 总线桥的算法实现..........................................................64
简单算法的总线桥的设计......................................................64
PrimeCell 算法的总线桥的设计............................................65
主从接口信息....................................................................................67
APB 桥的代码描述 ............................................................................68
AHB2AHB 总线桥的设计 ............................................................................68
单工 AHB2AHB 桥设计 ...................................................................69
概述.........................................................................................69
AHB/AHB 桥通用操作...........................................................70
AHB 读传输 ...........................................................................70
AHB 写传输 ............................................................................71
锁定传输.................................................................................71
配置选项.................................................................................71
信号描叙.................................................................................72
AHB/AHB 桥接示例化...........................................................73
Bi-direction AHB2AHB BRIDGE 桥接.............................................74
概述.........................................................................................74
AHB/AHB 桥基本操作...........................................................76
配置选项.................................................................................76
AHB2AHB Bridge 仿真实现 .............................................................79
第五章 总结................................................................................................................83
参考文献......................................................................................................................84
附录 1 专业术语名词解释.........................................................................................85
致 谢............................................................................................................................87
图 目 录
图表 1 图 1-1 CoreConnect 总线的逻辑结构.........................................................7
图表 2 图 1-2 AMBA 总线的逻辑结构...................................................................8
图表 3 图 1-3 Wishbone 逻辑结构 .......................................................................8
图表 4 图 1-4 OCP 的 IP 核互连结构图 ................................................................9
图表 5 图 1-5 两个 VCI 通过总线互连的逻辑结构 ...............................................10
图表 6 图 1-6 Avalon 总线系统结构图................................................................10
图表 7 图 1-7 Avalon 总线模块逻辑示例图 .........................................................11
图表 8 图 2-1 AMBA 架构图 ..............................................................................15
图表 9 图 2-2 AHB 总线互连结构 ......................................................................16
图表 10 图 2-3 带有等待状态的传输.................................................................19
图表 11 图 2-4 多传输过程 ...............................................................................20
图表 12 图 2-5 AHB 传输类型举例 ....................................................................20
图表 13 图 2-6 AHB 4 拍包绕式猝发传输 ...........................................................22
图表 14 图 2-7 AHB 重试响应 ...........................................................................23
图表 15 图 2-8 带有等待状态的总线仲裁过程 ....................................................25
图表 16 图 2-9 地址/数据总线移交 ...................................................................25
图表 17 图 2-10 APB 工作状态机 ......................................................................27
图表 18 图 2-11 APB 写传输 .............................................................................27
图表 19 图 3-1 AHB 仲裁器功能框图 ................................................................29
图表 20 图 3-2 仲裁器进行锁定传输的状态转换图.............................................30
图表 21 图 3-3 循环优先级的总线访问 ..............................................................31
图表 22 图 3-4 Arbiter 方块图 ...........................................................................33
图表 23 图 3-5 仲裁算法流程...........................................................................35
图表 24 图 3-6 正常仲裁过程仿真 ....................................................................35
图表 25 图 3-7 地址解码算法流程 ....................................................................36
图表 26 图 3-8 中心多路选择器 .......................................................................37
图表 27 图 3-9 AHB 控制器结构图 ....................................................................38
图表 28 图 3-10 AHB 控制器接口示意图 ............................................................38
图表 29 图 3-11 AHB 信号示意图 ......................................................................39
图表 30 图 3-12 AHB 总线控制器的总体算法流程图 ...........................................40
图表 31 图 3-13 split 传输实现算法 ..................................................................41
图表 32 图 3-14 AHB 即插即用信息记录 ............................................................42
图表 33 图 3-15 读/写模块基本传输 ................................................................44
图表 34 图 3-16 SLAVE 未准备好时的传输时序 ..................................................44
图表 35 图 3-17 重叠的地址周期和数据周期.....................................................45
图表 36 图 3-18 master 未准备好时的时序图 ....................................................46
图表 37 图 3-19 INCR4 传输类型的时序图.........................................................47
图表 38 图 3-20 INCR 传输仿真时序图 ..............................................................47
图表 39 图 3-21 RETRY 响应的时序图 ...............................................................48
图表 40 图 3-22 ERROR 响应的时序图 ..............................................................49
图表 41 图 3-23 AHB 总线信号划分 ..................................................................50
图表 42 图 3-24 AHB 信号通路(1) ................................................................50
图表 43 图 3-25 AHB 信号通路(2) ................................................................51
图表 44 图 3-26 AHB 传输阶段仿真图 ...............................................................53
图表 45 图 3-27 AHB trace 模块图 ...................................................................54
图表 46 图 3-28 AHBtrace 模块接口信号 ..........................................................54
图表 47 图 3-29 AHB UART 结构图 ...................................................................56
图表 48 图 3-30 AHB UART 数据帧 ...................................................................56
图表 49 图 3-31 AHB UART 命令字 ...................................................................56
图表 50 图 3-32 APB UART 结构图 ....................................................................58
图表 51 图 3-33 UART 数据帧 ..........................................................................58
图表 52 图 4-1:包含 AHB/AHB 总线的 LEON3 系统...........................................62
图表 53 图 4-2 APB Bridge 简单算法流程...........................................................65
图表 54 图 4-3 PrimeCell 算法流程....................................................................66
图表 55 图 4-4 APB 即插即用信息 .....................................................................67
图表 56 图 4-5 APB 总线设备地址映射寄存器(BAR)的示意图 ..........................67
图表 57 图 4-6 两个 AHB 总线(单工)通过 AHB/AHB 桥接连接.........................69
图表 58 图 4-7 包含 AHB/AHB 总线的 LEON3 系统 ............................................75
图表 59 图 4-8 采用了双向 AHB2AHB 桥设计的手机 SOC 芯片结构图..................75
表 目 录
表格 1 表 2-1 AHB 全局信号 .............................................................................17
表格 2 表 2-2 AHB 仲裁信号 .............................................................................17
表格 3 表 2-3 AHB 控制信号 .............................................................................18
表格 4 表 2-4 AHB 传输响应信号 ......................................................................18
表格 5 表 2-5 AHB 数据总线 .............................................................................18
表格 6 表 2-6 AHB 地址译码信号 ......................................................................18
表格 7 表 2-7 AHB SPLIT 能力信号 ....................................................................19
表格 8 表 2-8 传输类型编码..............................................................................20
表格 9 表 2-9 猝发传输编码..............................................................................21
表格 10 表 2-10 传输响应类型编码 ...................................................................23
表格 11 表 3-1 仲裁器端口信号定义.................................................................34
表格 12 表 3-2 地址内存映射关系 ....................................................................36
表格 13 表 3-3 8 种传输类型 ............................................................................46
表格 14 表 4-2 AHB/AHB 桥接配置选项(属性) ...............................................72
表格 15 表 4-3 AHB/AHB 桥接信号 ...................................................................73
表格 16 表 4-4 AHB/AHB 桥接配置选项(属性) ...............................................78
表格 17 表 4-5 AHB/AHB 桥接信号 ...................................................................78
表格 18 表 4-6 代码覆盖率 ..............................................................................79
表格 19 表 4-7 MCS FILES LIST ........................................................................79
表格 20 表 4-8 The FPGA synthesis result of AHB-Lite .......................................80
表格 21 表 4-9 The FPGA synthesis result of AHB..............................................80
表格 22 表 4-10 The FPGA synthesis result of Multi-layer AHB............................81
表格 23 表 4-11 The FPGA result of Multi-layer AHB(Dual Port RAM)....................81
表格 24 表 4-12 The FPGA synthesis result of AHB-Lite-MEMCU.........................81
第一章 绪论
总线的发展历史与现状
总线概念的提出来源于计算机系统的构架,任何一个微处理器都要与一定数
量的部件和外围设备连接,但如果将各部件和每一种外围设备都分别用一组线路
与 CPU 直接连接,那么连线将会错综复杂,甚至难以实现。为了简化硬件电路
设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围
设备连接,这组共用的连接线路被称为总线。采用总线结构便于部件和设备的扩
充,尤其制定了统一的总线标准则容易使不同设备间实现互连。
微机中总线一般有内部总线、系统总线和外部总线。内部总线是微机内部各
外围芯片与处理器之间的总线,用于芯片一级的互连;而系统总线是微机中各插
件板与系统板之间的总线,用于插件板一级的互连;外部总线则是微机和外部设
备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,
它用于设备一级的互连。
另外,从广义上说,计算机通信方式可以分为并行通信和串行通信,相应的
通信总线被称为并行总线和串行总线。并行通信速度快、实时性好,但由于占用
的口线多,不适于小型化产品;而串行通信速率虽低,但在数据通信吞吐量不是
很大的微处理电路中则显得更加简易、方便、灵活。串行通信一般可分为异步模
式和同步模式。
总线体系结构使得计算机系统具备了较高的兼容性,人们可以根据需求,以
最小的变动灵活配置自己的计算机系统,扩充计算机系统的功能,从而使计算机
厂家适应迅速变化的市场需求,效益是明显的。
相比传统行业的技术发展,总线技术发展时间不是很长,但是发展变化的速
度却是极快。以下回顾一下计算机总线的发展历程。
计算机总线起源于 20 世纪 60 年代,由于集成电路技术的发展,使计算机
系统的构成由分立的元器件向包括若干元器件的集成电路组成的功能模块过渡,
厂商在设计计算机系统时,也由原来的把系统要实现的全部功能设计在一块大电
路板上,向分成若干部分的功能模块板过渡,然后再把各个功能模块板插入计算
机的设备框架中,这些框架用许多电缆线连在一起。由于插入和拔出功能模块板
的便利性,使一些额外性能可安装在机器上。这些电缆线可以看作是最初的总线。
1981 年,IBM 的一个研究小组推出了以 8088 为 CPU 的新一代个人计算机,
为增加扩充能力也设计了总线。该总线被称为 PC 或 PC/XT 总线。由于 IBM 公
司的巨大影响力,更由于 IBM 公司对其推出的个人计算机采取的开放战略,使
个人计算机在技术上获得了巨大的成功。PC/XT 总线自然成为了 PC 机及其兼容
机的总线标准。
1984 年使用 Intel 80286 微处理器的 IBM PC/AT 计算机使用了自己的 AT
总线。AT 总线规范从未公布过,但是由于 IBM PC 机和 286 微机的影响,AT 总
线约定俗成,竟形成了事实上的标准计算机总线,即 ISA(Industrial Standard
Architecture)总线。
1987 年 IBM 公司年推出它的 PS/250 型微机时,改用了新的总线微通道结
构(Micro Channel Architecture). MCA 总线采用了不少新技术:采用总线主控技术,
从而可以控制当前数据的传输。系统总线还可通过总线仲裁机构控制多个总线主
控制器。采用了这项技术,使得总线能够进行突发传输。中断采用电平敏感信号。
可通过固件来设置硬件资源。整个系统设计特别注重抗电磁干扰。可用普通元器
件和可编程逻辑器件构成。
虽然 MCA 总线拥有技术上的先进性,但是由于 IBM 为了扩大市场份额采取
了封闭的策略,并且其与之俱来的存储周期长和与已有硬件的不兼容性使它难以
在竞争激烈的微机市场找回失去的天地,其影响力远远不如下面提到的 EISA 总
线。
1988 年 Compaq 公司联合 HP, AST, Epson, NEC, Olivetti, Tandy, Wyse,
ZDS 等 约 500 家 厂 商 , 推 出 了 与 MCA 竞 争 的 EISA (Extended Industrial
Standard Architecture)总线。EISA 总线的最大特点就是百分之百与 ISA 总线兼容,
从而使得采用 EISA 总线的微机在传统的 PC 机市场上占据了显著的有利位置。
1989 年出现了第一代的 EISA 芯片组 82350。其优点是兼容性好,可靠性高,
稳定性强;缺点是外围芯片太多。1991 年后推出了第二代 EISA 芯片组 82350DT。
其优点是集成度高,性能更强,外围电路少;缺点是其二级 Cache 必须使用 Intel
的 82485,这就限制了使用。
Intel 公司也于 1977 年推出的一种微机总线 Multi-bus。最初是为 Intel 公司
的 80/86 产品系列的使用而设计,但是由于其设计性能的先进性,以后在 280,
6800 等芯片上也用得非常的好。1980 年 Multi-bus 被 IEEE 标准化委员会推荐
为 IEEE 796 标准。这种定义线数为 86 的总线,直接寻址能力可达 1M 字节,I/O
端口寻址能力达到 64k, Multi-bus 在当时区别于其它总线的标准有二。一是提出
“主从”的概念。系统中主设备控制 Multi-bus 接口,从设备根据主设备提供的设
备地址编码和命令动作。在主从设备间交换信息时可允许不同速度的模块改用
Multi-bus。二是在多重处理系统中能够连接多达 16 个主设备共享 Multi-bus 资
源,这时它可按雏菊链优先权方式或并行方式向多主设备提供控制信号。这种总
线之所以被称为 Multi-bus,是因为在设计时实际上己提出了多总线的概念,即
系统总线、局部总线和 I/O 扩展总线 SBX, LBX。
1985 年美国 Intel 公司与 ZILOq TEKTRONIX, NCR 等 18 家公司正式推出,
并由 IEEE 于 1987 年审定作为 IEEE 一 P1296 标准的 Multi-bus II,它能支持 32
位,微处理器。Multi-bus II 的最大贡献是将网络概念引入总线技术,允许在插
件箱内用网络概念来组织多微处理器之间通过总线结构互连和通信,用类似局域
网的通信规程来保证在一个多处理器系统中各处理器模板间的有效信息的传输。
因而 Multi-bus II 被誉为首开现代总线之先河。
1992 年 5 月 VESA(视频标准协会)制订局部总线标准 VESA 局部总线(简称
VL)技术。VL 与 EISA 不同,实际上不需要有专用芯片,成本只是 EISA 的一半。
VL 是按 32 位设计的,但同样支持 16 位,也可以向 64 位扩充。因此在 CPU 方
面它支持 386SX, 386DX, 486SX, 486DX, 486DX2 和 Pentium 等 Intel 处理器。
VL 支持高速视频控制器,最大传输速率可以达到 132MB/s,满足了图形用户界
面和多媒体的需要。在提高性能的同时,VL bus 也存在着缺点,由于 VL bus 不
是很严格的标准,其工作稳定性也就因设计人员而异,这也是它的缺点之一。V L
bus 的扩展情况随所用 CPU 工作颇率而定,从而导致它的第二个缺点,兼容性
差。V L bus 的这些缺点导致了新一代标准总线 PCI 总线的兴起。
1992 年 6 月份 Intel 公司颁布了 PCI 外围部件互联局部总线 规范。并
于 1993 年 4 月颁布了 PCI 总线规范 版本。这项名为外围部件互连的总线有
严格的规范,它保证了这种总线系统具有良好的兼容性,即符合 PCI 规范的扩展
卡可插入任何 PCI 系统而可靠地工作。PCI 与 VL 相比有以下优点:①正式从 32
位升级到 64 位;②在突发方式下地址可无限地线性递增;③传输率可增大 1 倍;
④扩展性极好;⑤可允许 5V 供电向 3V 平滑过渡;⑥与 CPU 无关,与时钟频
率无关,可用于各种平台,支持多处理器和并发工作。所有这些优点使得 PCI 得
到了广泛的支持和应用,成为当前计算机主流局部总线。
1996 年 7 月 Intel 公司在 PCI 图形接口的基础上专为显示卡接口提出 AGP
标准。这是一种与 PCI 总线迥然不同的图形接口,它完全独立于 PCI 总线之外,
直接把显卡与主板控制芯片联在一起,使得 3D 图形数据省略了越过 PCI 总线的
过程,从而很好地解决了低带宽 PCI 接口造成的系统瓶颈问题。1997 年英特尔
推出了第一款支持 AGP 总线技术的 Pentium II 处理器用的芯片组,“440LX”,
1998 年英特尔制定了 版本。在 2002 年 9 月发表了支持 AGP 8x 规格的
最终版本,其向下兼容 版本。
以上的所描述的只是的总线发展在计算机领域的一个缩影。各个领域实际应
用的总线协议远不止上述几种。例如流行的 USB 及 IIC 总线等等。而且,总线也
没有停止发展的步伐,在 2001 年春节的 Intel 开发者大会上,Intel 展示将用来
替代 PCI 总线和各种不同内部芯片连接的第三代 I/O 总线技术,当时 Intel 称之
为“3GI0",意为“第三代 I/O 标准”,后更名为 PCI-express,它已被大家公认为下
一代 10 年总线标准。
IP 互连策略及片上总线系统
基于 IP 重用的设计方法学
由于消费电子和通讯技术的飞速发展,SOC 越来越成为 IC 业界广泛关注的
焦点。SOC 在一块硅片上集成了大量模块,包括处理器、微控制器、存储器、
接口电路、专用电路等,因此,SOC 意味着更大的设计规模。
在 SOC 设计中,功能组装正在逐渐代替功能设计,而成为主流的设计方法。
传统的设计方法中,无论是 HDL 还是原理图设计,重点都在于设计新的电路来
实现系统功能。但是渐渐地,IC 包含各种 IP 模块(微处理器、DSP、存储器等等),
对于这种电路,工程师关注的焦点是:应该选择哪些功能模块、功能模块如何使
用、如何进行软硬件的功能划分、如何进行模块互连、如何进行系统验证等等。
比较起来,以功能组装为基础或以设计复用为基础的方法更能适应这种关注焦点
的转移,从而满足 SOC 的设计需要。
在现实的市场上,可以立刻重复使用的 IP 模块很少,因为许多 IP 在设计之
初都是针对特定的应用,而很少考虑到要与外来电路搭配使用。IP 模块本身的缺
陷给 IP 集成带来的一系列问题有:IP 模块的接口不能够和 SOC 定义的片上总线
很好地匹配,IP 模块提供的技术文档不完善,IP 模块提供的技术支持不充分、
不及时等。这些问题的关键在于 IP 的定义没有一个通用的接口标准,这是因为
芯片实现的功能千差万别,性能方面的要求也由于应用领域的差异而不同,即使
同样功能的 IP 模块在速度、面积、功耗、对外接口等方面也表现各异。国际上,
一些大公司的解决办法是逐步定义公司内部甚至是几个公司间通用的片上总线
标准。
片上总线(on-chip bus)作为 SOC 集成系统的互连结构,可以把各个 IP 功能
模块间的相互通信问题,包括数据格式、通信联络、时序、协议等方面,从而为
设计人员免去相当大的精力去考虑如何将自己设计的功能模块和其他功能模块
连接起来,使得 IF 模块集成起来更加方便。
IP 核是集成电路知识产权模块的简称,它是经过预先设计、预先验证,具有
相对独立的功能,可以重复使用在 SOC 和复杂 ASIC 中的电路模块,在工业界,
其又常被称为 SIP。
IP 产业最初起源于 IC 生产加工线所提供的标准单元库。IC 设计公司使用单
元库中的元件模型把基于高级语言的行为级描述转换为基于电原理图的网表。在
一定意义上说,生产线提供预先设计好的“功能块”,而设计公司则是系统集成公
司,只不过在这个层次上功能块的规模仍然十分小(逻辑门),设计公司的工作量
仍然十分繁重。随着设计规模不断增长,一个合乎逻辑的发展是:增大标准功能
块的规模,以减少设计公司的重复劳动,从而使设计周期仍然保持在合理的时间
范围内。当标准功能块发展到现在的上万门规模时,一个独立于生产线之外的产
业诞生了,这就是 IP 产业。IP 产业以商品的形式为系统集成公司提供具有一定
规模的功能块设计。
目前业界普遍使用的是基于平台的 SOC 设计方法,这种方法能有效的加速
某个系列的派生产品的开发。它通常是由 SOC 核供应商提供基本的平台结构,
系统集成商从 IP 提供商处获得所需要的 IP 在已有的平台基础上重新构造自己
的设计。一般来说 SOC 平台已经包含了一些系统所需的常用 IP,如处理器核、
外围设备、存储器、存储管理单元、总线仲裁器以及互连结构等,并且提供实时
操作系统(RTOS, Real Time Operation System),整个平台同时也是一个完整的验
证环境,可以对集成新的 IP 后的系统进行快速的验证。
构建 SOC 设计平台,首先要考虑的便是如何把各功能 IP 模块集成起来,亦
即片内互连结构如何定义,具体来说也就是各功能模块间的相互通信问题,包括
数据格式、通信联络、时序、协议等方面;此外,在平台交付给用户进行随后的
开发,互连结构也决定用户是否能快速方便地加入自己专用的或第三方的 IP 模
块。对此国际上提出了许多不同的策略,但目前普遍被接受的仍是层次化片上总
线的互连结构。
几种常用的片上总线比较
目前有较大影响的 IP 核互连规范有 IBM 的 CoreConnect 总线、ARM 的
AMBA(Advanced Microcontroller Bus Architecture)、Silicore Corp 的 Wishbone、
开放核心协议国际联合(OCP-IP)的 OCP (Open Core Protocol)与虚拟插座接口
连 盟 VSIA (Virtual Socket Interface Alliance) 的 VCI ( Virtual Component
Interface)、Altera 的 Avalon 总线, 以及 PlamchIP 的 CoreFrame 、MIPS 的
ECTM Interface, Altera 的 AtlanticTM Interface、IDT 的 IPBusTM (IDT Peripheral
Bus)、Sonics 的 SiliconBackplaneTM μNetwork 等,新的互连方案如基于 PCI 的
方案也在积极发展中,下面就前面几种予以介绍。
IBM 的 CoreConnect 总线
CoreConnect 总线的逻辑结构如图 1-1 所示。CoreConnect 采用了总线分段
的方式,提供了三种基本类型总线,即处理器内部总线 PLB(Processor Local Bus)、
片上外围总线 OPB(On-Chip Peripheral Bus)和设备控制总线 DCR(Device
Control Register)。PLB 提供了一个高带宽、低延迟、高性能的处理器内部总线;
OPB 则用于连接具有不同的总线宽度及时序要求的外设和内存;DCR 用来在
CPU 通用寄存器与设备控制寄存器之间传输数据,以减少 PLB 的负荷,增加其
带宽。
表格 1 图 1-1 CoreConnect 总线的逻辑结构
ARM 的 AMBA 总线
AMBA 总线的逻辑结构如图 1-2 所示。同 CoreConnect 相似,AMBA 也采用
分段多总线体系,定义了三种不同类型的总线:AHB、ASP 和 APB。AHB 用于高
性能、高数据吞吐部件,如 CPU、DMA、DSP 之间的互连,ASP 用来作处理器
与外设之间的互连,APB 则为系统的低速外部设备提供低功耗的简易互连。系统
总线和外设总线之间的桥接器提供 AHB/ASP 部件与 APB 部件间的访问代理与
缓冲。
表格 2 图 1-2 AMBA 总线的逻辑结构
Silicore 的 Wishbone 总线
Wishbone 逻辑结构如图 1-3 所示。Wishbone 采用的是主/从的构架,主、
从部件通过内连网络进行互连。
表格 3 图 1-3 Wishbone 逻辑结构
wishbone 更着重定义 IP 核的接口信号和总线周期标准以实现 IP 核的重用,
而对主从部件互连的内连网络,它只是定义了点到点(point-to-point)、数据流
(data flow)、共享总线(shared bus)、交叉开关(crossbar switch)四种不
同形式,需由用户来灵活选择、生成、扩展,用户还可用两条 Wishbone 总线进
行复杂系统的集成。 目前 上很多共享 IP 都采用了该总线协
议。
OCP-IP 的 OCP
OCP 的 IP 核互连结构图如图 1-4 所示。OCP 是基于定义一套完整通用 IP 核
插座接口标准的互连方案,通过定义 IP 核与对应接口模块间点到点的接口信号
协议,如数据信号、边带信号和测试信号等,来实现 IP 核的可重用、即插即用、
认证及测试,及不同 IP 核接口的集成,点到点的接口方式简单且可完成数据的
高速传输。对连接各接口模块的片上内连总线形式,OCP 未作定义,由用户来扩
展。
表格 4 图 1-4 OCP 的 IP 核互连结构图
VSIA 同 OCP 相仿,也通过定义 IP 核的接口及点对点的方式来实现不同 IP
核的互连。OCP 对接口定义更为完整,并且兼容 VSIA,可以认为 VSIA 是 OCP 的
一个子集。两个 VCI 通过总线互连的逻辑结构示意如图 1-5 所示。
表格 5 图 1-5 两个 VCI 通过总线互连的逻辑结构
Altera 的 Avalon 总线
Avalon 总线是 Altera 可编程片上系统 SoPC(system-on-a-programmable
chip)IP 核互连解决方案, SoPC Builder 来完成整个系统模块(包括 Avalon)
的生成和集成。集成的系统示意图如图 1-6 所示。
表格 6 图 1-6 Avalon 总线系统结构图
其中 Avalon 总线模块完成了整个可编程系统片上部件及外设之间互连,包
括了控制、数据、地址信号及总线的仲裁。Avalon 总线模块的一个逻辑示例如图
1-7 所示。
表格 7 图 1-7 Avalon 总线模块逻辑示例图
Avalon 采用了开关结构及从部件仲裁方式提供对主部件的同时互连,外部件
与 Avalon 时钟同步操作,使用非三态总线,主、从部件间多种带宽互连,支持
数据流传输。Avalon 同时对总线信号的定时、主从部件传输的信号作了定义,以
便于不同 IP 核的集成。 Altera 大部分结构复杂的 IP 都采用该标准。
智能手机芯片设计要求与 AMBA 片上总线标准的优势
智能手机芯片设计要求
模块标准化和可复用性
对于复杂系统芯片来说,各模块并不能由一人或少数几人设计。开发和验证
一般由好几个小组共同完成,甚至不同的模块由不同的设计公司提供。还有可能
模块并不是同一时期的产物,是从过去继承或从市场上选择的(就是我们通常所
说的 IP)。多种多样的模块来源要求必须有统一的接口,以易于规范设计、即插
即用。这样的概念已经在 PC 机的主机箱里发挥到极致,如 PCI 接口。现在只不
过搬到了芯片内部,用来统一各个模块间的连接。统一的接口可以比自定义的私
有互连更容易理解,接口标准化同时也推动了模块的重复使用。
验证层次的可划分性
复杂的系统芯片不能一开始就做全系统的调试,需要按逻辑层次来划分验证
层次。通常先验证模块或子系统,然后再全系统联调。如果一个模块没有统一的
接口,而都是含义丰富的专用连线,很难保证测试的覆盖率,这些连线的测试激
励或测试结果的跟踪对于验证工程师来说将是个巨大且痛苦的挑战。
如果有一套统一的标准接口,验证工程师只需根据时间先后发出固定时序的
信号,验证效率将得到极大提高。如果这个接口标准得到广泛应用,还有许多第
三方资源可供利用,如专门的验证 IP、EDA 产品、甚至免费工程资源和使用经验
等。
现在的系统芯片动辄数百万门、上千万门,再加上存储器的面积,已经不是
普通验证平台可以胜任的。不少公司推出了大型验证平台的产品,通常由许多巨
大的 FPGA 阵列组成。在这样的平台上验证芯片,要求芯片的设计必须有简单的
可划分性。一是功能的可划分性,二是拓扑结构的可划分性。
如果模块间的互连信号太多又没有规律,功能上很难区分在不同的 FPGA 之
间,逻辑连线也使普通的 FPGA 管脚不够用。如果模块间的互联统一简洁,那么
在划分和调试的时候便很方便。
对于复杂的系统芯片而言,内部模块的连接应该尽可能地标准化。
AMBA 总线协议的优势
现 有 技 术 上 比 较 成 熟 的 片 上 总 线 标 准 其 实 数 量 不 少 , 如 OCP 、
CoreConnect、Wishbone 等,而 AMBA 由于拥有庞大的 AMBA 使用者社区和广
泛的使用比率,在众多的标准里脱颖而出。下面便主要介绍 AMBA 在各方面的优
势。
AMBA 在技术上的优势
如果从数据传送角度来看,任何功能完整的存储器接口加上适当的握手协议,
都可以满足片上总线的定义。但除了基本的数据访问功能外,AMBA 还具有许多
其他不可或缺的特性。首先,AMBA 有优秀的握手协议,由专门的仲裁模块来决
定各主设备的访问请求。这种优先级的设定是灵活而又随时可变的,这使系统总
线的调度非常有效率。其次, 以上版本都是基于单沿时钟、单向信号
线的协议。这使它非常适合于现代大规模集成电路设计自动化的要求,与 EDA
工具的耦合非常自然,容易达到更高的时钟频率。再次,AMBA 的地址和数据相
位间有流水线的关系,使存储器访问可以提前准备,使主设备间的切换不浪费额
外的时钟周期,尤其特别适合与内置流水线的处理器接口。
另外, 支持许多先进的访问方式,如连续型访问(burst)可以加
快某些快速存储器的访问速度;离线型访问(split)可以让某些慢速设备在不占
用总线的情况下,先将数据准备好,再发起相应的总线访问行为。在
中,对各种突发访问、乱序访问将有更好的支持。这些技术特点使 AMBA 可以运
行在更高的时钟频率,在相同的频率下可以提供更高的数据吞吐量。
从控制角度来看, 中定义了专门的外设总线来支持大量的慢速外
设访问和寄存器控制。其次,ARM 把很多处理器设计的经验带入了总线协议,
在协议中加入了一些控制特性,如有关取指令还是取数据、用户模式还是特权模
式、可否缓存等信息,这些信息在处理器以外的系统同样发挥重要的作用。支持
这些协议的模块可以判断数据访问的目的和权限,对于运行操作系统的设备和注
重安全性的设备非常有用。同时还可以增强数据交换的实时性,对于有通信功能
和多处理器共享需求的系统非常关键。以上种种特点,可以体现出 AMBA 协议在
功能上的优越性。
利于 SOC 的集成、验证和测试
理想的总线标准应该让遵循它的各种部件可以即插即用,这种统一性又必须
易于实现。AMBA 协议是开放的总线协议,设计者采用该协议完全是免费。同时,
市场上还有众多工具和 IP 公司提供基于 AMBA 的工具和服务,但在这个庞大的
AMBA 开发者社区里面,大家遵循的标准是严格统一的,能完全保证各个部分的
即插即用性。这是很多其他总线标准的缺陷,要么得不到第三方支持,要么多方
使用的协议类似但各有差异。正是因为 AMBA 易于实现的技术统一性造就了
AMBA 与众不同的地位。
良好的维护和发展前景
因为总线标准的选择是一项基础性的工作,一旦确定,往往以后的所有设计
工作都将基于它来进行,但同时技术的发展又是不断向前的。从工程师的角度来
看,我们不能够期望今天使用的某项技术或标准可以一成不变地使用很多年。就
片上总线标准来说,需要确定该标准和协议拥有优秀的技术维护力量,能够随着
技术的变化发展不断演进。AMBA 无疑满足了这些要求,它最先由 ARM 指定并
维护,后来随着影响的扩大,许多知名半导体公司都为其发展完善作出了巨大贡
献。
课题的意义
由于 CMOS 制造技术的快速发展,现今已经可以轻易的把数百万门的晶体
整合到单一晶片 IC(Intergrated Circuit)上。然而,虽然晶片设计密度一直随着摩
尔定律成直线发展,但是设计生产力落差却逐渐拉开。也就是说采用传统的设计
方式,我们所设计的电路无法充分的使用单颗 IC 的面积,因此造成制造成本的
浪费。在如何使晶片尺寸更小、效能增加、成本降低、缩短产品上市时间,以及
功率消耗更低的效益驱动下,SOC 的应用得到持续的发展。透过重复使用的设
计观念,将不同的供应商设计的 IP 快速、可靠地集成到 SOC 中,便成为当今一
个重要的课题。
本文对 ARM 公司的 SOC 片上总线既 AHB 总线协议作了详细的分析,包括了
总线的系统架构,挂在总线上的设备模块接口的各种控制信号以及总线各种传输
状态下的信号时序分析,在这基础上实现了 AHB 总线系统在智能手机芯片 SOC
设计当中的应用。
第二章 AMBA 总线架构分析
概述
AMBA 协定的目的是为了推出 on-chip bus 的规范,一开始的 只有
ASB 和 APB,为了节省面积,所以这时候的 bus 协定都是 tri-state 的,而到后来
的 AHB 为了更方便设计者(tri-state bus 要花更多精力去注意 timing),因此
AMBA bus 改用 multi-plexor 的架构,并增加了新的特性。一个以 AMBA 架构的
SOC 一 般 包 含 了 high-performance 的 system bus-AHB 与 low-power 的
peripheral bus -APB 。 System bus 是 负 责 连 接 如 ARM 之 类 的 embedded
processor 与 DMA controller,on-chip memory 和其他 interface,而 peripheral bus
则是用来连接系统的周边元件,其 protocol 相对 AHB 来讲较为简单,与 AHB 之
间则通过 Bridge 相连,一个典型的 AMBA 架构如图 2-1 所示。
表格 8 图 2-1 AMBA 架构图
AMBA AHB 总线协议
AHB 总线简介
AHB 总线是 AMBA 片内总线结构中的系统总线,它可以解决高性能可综合
设计的要求,并可以支持多总线处理器核、满足高带宽数据传输要求,AMBA AHB
总线具有高性能、高时钟频率系统的多种特性,包括:支持猝发(burst)传输;支
持分立(SPLIT)传输;支持单周期主设备切换;单时钟沿操作;多路复用(非三态)
实施方案;高达 1024 位的可变数据总线宽度结构。
一个典型的 AMBA AHB 系统中包含以下几个组件:
(1) AHB 主设备(master)启动读、写总线操作的芯核。在任何时候,只能有
一个总线主设备在使用总线。
(2) AHB 从设备(slave)响应(非启动)读或写总线操作的芯核。从设备信号向
AHB 主设备指明当前数据传输的状态(成功、失败,或等待)。
(3) AHB 仲栽器(仲裁器)确定访问总线的下一个总线主设备,以保证任何时
刻只有一个主设备能启动数据传输。每个 AHB 系统只能有一个仲裁器。
(4) AHB 译码器(decoder)译码每次传输的地址,提供传输中涉及的从设备的
选择信号。所有的 AHB 实现方案中需要一个集中的译码器。
AMBA AHB 系统总线可以支持多达 16 个总线主设备和任意多个总线从设备。
典型的 AHB 系统中,常见的主设备有处理器、DSP, DMA 控制器以及测试接口等;
从设备常见有外部存储器接口、APB 桥以及内部存储器等外围设备。
AHB 总线系统互连结构
AHB 系统总线协议采用的是中央多路选择器互连方案,其互连结构如图 2-2
表格 9 图 2-2 AHB 总线互连结构
所示。所有总线主设备发出它们想要执行传输的地址和控制信号,然后仲裁
器决定把哪个主设备的地址和控制信号发送到所有从设备,中央地址译码器译码
地址信息产生相应的从设备选择信号,同时控制从设备到主设备多路选择器把被
寻址从设备的读数据和响应信号发送到所有主设备。
AHB 信号描述
AHB 全局信号
HRESETn 系统总线复位信号,用于复位系统和总线,低电平有效。
HCLK 系统总线时钟。
表格 10 表 2-1 AHB 全局信号
AHB 仲裁信号
HBUSREQx 总线请求信号,总线主设备 x 发出该信号向总线仲裁器请求总
线。
HLOCKx 锁定传输信号,当该信号有效,表明主设备请求对总线进行锁
定访问,此时其它主设备只有等到该信号无效时才能被授予总
线。
HGRANTx 总线允许信号,当该信号有效,表明总线主设备为当前最高优
先级主设备。只有当 HGRANTx 和 HREADY 同时有效时,主设
备 x 才获得地址/控制总线使用权。
表格 11 表 2-2 AHB 仲裁信号
AHB 控制信号
HADDR[31:0] 系统地址总线。
HTRANS [1:0] 传输类型信号,表明当前传输的类型。
HWRITE 读/写控制信号,高电平时为写传输,低电平时为读传输。
HSIZE[3:0] 传输大小信号,表明传输的数据宽度为多大,典型值有:字节(8
位)、半字(16 位)和字(32 位)。协议允许最大可支持到 1024
位。
HBURST[2:0] 猝发类型信号,表明当前数据传输为何种猝发传输类型。
HPROT[3:0] 保护控制信号,它提供有关总线访问的附加信息,主要用于
想实现某种层次保护的模块。该信号在一般系统中可选。
表格 12 表 2-3 AHB 控制信号
传输响应(Response)信号
HREADY 传输完成信号,该信号有效时表明总线上的一个传输完成,
从设备可以通过无效该信号来插入等待状态。
HRESP[1:0] 传输响应信号,提供有关传输状态的信息(成功、错误、重试
或分立)。
表格 13 表 2-4 AHB 传输响应信号
AHB 数据总线信号
HWDATA[31:
0]
写数据总线,写操作时用来把数据从总线主设备传输到总线
从设备。其宽度可扩展到 1024 位。
HRDATA[31:0
]
读数据总线,读操作时用来把数据从总线从设备传输到总线
主设备。其宽度可扩展到 1024 位。
表格 14 表 2-5 AHB 数据总线
AHB 地址译码信号
HSELx 从设备选择信号,该信号由地址译码器对总线上地址译码产
生,用来选择相应的从设备 x.
表格 15 表 2-6 AHB 地址译码信号
AHB SPLIT 能力信号
HMASTER 主设备序号,指明当前哪个主设备正在进行传输。它与地址
/控制信号有相同时序。
HMASTLOCK 锁定序列信号,指明当前主设备正在进行锁定序列传输。该
信号与 HMASTER 信号时序相同。
HSPLITx SPLIT 完成请求信号,由总线从设备向仲裁器指明允许哪个
主设备重新进行分立(SPLIT)传输。
表格 16 表 2-7 AHB SPLIT 能力信号
AHB 基本传输
AHB 传输由两部分组成:地址段和数据段。从设备通过无效 HREADY 信号
可以延长数据段几个时钟周期,亦即插入等待状态。图 2-3 给出了一个带有两个
等侍状态的简单传输。
表格 17 图 2-3 带有等待状态的传输
在这个图中,地址段和数据段发生在不同的时钟周期,事实上,当前传输周
期地址的传输同前一个传输周期数据传输发生在同一时钟,这种地址和数据的重
叠正是 AHB 总线流水特性的基本原理,这样既考虑到了高性能操作,同时又为
总线从设备提供了足够的时间对传输做出响应。需要注意的是,当从设备插入等
待状态延展数据段的同时,也有副作用,即延展了下一个传输的地址段,如图 2-4
所示。
表格 18 图 2-4 多传输过程
AHB 传输类型
AHB 传输可分成四种不同类型,由信号 HTRANS [1:0]表示,具体定义如表
2-8 所示。图 2-5 给出的例子中包含了三种传输类型。
HTRANS[1:0
]
类型 描述
00 IDLE 表明没有数据传输。一般当某主设备获得总线所有权,
但又不进行数据传输时使用。
01 BUSY 允许主设备在猝发传输中插入空(无数据)传输周期。
10 NOSE
Q
表明该传输为猝发传输的第一个传输或单个传输。
11 SEQ 表明该传输为猝发传输中的后续传输。
表格 19 表 2-8 传输类型编码
表格 20 图 2-5 AHB 传输类型举例
第一个传输周期是一个猝发传输的开始,它是 NONSEQ 类型。主设备不能
在第二个时钟周期立即进行第二个传输,所以主设备使用一个 BUSY 传输来延迟
下一个传输。本例中主设备在开始第二个传输之前仅仅需要一个时钟周期,这能
够使用无等待状态实现。主设备立即执行第三个传输。但是这次从设备不能完成,
所以从设备使用 HREADY 信号插入一个单周期的等待。最后一个传输零等待完
成。
AHB 猝发操作
AMBA AHB 协议定义了 4, 8, 16 拍(beat)猝发以及不定常的猝发和单个传输
(single transfer) 。 协 议 支 持 递 增 式 猝 发 (incrementing burst) 和 包 绕 式 猝 发
(wrapping burst)。
递增式猝发用来访问连续的地址空间,猝发过程中每个传输的地址是前个传
输地址的递增。如 DMA 控制器,可直接用递增式猝发来填充存储器中的 Buffer,
因为它不需考虑特殊的地址边界对齐问题。
包绕式猝发这种猝发过程中,如果传输的起始地址没有按猝发长度(按字节
数计算,等于节拍数 X 传输大小)对齐,则当传输地址递增到地址边界时传输的
地址将包绕。包绕式猝发典型用在 Cache 行填充情况,主设备将首先访问它急
需的数据,然后再把 Cache 行填充所需的剩下数据取出来最终完成该猝发传输。
在 AHB 协议中猝发传输类型由信号 HBURST[2:0]指明。具体定义如表 2-9 所示。
HBURST[2:0] 类型 描述
000 SINGLE 单个传输
001 INCR 不定长度的递增式猝发
010 WRAP4 4 拍包绕式猝发
011 INCR4 4 拍递增式猝发
100 WRAP8 8 拍包绕式猝发
101 INCR8 8 拍递增式猝发
110 WRAP16 16 拍包绕式猝发
111 INCR16 16 拍递增式猝发
表格 21 表 2-9 猝发传输编码
图 2-6 显示了一个 4 拍的包绕式猝发传输。
表格 22 图 2-6 AHB 4 拍包绕式猝发传输
猝发传输一定不要穿过 1 kByte 的地址边界。无论是固定长度猝发传输还是
不定长度的猝发传间,按 1 kByte 对齐己足够的小。因为一次传输过程当中,对
从设备的地址分配最小是 1kByte,如果猝发传输超过了 1kByte 的地址边界,那
么将有可能造成数据传输发生错误。
猝发过程中每个传输都必须按传输大小(数据宽度):对齐(align)到地址边界上。
如字传输,每个传输必须对齐到字地址边界,即 HADDR[ 1:0]=00 。在一个猝发
过程中,其地址变化不能穿越 1 kByte 边界。这是因为如果 AHB 从设备在猝发
传输采样到有效 HSELx 信号,便认为在该猝发期间被选为传输对象,而在猝发
传输开始时采样到无效 HSELx 信号的从设备,只有等到下一个新猝发开始才有
可能成为传输对象。
AHB 传输响应
总线主设备发起传输后,从设备然后决定如何进行传输。被访问的从设备必
须提供表明传输状态的响应。AHB 规范中没有对主设备取消一个开始的传输没有
做出明确的规定。这主要通过 HEADY 和 HRESP 信号结合使用来完成这一响应。
前者用来延展传输;后者提供传输状态。具体传输响应倩况有以下几种方式:
(1)立即完成传输
(2)插入一个或多个等待状态后完成传输
(3)发出错误信号表明传输失败
(4)延迟传输完成,但允许主设备和从设备撤离总线,留给别的传输使用
传输响应类型
在 AHB 协议中传输响应可分为 4 种类型,由信号 HRESP[1:0]指明。具体定
义如表 2-10 所示。
HRESP[1:0
]
类型 描述
00 OKAY 表明当前传输进行正常
01 ERRO
R
表明当前传输失败
10 RETRY 表明当前传输还不能完成,需要主设备重试这个传输。
11 SPLIT 需要主设备重试传输,但要等从设备完成传输时才让主
设备获取总线
表格 23 表 2-10 传输响应类型编码
两个周期的响应
只有 OKAY 响应只需时钟周期内完成,ERROR, RETRY 和 SPLIT 响应则至少
需要两个时钟周期。从设备在倒数第二个时钟周期时驱动 HRESP 信号表示
ERROR, RETRY 或者 SPLIT,同时驱动 HREADY 至低电平将传输延伸以额外时钟
周期。对于两个周期的响应,最后一个周期时 HEADY 信号被驱动为高电平以结
束传输。图 2-7 给出了一个重试响应传输时序图。
表格 24 图 2-7 AHB 重试响应
如果从设备需要多于两个的时钟周期来提供 ERROR, RETRY 和 SPLIT 响应,
需要在该状态中间插入等待状态(即 HREADY 信号为低电平的 OKAY 响应)。
两个周期的响应是由 AHB 总线的流水特性决定的。因为,当从设备开始发
出 ERROR, RETRY 或 SPLIT 响应时,下一个传输的地址/控制信号己经传送到总
线上,而两个周期的响应巳有足够时间让总线主设备在下一个传输开始之前,通
过撤销地址/控制信号将传输类型改变为空传输。
分立(SPLIT)与重试(RETRY)比较
SPLIT 和 RETRY 响应都为总线从设备提供一种机制:当从设备不能立即为传
输提供数据时,释放总线。两者的相同点是都让那个传输最终在总线上完成。
SPLIT 和 RETRY 的区别主要体现在:当一个 SPLIT 或 RETRY 响应发生时,仲
裁器分配总线方案的不同。对于 RETRY 传输,仲裁器将继续使用正常的优先级
方案,因此只有具有更高优先级的主设备才可获取总线所有权。对于 SPLIT 传输,
仲裁器将调整优先级方案,以便让其它任何主设备获取对总线的访问,即使其优
先级更低,不过,仲裁器需要知道从设备何时可以提供数据以完成当前传输。
支持 SPLIT 传输会给从设备和仲裁器带来额外的硬件开销,但其优点也是显
然的,可以充分利用总线,在防止系统死锁(dead lock)方面也具有积极的作用。
总线主设备按相同的方式对待 SPLIT 响应,即将继续请求总线重试传输,直
到传输成功完成或发生了传输错误。
AHB 仲裁协议
AHB 总线采用仲裁机制目的是为了保证在任何时刻只有一个总线主设备可
访问系统总线。这一功能由仲裁器来完成。仲裁器通过监视多个不同主设备发出
的总线使用请求信号 HBUSREQx,按其内部设定的优先级方案来决定哪个主设备
是当前请求总线的最高优先级主设备。
请求总线访间
AHB 总线的仲裁是隐含的,一次仲裁可以在前一次总线访问期间完成,从而
仲裁不必占用 AHB 总线周期。正常情况下,仲裁器只有当一个猝发传输完毕之
后才把总线占用移交给另外一个主设备,但为防止主设备对总线访问时间过分占
用,仲裁器可根据其内部设定的 Time-out 机制提前终止猝发传输把总线授权给
请求访问总线的其它主设备。当主设备被授权使用总线并开始一个固定长度猝发
传输后,没有必要继续请求总线,仲裁器通过监视猝发传输过程和 HBURST 控
制信号可以知道当前猝发传输何时结束;对于长度不定的猝发传输,主设备应持
续有效总线请求直至它发出最后一个传输,因为仲裁器不能预知不定长猝发传输
何时终止。若主设备在进行当前猝发传输之后紧接着还要执行下一个猝发传输,
应在当前猝发传输期间重新将总线请求信号置为有效,若主设备在猝发传输过程
中失去对总线的访问,它必须重新将总线请求信号置为有效以便下次获得对总线
的访问。
授权总线访问
仲裁器通过有效适当的授权信号指明哪个主设备为当前最高优先权主设备。
但此时并不表明该主设备就获得了总线,只有等到采样 HREADY 为高电平时,
它才真正获得总线所有权,开始总线访问。同时,仲裁器也将改变 HMASTER 信
号译码出相应的主设备序号。图 2-8 给出了具有等待状态的总线授权过程。
表格 25 图 2-8 带有等待状态的总线仲裁过程
表格 26 图 2-9 地址/数据总线移交
猝发传输提前终止
正常情况下,仲裁器直到猝发传输结束才会把总线移交给新的主设备。然而,
仲裁器如果决定猝发传输必须提前终止以防止对总线访问时间过分占用,它就可
以在猝发传输完成之前把总线授权给另外一个总线主设备。
如果主设备在猝发传输过程中失去对总线的拥有,主设备必须重新仲裁总线
来完成这个猝发传输。与此同时,主设备必须调整 HBURST 和 HTRANS 信号,
没有必要再执行一个完整的 4, 8 或 16 拍的猝发传输。例如,一个主设备仅仅完
成了 8 拍猝发传输中的 3 拍,那么当它重新获得总线时它必须使用合法的猝发
传输编码方式来完成剩下的 5 拍。这里,可以使用任意的合理组合都可以使用,
因此,在 5 拍不定长的猝发传输,或 4 拍固定长度的猝发传输后紧跟 1 拍不定
长的猝发传输都是可以接受的。
锁定传输
主设备进行锁定访问时,必须有效 HLOCKx 信号向仲裁器指明当前传输为锁
定序列。仲裁器通过监视来自每个主设备的 HLOCKx 信号确保在锁定序列完成之
前总线不能授权给其它主设备。在一个锁定序列传输完毕之后,仲裁器还将让该
主设备继续保持总线进行一个附加传输以确保锁定序列的最后一个传输成功完
成。仲裁器同时也要将 HMASTLOCK 信号置为有效,它与地址和控制信号有相同
的时序,该信号向从设备表明当前传输是锁定的,只有当前锁定传输处理完毕之
后才可以处理别的遗留传输。
外设总线 APB
APB 特性
AMBA APB 总线具有如下特性:接口简单;静态特性在外围总线不使用时,
接口功耗为零;非流水特性地址和控制信号在整个数据访问期间保持有效;非时
钟接口特性通过解码选通脉冲产生时序,不必将高频率时钟广播到每个外围设备。
APB 外围总线的工作过程可由图 2-10 所示的工作状态机描述。该状态机
通过下面三个状态进行操作:
表格 27 图 2-10 APB 工作状态机
SETUP 状态传输请求(PSELx 信号)有效时进入该状态,并产生相应的地址/
读写控制信号,总线在该状态只保留一个时钟周期,即转入下一个 ENABLE 状态。
ENABLE 状态在该状态,PENABLE 信号有效,地址、读写控制和片选信号继
续保持有效,总线在该状态只保留一个时钟周期,即转入下一个状态。
APB 基本传输可分为写传输和读传输。下面以写传输为例(如图 2-11 所示),
简要地加以描述。在该时序图中,TI 周期为 IDLE 状态;T2 周期为 SETUP 状态,
APB 桥产生有效的片选、地址/读写控制和写数据信号;T3 周期为 ENABLE 状态,
APB 桥产生有效的传输脉冲选通信号,并继续保持片选、读写控制和地址信号有
效;最后在 T4 时刻完成写传输。
表格 28 图 2-11 APB 写传输
第三章 AHB 总线控制模块设计
AHB 在 AMBA 中主要是当作微处理器、直接存储器和高频率存储器以及
AHB Bridge 之间的总线连接机制。AHB 总线具有以下几个特性:一、支持 master
发出的连续资料(Burst)的传输;二、支持分离式(Split)的资料传输;三、master
在一个周期完成工作移交;四、只在时钟周期正沿触发;五、不能使用三态电路;
六、支持 64 位和 128 位的治疗传输。
AHB 总线上的元件都是同步电路,其中 master 主负责提供地址和控制信号
去启动一个读或者写操作;slave 则依照 master 发出的读写要求来进行资料的传
输,并作出如成功、失败或者资料传输中的回应信号。
Arbiter 负责在众多 master 同时发出 1 资料传输要求信号时,保证只有一个
master 可以启动传输。虽然 arbiter 的界面协议是固定的,但是仲裁的算法可以
依不同的应用而有不同的实现方法。
AHB 系统中是采用多选的形式进行互连,因此在 AHB 系统中多了一个中央
多路选择器。中央选择器根据仲裁器发出的 HMASTER 信号来确定将哪个主设备
的写数据、地址和控制信号广播给从设备,还要根据译码器的译码结果,即 HSELx,
来选择将哪个从设备的传输响应和读数据返回给主设备。
AHB 译码器不需要提供传输响应,它只用于根据地址高位给每个从设备提供
一个选择信号 HSELx。但由于的地址没有完全映射,因此需要一个默认从设备。
对于没有映射到的地址,译码器将选择默认从设备,由默认从设备提供相应的传
输响应。
此外还有一个 AHB 默认主设备,当没有主设备被授权时其将占用总线,但
它只能发出 IDLE 类型传输。
仲裁器单元
AHB 总线的仲裁比一般的总线仲裁复杂,因为它要支持对 SPLIT 响应的处理。
AHB 主设备可以在任一个周期请求总线。一般仲裁器在一次突发传送完成时才授
权另一个不同的主设备,但如果需要的话,仲裁器可以提前结束突发传送以授权
优先级更高的主设备。如果主设备需要锁定访问,则其必须激活 HLOCKx 信号来
告诉仲裁器其他的主设备不能占用总线。如果主设备在突发传送的过程中失去了
总线占有权,它必须重新激活 HBUSREQx 信号来获得总线。
仲裁器收到总线请求信号后,通过激活合适的 HGRANTx 信号来指出哪个总
线主设备是当前请求总线的优先级最高的主设备。在当前传输结束时,主设备便
开始占用总线,且仲裁器将改变 HMASTER 信号来表示总线主设备号,以便中央
多选器来选择合适的主设备发出的地址,然后广播给从设备。如果前一次传输中
插入了等待状态,则主设备对总线的占有权将被延迟。仲裁器在倒数第二个地址
被采样时改变 HGRANTx 信号。新的在突发传送的最后一个地址被采样的同时被
采样。
如果没有主设备请求总线,仲裁器将授权系统中默认的主设备。系统都必须
包括一个默认的总线主设备,它只能执行 IDLE 传输。主设备都在等待 SPLIT 传
输结束,则必须授权默认的主设备。
仲裁器
表格 29 图 3-1 AHB 仲裁器功能框图
AHB 总线支持多主设备系统。最多可连接 16 个主设备。当主设备申请访问
AHB 总线时。它首先向仲裁器发送一个 BusRequest 信号。如果有多个主设备同
时申请访问总线,仲裁器会根据各个主设备优先级的高低,将 AHB 总线的控制
权授予申请访问总线的主设备中优先级最高的一个,同时向被授权的主设备发送
一个 Grant 信号。主设备在得到仲裁器的授权后,按照 AHB 的传输协议。在随
后的两个周期内分别向 AHB 总线发送地址/控制信号和写数据。
仲裁器的优先级表可以采用固定优先级(fixed)和循环优先级(round—robin)
两种算法。本设计中的优先级表采用的是固定优先级算法。测试接口的优先级被
设为最高。以保证在任何情况下均可以进行 AMBA 总线的测试;微处理器(一般
为 ARM 核)的优先级则被设为最低:其他的主设备可以根据实际的需要设定相应
的优先级。在设计中为提高系统总线的性能,减少了微处理器请求总线时等待仲
裁器授权的时间延迟。
以下两种情况下微处理器将自动获得总线的控制权:① 系统重新启动;②
总线正常工作但没有任何主设备请求访问总线。
AHB 总线的一个突出特点就是支持 split 传输。当 AHB 总线进行 split 传输
时,仲裁器将根据优先级表和 split 寄存器的状态做出最终的优先级判断。split
寄存器是一个 16bit 的寄存器,它可以暂时屏蔽当前 split 传输的主设备的优先
级,让优先级更低的主设备可以获得总线控制权。AHB 总线还支持 locked 传输。
在 AHB 进行 locked 传输时,仲裁器必须保证当前主设备不会失去总线的控制权,
以确保当前主设备能够顺利地完成传输。仲裁器使用了一个状态机来控制 locked
传输,它包括四个工作状态:正常状态(Norma1),锁定状态(Locked),分立状态
(Split)和最后一个锁定状态(Last Locked)。
图 3-2 是仲裁器进行锁定传输的状态转换图。
表格 30 图 3-2 仲裁器进行锁定传输的状态转换图
仲裁器仲裁机制
AHB 中没有规定仲裁器的仲裁算法,它可以根据不同的应用场合,采取不同
的仲裁机制。比如采用固定优先级的仲裁(Fixed priority),循环式优先级仲裁
(Round Robin),或是随机性的仲裁(Random)和竞争仲裁优先级(Tournament)等。
这里我们的设计采取的是循环优先级的总线仲裁机制。各个 master 无优先
级高低的区别,它们会轮流得到总线的访问权,从而可以避免处在低优先级的
master 也许会被无限期锁存的缺点。这种仲裁的原理示意图如图 3-3 所示。
表格 31 图 3-3 循环优先级的总线访问
希望获得总线权的 maste:向仲裁器发出总线仲裁请求信号,经仲裁器根据
仲裁逻辑仲裁后,发出总线应答信号 HGRANT。Master 会在时钟的上升沿采样
HGRANT 信号,当采样到 HGRANT 有效,并且 HERADY 同时为高电平时,表示
该 master 获得了总线的访问权并且可以开始传输。
如果获得总线访问权的 master 不希望在传输的过程中被打断,而想要进行
连续的不可中断的传输,那么 master 在发出总线请求信号(HBUSREQ)的同时可
以发出总线锁存信号 HLOCK,即将 HLOCK 置为高电平。当 master 获得总线访
问权后仲裁器会发出相应的响应信号 HMASTLOCK,这样 arbite:就不会把总线释
放给其它的 master,直到 master 自行将 HLOCK 置为低电平取消锁存信号,仲
裁器才会在进行总线仲裁的动作,使其它的 master 可以进行总线操作。这里我
们假定固定长度的突发优先级的传输都是不可中断的。
仲裁器还可以仲裁希望能完成 SPLIT 传输的总线 slave。当仲裁器观察到
master 收到 SPLIT 响应,则会将 master 的优先权给屏蔽起来,当 master 的总
线访问权被屏蔽后,该 master 将无法再获得总线访问的权利,即使是没有其它
master 访问总线时也一样。同时,slave 需要记录 master 的信号,以便以后要
通知仲裁器恢复那个 master 的优先级。这可以从仲裁器发出的 HMASTER[3:0]
信号查得。若所有的 master 都收到 SPLIT 的响应信号,则仲裁器会把总线访问
移交给 dummy master(一种只会发出 IDLE 传输的 master).当回应 SPLIT 的
slave 处理完传输的要求后,会发出 HSPLIT[15:0]的信号给 master o 仲裁器会
在时钟的每一个上升沿采样 HSPLIT[15:0],当它收到 HSPLIT[15:0]后,会将原来
被屏蔽掉的 master 的总线优先权解封,这样 master 的优先权就会回复原来的
状态而有机会去重新获得总线访问权。
当 slave 发出 RETRY 的响应信号时,仲裁器内 master 的优先权不会发生改
变。但是当有更高优先级的 master 的发出总线请求信号时,总线的访问权会由
高优先级的 master 取得,但是如果原来得到 RETRY 响应的 master 是当时总线
请求的 master 中优先级别最高的,则总线还是继续会被占住,而无法释放给其
它有需要的 master。
AHB 仲裁器的设计
假设存在 8 个 master。包括 Default master 和 dummy 个 master 之间提供
仲裁以完成数据的传输。这里,假定 master。现仲裁器在 8 master#0 为 dummy
master, master#1 为 default master。
Dummy master 没有 BUSREQ 接到仲裁器,它被仲裁器应答总线的时机只有
两个:
.当所有的 master 都收到 slave 发出的 SPLIT 响应而不能访问总线时;
.当有 master 在进行有 locked 的传输时收到 SPLIT 传输的响应,此时
dummy master 就会应答总线,dummy master 会不断的发出 IDLE 来维持 AHB
的正常运转。
Default maste:为系统中正常的 master 有 BUSREQ 接到仲裁器,当系统中
没有一个 maste:向仲裁器发出 BUSREQ 时,此时仲裁器会把总线的拥有权交
给 default master。 Default master 通常是访问总线频率最高的 master。这里,
假定 APB 到 AHB 的桥接口电路为 default master。
仲裁器的方块图如图 3-4 所示,接口信号定义如表 3-1 所示。
表格 32 图 3-4 Arbiter 方块图
信号名 定义 方向
HCLK AHB 总线时钟信号 输入
HRESETn AHB 总线重置信号 输入
HTRANS[1:0] AHB 传 输 控 制 信 号 , 包 括 NONSEQUENTIAL ,
SEQUENTIAL,IDLE 或者 BUSY 四种类型
输入
HREADY 传输完成信号 输入
HRESP[1:0] AHB 从设备发出的传输响应信号,包括 OKAY, 输入
ERROR,RETRY 或者 SPLIT 四种响应。
HBURST[2:0] BURST 传输类型信号 输入
HSPLITx[15:0] AHB 从设备发出的信号用来表示对应的主设备需要
传输,信号中每一位对应着一个主设备。
输入
HBUSREQx AHB 主设备 x 发出的到总线仲裁器的总线请求信号 输入
HLOCKx AHB 主设备 x 发出的锁定传输信号 输入
HGRANTx AHB 总线允许信号,表示允许主设备 x 为当前最高
优先级主设备
输出
HMASTER[3:0] 表示当前被授予总线使用权的主设备号,用于 AHB
多路复用器的选择信号,也用于带 SPLIT 功能的从
设备通知仲裁器哪个主设备需要完成 SPLIT 传输
输出
HMASTLOCK 总线锁定传输信号,表示当前传输为总线锁定传输。 输出
表格 33 表 3-1 仲裁器端口信号定义
仲裁器的顶层模块 Request selector 在时钟的上升沿采样从各个 master 发
出的总线请求信号 HBUSREQx 和总线锁存信号 HLOCKx,以及其它相关信号,然
后经过仲裁器 logic 模块,根据优先级的不同算法,确定出获得总线访问权优先
级别最高的 master,保存到 reg_ hgrant 中。reg_ hgrant 信号再经过应答模块,
一方面将总线应答信号 HGRANTx 信号作为最后的输出信号输出到端口,另一方
面该信号同时经过应答编译模块,根据一定的时序和逻辑,计算出当前正在传输
的 master 的设备号 HMASTER 信号和 master 锁存信号。
仲裁器的设计同时考虑到 SPLIT 传输。当仲裁器观察到 master 收到 SPLIT
响应,则会将 master 的优先权给屏蔽起来,当 master 的总线访问权被屏蔽后,
该 master 将无法再获得总线访问的权利,即使是没有其它 master 访问总线时
也一样。因此,这里我们可以定义一个中间信号 N Valid 表示 master 的有效信
号。
当 master 收到 SPLIT 响应时,该 master 的总线请求信号无效(NValid= 0 ),
仲裁器仲裁时不考虑该 master 发出的总线请求信号,直到被 SPLIT 的 master 得
到响应可以再次传输时,该 master 的有效信号才有效(NValid= 1 )。如果所有的
master 的没有收到 SPLIT 响应,则所有 maste:发出的总线请求信号都是有效的。
这一逻辑可以通过 NValid 信号和 HBUSREQx 相与实现。
图 3-5 给出了仲裁器的算法流程,Arbiter 首先判断总线当中主设备 master
的数量,这时候,系统将总线占有权授权给一个默认的主设备;知道主设备数量
后,Arbiter 将选择仲裁机制(通过 Arbiter 的参数配置决定是采用循环机制还是
固定优先级机制);然后按照仲裁机制对申请总线的 master 进行优先级排列;而
后对获得优先级的主设备进行编码并授权。
表格 34 图 3-5 仲裁算法流程
图 3-6 给出了正常仲裁过程的仿真时序。可以看到 2 主设备发出请求后第二
个时钟周期获得了总线使用权。
表格 35 图 3-6 正常仲裁过程仿真
AHB 总线地址解码器设计
译码器的作用是对传输地址进行译码,根据内存映射表(Memory Map)产生
该地址所对应从设备的选择信号。在本设计中使用了两种内存映射表:正常工作
下的内存映射表和重新启动时的内存映射表。其地址内存映射关系如表 3-2 所示。
地址 正常工作的内存映射 重启时的内存映射
0xc00000000-0xffffffff 未定义 未定义
0x800000000-0xBfffffff AHB/APB 桥 AHB/APB 桥
0x300000000-0x7fffffff 外部 ROM 外部 ROM
0xc00000400-0x2fffffff 外部 RAM 外部 RAM
0xc00000000-0x000003FF 内部 RAM FLASH
表格 36 表 3-2 地址内存映射关系
在正常工作时,微处理器的从设备包括内部 RAM、外部 RAM、外部 ROM
和 AHB/APB 桥;当系统重新启动时,系统的内存映射不包括内部 RAM,而是
将 0x0000—0000 至 0x0000—03FF 的内存地址段映射为 flash。这个部分包含
系统的启动和初始化代码。当系统启动完成初始化后,AMBA 总线将产生一个
Remap 信号,送人译码器,将译码器的当前内存映射表改为正常工作状态下的
内存映射表。译码器的内存映射表具有相对的独立性。如果 AHB 总线上的从设
备发生了变化,必须对内存映射表进行修改以确保每个地址都对应正确的从设备。
如果传输地址指向了没有定义的内存区域,缺省从设备将被选中,并做出相应的
响应。
表格 37 图 3-7 地址解码算法流程
图 3-7 为解码器的算法流程,它主要是对 master 发送过来的的内部存储寄
存器地址空间和 I/O 寄存器空间分别进行判断是否存在,后产生选择信号,对选
中的 slave 单元进行二进制编码并转换为整数,之后再对编址区域进行判断,Yes
则置 1,No 则置 0。
多路选择器设计
AHB 总线采用的是中心多路选择器的设计方案,如图 3-8 所示。AHB 使用
了两种多路选择器:主设备到从设备多路选择器(M2SMux)和从设备到主设备多
路选择器(S2MMux)。仲裁器通过 M2SMux 选择唯一的一个主设备访问 AHB 总
线;译码器通过 S2MMux 选择唯一的一个从设备访问 AHB 总线。因为 AHB 总线
具有流水线特性,地址/控制信号和数据信号总是相差一个时钟周期,所以 AHB
总线上使用两个 M2SMux。分别用于地址,控制信号和数据信号。
表格 38 图 3-8 中心多路选择器
AHB 控制器的设计
根据 标准,AHB 控制器由 AHB 仲裁器,总线多路复用器和从解
码器组成,如图 3-9 所示,控制器最多支持 16 个 AHB 主总线和从总线。
包里的常数 NAHBSLV 和 NAHBMST 定义了最大数目的主总线和从
总线,同时也可以通过属性 nahbm 和 nahbs 设置。
表格 39 图 3-9 AHB 控制器结构图
控制器结构与接口信号
AHB 控制器的接口简单示意图如图 3-10,输入信号有 rst、clk、slvo、
msto;输出信号有 slvi、msti。具体信号结构将在后文细叙。
表格 40 图 3-10 AHB 控制器接口示意图
AHB arbiter:总线仲裁器确保某一时刻只允许一个总线主设备进行数据传
送。仲裁器在时钟的上升沿对请求进行采样,然后使用一个内部的优先级算法来
确定哪个主设备获得下一次总线使用权。
AHB decoder:AHB 译码器是用来对每个传送地址进行译码并为从设备提供
一个选择信号 HSEL。从设备必须是在 HREADY 为高时才对地址信号、控制信号
以及 HSEL 进行采样。
一个 AHB 传送包括两个部分:地址阶段,这一阶段仅仅保持一个周期;数
据阶段,这一阶段可以保持一个或者多个周期。在一个转换中,当前 AHB 传送
的地址阶段就是前一次 AHB 传送的数据阶段,也就是 AHB 总线传送是流水方式
的。对于写操作,总线主设备在整个扩展的周期中保持数据稳定,对于读传送,
从设备不需要一定提供有效数据直到传送即将完成。
LEON3 中规定,在固定优先级策略下(rrobin=0),总线请求优先级等于主
设备总线索引(bus index),index0 的优先级最低,索引值越大的设备其优先级
越高。如果没有主设备请求总线,那么就将总线控制权给默认主设备。在循环优
先级,在每一次 AHB 传送以后,优先权循环一步。如果没有主设备请求总线,
最近获得总线的主设备取得总线控制权。
表格 41 图 3-11 AHB 信号示意图
图 3-11 为用 modelsim 仿真时用到的 AHB 输入输出信号组成结构图。
控制器算法实现
AHB 总线控制器的总体算法流程如下图所示:
表格 42 图 3-12 AHB 总线控制器的总体算法流程图
AHB split 传输判别算法如下图 3-13:
表格 43 图 3-13 split 传输实现算法
主从接口信息地址(即插即用信息)
AHB 总线协议要求控制器的设计支持即插即用功能,这些即插即用信息都包
含在驱动总线的记录里,这些记录由一个与 AHB 控制器单元连接的数列组成。
即插即用信息映射在一个由属性 cfgaddr 和 cfgmask 定义的只读地址区域内,
这个区域默认映射在 0xFFFFF000 - 0xFFFFFFFF 的地址段内。主接口信息保存在
地址块(0xFFFFF000 - 0xFFFFF800)的第一个 2K 字节内,而从接口信息放置在第
二个 2K 字节内。每个单元占用 32 个字节,意味着那个区域放置了 64 个主接
口和 64 个从接口信息。一个普通单元的即插即用信息的地址通过它的总线索引
定义,对于主接口的地址是 0xFFFFF000 + n*32,而从接口的地址是 0xFFFFF800
+ n*32。
表格 44 图 3-14 AHB 即插即用信息记录
控制器接口硬件实现:
顶层例化示例:(ahb0 为控制模块例化,后面分别例化了一个 master,一个 slave)
AHB 传输通过 AHB 控制器设计的实现
AHB 读写传输分析
在 AHB 总线上,一笔完整的传输可以分成两个阶段: 地址与控制信号传
输阶段与数据传输阶段。地址与控制信号传输阶段传送的是地址与控制信号,而
数据传输阶段则是 write/read 数据与回应信号。下图说明了 AHB 上的基本传输
阶段。
表格 45 图 3-15 读/写模块基本传输
传输在数据 周期 时若无法在 1 个时钟周期内完成,slave 可用 HREADY 信
号去延长传输。当 HREADY 为低时,表示传输尚未结束,为高时,则代表目前
的传输结束了,但结束时的 status 则需看 Slave 响应的 HRESP 信号(可能是
OKAY, ERROR 等)。
表格 46 图 3-16 SLAVE 未准备好时的传输时序
由于一笔传输需要两周期才能完成,为了增进总线 的性能,AHB 将 multiple
传输给 pipeline 起来,传输间的地址周期和数据周期是重叠在一起的,请见下
图。从图中我们可以看到由于现在目前传输的数据周期与下一笔传输的地址周期
是重叠的,所以当目前传输的数据周期被延长时,地址周期也得跟着延长。
表格 47 图 3-17 重叠的地址周期和数据周期
AHB 上共有四种传输类型:IDLE、BUSY、NONSEQ、SEQ。
IDLE:指示 slave 需忽略目前的传输。用于当 master 没有数据需要传送时,
而此时 slave 需在传输的数据周期回应 OKAY。
BUSY:在 burst 传输时,master 传送连续的传输给 slave,若 master 因某
些原因无法及时将数据准备好,则发出使用 HTRAN 通知 slave,slave 的回应应
该与回应 IDLE 传输时相同,也就是 OKAY。
NONSEQ (Non-sequential):指示目前传输的地址和控制信号与上一笔传输
无关。
SEQ (Sequential):指示地址和上一笔传输相关,而控制信号则和上一笔传
输相同,通常用在 burst 传输中。
下图为 HTRANS 的例子。从时序图里我们可以看出:第一笔 burst 传输的类
型一定为 NONSEQ,另外因为 master 无法把下一笔数据在第二个 cycle 准备好,
因此使用 BUSY 类型去延迟第二笔传输。
表格 48 图 3-18 master 未准备好时的时序图
Burst 类型是用来让 AHB master 发出地址彼此相关的连续传输(控制信号需
相同)。
AHB 支持八种的 burst 类型,用来指示 burst 的长度(传输的个数,在 AHB
标准中使用 beat 这个英文字),与地址间的关系。其中 incrementing 的 burst,每
一笔的传输地址必定是前一笔传输的地址加上传输 size。而 wrapping burst 则将
memory 切割成了(传输 size X 传输 beat)大小的一个个 memory boundary,当传
输地址要跨越 boundary 时,下一笔传输地址会绕回 boundary 起点。举例来说,
要传送 4 笔 wrapping burst,传输 size 为 word(4 byte),第一笔传输的地址为
0x34,此时(4 byte x 4 传输)则传输会在 16-byte boundary 绕回,所以 4 笔传输
的地址分别是 0x34、0x38、0x3C、0x30。
下面列出 AHB 支持的八种传输类型。设计用的是 INCR 类型。
HBURST[2:0] 类型 描述
000 SINGLE 单个传输
001 INCR 不定长度的递增式猝发
010 WRAP4 4 拍包绕式猝发
011 INCR4 4 拍递增式猝发
100 WRAP8 8 拍包绕式猝发
101 INCR8 8 拍递增式猝发
110 WRAP16 16 拍包绕式猝发
111 INCR16 16 拍递增式猝发
表格 49 表 3-3 8 种传输类型
在下图中,因为是 INCR 类型,所以地址 0x3C 之后会跨过 16-byte boundary,
直接到 0x40。
表格 50 图 3-19 INCR4 传输类型的时序图
下图显示了不定长度递增式猝发传输的仿真时序图。
表格 51 图 3-20 INCR 传输仿真时序图
当 HWRITE 为高,则 master 会在数据周期时将资料放在 write 数据总线 HW
数据[31:0],让 slave 去 sample 资料。当 HWRITE 为低时,slave 会在数据周期
将资料放在 read 数据总线 HR 数据[31:0],让 master 去读取数据。
在 AHB 协议中,slave 除了可以使用 HREADY 信号去延长传输(插入几个
wait 时钟周期)外,在传输结束时(HREADY 在数据周期为高),Slave 还可以使用
HRESP[1:0]去告诉 master 传输结束时的 status。在 AHB 里传输结束时可以表示
的 status 共有四种:OKAY、ERROR、RETRY、SPLIT。
四个 status 中,OKAY 表示传输成功的完成了,ERROR 表示传输失败了,
失败的可能原因譬如说企图写入 read-only 的 memory location,或读写根本不存
在的 memory location 等。而 RETRY 和 SPLIT 则是用在当 slave 判断目前的传输
将需要很多的总线时钟周期来完成,为了避免因为目前的传输将总线一直锁住,
而响应 RETRY/SPLIT 回应给 master,表示目前的传输尚未完成,master 需要重
新发出相同的传输再试一笔,而此时仲裁器就能将总线释放给其他有需要的
master 使用。至于 Retry 和 Split 的差别在于仲裁器的 master 优先权管理。
RETREY 回应:仲裁器内 master 的优先权不变,当有更高优先权的 master
发出申请时,总线访问的权力会由高优先权的 master 取得,但如果原来得到
RETRY 回应的 master 是当时申请总线的 master 中拥有最高优先权者,则总线
还是会继续被占住而无法释放给其他有需要的 master。
除了 OKAY 回应只需 one–cycle 之外,其余的三个回应都需要 two-cycle 去
完成。在这两个时钟周期中 HRESP 维持想要回应的 status 不变 (ERROR or
RETRY or SPLIT),而 HREADY 则在第一个时钟周期为低,第二个时钟周期为高。
之所以需要两个时钟周期,这是因为 AHB 为 pipeline operation,current 传输的
数据 周期与 next 传输的地址周期是重叠。而这三回应都可能因为目前的传输并
未成功而影响了下一笔传输的存取,使的 master 需要 cancel 预备要进行的下一
笔传输,在 AHB 的规定里,因为 Retry/SPLIT 是代表目前传输尚在处理,所以下
一笔传输必须一定要取消,而 ERROR 回应表示传输 failed,在某些情况下,
master 仍然会尝试下一笔传输,因此当 master 收到 ERROR 回应时,继续存取
下一笔传输是允许的,不过 ERROR 回应此时还是需要花 two-cycle。
表格 52 图 3-21 RETRY 响应的时序图
从上图当中我们可以看到 master 原本预备进行地址 A/A+4 的两个传输,可
是在传输 A 的数据周期(同时也是 A+4 传输的地址周期)的第一个时钟周期,
master 侦测到 retry 的回应,由于这个时钟周期的 HREADY 为低,不仅将数据周
期给延长,同时也表示地址 A+4 的传输并没有开始,所以 master 才有机会在下
个时钟周期将地址 A+4 的传输给替换成 IDLE 传输。如果 RETRY 回应只有
one-cycle,则传输 A 收到 retry 的同时,传输 A+4 也开始进行了,而它很有可能
也收到 RETRY 回应(因为 slave 还在处理传输 A),如此下去,以后的传输可能都
无法完成了。
在 RETRY 回应的第二个时钟周期里,我们看到 master 改成发出 IDLE 传输,
这其实是为了让仲裁器能顺利的完成 arbitration. 在 slave 决定要响应何种回应
给 master 前,slave 可能会需要多几个 wait 时钟周期去衡量,此时的 wait 时钟
周期除了将 HREADY 给 drive 低之外,还需要将 HRESP 给 drive 成 OKAY 回应。
下图 3-22 显示出负责响应传输 A 的 slave 在响应 ERROR 回应之前还多延长
一个时钟周期,而此时的回应 OKAY。
表格 53 图 3-22 ERROR 响应的时序图
AHB 传输信号划分
AHB 传输信号大致可划分为 7 类:(1)clock,(2)arbitration 仲裁信号,
(3)address,(4)control,(5)write data,(6)read data,(7)response,如图 3-23,列
出了设计当中所有的 AHB 信号设计:
表格 54 图 3-23 AHB 总线信号划分
传输信号的通路的实现
AHB 总线的 7 类传输信号在 master 和 slave 之间通过 AHB controller 模块
进行传输的通路设计如下图 3-24 及 3-25 所示:
表格 55 图 3-24 AHB 信号通路(1)
表格 56 图 3-25 AHB 信号通路(2)
如图所示,第 2、3、4、5 类信号由 master 发出,通过 master_to_slave
multiplexor,传送至 slave;而 6、7 类信号由 slave 发出,经 slave_to_master
multiplexor 传送至 master。其传送路径的具体决定则由 Arbitor 和 Decorder 控制
实现。
AHB 传输实现的仿真结果
Debug 打印输出
如果 Debug 属性被设为 2,则所有隶属于 AHB 单元的即插即用信息在开始
模拟的时候都在 console 口上被打印输出,输出的报告通过扫描主接口上的数列
0 到 NAHBMST - 1(在 包内定义)开始打印。它检查数列每项是否是
一个有效地厂商 id(所有非零 id 都是认为有效),如果找到一个则还需搜寻设
备 id。这些 id 描叙都可以从 包获得,同时与主设备数字一起按
标准格式打印输出。如果索引检查功能使能(通过 VHDL 属性设置),则报告模
块也会检查记录里返回的 hindex 数字与当前检查记录里的数列数字(数列索引)
是否匹配,如果它们不匹配则放弃继续模拟并打印出一个错误消息。这个过程在
从接口上通过搜索从接口数列也是重复进行,它扫描的是变量 0 到 NAHBSLV –
1,与主接口同样的信息将被打印,并且也需要做与主接口类似的检查。此外,
地址范围和存储器类型也被检查并打印,地址信息包括类型、地址、掩码、可缓
冲和预取,从这些信息报告模块可以计算设备的开始地址和范围大小。这些信息
最后被打印的包括类型、开始地址、大小、可缓冲属性和预取属性,地址范围现
在定义的是 AHB 存储器、AHB I/O 和 APB I/O 的地址,APB I/O 地址范围被忽略。
下图为用 modelsim 仿真器运行后看到的 AMBA 相关元件信息。
仿真波形分析
表格 57 图 3-26 AHB 传输阶段仿真图
Init:初始化
step1:master0(cpu)发出第一个 transfer 的 address phase(读取地址
0x00000000 数据)(取指令)
step2:master0(cpu)发出此 transfer 的 data phase;slave0(srctrl)发出
hready 信号(LOW)
step3:slave0(srctrl)发出此 transfer 的 data phase(hrdata 为 81D82000)
step4:slave0(srctrl)发出此 transfer 已完成的 hready 信号(HIGH)
step5:master0(cpu)发出第二個 transfer 的 address phase
AHB 其他 IP 设计简述
AHBtrace 设计
AHB trace buffer 是跟踪调试缓冲模块,用于获取跟踪调试的时候设备状态
信息。包括一个循环 buffer 用来存储 AHB 数据传输。地址、数据和各种 AHB 控
制信号都能被保存并在后面的分析过程中读出来。
表格 58 图 3-27 AHB trace 模块图
Trace buffer 一共 128 位,除了 AHB 信号之外,一个 32 位的计数器也被放
在 buffer 中用来做为时间标志。
表格 59 图 3-28 AHBtrace 模块接口信号
Trace buffer 通过对 trace 控制寄存器中的 enable bit(EN)进行设置来确
定是否使能。在 Trace buffer 使能时,AHB 传送的信息以循环的方式存储在 buffer
中。写入的下一次传送地址保存在 trace buffer 索引寄存器中,然后在每一次传
送完成之后自动增加。当将 EN 位复位或者命中一个 AHB 断点时,trace 会停止
操作。当有断点命中时,会产生一个中断。
Trace buffer 在 AHB I/O 空间里占用了 128K 的地址空间,地址空间编码如
下所示:
地址 寄存器
0x000000 Trace buffer 控制寄存
器
0x000004 Trace buffer 索引寄存
器
0x000008 时间标识寄存器
0x000010 AHB 中断地址 1
0x000014 AHB 中断地址 1 的掩
码寄存器
0x000018 AHB 中断地址 2
0x00001C AHB 中断地址 2 的掩
码寄存器
0x010000-0x0200
00
Trace buffer
…0 Trace bits 127-96
…4 Trace bits 95-64
…8 Trace bits 63-32
…C Trace bits 31-0
AHBUART------Serial debug interface for AHB
AHBUART 由一个连接 AHB 总线的 UART 作为主用接口(图 3-29),一个简单
的通讯协议支持传输访问参数和数据,通过通讯连接,一个读或写传输都可以在
AHB 总线上产生对任一个地址的访问。
表格 60 图 3-29 AHB UART 结构图
传送协议
AHB UART 支持由命令构成的简单协议,命令由控制字节,32 位地址和一
个和可选的写数据组成。写操作不会返回任何响应,而读访问仅仅返回读数据,
数据发送以 8 位为基础,如下所示:
表格 61 图 3-30 AHB UART 数据帧
表格 62 图 3-31 AHB UART 命令字
块传输可以通过设置长度域为 n-1 来执行,n 代表传输的字的个数。对于写
访问,控制字节和地址只发送一次,随后为写的数据的字数目,在每次数据字传
输完后地址会自动增 1。 对于读访问,控制字节和地址仅发送一次,相对应数
目的数据字返回。UART 接收器实现了与 GR APB UART 相同的故障过滤。
波特率速率产生
AHB UART 包含了一个 18 位的递减计数器产生所需要的波特率,计数器的
时钟与系统时钟相同,每当计数器下溢时即产生一个 UART 记号,在每次下溢后
计数器从计数器重载寄存器重新载入数值。UART 产生记号的频率应该是所需要
波特率的 8 倍,如果没有被软件编程,波特率将被自动发现,这个过程通过寻找
接收数据的两个最短下降沿的周期(相对应两个位的周期)来实现。当三个相同
的两位周期被发现时,相对应的计数器的值被锁存到重载寄存器,同时 UART 控
制寄存器的 BL 位被置上。如果 BL 位被软件复位,则波特率发现过程将被重启,
当一个“中断”或帧错误被接收器探测到时波特率发现过程也可以被重启,允许改
变波特率的来源为外部发送器。为了正确探测波特率,在重启或发送中断信号后
值 0x55 应该被发送到接收器,为了手动编程波特率最合适的计数器的值可以按
下列公式计算:
scaler = (((system_clk*10)/(baudrate*8))-5)/10。
APBUART –支持 APB 接口的 UART
APBBUART 简介
APBUART 用来进行串行通讯,支持数据帧包括 8 位数据位,一位可选奇偶
效验位和一个停止位,为了产生位速率每个 UART 都有一个 12 位可编程时钟分
割器。通过 RTSN/CTSN 握手信号支持硬件流控,在总线和 UART 之间使用两个
可配置 FIFO 进行数据传输,图 3-32 给出了一个 APB UART 结构图。
表格 63 图 3-32 APB UART 结构图
发送器操作
发送器通过控制器存器内的 TE 位使能,被传输的数据通过写入到数据寄存
器保存在 FIFO 内,这个 FIFO 可以被配置为不同的大小。当大小为 1 时,仅单个
保持寄存器被使用,但是在以下讨论中所有的都将被指定为 FIFO。当准备开始
传输发送数据时,数据从发送器 FIFO 传输到发送器移位寄存器并在发送器串行
输出引脚(TXD)转化为一个串行数据流。数据流自动发送一个开始位,随后是 8
位数据位,一个可选奇偶效验位和一个停止位(图 3-33)。数据帧最小位首先
发送,随后发送停止位,如果
表格 64 图 3-33 UART 数据帧
一个字符在发送器 FIFO 内不可用,则发送器串行数据输出保持高电平并且
UART 状态寄存器内的移位寄存器空位(TS 位)将会被置上。当一个新的字符被
载入到发送器 FIFO 后传输继续并且 TS 位清空,当 FIFO 空且状态寄存器内的 TE
位置上。如果发送器关闭,它将立刻停止任何活跃传输过程包括正在发送器移位
寄存器内即将被移送出去的字符。当发送器关闭或者 FIFO(或保持寄存器)满
时发送器保持寄存器将不可以被重载,如果被重载,则数据将被覆盖同时一个或
多个数据帧丢失。
以上讨论可以应用到任何 FIFO 配置,包括保持寄存器(fifosize=1)这种特
例,如果 FIFO 使用一些辅助状态(fifosize > 1)同时控制位可用,TF 状态位(不
要与 TF 控制位混淆)被置上当发送器 FIFO 正处于满状态且只要 FIFO 少于半满
状态(FIFO 保持数据的项少于一半)就将 TH 位置上。TF 控制位被置上时使能
FIFO 中断功能,状态寄存器也包括一个计数器(TCNT)显示当前 FIFO 内的数据项
数。
如果流控使能,CSTN 输入必须为低电平以便字符可以被发送,如果在传输
过程中输入降低,移位寄存器内的字符将被发送同时发送器串行输出口仍然保持
非活跃状态直到 CSTN 再次升高。如果 CSTN 被连接到一个接收器的 RTSN,过载
可以被有效的禁止。
接收器操作
接收器通过 UART 控制寄存器内的接收器使能位(RE 位)进行使能控制,
接收器在串行数据输入引脚搜寻从高电平到低电平的跳变阶段,如果被探测到,
则半个时钟位以后抽样串行输入引脚的状态。如果串行输入引脚被抽样到高电平
则开始位是无效的,将继续搜寻一个有效的开始位。如果串行输入引脚仍然保持
低电平,假设一个有效的开始位,接收器继续以一位的时间间隔(理论上是在一
位时间的中间)抽样串行输入引脚,直到正确数目的数据位和奇偶位被装配起来
同时一个停止位被探测到。在考虑新的数据以前,串行输入通过一个所有位都是
同一个值的 8 位移位寄存器进行移位传输,有效的借助定点于 1/8 的系统时针
频率形成了一个低通滤波器。
接收器也有一个与发送器类似的可配置的 FIFO,与发送器部分提到的一样,
所有的保持寄存器和 FIFO 都被认为属于 FIFO。
在接收过程中,最小位被最先接受,数据被传输到接收器的 FIFO 同时只要
FIFO 保持了至少一个数据帧则 UART 状态寄存器内的数据准备位(DR 位)将会
被置上。在接收器准备位被置上的同时,奇偶效验位,成帧和过载错误位都在接
收的字节边界部分被置上。如果一个错误被探测到则数据帧将不会保存在 FIFO
内,在它们被保存到状态寄存器以前同时一个新的错误状态位也会重载旧的值,
因此,它们不会被清空直到从 APB 总线给出写零的信号。如果接收器 FIFO 和移
位寄存器都满时,当一个新的开始位被检测到则接收器移位寄存器内保持的字符
将会丢失同时 UART 状态寄存器内的过载位将被置上。如果流控使能,则当一个
有效的开始位被检测到且接收器 FIFO 满时,RTSN 位将被取消,当保持寄存器在
读操作时,RTSN 将自动再次降为低电平。
当 fifosize > 1 时,也即意味着保持寄存器在此时并没有被考虑,一些附加状
态和控制位是可用的。当接收器 FIFO 满时 RF 状态位(不要与 RF 控制位混淆)
被置上,当接收器 FIFO 处于半满状态(至少一半的 FIFO 项保持有数据帧)时 RH
状态位被置上,RF 控制位被置上时使能接收器 FIFO 中断功能,RCNT 域也是可
用来显示当前 FIFO 内数据帧的数目。
波特率产生
每个 UART 都有一个 12 位递减计数器用来产生所需要的波特率,计数器被
系统时钟驱动并且每次下溢时产生一个 UART 记号,在每次下溢后都会从 UART
计数器重载寄存器内重载入计数值。产生 UART 记号的频率应该 8 倍于所期望的
波特率,如果 EC 位被置上,计数器将被 的输入值进行时钟驱动
而不是被系统时钟,在这种情况下, 的频率必须少于系统时钟频
率的一半。
Loop back 模式:如果 UART 控制寄存器的 LB 位被置上,UART 将处于 loop
back 模式,在这种模式下,发送器的输出被内部连接到接收器的输入,同时 RTSN
被连接到 CSTN,因此可以执行 loop back 测试验证接收器,发送器和相关的软
件路由。在这种模式下,为了避免发送数据输出仍然保持非活跃状态。
中断产生
当保持寄存器被使用(fifosize = 1)或 FIFO 被使用(fifosize > 1)时中断产生的
方式是不同的。当保持寄存器被使用时,在以下情况中 UART 将会产生一个中断:
当发送器使能时,发送器中断使能同时保持寄存器从满到空状态;当接收器使能
时,接收器中断产生同时保持寄存器从空状态到满状态;当接收器使能,接收器
中断产生同时要么一个奇偶效验错误,要么成帧或过载错误被接收到。
对于 FIFO 两种不同中断是可用的:正常中断和 FIFO 中断,对于发送器,正
常中断在发送器中断使能(TI)时产生,发送器使能且 FIFO 从保持数据状态到
空状态。FIFO 中断当 FIFO 中断使能(TF)时产生,传输操作使能(TE),同时 UART
少于半满状态(意味着 TH 状态位置上)。这是属于一个水平中断同时只要条件
满足中断信号连续保持为高电平,接收器中断工作方式与之相同,此外正常中断
对于保持寄存器也是以同样的方式产生。FIFO 中断当接收器 FIFO 中断使能时产
生,此时接收器是使能的同时 FIFO 是处于半满状态,中断信号连续保持高电平
只要接收器 FIFO 是半满的(至少一半的项保持有数据帧)。
APB uart 的代码描述
第四章 AHBBRIDGE 设计与应用
总论
随着微控制器产品面临越来越多的需求尤其是 Ethernet,USB,CAN 等应用在
诸多行业大行其道的趋势下,只有一条 AHB 内部总线根本难以支持种类繁多的
功能。就我实习所在公司设计的手机 SOC 产品而言,光处理器就需要 3 个,一
条 AHB 总线远远无法达到要求,这就要求我们采用扩展的 AMBA 总线系统结构
来满足支持多功能手机 SOC 芯片设计的要求。扩展 AMBA 总线设计最常用的方
法就是通过 Bridge 把多条总线连接起来(如图 4-1),下面我将就 AHB2APB
bridge 和 AHB2AHB bridge 的设计做详细的介绍。
表格 65 图 4-1:包含 AHB/AHB 总线的 LEON3 系统
AHB2APB bridge 设计
AHB2APB 桥模块是 AHB 高速总线上的从模块,也是 APB 外围总线唯一的主
设备,它提供了高速总线到低速低功耗的 APB 总线的接口。主要功能是完成 AHB
传输协议向 APB 传输协议的转换。
AHB2APB 总线桥设计方案
首先明确设计目的。AHB 总线为高性能和高时钟系统而设计。类似 Backbon
总线,AHB 总线包括了对处理器、片内储存器、片外储存器和低功耗外设的接口。
支持固定长/不定长/猝发(burst)传送、分立(split)传输特性和多个主设备的总线
管理。AHB 总线传输为地址/数据分离的二级流水线操作,通过从设备驱动的
HRESP 和 HREADY 应答信号控制数据操作的等待周期长度。APB 是专为降低功
耗以及接口复杂性而设计的总线,它常被用于连接一些低带宽、低速传输的外设。
APB 总线操作包括 SETUP 和 ENABLE 两个状态。其中 APB 读操作只需在
ENABLE 状态数据有效,写操作要求写数据在整个写操作期间保持有效。我们的
目标是要设计一个 APB 总线一侧作为主设备,AHB 总线一侧作为从设备的总线
桥,既 APB/AHB 总线桥。
对于两种不同的总线协议,我们不仅要在时序上将进行匹配,也需要尽可能
在功能上满足两侧协议的要求。从前面的分析可以看出,APB 总线协议从功能上
比 AHB 总线协议简单,根据管理学上的木桶理论:一只木桶的水容量,不是取决
于那块最长的木板,而是取决于那块最短的木板。也就是说,要使木桶能装更多
的水,必须设法使所有的木板都一样长。而作为主设备的 APB 总线一侧无疑属
于这个木桶上的短板,所以我们不必要完成 AHB 总线一侧的所有功能,只需要
它能和 AHB 总线一侧的从设备进行通讯,满足 APB 一侧所需要的功能既可。对
于 AHB 总线的多种猝发传输方式,由于 AHB 总线使用地址/数据分离的操作方
式,而 APB 总线又无猝发传输的要求。所以在设计中不需要实现猝发功能,实
际上在 AHB 总线一侧我们选取了单字传输方式。
对于两侧协议中功能相同、时序上无差别的信号,可以采取直接连接的方法;
对于两侧协议中功能上有对应关系、时序上无差别的信号,可以采取组合逻辑电
路转换的方法;对于两侧协议中功能上有对应关系而时序上又有一定差别的信号,
可以采用状态机的方法进行信号与时序的对应转换;对于两侧协议中无法对应的
信号,根据实际情况处理,如可采用悬空或拉高等方法。
同频或倍频
AHB 总线时钟和 APB 总线时钟的关系究竟应该取同频还是倍频,在
规范中并没有明确的定义。同频的好处在于简单,总线桥模块的面积
较小,稳定性高,而且整个 AMBA 系统由单个时钟控制,在静态时序分析和综合
后布局布线上限制较小,芯片速度较快。倍频是目前的 AMBA 总线设计的流行趋
势,它的好处在于:
(1)低功耗,由公式 P=RCV2F 可知,功耗是频率的线形函数,减小 APB 时钟
频率可降低总线及外围设备的功率消耗。
(2) PCLK 时钟频率可变,可以实现更好的功率控制算法。
(3)较低的时钟频率对外围模块的时序要求也较低,使得外围模块的设计目
标可以更集中在减小面积而不是保证时序上。
不过,倍频设计存在几个缺点:
(1)因为有两个时钟,总线桥模块的设计必须要增加同步逻辑;
(2)APB 时钟较慢,所以 AHB 总线对 APB 总线的访问会增加一定的等待周期,
降低了系统性能;
(3)APB 总线频率限制了外围模块的参考时钟的最高频率,这降低了部分传
输速度较快的接口,如 SSP、UART 的最高传输频率。
目前我们采用的是同频时钟,即 AHB 总线与 APB 总线都采用的 80M 时钟晶
振,主要考虑是稳定性高,速度快。
AHB2APB 总线桥的算法实现
我们采用的是非流水线结构的简单算法的总线桥设计,该算法具有设计简单,
速度快,出错率低,有较好的可靠性的优点。
简单算法的总线桥的设计
简单算法的总线桥的设计目的是在 AMBA 总线共用一个时钟源的情况下以
最简单、快速的方法完成 AHB 协议对 APB 协议的转换。该算法不区分连续读写
操作和非连续读写操作,单独处理每一个读写操作。因为 APB 总线操作要求写
数据在 SETUP 和 ENABLE 两个状态都保持有效,而 AHB 总线数据滞后于地址控
制信号。因此,每 1 个写操作要 3 周期完成,前面必须插入 1 个写准备状态。
读操作直接转换为两个周期完成。
表格 66 图 4-2 APB Bridge 简单算法流程
PrimeCell 算法的总线桥的设计
PrimeCell 为 ARM 公司开发的 AMBA 总线兼容的 IP 库,作为 ARM 芯片解决
方案的一部分,免费提供给 ARM 公司的客户使用。PrimeCell 算法的状态机如下
图所示,Valid=1 表示模块被 HSEL 信号选中及 HTRANS 信号有效,同时 HWRITE
信号将被记录,即图中 HwriteReg 信号。
表格 67 图 4-3 PrimeCell 算法流程
和简单算法相比较,所不同的地方是 PrimeCell 算法区分连续读写操作和非
连续读写操作,并优化了写操作的算法。该算法读操作周期固定为 2 个时钟周期。
写操作通过寄存器保存 AHB 总线的数据和地址信号而以流水线方式完成。即非
连续的(nonseq)的写操作在 1 个时钟周期内完成,而连续(seq)写操作,通过流
水线方式在当前写操作周期中完成上一个写操作的动作,即第 1 个写操作完成插
入等待周期的动作,其后的每一个操作用 2 个周期完成上一操作的动作。对于
AHB 总线,相当于第 1 个操作 1 周期完成,其后每个操作用 2 个周期完成。
简单算法的总线桥设计简单,速度快,在 FPGA 上能够达到接近 600MHz 的
速度,适用于简单快速的应用场合,而且该算法非流水线结构,出错率非常低,
有较好的可靠性。
PrimeCell 算法的总线桥比简单算法的总线桥性能好,但实现较复杂, 最高
工作频率较低。但 PrimeCell 是 ARM 公司提供的商用 IP 核,代码可靠性较高,
并且附带了多个等级的完备测试方案。
简单总线桥适用于芯片简单、外设要求速度高、芯片可靠性要求较高的应用。
PrimeCell 算法具有完善 IP 核,适用于开发能力不高或者开发周期较短的设计者
直接使用 ARM 核与 PrimeCell 库快速开发通用型芯片。
主从接口信息
APB 从接口设计包含两个即插即用信息字,保存在驱动总线的 APB 记录里,
这些记录都被组成一个与 APB 桥相连接的数列。即插即用信息被映射到桥地址
空间的最前一个只读的 4k 字节地址区域,每个即插即用块占用 8 个字节,一个
普通单元的即插即用信息的地址被它的总线索引定义。如果桥被映射到 AHB 地
址为 0x80000000,则即插即用记录的地址是 0x800FF000 + n*8。
表格 68 图 4-4 APB 即插即用信息
APB 总线的地址空间映射在 AHB 总线的地址空间当中,且 APB 总线上只有
I/O 地址空间类型,而没有存储地址空间类型。同 AHB 总线设备一样,APB 总线
设备的地址配置信息也存放在各自的地址映射寄存器(BAR)当中。下图是 APB
设备的地址映射寄存器各字段的详细示意图:
表格 69 图 4-5 APB 总线设备地址映射寄存器(BAR)的示意图
ADDR 字段存放的是该设备地址空间的首地址,MASK 中存放的是该设备的
地址掩码,TYPE 字段存放的是该设备的地址空间的类型(对于 APB 设备而言,
TYPE=0001)。在不考虑地址掩码的情况下,地址信号 HADDR 的中间 12 位
(HADDR[19:8])将被用来与 ADDR 字段相比较,如果相同,那么 APB 桥将产生
该设备的选择信号 PSELx,同时这也意味着 APB 总线设备所占据的最小的地址
映射空间是 256 字节。地址掩码用于扩大 APB 总线设备的地址映射空间,在考
虑地址掩码的情况下,只有掩码 MASK 中为 1 的那些位所对应的 ADDR 位才参
与比较,因此可以通过将 MASK 末尾的某些位置 0 的方法来扩大设备的映射空
间。最终,产生某个设备的 PSELx 信号的判断条件可以用下面的表达式来表示:
(( XOR HADDR [19:8]) AND ) =0
APB 桥的代码描述
APB 桥的信号描叙见表 4-1。
表格 14 表 4-1 APB 桥信号
下例显示了如何示例化一个 APB 桥。
AHB2AHB 总线桥的设计
AHB/AHB 桥接被用来连接高速 AHB 总线主机 LEON3 CPU 和外部存储控制
器,并用来连接低速 AHB 总线主机和慢通讯 IP 核,该桥接支持任何频率的同步
时钟。桥接芯片内部由两个单工 AHB 到 AHB 桥组成,同时对于同步信号(除开
AHB 信号)辅助逻辑横跨高速总线和低速总线时钟域。
单工 AHB2AHB 桥设计
概述
单工 AHB 到 AHB 桥接用来连接两个任意频率的同步时钟驱动的 AHB 总线,
桥接芯片通过一对 AHB 主接口和 AHB 从接口来连接。AHB 传送定向实现一个方
向的传输,AHB 传输到从接口的数据都被定向到主接口。单工桥接的应用包括系
统分割,时钟域分割和系统扩张。
单工 AHB 到 AHB 桥接的特点有:
• 单个和猝发 AHB 传输
• 内部 FIFO 的数据缓冲
• 通过使用分离响应和数据预取提高了有效总线利用率
• 加速写
• 死循环探测逻辑允许通过使用两个单工桥接来建立双工桥接(见 AHB/AHB
桥接模块)
表格 70 图 4-6 两个 AHB 总线(单工)通过 AHB/AHB 桥接连接
AHB/AHB 桥通用操作
AHB/AHB 桥接在从总线上占用的地址空间通过从接口 AHB 即插即用配置
记录里的体地址寄存器来配置和确定。桥接可以处理自增形式的单个和猝发传输
(HBURST,HBURST4, HBURST8, HBURST16),支持字节,半字和字的传输单
位(HSIZE)。
对于 AHB 写传输的写数据总是缓冲在内部 FIFO 以实现加速写,对于 AHB 读
传输,桥接芯片使用 GRLIB 的 AMBA 即插即用信息来确定读的数据是否预取和
缓冲在内部 FIFO。如果 AHB 读传输的目标地址是一个可预取的位置,则读数据
将被预取和缓冲。
AHB 主接口初始化一个到桥接芯片读传输的时候,总是分离第一个传输,企
图允许别的主接口来使用从总线而桥接实现在主总线上的读传输。如果中断同步
化允许从总线上的中断,则中断线将被定向到主总线,反之亦然。
AHB 读传输
当读传输在从接口上被注册时桥接芯片将会发出 SPLIT 响应,初始化传输的
主接口将会被授权允许别的总线主接口使用从总线,同时桥接芯片在主总线上执
行读传输。主接口请求使用总线并且在主总线上开始读数据传输,在从总线上的
单个数据传输被翻译成在主总线上的一个单个数据访问。如果读 FIFO 使能并且
传输类型是对一个可预取地址的猝发传输,则主接口将会执行与固定单位猝发下
的字节同样大小的传输或是与读 FIFO 单位同样大小的猝发传输,读数据在内部
FIFO 上被缓冲并且猝发传输在主总线上被完成。如果读 FIFO 没有使能或者猝发
传输访问的是一个不可预取的区域,则猝发传输的第一个访问可以被执行同时主
总线被保持在正在执行 BUSY 传输状态。执行分割的主接口通过声明一个
HSPLIT 信号到 AHB 控制器在总线仲裁器上允许从总线上的初始化传输。当执行
分割的主接口继续尝试传输时,如果读的数据被预取到了读 FIFO 时则从接口可
以完成猝发传输。在猝发传输访问不可预取地址或者读 FIFO 没有使能的情况下,
传输过程的第一个访问通过返回读数据完成,当猝发传输的下一个访问在主总线
上被开始时从总线上的传输通过声明 HREADY 的低电平来扩展,这个顺序一直
重复到传输在从总线上终止。
特殊情况下当主总线上的预取在 cache 块的最后一个字节上完成时(取指令
传输的 cache 快的单位也是可配置的)读猝发通常被标记为一个取指令操作
(HPROT 信号显示)。
在主总线错误响应的情况下,对于从总线上的同一个访问也将会给出一个错
误响应,SPLIT 和 RETRY 响应将会不停的尝试直到收到 OKAY 或 ERROR 响应,
从接口因此也仅仅在其上给出 OKAY 或 ERROR 响应。
AHB 写传输
AHB/AHB 桥接实现了加速写,当 AHB 写在从总线上传输时数据缓冲在内部
写 FIFO 里,写传输在从总线上总是通过发出 OKAY 响应完成。当主总线被主接
口获取时,主总线可以请求总线并且执行写传输。如果猝发传输的单位比写 FIFO
的长,则当 FIFO 满时将会给出 SPLIT 响应。当 FIFO 空的时候,被分割的主接口
被允许重新继续尝试写猝发传输的剩余访问请求。
锁定传输
AHB/AHB 桥接支持锁定传输,当总线被获取并且保持锁定时,主总线将被
锁定直到从总线上的传输完成。
配置选项
单工 AHB/AHB 桥接具有下列配置选项(VHDL 属性):
表格 71 表 4-2 AHB/AHB 桥接配置选项(属性)
信号描叙
AHB/AHB 桥接芯片信号在表 4-3 详细描叙。
表格 72 表 4-3 AHB/AHB 桥接信号
AHB/AHB 桥接示例化
library ieee;
use ;
library grlib;
use ;
library gaisler;
use ;
entity ahb2ahb_ex is
port (
clk : in std_ulogic;
rstn : in std_ulogic;
... -- other signals
);
end;
architecture rtl of ahb2ahb_ex is
constant NCPU : integer := 4;
-- AMBA signals, maser bus
signal ahbmi1 : ahb_mst_in_type;
signal ahbmo_m : ahb_mst_out_vector := (others => ahbm_none);
signal ahbsi_m : ahb_slv_in_type;
signal ahbso_m : ahb_slv_out_type := (others => ahbs_none);
-- AMBA signals, slave bus
signal ahbmi_s : ahb_mst_in_type;
signal ahbmo_s : ahb_mst_out_vector := (others => ahbm_none);
signal ahbsi_s : ahb_slv_in_type;
signal ahbso_s : ahb_slv_out_type := (others => ahbs_none);
begin
-- AHB/AHB uni-directional bridge
ahb2ahb0 : ahb2ahb generic map (
hsindex => 1,hmindex => 3,pfen => 1,iburst => 8, mb0en => 1,
haddr0 => 16#400#, hmask => 16#F00#, hcache0 => 1, pfetch0 => 1)
port map (hclkm, hclks, rst, ahbsi_s, ahbso_s(3), ahbmi_m, ahbmo_m(3),
ahbso_s,
gnd, gnd, open, open);
end;
Bi-direction AHB2AHB BRIDGE 桥接
概述
双向 AHB/AHB 桥接被用来连接高速 AHB 总线主机 LEON3 CPU 和低速
AHB 总线主设备和慢通讯 IP 核,支持任何频率的同步时钟。桥接芯片内部由两
个单工 AHB 到 AHB 桥组成(见 ),同时对于同步信号(除开 AHB 信号)
辅助逻辑横跨高速总线和低速总线时钟域。
表格 73 图 4-7 包含 AHB/AHB 总线的 LEON3 系统
表格 74 图 4-8 采用了双向 AHB2AHB 桥设计的手机 SOC 芯片结构图
上图为我们设计的手机芯片结构图的主要构成部分,采用了双向 AHB2AHB
Bridge 连接两条 AHB Bus(High speed AHB Bus&Low speed AHB Bus)以及两条
同频 AHB2APB Bridge,其中橙色部分为高速总线,蓝色部分为低速总线,外接多
个 IP。
AHB/AHB 桥基本操作
AHB/AHB 桥节通过一对 AHB 主接口和从接口连接每个 AHB 总线,在每个
总线上被 AHB/AHB 桥接占用的地址空间通过 VHDL 属性配置的的体地址寄存器
确定。桥接可以处理所有方向的单个字节传输和猝发传输,内部 FIFO 被用来进
行数据缓冲,同时该桥接实现了 SPLIT 响应来提高 AHB 总线利用率。更多被
AHB/AHB 桥接支持的 AHB 传输信息可以参考单工 AHB/AHB 桥接(AHB2AHB)
部分。
死锁检测:如果所有总线同时访问则会产生死循环状态,桥接包含死锁检测
逻辑,可以通过在低速总线上发送 RETRY 响应解决死锁条件。
附加信号同步:在典型的 LEON3 系统里 AHB/AHB 桥接加入了附加同步逻
辑来同步交叉时钟域里的信号,这些信号包括从 LEON3 CPU 到 MP 中断控制器
的信号和 DSU 到 GP 定时器的信号。
配置选项
AHB/AHB 桥接具有如下配置选项(VHDL 属性):
表格 75 表 4-4 AHB/AHB 桥接配置选项(属性)
AHB/AHB 桥接信号如表 4-5 所示。
表格 76 表 4-5 AHB/AHB 桥接信号
AHB2AHB Bridge 仿真实现
目前为止,我们利用 Novas 公司的 nLint 软件对我们所设计的模块做 Coding
Style 的检查,完全符合设计规则,没有任何的违反规则。另外我们也用 model
sim 跑 Testbenchb 观察波形,并得到的 Code Coverage 已经达到 100%。其结
果列在表 4-6 中。
Module Name State Branch Toggle FSM
Arbiter 100% 100% 100% -
Decoder 100% 100% 100% -
Default Slave 100% 100% 100% -
AHB Bridge 100% 100% 100% 100%
APB Bridge 100% 100% 100% 100%
Total 100% 100% 100% 100%
表格 77 表 4-6 代码覆盖率
本表是用自动产生器产生的 Testbench 和总线架构模块组来做的测量,所以
表中所有的 module 没有任何的 condition 的描述,因此表中就不列出 condition
coverage 的结果。
通过前仿真后,我们通过 Synplify 综合生成网表,然后用 Xilinx ISE 生成 MCS
文件,最后下载到 FPGA 板上做实体电路验证,表 4-7 是我们曾经做过的一些版
本所包含的 IP 信息。其中打勾的是包含的部件,1、2 表示部件个数。这是正好
我找到的比较老的版本了,很遗憾没找到最新的版本统计,不过大体上内容是一
致的,只不过后来我们加入了一些部件,如双层 AHB 总线、4 Leon3 CPU 等。
表格 78 表 4-7 MCS FILES LIST
我们通过编写一个 来对板上的 I/O 做存取,例如七段显示器、LED 灯、
Key Pad 和 LCD 做控制,借此来验证系统功能的正确性。也就是说在整个系统在
跑的时候,在 LCD 上我们可以看见“ESLab”的字样、LED 在做 Running light 的效
果,七段显示在一开始显示 0,随后按下 Key Pad 来改变显示的数值。若没有观
察到以上的结果则表示系统有问题,然后根据具体哪个 I/O 有问题来进行除错。
AHB-Lite (Device xc4v1000, package fg456, speed -4)
Number of Slice Flips Flops 2605 out of 10240 25%
Number of 4 input LUTs 6940 out of 10240 67%
Number of occupied Slices 4343 out of 5120 84%
Number of bonded IOBs 79 out of 324 24%
Number of Block RAMs 4 out of 40 10%
Number of GCLKs 1out of 16 6%
Maximum frequency 150MHz
表格 79 表 4-8 The FPGA synthesis result of AHB-Lite
AHB-Lite (Device xc4v1000, package fg456, speed -4)
Number of Slice Flips Flops 2623 out of 10240 25%
Number of 4 input LUTs 7420 out of 10240 72%
Number of occupied Slices 4609 out of 5120 90%
Number of bonded IOBs 79 out of 324 24%
Number of Block RAMs 4 out of 40 10%
Number of GCLKs 1out of 16 6%
Maximum frequency 110MHz
表格 80 表 4-9 The FPGA synthesis result of AHB
Multi-layer AHB (Device xc4v1000, package fg456, speed -4)
Number of Slice Flips Flops 2730 out of 10240 26%
Number of 4 input LUTs 8810 out of 10240 85%
Number of occupied Slices 4950 out of 5120 97%
Number of bonded IOBs 79 out of 324 24%
Number of Block RAMs 4 out of 40 10%
Number of GCLKs 1out of 16 6%
Maximum frequency 100MHz
表格 81 表 4-10 The FPGA synthesis result of Multi-layer AHB
Multi-layer AHB (Device xc4v1000, package fg456, speed -4)
Number of Slice Flips Flops 2751 out of 10240 26%
Number of 4 input LUTs 8779 out of 10240 85%
Number of occupied Slices 5002 out of 5120 97%
Number of bonded IOBs 79 out of 324 24%
Number of Block RAMs 4 out of 40 10%
Number of GCLKs 1out of 16 6%
Maximum frequency 100MHz
表格 82 表 4-11 The FPGA result of Multi-layer AHB(Dual Port RAM)
AHB-Lite-MEMCU (Device xc4v1000, package fg456, speed -4)
Number of Slice Flips Flops 1540 out of 10240 15%
Number of 4 input LUTs 5930 out of 10240 57%
Number of occupied Slices 3644 out of 5120 71%
Number of bonded IOBs 58 out of 324 17%
Number of Block RAMs 10 out of 40 25%
Number of GCLKs 1out of 16 6%
Maximum frequency 100MHz
表格 83 表 4-12 The FPGA synthesis result of AHB-Lite-MEMCU
表 4-8 和表 4-9 为 AHB-Lite 和 AHB,表 4-10 和表 4-11 为 Multi-layer AHB,
两者差别在于表 4-10 为 Single Port RAM,表 4-11 为 Dual Port RAM;表 4-12
为 MEMCU 的 SOC 在 Xolinx ISE 的合成结果。
通过以上各表,我们可以获得一些信息。比较 AHB-Lite 和 AHB,前者比后
者至少省下 Arbiter 以及 Master 至 Slave 之间的多工通道,所以 AHB-Lite 所使
用的 Slice 量比 AHB 节省 266 个。而且 AHB-Lite 节省 Master 至 Slave 之间的多
工通道,所以此系统的数据路径比 还短。我们比较所有结果可
知,AHB-Lite 的效能最好,若把 AHB-Lite 和 相比较,AHB-Lite 比
快 %。Multi-Layer AHB 则比 AHB-Lite 的结果慢 %,比 慢 %。
假 设 这 三 种 形 式 的 AHB 都 在 100MHz 频 率 下 工 作 , 整 体 效 能 最 好 的 是
Multi-layer AHB。
以 上 是 FPGA 合 成 结 果 数 据 , 对 AHB2AHB 桥 的 设 计 主 要 是 体 现 在
Multi-Layer AHB 的应用上。当系统有多个 Master 时,想让同一个时间点上能有
多个 Master 能够存取总线上的 Slave,Multi-Layer AHB 是一个值得考虑的构架。
在面对不同需求的系统时,我们应采用不同的 AHB 构架来做选择。具体到我们
的开发中,采用的就是 Multi-Layer 的双 AHB 总线构架,如果以后有可能的话也
会采用更多层的 AHB 总线构架,那却是以后可以进一步研究的方向了。
第五章 总结
在基于 IP 复用的 SOC 设计中,片上总线设计是最关键的问题。为此,业界
出现了很多片上总线标准。其中,由 ARM 公司推出的 AMBA 片上总线受到了广
大 IP 开发商和 SOC 系统集成者的青睐,已成为一种流行的工业标准片上结构。
本论文主要是针对于智能手机芯片开发,对数字部分的系统整合所遇到的问
题,提出了一种解决方法。本文通过对 CoreConnect、Wishbone、OCP、
Avalon、AMBA 等总线系统的研究比较,最终选择 ARM 公司的 AMBA 总线标准
作为手机 SOC 系统的整合及各 IP 核的互联策略。在此基础上,作者设计了 AHB
总线控制器、AHB 总线桥、APB 控制器等,通过这些设计可以将 CPU、DMA、
LCD、USB 等 IP 连接起来、协同工作,并应用到手机芯片研发当中。
作者设计的 AHB 总线控制器主要是用来完成总线仲裁、译码等功能。它具
有以下几个特性:一、支持连续的数据传输(burst)及分离式数据传输(split);
二、单个周期完成 master 的工作移交;三、只在时钟周期正缘触发;四、不使
用三态电路;五、支持 64 位及 128 位数据传输。
AHB 总线桥主要用来连接两个任意频率的同步时钟驱动的 AHB 总线。它可
以实现两个 master 走不同的总线去存取不同的 slave,这样可以大幅的提高总线
的工作效率。
APB 桥主要用来实现高速 AHB 总线到低速外设的连接。它可以通过锁定
APB 上的信号来实现低功耗的目的;全部资料与控制信号只在时钟正边缘触发,
使其可以非常容易的整合进大部分的设计流程当中。
在这篇论文里,我们已经详细的叙述了一个总线系统在手机芯片 SOC 设计
当中的应用。本文从研究 AMBA 总线标准,到系统总线各个控制器模块的设计,
多总线系统的设计,最后实现各个 IP 的互联,形成一个完整的 SOC 系统。在实
际工作当中,我们采取了自上而下的设计方法,使用了 VHDL 硬件设计语言来描
述逻辑器件及系统硬件的功能和行为,也籍由 modelsim、nLint、FPGA 等工具进
行仿真及验证,最终实现了一个可以通过 FPGA 验证的手机 SOC 系统的设计。
参考文献
[1] AMBA Specification Revision 2[S]. ARM Ltd., 1999
[2] Synopsys Inc Design Ware AMBA SystemC library User Guide[Z]
[3] and , Reuse Methodology Manual for System-on-Chip
Designs, 3nd Edition, Kluwer Academic Publishers, 2002
[4] AMBA AHB-Lite overview, ARM Ltd, 2003
[5] AMBA University Kit Technical Reference Manual, ARM Ltd, 2001
[6] AMB ATM Specification Revision , ARM Corp,May 1999
[7] AMBA Multi-layer AHB overview, ARM Ltd.
[8] AMBA AHB Cycle level Interface Specification, , ARM Ltd,
July 2003.
[9] LEON/AMBA VHDL model description, , Gaisler Research Inc., Nov
2000
[10] Youngwoo Kim, Kyoung Park, and Myungjoon Kim, “AMBA based
multiprocessor system”, Proceedings of International Symposium on
System-on-Chip, -42, 2003
[11] ARM Corporation, “Example AMBA SYstem User Guide,” Ref: ARM DUI
0092C, Issued: August 1999
[12] 张天序 , 沈绪榜 , 江先阳 基于 ARM 核的嵌入式 CPU 内 AHB 接口的实现,
[13] 蒋彭龙,宋征宇,刘志华,吕淮北 AMBA 总线技术在片上系统集成设计
中的应用,航天控制,
[14] 崔云飞,SOC 层次化验证方法及应用,现代电子技术,2005
[15] 聂建成 , 刘斌 基于 ARM/DSP 嵌入式系统 ARM 模块软件设计 ,湖南工程
学院学报, 2004
[16] 张庆利,王进祥,叶以正,等。AMBA 片内总线结构的设计,微处理机,2002
附录 1 专业术语名词解释
名词 解释
AMBA 由 ARM 公司开发的片上总线结构
SoC System on Chip,片上系统
AHB Advanced High performance Bus,ARM 公司的高速系统总线
APB Advanced Peripheral Bus,ARM 公司的高级系统外围设备总线
DMA Direct Memory Access,直接内存访问控制器
DSP Digital Signal Processing,数字信号处理器
HRESET 系统总线复位
HCLK 系统总线时钟
HBUSREQ 总线请求信号
HGRANT 总线允许信号
HADDR 系统地址总线
HTRANS 传输类型信号
HWRITE 读/写控制信号
HSIZE 传输大小信号
HBURST 猝发类型信号
HREADY 传输完成信号
HRESP 传输响应信号
HWDATA 写数据总线
HRDATA 读数据总线
北京大学学位论文原创性声明和使用授权说明
原创性声明
本人郑重声明: 所呈交的学位论文,是本人在导师的指导下,独立进行研
究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人
或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集
体,均已在文中以明确方式标明。本声明的法律结果由本人承担。
论文作者签名: 日期: 年 月 日
学位论文使用授权说明
本人完全了解北京大学关于收集、保存、使用学位论文的规定,即:
按照学校要求提交学位论文的印刷本和电子版本;
学校有权保存学位论文的印刷本和电子版,并提供目录检索与阅览服务;
学校可以采用影印、缩印、数字化或其它复制手段保存论文;
在不以赢利为目的的前提下,学校可以公布论文的部分或全部内容。
(保密论文在解密后遵守此规定)
论文作者签名: 导师签名:
日期: 年 月 日
致 谢
在此论文完成之际,首先感谢我的导师王新安副教授在硕士学习期间给我的
教导和帮助。王老师在我实习工作时常常给予我工作方法和学习方向上的指导,
其严谨求实的治学态度使我受益匪浅。在这里谨向导师致以诚挚的谢意。
在香港创辉电脑有限公司的一年多的实习经历,使我接触到了许多新的技术
和工业上的应用,在这个过程中,洪明忠先生、吴坚博士以及刘峰硕士在研究和
实践过程中给予我的许多的指导和帮助。他们的谆谆教诲和帮助指导使我能够顺
利地完成学业。在论文撰写过程中,得到刘武洲,陈昭祥,陈杰,郭先清的热情
支持和无私帮助。感谢文康益先生在后端设计中的配合、感谢洪明忠先生在 FPGA
验证方面的配合和支持,刘峰同学在 AHB 总线设计上给予的参考建议,在项目研
发中给予的指导和帮助,在此向他们致以最衷心的感谢和祝福!
最后,感谢关心和爱护我的父母和家人,是他们为我创造了学习深造的良好
机会,同时给我物质和精神上的极大支持和鼓励。