amba 版本 2.0 ( ahb/asb 和 apb)

61
1 TM T 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)

Upload: palila

Post on 04-Feb-2016

480 views

Category:

Documents


2 download

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 Presentation

TRANSCRIPT

Page 1: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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)

Page 2: 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

Page 3: AMBA  版本 2.0 ( AHB/ASB  和  APB)

3TM 320v07 AMBA rev 2.0

内容

AHB 主控,仲裁,译码,从控

ASB 基本周期,译码周期

APB 主控,从控

测试 结构,进入,地址,读,写,退出

将来 多层 AHB, AHB 简化版

Page 4: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 5: AMBA  版本 2.0 ( AHB/ASB  和  APB)

5TM 520v07 AMBA rev 2.0

AHB 基本信号

HCLK 所有 AHB 动作的参考

HADDR 32 位地址总线 HWRITE读 / 写周期

HREADY 传输完成响应

HWDATA 写数据总线 HRDATA 读数据总线

Page 6: AMBA  版本 2.0 ( AHB/ASB  和  APB)

6TM 620v07 AMBA rev 2.0

AHB 基本信号时序

AddressPhase

DataPhase

A

A

A

A

HCLK

HADDR

HWRITE

HWDATA

HRDATA

Page 7: AMBA  版本 2.0 ( AHB/ASB  和  APB)

7TM 720v07 AMBA rev 2.0

AHB 基本信号时序

A

A

A

A

AA

Address Phase Data Phase

HCLK

HADDR

HWRITE

HRDATA

HWDATA

HREADY

Page 8: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

}

}

Page 9: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 10: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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 处理

Page 11: AMBA  版本 2.0 ( AHB/ASB  和  APB)

11TM 1120v07 AMBA rev 2.0

AHB 仲裁器时序

HCLK

#A

A A+4

A

HBUSREQx

HGRANTx

HMASTER

HADDR

HWDATA

Page 12: AMBA  版本 2.0 ( AHB/ASB  和  APB)

12TM 1220v07 AMBA rev 2.0

HTRANS

HTRANS Type Description

00 IDLE 总线主控占用总线,但不想执行传送。

01 BUSY 占用总线的主控处于猝发中, 不能立即继续下一个传送。

10 NON-SEQ 猝发的第一个传送或一个单独的传送

11 SEQ 接下来的猝发传送地址与前面的传送是等步长连续

Page 13: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 14: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 15: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 16: AMBA  版本 2.0 ( AHB/ASB  和  APB)

16TM 1620v07 AMBA rev 2.0

AHB 从控时序

HCLK

A

OKAY OKAYOKAY

HADDR

HSELa

HREADY

HRESP

Page 17: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 18: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 19: AMBA  版本 2.0 ( AHB/ASB  和  APB)

19TM 1920v07 AMBA rev 2.0

其它的从控响应

HRESP

00 OKAY

01 ERROR

10 RETRY

11 SPLIT

需要两个周期的响应时间 , 允许主控从地址流水线时序恢复

Page 20: AMBA  版本 2.0 ( AHB/ASB  和  APB)

20TM 2020v07 AMBA rev 2.0

2 周期响应

HRESP 事件 总线主控操作

ERROR 发生退出 修正退出并重试失败的访问

RETRY 从控不能立即执行操作 重试访问

SPLIT 从控可以离线处理操作 重试访问

Page 21: AMBA  版本 2.0 ( AHB/ASB  和  APB)

21TM 2120v07 AMBA rev 2.0

RETRY 响应

HCLK

A

RETRY OKAYRETRY

NONSEQ SEQ IDLE NONSEQ

A+4 Aundef

HTRANS

HADDR

HREADY

HRESP

Page 22: AMBA  版本 2.0 ( AHB/ASB  和  APB)

22TM 2220v07 AMBA rev 2.0

SPLIT 传送

AHB 从控 储存来自总线主控的请求 离线处理请求 可以优化 SPLIT 请求 传送是 SPLIT 时的信号仲裁

AHB 仲裁器 除去 SPLIT 总线主控的优先级 当 SPLIT 访问可以完成的时候恢复优先级

HSPLIT[15:0] : SPLIT 总线主控的映射 当访问可以完成的时候,从控通知仲裁器

Page 23: AMBA  版本 2.0 ( AHB/ASB  和  APB)

23TM 2320v07 AMBA rev 2.0

空转 / 默认 主控

空转主控

当所有的总线主控都处于 SPLIT 状态时,成为主控。

只产生 IDLE 总线周期 当锁定的主控得到 SPLIT 响应时,

成为主控 典型地, #0 主控 作为地址 / 控制多路复用器的一部分

实现。

默认主控

当没有主控要求总线的时候成为主控。

一般地,主控最适合要求总线 当没有总线申请的时候产生 IDLE

周期 避免最少两个周期的仲裁时间 立即访问总线

Page 24: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 25: AMBA  版本 2.0 ( AHB/ASB  和  APB)

25TM 2520v07 AMBA rev 2.0

猝发提前结束 两个可选的情况:

- 仲裁器得到严格的优先级请求 - 主控收到 OKAY 回应

仲裁器 - 在猝发中,可以忽略 HBURST 信息,同意较高优先级的主控占用总线

主控 - 必须在猝发的每一个周期检查 HGRANT- 当重新同意占用总线来完成剩余的猝发周期时,必须改变 HBURST ( 最简单的是使用 INCR 类型 )

主控 - 可以选择立即处理 ERROR ,还是在猝发结束的时候处理。- 当有 SPLIT 或 RETRY 时,必须重试访问。- 当重新获得总线的时候,必须改变 HBURST 来完成余下的

猝发操作。 ( 最简单的是使用 INCR 类型 ) 仲裁器 - 必须监视 HTRANS 来检测猝发结束 (NSEQ 或 IDLE)

猝发从控 - 必须监视 HTRANS 来检测猝发的结束。

Page 26: AMBA  版本 2.0 ( AHB/ASB  和  APB)

26TM 2620v07 AMBA rev 2.0

内容

AHB 主控,仲裁器,译码器,从控 ASB 基本周期,译码周期

APB 主控,从控

测试 结构,进入,地址,读,写,退出

将来 多层 AHB , AHB 简化版

Page 27: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 28: AMBA  版本 2.0 ( AHB/ASB  和  APB)

28TM 2820v07 AMBA rev 2.0

基本的总线周期

BTRAN[1:0]

BCLK

TransferType

Data

Slave AddressBA[31:0]

DSELx

BD[31:0]

Page 29: AMBA  版本 2.0 ( AHB/ASB  和  APB)

29TM 2920v07 AMBA rev 2.0

扩展的传送

BCLK

TransferType

Data

Slave Address

BTRAN[1:0]

BA[31:0]

DSELx

BWAIT

BD[31:0]

Page 30: AMBA  版本 2.0 ( AHB/ASB  和  APB)

30TM 3020v07 AMBA rev 2.0

译码周期

BCLK

N_SEQ

Data

Slave Address

BTRAN[1:0]

BA[31:0]

DSELx

BWAIT

BD[31:0]

Page 31: AMBA  版本 2.0 ( AHB/ASB  和  APB)

31TM 3120v07 AMBA rev 2.0

总线转变

ASB 共享一条三态总线,所以,在改变总线驱动需要时间。

在改变期间,总线保持者要防止在总线信号上出现无效数据。

提供完整的转变相位。

从控处理响应信号 (BWAIT, BLAST 和 BERROR) 只在 BCLK 为低的相位驱动,以便总线在 BCLK 为高的相位的阶段转变。

在非连续传送的 BCLK 低相位阶段,数据是不驱动的。

Page 32: AMBA  版本 2.0 ( AHB/ASB  和  APB)

32TM 3220v07 AMBA rev 2.0

AHB 与 ASB 比较

AHB 在以下方面超过 ASB

单时钟沿操作。 非三态实现 单周期总线主控移交 猝发传送 Split 处理 比较宽的数据总线配置

Page 33: AMBA  版本 2.0 ( AHB/ASB  和  APB)

33TM 3320v07 AMBA rev 2.0

内容

AHB 主控,仲裁器,译码器,从控

ASB 基本周期,译码周期 APB 主控,从控

测试 结构,进入,地址,读,写,推出

将来 多层 AHB , AHB 简化版

Page 34: AMBA  版本 2.0 ( AHB/ASB  和  APB)

34TM 3420v07 AMBA rev 2.0

APB 信号列表

PCLK - 设备时钟 PADDR[..] - 设备地址总线 PWRITE - 设备读 / 写信号 PSELx - 单独的从选择信号 PWDATA[..] - 设备写数据总线 PRDATA[..] - 设备读数据总线 PENABLE - 设备数据使能

Page 35: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 36: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 37: AMBA  版本 2.0 ( AHB/ASB  和  APB)

37TM 3720v07 AMBA rev 2.0

APB 写周期

PCLK

PADDR

PWRITE

PSEL

PENABLE

PWDATA

Addr1

Data1

Page 38: AMBA  版本 2.0 ( AHB/ASB  和  APB)

38TM 3820v07 AMBA rev 2.0

APB 读周期

PCLK

PADDR

PWRITE

PSEL

PENABLE

PRDATA

Addr

Data

Page 39: AMBA  版本 2.0 ( AHB/ASB  和  APB)

39TM 3920v07 AMBA rev 2.0

Slow APB Peripheral Designs 慢速 APB 设备设计

APB 访问必须花费两个 PCLK 周期 在 APB 上没有 WAIT 信号

什么样的设备需要长的访问时间 ? UART ?

仅须在中断发生的时候,或在轮询 UART 状态寄存器之后。

慢速的存储器 ? 全功能的存储器接口要求在 APB 上不支持的传送大小信息。

标准的解决方案是将慢速设备当作一个 AHB 部件来实现 ( 或者通过一个AHB/AHB 桥放在一个单独的 AHB 上 )

Page 40: AMBA  版本 2.0 ( AHB/ASB  和  APB)

40TM 4020v07 AMBA rev 2.0

APB 到 AHB

HCLK/PCLK

Data

Data

Addr

Addr

HADDR

HWRITE

HRDATA

HREADY

PADDR

PWRITE

PSEL

PRDATA

Page 41: AMBA  版本 2.0 ( AHB/ASB  和  APB)

41TM 4120v07 AMBA rev 2.0

内容

AHB 主控,仲裁器,译码器,从控

ASB 基本周期,译码周期

APB 主控,从控 测试 结构,进入,地址,读,写,退出

将来 多层 AHB , AHB 简化版

Page 42: AMBA  版本 2.0 ( AHB/ASB  和  APB)

42TM 4220v07 AMBA rev 2.0

ApplicationPeripheral

Bus InterfaceTestStimulus

TestResults

DedicatedPeripheral

Inputs

DedicatedPeripheralOutputs

AHB/ASB/APB

AMBA 测试配线

Page 43: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 44: AMBA  版本 2.0 ( AHB/ASB  和  APB)

44TM 4420v07 AMBA rev 2.0

测试开始序列

TCLK

Address

TREQA

TREQB

TACK

TBUS

HBUSREQtic

HGRANTtic

Page 45: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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 退出测试模式

Page 46: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 47: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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)

Page 48: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 49: AMBA  版本 2.0 ( AHB/ASB  和  APB)

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

Page 50: AMBA  版本 2.0 ( AHB/ASB  和  APB)

50TM 5020v07 AMBA rev 2.0

测试结束

HCLK

TREQA

TREQB

TACK

TBUS

HTRANS

HBUSREQ

HGRANT

IDLE

Address

1 2 3 4 5

Page 51: AMBA  版本 2.0 ( AHB/ASB  和  APB)

51TM 5120v07 AMBA rev 2.0

内容

AHB 主控,仲裁器,,译码器,从控

ASB 基本周期,译码周期

APB 主控,从控

测试 结构,进入,地址,读,写,退出 将来 多层 AHB, AHB 简化版

Page 52: AMBA  版本 2.0 ( AHB/ASB  和  APB)

52TM 5220v07 AMBA rev 2.0

传统的多主控设计

ARM

Slave#1

DMA

Slave#2

Slave#3

Slave#4

Page 53: AMBA  版本 2.0 ( AHB/ASB  和  APB)

53TM 5320v07 AMBA rev 2.0

并行总线

ARM

Slave#1

DMA

Slave#2

Slave#3

Slave#4

AH

B2A

HB

Page 54: AMBA  版本 2.0 ( AHB/ASB  和  APB)

54TM 5420v07 AMBA rev 2.0

共享的从控

ARM

Slave#1

DMA

Slave#2

Slave#3

Slave#4

Slave Mux

Page 55: AMBA  版本 2.0 ( AHB/ASB  和  APB)

55TM 5520v07 AMBA rev 2.0

多层

ARM

Slave#1

DMA

Slave#2

Slave#3

Slave#4

Slave Mux

Slave Mux

Slave Mux

Slave Mux

Page 56: AMBA  版本 2.0 ( AHB/ASB  和  APB)

56TM 5620v07 AMBA rev 2.0

Master 1Slave 1

Slave 2

Slave 3

Master 2

Layer 1

Layer 2

多层解决方案

Page 57: AMBA  版本 2.0 ( AHB/ASB  和  APB)

57TM 5720v07 AMBA rev 2.0

典型的多层的例子

ARM

On-chipRAM

DMA

ExternalMemory

I/F

DMASlave

Slave Mux

Slave Mux

UART Timer GPIO

AHB2APB

Page 58: AMBA  版本 2.0 ( AHB/ASB  和  APB)

58TM 5820v07 AMBA rev 2.0

多层的优势

并行访问提高了系统带宽

不是新标准 已有标准的互连实现 主控和从控象 AHB 一样,能够重复使用

Page 59: AMBA  版本 2.0 ( AHB/ASB  和  APB)

59TM 5920v07 AMBA rev 2.0

AHB 简化版

AHB 的功能子集 主控 ( 没有仲裁或 Split/Retry 响应 ) 从控 ( 不容许 Split 或 Retry 响应 )

标准的 AHB 模块可以和 AHB 简化版一起使用

AHB 简化版容许更简单的模块设计 / 调试

Page 60: AMBA  版本 2.0 ( AHB/ASB  和  APB)

60TM 6020v07 AMBA rev 2.0

设计考虑

对于不同的从控来说,带宽的绝大部分是在每一层上吗 ? 可以将瓶颈由总线移到单独的从控。

分离的片上存储器要并行访问

不同的层可以有不同的总线宽度 增加带宽的简单的方法

每一层可以是单个的或多个的主控 每层一个主控可以用 AHB 简化版来实现

Page 61: AMBA  版本 2.0 ( AHB/ASB  和  APB)