高级高性能总线(Advanced High-performance Bus, AHB)

目录

  • 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之一。

高级高性能总线(Advanced High-performance Bus, AHB)_第1张图片

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

如下图所示

高级高性能总线(Advanced High-performance Bus, AHB)_第2张图片
发出的信号如下所示,常用的信号给出了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反馈

如下图所示

高级高性能总线(Advanced High-performance Bus, AHB)_第3张图片

发出的信号如下:

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

高级高性能总线(Advanced High-performance Bus, AHB)_第4张图片

3.2. 多Manager系统

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

单总线

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

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

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

高级高性能总线(Advanced High-performance Bus, AHB)_第5张图片

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

高级高性能总线(Advanced High-performance Bus, AHB)_第6张图片

多总线(Bus Matrix)

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

高级高性能总线(Advanced High-performance Bus, AHB)_第7张图片
或者是

高级高性能总线(Advanced High-performance Bus, AHB)_第8张图片

注意上图中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就可以发生变化

高级高性能总线(Advanced High-performance Bus, AHB)_第9张图片

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

高级高性能总线(Advanced High-performance Bus, AHB)_第10张图片
可以发现上面几个图中的data phase时,控制信息可以发生改变。如果data phase时,控制信号提供下一次传输的控制信息就可以实现两拍的pipeline。

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

高级高性能总线(Advanced High-performance Bus, AHB)_第11张图片

如上图,传输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<

注意必须保证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传输。

高级高性能总线(Advanced High-performance Bus, AHB)_第12张图片

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有效。

高级高性能总线(Advanced High-performance Bus, AHB)_第13张图片

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任意就行。

高级高性能总线(Advanced High-performance Bus, AHB)_第14张图片
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中循环

高级高性能总线(Advanced High-performance Bus, AHB)_第15张图片

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

W r a p B o u n d a r y = i n t ( H A D D R W R A P ⋅ 2 H S I Z E [ 2 : 0 ] ) ⋅ W R A P ⋅ 2 H S I Z E Wrap Boundary = int(\frac{HADDR}{WRAP·2^{HSIZE[2:0]}})·WRAP·2^{HSIZE} WrapBoundary=int(WRAP2HSIZE[2:0]HADDR)WRAP2HSIZE

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

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

回环不等式的意思就是HADDR在 [ ′ h 0 , ′ h 2000 ] ['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)

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

高级高性能总线(Advanced High-performance Bus, AHB)_第16张图片

将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的下一拍。

高级高性能总线(Advanced High-performance Bus, AHB)_第17张图片

高级高性能总线(Advanced High-performance Bus, AHB)_第18张图片

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

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

高级高性能总线(Advanced High-performance Bus, AHB)_第19张图片

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

你可能感兴趣的:(标准总线接口协议,stm32,嵌入式硬件,数字IC,IC验证,架构)