1. 简介
AHB总线标准是AMBA总线标准的一部分,AMBA总线标准是ARM公司提出的总线标准,被大多数SoC规划选用,它规则了AHB (Advanced High-performance Bus)、ASB (Advanced System Bus)、APB (Advanced Peripheral Bus)。AHB用于高功用、高时钟频率的体系结构,典型的运用如ARM核与体系内部的高速RAM、NAND FLASH、DMA、Bridge的衔接。APB用于衔接外部设备,对功用要求不高,而考虑低功耗问题。ASB是AHB的一种代替计划。
1.1 AHB总线的架构
AHB总线的强壮之处在于它能够将微操控器(CPU)、高带宽的片上RAM、高带宽的外部存储器接口、DMA总线master、各种具有AHB接口的操控器等等衔接起来构成一个独立的完好的SOC体系,不仅如此,还能够经过AHB-APB桥来衔接APB总线体系。AHB能够成为一个完好独立的SOC芯片的骨架。
下图是一个典型的AHB体系总线的结构示意图
1.2 AHB根本特性
Burst传输
Split事务处理
单周期master移送
单一时钟沿操作
无三态
更宽的数据总线装备(64/128)
流水线操作
可支撑多个总线主设备(最多16个)
2. AHB总线的组成
AHB总线由Master、Slave和Infrastructure构成。Infrastructure由arbiter、数据多路、地址操控多路、译码器构成。
主设备Master
建议一次读/写操作
某一时刻只答应一个主设备运用总线
从设备Slave
呼应一次读/写操作
经过地址映射来挑选运用哪一个从设备
裁定器arbiter
答应某一个主设备操控总线
译码器decoder
经过地址译码决议挑选哪一个从设备
总线能够分为三组
写数据总线(HWDATA)
读数据总线(HRDATA)
地址操控总线(HADDR)
3. 信号描绘
Name | Source | To | Description |
HCLK | clock source | 各module | 总线时钟,上升沿采样 |
HRESETn | reset controller | 各module | 总线复位,低电平有用 |
HADDR[31:0] | Master | decoder mux to slave arbiter |
32位体系地址总线 |
HTRANS[1:0] | Master | mux to slave | 当时传输类型NONSEQ, SEQ, IDLE, BUSY |
HWRITE | Master | mux to slave | 1为写,0为读 |
HSIZE[2:0] | Master | mux to slave | 每一个transfer传输的数据巨细,以字节为单位,最高支撑1024位 |
HBURST[2:0] | Master | mux to slave | burst类型,支撑4、8、16 burst,incrementing/wrapping |
HPROT[3:0] | Master | mux to slave | 维护操控信号,需求slave带维护功用,一般不必 |
HWDATA[31:0] | Master | mux to slave | 写数据总线,Master到Slave |
HRDATA[31:0] | Slave | mux to master | 读数据总线,Slave到Master |
HREADY | Slave | mux to master arbiter |
高:Slave指出传输完毕 低:Slave需延伸传输周期 |
HRESP[1:0] | Slave | mux to master arbiter |
Slave发给Master的总线传输状况OKAY, ERROR, RETRY, SPLIT |
HSELx | Decoder | slave | slave挑选信号 |
AHB裁定信号
Name | Source | To | Description |
HBUSREQx | Master | arbiter | master给裁定器的恳求取得总线运用权的恳求信号,最多支撑16个master |
HLOCKx | Master | arbiter | 假如一个master期望自己在传输期间不期望丢掉总线,则需求向裁定器发送这个确认信号 |
HGRANTx | arbiter | master | 授权信号,当时bus master x的优先级最高。当HREADY和HGRANTx一起为高时,master获取体系总线的权力 |
HMASTER [3:0] | arbiter | 具有split功用的slave | 裁定器为每一个master分配的ID,指出哪个主设备正在进行传输,供给进行split的信息 |
HMASTLOCK | arbiter | 具有split功用的slave | 标明当时的master正在履行Locked操作。这个信号和HMASTER有这相同的时序 |
HSPLITx[15:0] | slave | arbiter | 从设备用这个信号告知裁定器哪个主设备运转从头测验一次split传输,每一位对应一个主设备 |
4. 总线操作
有需求占用总线的Master向arbiter宣布恳求,arbiter授权给指定的master。任一时刻周期只要一个master能够接入总线,对其指定的slave进行读写操作。
取得授权的总线开端AHB传输,首要宣布地址和操控信号,供给地址信息、传输方向、带宽和burst类型。总线统一规划slave的地址,译码器依据地址和操控信号确认哪个slave与master进行数据通信。数据传输经过数据总线完结。为防止呈现三态总线,AHB将读写总线分隔,写数据总线用于从master到slave的数据传输,读数据总线用于从slave到master的数据传输。每笔传输包含一个地址和操控周期,一个或多个数据周期。地址和操控周期不能被扩展,因而slave有必要在一个周期内采样地址信号。数据周期能够经过HREADY信号扩展,但HREADY为低时给传输参加一个等候状况以使slave取得额定的时刻来供给或采样数据,别的slave经过呼应信号HRESP反映传输状况。
一般状况下master完结完好的burst传输,arbiter才会授权给其他的master接入总线,然而为防止过大的判定推迟,arbiter也或许打断burst传输。在这种状况下master有必要再次接入总线以进行中止的burst剩下部分的传输。
5. 根本传输
一笔传输由如下两部分组成:
地址阶段:一个周期
数据阶段:一个或多个周期,由HBURST信号决议需求几个有用周期,能够由HREADY宣布恳求延伸一个周期。
5.1 没有等候状况的single transfer
第一个周期的上升沿,master驱动地址和操控信号;
第二个周期的上升沿,slave采样地址和操控信号,并将HREADY拉高;
假如是写操作,master会在第二个周期的上升沿传输要写入的数据;
假如是读操作,slave会在HREADY信号拉高后将读取的数据写入总线;
第三个周期的上升沿,
假如是写操作,master获取HREADY高信号,标明slave已成功接纳数据,操作成功;
假如是读操作,master获取HREADY高信号,标明此刻的读数据有用而且接纳下来,操作成功。
需求留意,HREADY信号在数据有用期间有必要为高,而且延续到第三个周期的上升沿之后,保证master的正确采样。
5.2 slave刺进等候状况的single transfer
slave能够及时处理master恳求,但也或许存在slave太慢不能当即处理的状况。这时需求让master略微等一等,需求slave刺进一些等候的状况。如下图所示,HREADY信号在第二和第三周期拉低,意在告知master,slave不能当即处理,需求master等候2个周期。在这里需求留意2点:
假如是写操作,master需求在等候期间坚持写数据不变,直到本次传输完结;
假如是读操作,slave不需求一开端就给出数据,仅当HREADY拉高后才给出有用数据。
5.3 多个single transfer的pipeline操作