目录

  • 1. 功能介绍
  • 2. 信号描述
    • 2.1. Manager
    • 2.2. Subordinate
    • 2.3. Interconnect
      • Decoder
      • Multiplexor
  • 3. 架构
    • 3.1. 单Manager系统
    • 3.2. 多Manager系统
      • 单总线
      • 多总线(Bus Matrix)
  • 4. 逻辑设计
    • 4.1. 基本传输
    • 4.2. 传输配置
      • HSIZE[2:0]
      • HTRANS[1:0]
      • HBURST[2:0]

针对AHB进行介绍

1. 功能介绍

主要针对高效率、高频宽及快速系统模块所设计的总线,相比于APB的200MHZ以下的工作频率,AHB最快能达到500MHZ、600MHZ

通信可为多主多从模式,其中常见的AHB Slave设备可以是内存设备、外部存储接口(External Memory Interfaces, EMIF)和高带宽外设。 而低带宽外设,通常作为高级外设总线(Advanced Peripheral Bus, APB)的Slave,而APB的Master则是通过AHB2APB桥接器实现连接,即AHB2APB Brige是AHB的Slave之一。

AHB Master设备则是微处理器(Micro Process Unit, MPU)、CPU、芯片或芯片外的内存模块、直接存储器访问(Direct Memory Access, DMA)模块、以太网(MAC Ethernet)等

AHB架构包含三种角色,Manager、interconnects和Subordinate

AHB具备实现高性能、高时钟频率系统所需的功能,包括:

数据宽度(bits) 地址宽度(bits) 读写通道 主从体系 传输协议 时序 互联
AHB 可配置为32、64、128、256、512、1024 常用32 读写地址共用,不支持读写并行 多主多从,仲裁机制 pipeline流水传输、分裂传输、 burst突发传输、 乱序访问、 byte、半字(16bit)、字(32bit)甚至更大的可配置数据位宽、 大小端对齐、 不支持非对齐操作 同步 多路

以及

● 单时钟沿操作

● 字节寻址

● 非三态(Non- tristate)实现

2. 信号描述

Global signals无非就是时钟和复位

Source Signal Width(bits) Description
CLOCK HCLK 1
System bus reset HRESETn 1 低电平复位

2.1. Manager

如下图所示


发出的信号如下所示,常用的信号给出了Description

Source Signal Destination Width(bits) Description
Manager HADDR Subordinate and decoder ADDR_WIDTH Subordinate内寄存器地址,建议32bits
HBURST Subordinate HBURST_WIDTH 指明burst时的传输次数以及地址如何递增,HBURST_WIDTH必须为0或3
HMASTLOCK Subordinate 1
HPROT Subordinate HPROT_WIDTH
HSIZE Subordinate 3 传输数据的位宽
HNONSEC Subordinate and decoder 1
HEXCL Exclusive Access Monitor 1
HMASTER Exclusive Access Monitor and Subordinate HMASTER_WIDTH
HTRANS Subordinate 2 传输类型,可为IDLE、BUSY、NONSEQUENTIAL、SEQUENTIAL
HWDATA Subordinate DATA_WIDTH 建议为32、64、128、256
HWSTRB Subordinate DATA_WIDTH/8 HWDATA的字节选通
HWRITE Subordinate 1 高为写,低为读

2.2. Subordinate

Decoder的HSELx信号实现对某个Subordinate筛选。Subordinate主要任务是将传输情况向Manager反馈

如下图所示

发出的信号如下:

Source Signal Destination Width(bits) Description
Subordinate HRDATA Multiplexor DATA_WIDTH 读操作时,HRDATA发送给Multiplexor,然后Multiplexor发送给Manager
HREADYOUT Multiplexor 1 拉高时表示控制信息采样完毕、写数据获取完毕、读数据有效,可用于延长传输时钟数反压
HRESP Multiplexor 1 用于向Manager报告传输是OKAY还是ERROR
HEXOKAY Multiplexor 1 如果使用Exclusive Transfer,那么该信号表明Exclusive Transfer是否OKAY

2.3. Interconnect

主要实现Manager和Subordinate的通信,包括Arbitor、Decoder和Multiplexor

一个Manager和多个Subordinate之间的通信只需一对Decoder和Multiplexor

如果是多个Manager和多个Subordinate,则还需要仲裁器Arbitor

Decoder

解码器,以选择正确的Subordinate实现传输,同时实现对Multiplexor的控制

发出的信号如下:

Source Signal Destination Width(bits) Description
Decoder HSELx Subordinate 1 用于对Subordinate片选,有时该信号也可提供给Multiplexor以实现读反馈

Multiplexor

多路器,受到Decoder的控制,以实现读数据和读响应信号从Subordinate到Manager正确传输。

发出的信号如下:

Source Signal Destination Width(bits) Description
Multiplexor HRDATA Manager DATA_WIDTH 读数据总线
HREADY Manager and Subordinate 1 通知Manager和所有的Subordinates上一次传输成功
HRESP Manager 1 传输反馈信号
HEXOKAY Manager 1 如果使用Exclusive Transfer,那么该信号表明Exclusive Transfer是否OKAY

3. 架构

描述AHB中Manager、Subordinate、Decoder和Multiplexer之间的通信架构

3.1. 单Manager系统

即一Manager多Subordinates,需要一对DecoderMultiplexer

图中Decoder用于在address phase对Manager发送的HADDR进行解码以对正确的Subordinate进行片选。

所以这个HADDR是包括Slave地址和Slave内部寄存器的地址,这一点与APB不同。
APB的Master既有psel,又有paddr,所以APB是通过psel片选Slave、通过paddr选择那个Slave内的寄存器

图中的Multiplexor则是将相应的Subordinate的HRDATA数据返还给Manager

3.2. 多Manager系统

如果是多Manager系统,就需要对多Manager个的访问进行调度。

单总线

单总线的意思是,虽然整个架构有多个Manager和多个Subordinate,但是任意时刻只能有一个Manager与一个Subordinate占用总线进行通信。

如下图,架构中的Arbiter就用来决定哪个Manager占用总线与Slave进行通信。

AHB中的HSELx和HADDR决定了哪个Slave被访问
这个很类似半双工模式,可以发可以收,但二者互斥

又或者是如下这个架构,图中Memory Interface、ARM processor、on-chip RAM、DMA bus master和AHB2APB Bridge,都占用一根AHB总线。

多总线(Bus Matrix)

如果想实现多个Manager与多个Slave同时通信,可以使用总线矩阵bus-matrix的形式实现调度,如下图


或者是

注意上图中AHB interconnect是AHB Manager与AHB Subordinate的桥梁,对Manager和Subordinate都有HREADY输出。

对于AHB Manager来说,AHB interconnect中的HREADY用于反应AHB Subordinate的HREADYOUT,或者是反应AHB interconnect中正在仲裁。

对于AHB Subordinate来说,AHB interconnect中的HREADY也可用于反应AHB Subordinate的传输

4. 逻辑设计

AHB的一次数据读写包括address phase和data phase两部分。

address phase只传输地址和控制信号,仅一个hclk cycle,data phase只传输数据,hready反压时可持续多个hclk。

4.1. 基本传输

如下图,控制信息在address phase只持续一拍,且在data phase就可以发生变化

带反压的,HREADY表示的是HADDR等控制信息被获取、HRDATA有效、或是HWDATA被获取


可以发现上面几个图中的data phase时,控制信息可以发生改变。如果data phase时,控制信号提供下一次传输的控制信息就可以实现两拍的pipeline。

即上一次传输的data phase同时也是下一次传输的address phase。

如上图,传输B的data phase被反压,传输C的address phase就被延时
AHB单次传输最快需要2拍,APB单次传输最快也是2拍。但是AHB可以实现pipeline传输n次最快需要n+1拍,而APB最快则是2n拍,而且AHB的工作频率也比APB块

4.2. 传输配置

AHB的接口中提供了许多信号可对传输进行配置,以实现不同类型的传输,下面一一介绍

HSIZE[2:0]

表示传输的数据宽度,如下表

且满足Transfer Data Size(bits) == 8<<HSIZE (bits) == 2 ^ HSIZE (bytes);

注意必须保证PWDATA和PRDATA的位宽大于HSIZE设定的传递位宽才能起作用。

HSIZE[2:0] Transfer Data Size Description
3'b000 8 bits = 1 Byte 数据传输有效大小为1 Byte
3'b001 16 bits = 2 Byte 数据传输有效大小为1 Half Word
3'b010 32 bits = 4 Byte 数据传输有效大小为1 Word
3'b011 64 bits = 8 Byte 数据传输有效大小为1 DoubleWord
3'b100 128 bits = 16 Byte 数据传输有效大小为4 Word
3'b101 256 bits = 32 Byte 数据传输有效大小为8 Word
3'b110 512 bits = 64 Byte 数据传输有效大小为16 Word
3'b111 1024 bits = 128 Byte 数据传输有效大小为32 Word

每传输大小为Transfer Data Size(Byte)的数据,按字节寻址时地址变化的大小就为Transfer Data Size(Byte)

HTRANS[1:0]

表示此次传输的传输类型,HTRANS一般是2bit,共有四种可选类型。

HTRANS[1:0] Type Description
2'b00 IDLE 空闲,表示不传输
2'b01 BUSY 在burst传输中,Master要求中断传输几拍。在BUSY期间,Master必须保持下一次传输的控制信息,Slave必须反馈不带反压的OKAY。不常用
2'b10 NONSEQ **表示单次传输,或者是burst传输的第一次传输**,且控制信号与之前的传输无关
2'b11 SEQ 表示burst传输的第二次传输到最后一次传输,burst传输的地址与上一次地址有关(由HBURST决定如何相关)

时序图如下,其中HBURST中的INCR表示拍数无限制的burst传输。

T0~T1: burst传输的第一拍,必须是NONSEQ类型

T1~T2: Master要在burst传输中中断一会因此HTRANS为BUSY。注意此时Master提供了下次传输的控制信息

T2~T3: Master恢复burst传输,因此HTRANS为SEQ类型,但是控制信息与BUSY状态下相同。

T3~T6: 持续的burst传输,地址递增

HBURST[2:0]

表示burst传输的类型和次数,其中类型包括三种

SINGLE:单次传输,非burst传输。

由于不是burst,所以HTRANS必须是NONSEQ。SINGLE传输之后,可以是IDLE,也可以是NONSEQ开启下一次传输。

注意T3~T6的反压,因为Manager检测到HADDR为A的传输还没有数据读出,所以HADDR为B的传输必须延时,直到检测到HREADY为高,表示此时HADDR为A时Slave的读出数据HRDATA有效。

INCR:递增传输。即burst传输中,每次传输的HADDR一直是上一次传输HADDR加上HSIZE(Byte)·('h1)。但是一次burst传输寻址空间禁止大于1KB

例如在一次burst传输中,上次传输的HADDR是8’h40,HSIZE为3’b001,那么这次传输的HADDR就应该是8’h42

波形图如下,两次连续的INCR传输可以直接用NONSEQ接起来。如果一次INCR结束之后,下一拍不立刻进行传输,就可以令HTRANS为IDLE,HBURST任意就行。


burst中途如果Manager需要忙于其他事情,可以令HTRANS为BUSY,这个波形可借鉴WRAP

WRAP:回环传输。即burst传输的HADDR变化必须在一个离散范围的内。如果不超过最大值,那么每次传输的HADDR一直是上一次传输HADDR加上HSIZE(Byte)·('h1)。如果超过了最大值,HADDR就回到最小值。

即burst传输时地址永远在一个内离散集合内循环
例如HBURST = WRAP4、HSIZE = WORD,HTRANS=NONSEQ时HADDR = 8’h34,那么这次burst传输只能持续4拍。若第一次传输时有:HTRANS=NONSEQ,HADDR = 8’h34;则必须有第二次,HTRANS=SEQ,HADDR = 8’h38;第三次,HTRANS=SEQ,HADDR = 8’h3C;第四次,HTRANS=SEQ,HADDR = 8’h30。
即在上述HBURST、HSIZE、HTRANS的配置下,HADDR只能在8’h30、8’h34、8’h38、8’h3C中循环

那么如何确定HADDR回环的边界呢?记住一个公式:

WrapBoundary=int(HADDRWRAP⋅2HSIZE[2:0])⋅WRAP⋅2HSIZEWrap Boundary = int(\frac{HADDR}{WRAP·2^{HSIZE[2:0]}})·WRAP·2^{HSIZE}WrapBoundary=int(WRAP⋅2HSIZE[2:0]HADDR​)⋅WRAP⋅2HSIZE

这个回环不等式是什么意思呢?首先,由于是按字节寻址,所以HADDR的可取的值一定可构成一个等差数列,这个公差恰好就为HSIZE(Byte),也就是2HSIZE[2:0]2^{HSIZE[2:0]}2HSIZE[2:0]。

例如传输数据位宽为HSIZE(Byte) = 2,那么HADDR可取’h00、'h02、'h04、'h08、…

回环不等式的意思就是HADDR在[′h0,′h2000]['h0,'h2000][′h0,′h2000]内按照公差HSIZE(Byte)构成的等差数列中,每WRAP个HADDR构成一个回环

AHB要求burst传输HADDR不能超过1KByte边界,1KByte = 'h2000
所以说回环边界一定是WARP·HSIZE(Byte)的整数倍。那么对于一个HADDR,它所在的回环边界一定是HADDR除以WARP·HSIZE(Byte)的商部分乘以WARP·HSIZE(Byte)

如下图,红框表示回环的范围

将burst类型和次数合在一起就是HBURST

HBRUST[2:0] Type Description
3'b000 SINGLE 传输1次
3'b001 INCR 无限次burst传输,HADDR以HSIZE(Byte)·('h1)公差递增直到1KByte
3'b010 WRAP4 4次burst传输,HADDR以HSIZE(Byte)·('h1)公差回环递增
3'b011 INCR4 4次burst传输,HADDR以HSIZE(Byte)·('h1)公差递增
3'b100 WRAP8 8次burst传输,HADDR以HSIZE(Byte)·('h1)公差回环递增
3'b101 INCR8 8次burst传输,HADDR以HSIZE(Byte)·('h1)公差递增
3'b110 WRAP16 16次burst传输,HADDR以HSIZE(Byte)·('h1)公差回环递增
3'b111 INCR16 16次burst传输,HADDR以HSIZE(Byte)·('h1)公差递增

下面给出几个时序图,注意burst最后一次传输的数据,一定在最后一个SEQ的下一拍。

中途Manager忙一下可以加个BUSY。注意由于HADDR为0x24的读出数据还没检测到,所以T3~T6有个延时。

如果0x24的HRDATA在HTRANS为BUSY期间出现,且HREADY为高,Manager也应该能获取该HRDATA。

AHB的学习笔记1-两级流水线和Burst传输
AHB总线笔记(二)

高级高性能总线(Advanced High-performance Bus, AHB)相关推荐

  1. AHB(Advanced High Performance Bus)协议规范

    AHB(Advanced High Performance Bus)协议规范 参考:ARM (IHI 0033B.b) AMBA 5 AHB Protocol Specification : AHB5 ...

  2. 【翻译】StreamDM:基于Spark Streaming的高级数据挖掘 StreamDM: Advanced Data Mining in Spark Streaming

    [翻译]StreamDM:基于Spark Streaming的高级数据挖掘 StreamDM: Advanced Data Mining in Spark Streaming 摘要 Abstract ...

  3. 简约不简单:高级时钟插件Advanced Clock Widget Pro

    今天分享的是一款非常简约和小巧的桌面时钟,可谓是非常不错! 高级时钟插件Advanced Clock Widget Pro是一款安卓平台的桌面数字时间插件,软件本身非常小巧,只有60K左右,它除了样式 ...

  4. 高级外围总线 5.0(Advanced Peripheral Bus, APB)

    目录 1. 功能介绍 2. 架构 3. 逻辑设计 3.1. 写传输 ACCESS phase 多于一个周期 写入选通 Requester.PSTRB 写错误 Completer.PSLVERR 3.2 ...

  5. MySQL高级 —— 高性能索引

    引言 最近一直在抱着<高性能MySQL(第三版)>研究MySQL相关热点问题,诸如索引.查询优化等,这阶段的学习是前一段时间MySQL基础与官方的"阅读理解"的进一步延 ...

  6. AMBA总线协议-结合ahb-master对ahb协议的理解

    本文参考了github上的项目和网络上的其他资料,githbu原项目链接如下: GitHub - seabeam/yuu_ahb: UVM AHB VIP (githubjs.cf) 1.对ahb-d ...

  7. Spring Cloud学习:07消息总线(Spring Cloud Bus)

    2019独角兽企业重金招聘Python工程师标准>>> 1 消息总线介绍 消息总线是一种通信工具,可以在机器之间互相传输消息.文件等.消息总线扮演着一种消息路由的角色,拥有一套完备的 ...

  8. 树莓派高级开发------总线地址、物理地址和虚拟地址的认识

    一.微机总线地址 百度百科的解释:地址总线 (Address Bus:又称:位址总线) 属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存 ...

  9. SpringCloud 入门教程(十):和RabbitMQ的整合 -- 消息总线Spring Cloud Netflix Bus

    在本教程第三讲Spring Cloud 入门教程(三): 配置自动刷新中,通过POST方式向客户端发送/refresh请求, 可以让客户端获取到配置的最新变化.但试想一下, 在分布式系统中,如果存在很 ...

最新文章

  1. 2022-2028年中国农副产品行业市场供需规模及未来前景分析报告
  2. Java--------------Mysql中时间按要求查询
  3. python阻塞和非阻塞_Python基础必备知识:同步异步阻塞非阻塞
  4. LCD RGB 控制技术讲解 — 时钟篇(上)
  5. spring 注解说明以及@Resource和@Autowired的区别
  6. ffplay.c学习-2-数据读取线程
  7. Java多线程编程-(4)-线程间通信机制的介绍与使用
  8. php地理位置辐射范围,基于路网距离的城市辐射范围确定方法
  9. python pip处理
  10. android设置访问internet权限
  11. Flowable 数据库表结构 ACT_RU_EVENT_SUBSCR
  12. 李飞飞最新研究成果!斯坦福正在用算法判断政治倾向
  13. GateWay程序分析04_Delay.h
  14. text——Android下的默认字体详解
  15. 数据分析---统计学基础知识
  16. pdf裁边app_PDF裁剪怎么使用?
  17. 计算机硬盘图标怎么更改,Win7硬盘图标怎么改 win7修改硬盘盘符图标的方法
  18. android egl使用方法,Android EGL整理
  19. ubuntu16.04 重装系统后要做的事情总结
  20. c语言中short作用,C语言short

热门文章

  1. web前端全栈0基础到精通(祺)02
  2. android象棋 csdn,第一个安卓项目 | 中国象棋demo学习
  3. 如何用记事本编写java
  4. java服务端获取客户端ip(代理)
  5. 关闭页面时向后台发送消息
  6. Chroma from Luma 预测方法总结
  7. mysql 表名批量转大写_(转)mysql数据库表名批量修改大小写
  8. 修改协议栈内容来同时使用两个串口
  9. 软件c语言知识竞赛新闻稿,【第十二届科技文化节】C语言知识竞赛
  10. 2021-11-27 学习的打卡学习第五天(比赛总结/总结失败)