amba 版本 2.0 ( ahb/asb 和 apb)
DESCRIPTION
AMBA 版本 2.0 ( AHB/ASB 和 APB). AMBA 系统的例子. High Performance ARM processor. APB. UART. High Bandwidth External Memory Interface. Timer. APB Bridge. AHB. Keypad. High-bandwidth on-chip RAM. DMA Bus Master. PIO. Low Power Non-pipelined Simple Interface. High Performance - PowerPoint PPT PresentationTRANSCRIPT
1TMT H E A R C H I T E C T U R E F O R T H E D I G I T A L W O R L D
AMBA 版本 2.0(AHB/ASB 和 APB)
2TM 220v07 AMBA rev 2.0
AMBA 系统的例子
High PerformanceARM processor
High-bandwidthon-chip RAM
HighBandwidth
ExternalMemoryInterface
DMABus Master
APBBridge
Timer
Keypad
UART
PIO
AHB
APB
High PerformancePipelinedBurst SupportMultiple Bus Masters
Low PowerNon-pipelinedSimple Interface
3TM 320v07 AMBA rev 2.0
内容
AHB 主控,仲裁,译码,从控
ASB 基本周期,译码周期
APB 主控,从控
测试 结构,进入,地址,读,写,退出
将来 多层 AHB, AHB 简化版
4TM 420v07 AMBA rev 2.0
HWDATA
AHB 互连
Arbiter
Decoder
Master#1
Master#3
Master#2
Slave#1
Slave#4
Slave#3
Slave#2
Address/Control
Write Data
Read Data
HADDR
HWDATA
HRDATA
HADDR
HRDATA
5TM 520v07 AMBA rev 2.0
AHB 基本信号
HCLK 所有 AHB 动作的参考
HADDR 32 位地址总线 HWRITE读 / 写周期
HREADY 传输完成响应
HWDATA 写数据总线 HRDATA 读数据总线
6TM 620v07 AMBA rev 2.0
AHB 基本信号时序
AddressPhase
DataPhase
A
A
A
A
HCLK
HADDR
HWRITE
HWDATA
HRDATA
7TM 720v07 AMBA rev 2.0
AHB 基本信号时序
A
A
A
A
AA
Address Phase Data Phase
HCLK
HADDR
HWRITE
HRDATA
HWDATA
HREADY
8TM 820v07 AMBA rev 2.0
AHB 总线主控
HADDR[31:0]HWRITE
HREADY
HWDATAHRDATA
HBURST[2:0]HTRANS[1:0]HSIZE[2:0]HPROT[3:0]
HRESP[1:0]
HBUSREQxHGRANTxHLOCKxHBURST[2:0]
Transfer Responses
Arbiter
}Control
HCLKHRESETn
Bus Master
}
}
9TM 920v07 AMBA rev 2.0
AHB 仲裁
HGRANTa
HCLKHRESETn
Bus Arbiter
HGRANTbHGRANTcHGRANTd
HMASTER[3:0]
HMASTLOCK
HBUSREQaHLOCKa
HBUSREQbHLOCKb
HBUSREQcHLOCKc
HBUSREQdHLOCKd
HSPLIT[15:0]
HREADY
HADDR[31:0]HTRANS[1:0]
HRESP[1:0]
HBURST[2:0]
Split support
10TM 1020v07 AMBA rev 2.0
AHB 仲裁信号 HBUSREQx 来自总线的请求 HGRANTx 对总线主控的响应 HLOCKx 主控锁定传送
HMASTER[3:0] 地址 / 控制多路复用器开关 HMASTLOCK 当前主控正在执行锁定的访问
HBURST[2:0] 猝发长度指示 ( 延缓仲裁 )
HTRANS[1:0] 要执行的下一个周期类型 HRESP[1:0] 从控响应
HSPLIT[15:0] 从控可以完成 Split 处理
11TM 1120v07 AMBA rev 2.0
AHB 仲裁器时序
HCLK
#A
A A+4
A
HBUSREQx
HGRANTx
HMASTER
HADDR
HWDATA
12TM 1220v07 AMBA rev 2.0
HTRANS
HTRANS Type Description
00 IDLE 总线主控占用总线,但不想执行传送。
01 BUSY 占用总线的主控处于猝发中, 不能立即继续下一个传送。
10 NON-SEQ 猝发的第一个传送或一个单独的传送
11 SEQ 接下来的猝发传送地址与前面的传送是等步长连续
13TM 1320v07 AMBA rev 2.0
HBURST
HBURST Type Example
000 SINGLE 0x48
001 INCR 0x48, 0x4C, 0x50
010 WRAP4 0x48, 0x4C, 0x40, 0x44
011 INCR4 0x40, 0x44, 0x48, 0x4C
100 WRAP8 0x48, 0x4C, .., 0x5C, 0x40, 0x44
101 INCR8 0x40, 0x44, 0x48, ……., 0x5C
110 WRAP16 0x48, 0x4C, ……, 0x7C, 0x40, 0x44
111 INCR16 0x40, 0x44, 0x48, …………, 0x7C
14TM 1420v07 AMBA rev 2.0
AHB 译码器
HSELx : Combinatorial address decode slave select lines
HADDR[31:10]
HSELaHSELbHSELcHSELd
Bus Decoder
HCLK
ADDRa ADDRbHADDR[31:10]
HSELa
HSELb
15TM 1520v07 AMBA rev 2.0
AHB 从控
HCLKHRESETn
Bus Slave
HRESP
HWDATA
HREADYout
HADDR
HMASTER
HBURST
HSELx
HWRITE
HSIZEHTRANS
HMASTLOCK
HRDATA
HSPLITxSplit-capable
slave
HREADY
16TM 1620v07 AMBA rev 2.0
AHB 从控时序
HCLK
A
OKAY OKAYOKAY
HADDR
HSELa
HREADY
HRESP
17TM 1720v07 AMBA rev 2.0
HREADY 输入 / 输出
HREADY - input - previous access completing?
HREADYout - output - waits states required?
HREADYout Slave#1HREADYout Slave#2HREADYout Slave#3HREADYout Slave#4
Response Mux
Decoder Selects
HREADY to allmasters
back toall slaves
18TM 1820v07 AMBA rev 2.0
默认从控
Slave 3(APB)
Default Slave
0x0000_0000
0xFFFF_FFFFcase HADDR is when …. => HSELebi <= ‘1’; when …. => HSELsram <= ‘1’; when …. => HSELapb <= ‘1’; when others => HSELdefault <= ‘1’;end case;
Decoderlogic
Slave 2(APB)
Default_Slavelogic
case HTRANS is when IDLE|BUSY => HRESP <= OKAY; when others => HRESP <= ERROR;end case;
Slave 1(APB)
0xCFFF_FFFF
0xC000_0000
0x5000_FFFF
0x5000_0000
0x3FFF_FFFF
0x0000_0000
19TM 1920v07 AMBA rev 2.0
其它的从控响应
HRESP
00 OKAY
01 ERROR
10 RETRY
11 SPLIT
需要两个周期的响应时间 , 允许主控从地址流水线时序恢复
20TM 2020v07 AMBA rev 2.0
2 周期响应
HRESP 事件 总线主控操作
ERROR 发生退出 修正退出并重试失败的访问
RETRY 从控不能立即执行操作 重试访问
SPLIT 从控可以离线处理操作 重试访问
21TM 2120v07 AMBA rev 2.0
RETRY 响应
HCLK
A
RETRY OKAYRETRY
NONSEQ SEQ IDLE NONSEQ
A+4 Aundef
HTRANS
HADDR
HREADY
HRESP
22TM 2220v07 AMBA rev 2.0
SPLIT 传送
AHB 从控 储存来自总线主控的请求 离线处理请求 可以优化 SPLIT 请求 传送是 SPLIT 时的信号仲裁
AHB 仲裁器 除去 SPLIT 总线主控的优先级 当 SPLIT 访问可以完成的时候恢复优先级
HSPLIT[15:0] : SPLIT 总线主控的映射 当访问可以完成的时候,从控通知仲裁器
23TM 2320v07 AMBA rev 2.0
空转 / 默认 主控
空转主控
当所有的总线主控都处于 SPLIT 状态时,成为主控。
只产生 IDLE 总线周期 当锁定的主控得到 SPLIT 响应时,
成为主控 典型地, #0 主控 作为地址 / 控制多路复用器的一部分
实现。
默认主控
当没有主控要求总线的时候成为主控。
一般地,主控最适合要求总线 当没有总线申请的时候产生 IDLE
周期 避免最少两个周期的仲裁时间 立即访问总线
24TM 2420v07 AMBA rev 2.0
锁定的传送
HCLK
1st Locked addr 2nd Locked addr IDLE addressA B
Master A Master B
HGRANTb
HBUSREQb
HADDR
HLOCKa
HMASTLOCK
HMASTER
25TM 2520v07 AMBA rev 2.0
猝发提前结束 两个可选的情况:
- 仲裁器得到严格的优先级请求 - 主控收到 OKAY 回应
仲裁器 - 在猝发中,可以忽略 HBURST 信息,同意较高优先级的主控占用总线
主控 - 必须在猝发的每一个周期检查 HGRANT- 当重新同意占用总线来完成剩余的猝发周期时,必须改变 HBURST ( 最简单的是使用 INCR 类型 )
主控 - 可以选择立即处理 ERROR ,还是在猝发结束的时候处理。- 当有 SPLIT 或 RETRY 时,必须重试访问。- 当重新获得总线的时候,必须改变 HBURST 来完成余下的
猝发操作。 ( 最简单的是使用 INCR 类型 ) 仲裁器 - 必须监视 HTRANS 来检测猝发结束 (NSEQ 或 IDLE)
猝发从控 - 必须监视 HTRANS 来检测猝发的结束。
26TM 2620v07 AMBA rev 2.0
内容
AHB 主控,仲裁器,译码器,从控 ASB 基本周期,译码周期
APB 主控,从控
测试 结构,进入,地址,读,写,退出
将来 多层 AHB , AHB 简化版
27TM 2720v07 AMBA rev 2.0
ASB 信号一览
BCLK
BTRAN[1:0]
BA[31:0]
BD[31:0]
BWRITE
BSIZE[1:0]
BPROT[1:0]
BLOK
BnRES
BWAIT
BERROR
BLAST
DSELx
AREQx
AGNTx
28TM 2820v07 AMBA rev 2.0
基本的总线周期
BTRAN[1:0]
BCLK
TransferType
Data
Slave AddressBA[31:0]
DSELx
BD[31:0]
29TM 2920v07 AMBA rev 2.0
扩展的传送
BCLK
TransferType
Data
Slave Address
BTRAN[1:0]
BA[31:0]
DSELx
BWAIT
BD[31:0]
30TM 3020v07 AMBA rev 2.0
译码周期
BCLK
N_SEQ
Data
Slave Address
BTRAN[1:0]
BA[31:0]
DSELx
BWAIT
BD[31:0]
31TM 3120v07 AMBA rev 2.0
总线转变
ASB 共享一条三态总线,所以,在改变总线驱动需要时间。
在改变期间,总线保持者要防止在总线信号上出现无效数据。
提供完整的转变相位。
从控处理响应信号 (BWAIT, BLAST 和 BERROR) 只在 BCLK 为低的相位驱动,以便总线在 BCLK 为高的相位的阶段转变。
在非连续传送的 BCLK 低相位阶段,数据是不驱动的。
32TM 3220v07 AMBA rev 2.0
AHB 与 ASB 比较
AHB 在以下方面超过 ASB
单时钟沿操作。 非三态实现 单周期总线主控移交 猝发传送 Split 处理 比较宽的数据总线配置
33TM 3320v07 AMBA rev 2.0
内容
AHB 主控,仲裁器,译码器,从控
ASB 基本周期,译码周期 APB 主控,从控
测试 结构,进入,地址,读,写,推出
将来 多层 AHB , AHB 简化版
34TM 3420v07 AMBA rev 2.0
APB 信号列表
PCLK - 设备时钟 PADDR[..] - 设备地址总线 PWRITE - 设备读 / 写信号 PSELx - 单独的从选择信号 PWDATA[..] - 设备写数据总线 PRDATA[..] - 设备读数据总线 PENABLE - 设备数据使能
35TM 3520v07 AMBA rev 2.0
地址译码阶段
Slave 3(APB)
Slave 1(EBI)
Slave 2(SRAM)
0xCFFF_FFFF
0xC000_0000
0x5000_FFFF
0x5000_0000
0x3FFF_FFFF
0x0000_0000
Peripheral 3(UART)
Peripheral 1(Int Cont)
Peripheral 2(Timers)
0xC3FF_FFFF
0xC300_0000
0xC2FF_FFFF
0xC100_0000
0xC000_FFFF
0xC000_0000
APBmemory map
Timer 2
Timer 1
0xC2FF_FFFF
0xC200_0000
0xC1FF_FFFF
0xC100_0000
AHB Decoder
HSELapb
PSELtim
APB Bridge Timers
AHBmemory map
Timersmemory map
36TM 3620v07 AMBA rev 2.0
APB 互连
AHB2APBBridge
APBMaster
PADDRHCLK
PSEL#1
PWRITE
PSEL#2
PSEL#3
PCLK
HADDR
HWRITE Peripheral #1
Peripheral #3
Peripheral #2
PENABLE
PWDATA
PRDATA
HRDATA
HSEL
HWDATA
AHB APB
37TM 3720v07 AMBA rev 2.0
APB 写周期
PCLK
PADDR
PWRITE
PSEL
PENABLE
PWDATA
Addr1
Data1
38TM 3820v07 AMBA rev 2.0
APB 读周期
PCLK
PADDR
PWRITE
PSEL
PENABLE
PRDATA
Addr
Data
39TM 3920v07 AMBA rev 2.0
Slow APB Peripheral Designs 慢速 APB 设备设计
APB 访问必须花费两个 PCLK 周期 在 APB 上没有 WAIT 信号
什么样的设备需要长的访问时间 ? UART ?
仅须在中断发生的时候,或在轮询 UART 状态寄存器之后。
慢速的存储器 ? 全功能的存储器接口要求在 APB 上不支持的传送大小信息。
标准的解决方案是将慢速设备当作一个 AHB 部件来实现 ( 或者通过一个AHB/AHB 桥放在一个单独的 AHB 上 )
40TM 4020v07 AMBA rev 2.0
APB 到 AHB
HCLK/PCLK
Data
Data
Addr
Addr
HADDR
HWRITE
HRDATA
HREADY
PADDR
PWRITE
PSEL
PRDATA
41TM 4120v07 AMBA rev 2.0
内容
AHB 主控,仲裁器,译码器,从控
ASB 基本周期,译码周期
APB 主控,从控 测试 结构,进入,地址,读,写,退出
将来 多层 AHB , AHB 简化版
42TM 4220v07 AMBA rev 2.0
ApplicationPeripheral
Bus InterfaceTestStimulus
TestResults
DedicatedPeripheral
Inputs
DedicatedPeripheralOutputs
AHB/ASB/APB
AMBA 测试配线
43TM 4320v07 AMBA rev 2.0
AMBA 测试接口
Test Interface Controller
(TIC)
External BusInterface
(EBI)
TCLKControl
ASIC
TREQA
TREQB
TACK
TBUS[31:0]
HADDR
HWDATA
HRDATA
44TM 4420v07 AMBA rev 2.0
测试开始序列
TCLK
Address
TREQA
TREQB
TACK
TBUS
HBUSREQtic
HGRANTtic
45TM 4520v07 AMBA rev 2.0
TREQA/TREQB
在正常工作期间
TREQA TREQB TACK 描述0 0 0 正常工作1 0 0 进入测试模式请求- - 1 测试模式已进入
在测试模式期间
TREQA TREQB TACK 描述- - 0 当前访问没有完成1 1 1 地址,控制或转变向量1 0 1 写向量0 1 1 读向量0 0 1 退出测试模式
46TM 4620v07 AMBA rev 2.0
地址向量
HCLK
TREQA
TREQB
TACK
TBUS
HTRANS
HADDR
HWRITE
Control
HWDATA
Address Write2Control Write1
IDLE SeqIDLE Non-Seq
Address Address + 4
Write1
1 2 3 4 5
47TM 4720v07 AMBA rev 2.0
控制向量
位 位置 默认 描述
0 0 控制向量有效
1 0 保留
2 0 HSIZE(0)
3 1 HSIZE(1)
4 0 HLOCK
5 1 HPROT(0)
6 1 HPROT(1)
7 0 地址增加使能
8 0 保留
9 0 HPROT(2)
10 0 HPROT(3)
11 0 HSIZE(2)
48TM 4820v07 AMBA rev 2.0
写向量
HCLK
TREQA
TREQB
TACK
TBUS
HTRANS
HADDR
HWRITE
HREADY
HWDATA
Write#1
Non-Seq
Address
Address Write#2
IDLE Seq
Address+4
Write#1 Write#2
1 2 3 4 5
49TM 4920v07 AMBA rev 2.0
读向量
HCLK
TREQA
TREQB
TBUS
HTRANS
HADDR
HWRITE
HRDATA
Read #1
IDLE Non-Seq
Address
Address
Read #1
Read #2
Seq
Address+4
Read #2
IDLE
1 2 3 4 5
50TM 5020v07 AMBA rev 2.0
测试结束
HCLK
TREQA
TREQB
TACK
TBUS
HTRANS
HBUSREQ
HGRANT
IDLE
Address
1 2 3 4 5
51TM 5120v07 AMBA rev 2.0
内容
AHB 主控,仲裁器,,译码器,从控
ASB 基本周期,译码周期
APB 主控,从控
测试 结构,进入,地址,读,写,退出 将来 多层 AHB, AHB 简化版
52TM 5220v07 AMBA rev 2.0
传统的多主控设计
ARM
Slave#1
DMA
Slave#2
Slave#3
Slave#4
53TM 5320v07 AMBA rev 2.0
并行总线
ARM
Slave#1
DMA
Slave#2
Slave#3
Slave#4
AH
B2A
HB
54TM 5420v07 AMBA rev 2.0
共享的从控
ARM
Slave#1
DMA
Slave#2
Slave#3
Slave#4
Slave Mux
55TM 5520v07 AMBA rev 2.0
多层
ARM
Slave#1
DMA
Slave#2
Slave#3
Slave#4
Slave Mux
Slave Mux
Slave Mux
Slave Mux
56TM 5620v07 AMBA rev 2.0
Master 1Slave 1
Slave 2
Slave 3
Master 2
Layer 1
Layer 2
多层解决方案
57TM 5720v07 AMBA rev 2.0
典型的多层的例子
ARM
On-chipRAM
DMA
ExternalMemory
I/F
DMASlave
Slave Mux
Slave Mux
UART Timer GPIO
AHB2APB
58TM 5820v07 AMBA rev 2.0
多层的优势
并行访问提高了系统带宽
不是新标准 已有标准的互连实现 主控和从控象 AHB 一样,能够重复使用
59TM 5920v07 AMBA rev 2.0
AHB 简化版
AHB 的功能子集 主控 ( 没有仲裁或 Split/Retry 响应 ) 从控 ( 不容许 Split 或 Retry 响应 )
标准的 AHB 模块可以和 AHB 简化版一起使用
AHB 简化版容许更简单的模块设计 / 调试
60TM 6020v07 AMBA rev 2.0
设计考虑
对于不同的从控来说,带宽的绝大部分是在每一层上吗 ? 可以将瓶颈由总线移到单独的从控。
分离的片上存储器要并行访问
不同的层可以有不同的总线宽度 增加带宽的简单的方法
每一层可以是单个的或多个的主控 每层一个主控可以用 AHB 简化版来实现