Presentation is loading. Please wait.

Presentation is loading. Please wait.

AMBA 版本 2.0 (AHB/ASB 和 APB).

Similar presentations


Presentation on theme: "AMBA 版本 2.0 (AHB/ASB 和 APB)."— Presentation transcript:

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

2 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 Pipelined Burst Support Multiple Bus Masters

3 内容 AHB 主控,仲裁,译码,从控 ASB 基本周期,译码周期 APB 主控,从控 测试 结构,进入,地址,读,写,退出
测试 结构,进入,地址,读,写,退出 将来 多层 AHB, AHB 简化版

4 AHB 互连 Arbiter Slave #1 Master #1 Slave #2 Master #2 Slave #3 Master
HADDR HADDR HWDATA Slave #1 Master #1 HWDATA HRDATA HRDATA Address/Control Slave #2 Master #2 Write Data Slave #3 Read Data Master #3 Slave #4 Decoder

5 AHB 基本信号 HCLK 所有AHB动作的参考 HADDR 32 位地址总线 HWRITE 读/写周期 HREADY 传输完成响应
HWDATA 写数据总线 HRDATA 读数据总线

6 AHB 基本信号时序 HCLK HADDR HWRITE HRDATA HWDATA Address Phase Data Phase A

7 AHB 基本信号时序 HCLK HADDR HWRITE HWDATA HREADY HRDATA A Address Phase
Data Phase HCLK HADDR HWRITE HRDATA HWDATA HREADY

8 } } } AHB 总线主控 Bus Master HCLK HBUSREQx HGRANTx HLOCKx HBURST[2:0]
HRESETn Arbiter HADDR[31:0] HWRITE HREADY HWDATA HRDATA } HBURST[2:0] HTRANS[1:0] HSIZE[2:0] HPROT[3:0] Control } HRESP[1:0] Transfer Responses

9 AHB 仲裁 Bus Arbiter Split support HCLK HRESETn HBUSREQa HGRANTa HLOCKa
HGRANTb HGRANTc HBUSREQb HGRANTd HLOCKb HBUSREQc HMASTER[3:0] HLOCKc HMASTLOCK HBUSREQd HLOCKd HREADY HBURST[2:0] HADDR[31:0] HTRANS[1:0] HRESP[1:0] HSPLIT[15:0] Split support

10 AHB 仲裁信号 HBUSREQx 来自总线的请求 HGRANTx 对总线主控的响应 HLOCKx 主控锁定传送
HMASTER[3:0] 地址/控制多路复用器开关 HMASTLOCK 当前主控正在执行锁定的访问 HBURST[2:0] 猝发长度指示 (延缓仲裁) HTRANS[1:0] 要执行的下一个周期类型 HRESP[1:0] 从控响应 HSPLIT[15:0] 从控可以完成Split处理

11 AHB 仲裁器时序 HCLK #A A A+4 HBUSREQx HGRANTx HMASTER HADDR HWDATA

12 HTRANS HTRANS Type Description 00 IDLE 总线主控占用总线,但不想执行传送。
01 BUSY 占用总线的主控处于猝发中, 不能立即继续下一个传送。 10 NON-SEQ 猝发的第一个传送或一个单独的传送 11 SEQ 接下来的猝发传送地址与前面的传送是等步长连续

13 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

14 AHB 译码器 HSELx : Combinatorial address decode slave select lines HCLK
Bus Decoder HSELa HSELb HSELc HSELd HADDR[31:10] HSELx : Combinatorial address decode slave select lines HCLK HADDR[31:10] ADDRa ADDRb HSELa HSELb

15 AHB 从控 Bus Slave Split-capable slave HCLK HRESETn HSELx HADDR HWRITE
HTRANS HSIZE HBURST HWDATA HRDATA HRESP HREADY HREADYout Split-capable slave HMASTER HSPLITx HMASTLOCK

16 AHB 从控时序 HCLK A OKAY HADDR HSELa HREADY HRESP

17 HREADY 输入/输出 HREADY - input - previous access completing?
HREADYout - output - waits states required? Response Mux HREADYout Slave#1 HREADYout Slave#2 HREADY HREADYout Slave#3 to all masters HREADYout Slave#4 back to all slaves Decoder Selects

18 默认从控 Default Slave Decoder logic case HADDR is when …. =>
0xFFFF_FFFF Default Slave Decoder logic case HADDR is when …. => HSELebi <= ‘1’; HSELsram <= ‘1’; HSELapb <= ‘1’; when others => HSELdefault <= ‘1’; end case; Slave 3 (APB) 0xCFFF_FFFF 0xC000_0000 0x5000_FFFF 0x5000_0000 0x3FFF_FFFF 0x0000_0000 Slave 2 (APB) Default_Slave logic case HTRANS is when IDLE|BUSY => HRESP <= OKAY; when others => HRESP <= ERROR; end case; Slave 1 (APB) 0x0000_0000

19 其它的从控响应 HRESP 00 OKAY 01 ERROR 10 RETRY 11 SPLIT
需要两个周期的响应时间,允许主控从地址流水线时序恢复

20 2 周期响应 HRESP 事件 总线主控操作 ERROR 发生退出 修正退出并重试失败的访问 RETRY 从控不能立即执行操作 重试访问
SPLIT 从控可以离线处理操作 重试访问

21 RETRY 响应 HCLK HTRANS HADDR HREADY HRESP A RETRY OKAY NONSEQ SEQ IDLE
undef HTRANS HADDR HREADY HRESP

22 SPLIT 传送 AHB 从控 AHB 仲裁器 HSPLIT[15:0] : SPLIT总线主控的映射 储存来自总线主控的请求 离线处理请求
当访问可以完成的时候,从控通知仲裁器

23 空转/默认 主控 空转主控 当所有的总线主控都处于SPLIT状态时,成为主控。 只产生IDLE总线周期
典型地,#0 主控 作为地址/控制多路复用器的一部分实现。 默认主控 当没有主控要求总线的时候成为主控。 一般地,主控最适合要求总线 当没有总线申请的时候产生 IDLE 周期 避免最少两个周期的仲裁时间 立即访问总线

24 锁定的传送 HCLK HGRANTb HBUSREQb HADDR HLOCKa HMASTLOCK HMASTER
1st Locked addr 2nd Locked addr IDLE address A B Master A Master B HGRANTb HBUSREQb HADDR HLOCKa HMASTLOCK HMASTER

25 猝发提前结束 两个可选的情况: - 仲裁器得到严格的优先级请求 - 主控收到OKAY 回应
仲裁器 - 在猝发中,可以忽略HBURST信息,同意较高优先级的主控占用总线 主控 - 必须在猝发的每一个周期检查HGRANT - 当重新同意占用总线来完成剩余的猝发周期时,必须改变 HBURST (最简单的是使用 INCR 类型) 主控 - 可以选择立即处理 ERROR,还是在猝发结束的时候处理。 - 当有SPLIT或RETRY时,必须重试访问。 - 当重新获得总线的时候,必须改变HBURST来完成余下的猝发操作。(最简单的是使用INCR类型) 仲裁器 - 必须监视HTRANS来检测猝发结束 (NSEQ 或 IDLE) 猝发从控 - 必须监视HTRANS来检测猝发的结束。

26 内容 AHB 主控,仲裁器,译码器,从控 ASB 基本周期,译码周期 APB 主控,从控 测试 结构,进入,地址,读,写,退出
测试 结构,进入,地址,读,写,退出 将来 多层 AHB,AHB简化版

27 ASB 信号一览 BCLK BnRES BTRAN[1:0] BA[31:0] BWAIT BD[31:0] BERROR BLAST
BWRITE BSIZE[1:0] BPROT[1:0] BLOK BnRES BWAIT BERROR BLAST DSELx AREQx AGNTx

28 基本的总线周期 BCLK BTRAN[1:0] BA[31:0] DSELx BD[31:0] Transfer Type Slave
Data Slave Address BA[31:0] DSELx BD[31:0]

29 扩展的传送 BCLK BTRAN[1:0] BA[31:0] BWAIT DSELx BD[31:0] Transfer Type
Data Slave Address BTRAN[1:0] BA[31:0] DSELx BWAIT BD[31:0]

30 译码周期 BCLK BTRAN[1:0] BA[31:0] DSELx BWAIT BD[31:0] N_SEQ Slave Address
Data Slave Address BTRAN[1:0] BA[31:0] DSELx BWAIT BD[31:0]

31 总线转变 ASB共享一条三态总线,所以,在改变总线驱动需要时间。 在改变期间,总线保持者要防止在总线信号上出现无效数据。
提供完整的转变相位。 从控处理响应信号 (BWAIT, BLAST 和 BERROR) 只在BCLK为低的相位驱动,以便总线在BCLK为高的相位的阶段转变。 在非连续传送的BCLK低相位阶段,数据是不驱动的。

32 AHB 与 ASB 比较 AHB 在以下方面超过 ASB 单时钟沿操作。 非三态实现 单周期总线主控移交 猝发传送 Split 处理
比较宽的数据总线配置

33 内容 AHB 主控,仲裁器,译码器,从控 ASB 基本周期,译码周期 APB 主控,从控 测试 结构,进入,地址,读,写,推出
测试 结构,进入,地址,读,写,推出 将来 多层 AHB, AHB简化版

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

35 地址译码阶段 AHB memory map APB memory map Timers memory map AHB Decoder
APB Bridge Timers 0xCFFF_FFFF 0xC000_0000 0x5000_FFFF 0x5000_0000 0x3FFF_FFFF 0x0000_0000 Slave 3 (APB) 0xC3FF_FFFF 0xC300_0000 0xC2FF_FFFF 0xC100_0000 0xC000_FFFF 0xC000_0000 Peripheral 3 (UART) Timer 2 0xC2FF_FFFF 0xC200_0000 0xC1FF_FFFF 0xC100_0000 HSELapb Peripheral 2 (Timers) Timer 1 PSELtim Slave 2 (SRAM) Peripheral 1 (Int Cont) Slave 1 (EBI)

36 APB 互连 AHB Peripheral APB #1 Master AHB2APB Bridge #2 #3 PCLK HCLK
PADDR HCLK PSEL#1 PWRITE PSEL#2 PSEL#3 PCLK HADDR HWRITE Peripheral #1 #3 #2 PENABLE PWDATA PRDATA HRDATA HSEL HWDATA AHB

37 APB 写周期 PCLK PADDR PWRITE PSEL PENABLE PWDATA Addr1 Data1

38 APB 读周期 PCLK PADDR PWRITE PSEL PENABLE PRDATA Addr Data

39 Slow APB Peripheral Designs
APB 访问必须花费两个 PCLK 周期 在APB上没有 WAIT 信号 什么样的设备需要长的访问时间 ? UART ? 仅须在中断发生的时候,或在轮询UART状态寄存器之后。 慢速的存储器 ? 全功能的存储器接口要求在APB上不支持的传送大小信息。 标准的解决方案是将慢速设备当作一个AHB部件来实现 (或者通过一个AHB/AHB桥放在一个单独的AHB上)

40 APB 到 AHB HCLK/PCLK HADDR HWRITE HRDATA HREADY PADDR PWRITE PSEL
PRDATA

41 内容 AHB 主控,仲裁器,译码器,从控 ASB 基本周期,译码周期 APB 主控,从控 测试 结构,进入,地址,读,写,退出
测试 结构,进入,地址,读,写,退出 将来 多层 AHB, AHB简化版

42 AMBA 测试配线 Application Peripheral Bus Interface Test Stimulus Results
Dedicated Inputs Outputs AHB/ASB/APB

43 AMBA 测试接口 Test Interface Controller (TIC) External Bus Interface (EBI)
TCLK Control TREQA HADDR TREQB HWDATA TACK External Bus Interface (EBI) TBUS[31:0] HRDATA ASIC

44 测试开始序列 TCLK Address TREQA TREQB TACK TBUS HBUSREQtic HGRANTtic

45 TREQA/TREQB 在正常工作期间 在测试模式期间 TREQA TREQB TACK 描述 0 0 0 正常工作
正常工作 进入测试模式请求 测试模式已进入 在测试模式期间 当前访问没有完成 地址,控制或转变向量 写向量 读向量 退出测试模式

46 地址向量 HCLK TREQA TREQB TACK TBUS HTRANS HADDR HWRITE Control HWDATA
HCLK TREQA TREQB TACK TBUS HTRANS HADDR HWRITE Control HWDATA Address Control Write1 Write2 IDLE IDLE Non-Seq Seq Address Address + 4 Write1

47 控制向量 位 位置 默认 描述 0 0 控制向量有效 1 0 保留 2 0 HSIZE(0) 3 1 HSIZE(1) 4 0 HLOCK
位 位置 默认 描述 控制向量有效 保留 HSIZE(0) HSIZE(1) HLOCK HPROT(0) HPROT(1) 地址增加使能 保留 HPROT(2) HPROT(3) HSIZE(2) The control vector allows the user to change the default state of the test bus master. Normally all that can be changed using address, read and write vectors are HADDR, HTRANS and HWRITE. The control vector then allows you to alter any of the other standard bus master outputs. Bits 7 to 0 are the same for an ASB based system, so vectors written for ASB will work with AHB as well. However if you wish to use the extra features of AHB then the control vector has been extended to 12 bit long. Bits 8 and 1 should be set to zero. (note that bit 8 forces ASB based systems to not perform Non-Seq cycles. These cause some decoders to add decode cycles, and this can confuse the arm core test state machine when DSEL is momentarilly de-asserted)

48 写向量 HCLK TREQA TREQB TACK TBUS HTRANS HADDR HWRITE HREADY HWDATA
Non-Seq Address Write#2 IDLE Seq Address+4

49 读向量 HCLK TREQA TREQB TBUS HTRANS HADDR HWRITE HRDATA 1 2 3 4 5 Address
HCLK TREQA TREQB TBUS HTRANS HADDR HWRITE HRDATA Address Read #1 Read #2 IDLE Non-Seq Seq IDLE Address Address+4 Read #1 Read #2

50 测试结束 HCLK TREQA TREQB TACK TBUS HTRANS HBUSREQ HGRANT 1 2 3 4 5
IDLE Address

51 内容 AHB 主控,仲裁器,,译码器,从控 ASB 基本周期,译码周期 APB 主控,从控 测试 结构,进入,地址,读,写,退出
测试 结构,进入,地址,读,写,退出 将来 多层 AHB, AHB 简化版

52 传统的多主控设计 ARM DMA Slave #1 Slave #2 Slave #3 Slave #4

53 并行总线 ARM DMA AHB2AHB Slave #1 Slave #2 Slave #3 Slave #4

54 共享的从控 ARM DMA Slave #1 Slave #2 Slave Mux Slave #4 Slave #3

55 多层 ARM Slave #1 DMA #2 #3 #4 Mux

56 多层解决方案 Master 1 Slave 1 Slave 2 Slave 3 Master 2 Layer 1 Layer 2

57 典型的多层的例子 ARM DMA On-chip RAM Slave Mux Slave Mux DMA Slave AHB2APB
External Memory I/F UART Timer GPIO

58 多层的优势 并行访问提高了系统带宽 不是新标准 已有标准的互连实现 主控和从控象AHB一样,能够重复使用

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

60 设计考虑 对于不同的从控来说,带宽的绝大部分是在每一层上吗? 分离的片上存储器要并行访问 不同的层可以有不同的总线宽度
可以将瓶颈由总线移到单独的从控。 分离的片上存储器要并行访问 不同的层可以有不同的总线宽度 增加带宽的简单的方法 每一层可以是单个的或多个的主控 每层一个主控可以用AHB简化版来实现

61


Download ppt "AMBA 版本 2.0 (AHB/ASB 和 APB)."

Similar presentations


Ads by Google