【AMBA】AHB-Lite总线协议

这篇具有很好参考价值的文章主要介绍了【AMBA】AHB-Lite总线协议。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 基本结构

【AMBA】AHB-Lite总线协议
AHB-Lite的主要组成部分为:
(1)Master
(2)Slave
(3)Address Decoder
(4)slave-to-master multiplexor

(1) Master

【AMBA】AHB-Lite总线协议

(2) slave

【AMBA】AHB-Lite总线协议

(3) Address decoding

【AMBA】AHB-Lite总线协议

(4) slave-to-master multiplexor

【AMBA】AHB-Lite总线协议

2. 信号时序

AHB-Lite的一次传输,信号时序分为两步:
(1)Address Phase:Master发送地址和控制信号
(2)Data Phase:Master发送写数据/Slave发送读数据
其中,Address Phase不可主动被扩展,通常为一个cycle(不能通过拉低hready来扩展Address Phase);Data Phase可以主动扩展(slave通过拉低hready扩展Data Phase)

(1) 基本时序

【AMBA】AHB-Lite总线协议
基本操作为:
(1)在HCLK第一个上升沿,Master发送地址和控制信号
(2)Slave在第二个时钟上升沿采样地址和控制信号
(3)Slave采样了地址和控制信号后,驱动相应的HREADY电平。在第三个时钟周期Master采样相应的HREADY信号

读时序:
(1)在第一个时钟上升沿,Master发送地址和控制信号,HWRITE为低
(2)在第二个时钟上升沿,Master采样HREADY为高,进入Data Phase阶段
(3)在第三个时钟上升沿,Master采样HREADY为高,读出数据HRDATA,传输完成

写时序:
(1)在第一个时钟上升沿,Master发送地址和控制信号,HWRITE为高
(2)在第二个时钟上升沿,Master采样HREADY为高,进入Data Phase阶段,Master发送写数据HWDATA
(3)在第三个时钟上升沿,Master采样HREADY为高,传输完成

(2) wait state

【AMBA】AHB-Lite总线协议
读时序:
(1)在第一个时钟上升沿,Master发送地址和控制信号,HWRITE为低
(2)在第二个时钟上升沿,Master采样HREADY为高,进入Data Phase阶段,slave将HREADY拉低
(3)在第三个时钟上升沿,Master采样HREADY为低,扩展Data Phase
(4)在第四个时钟上升沿,Master采样HREADY为低,扩展Data Phase
(5)在第五个时钟上升沿,Master采样HREADY为高,读出数据HRDATA,传输完成

写时序:
(1)在第一个时钟上升沿,Master发送地址和控制信号,HWRITE为高
(2)在第二个时钟上升沿,Master采样HREADY为高,进入Data Phase阶段并发送写数据HWDATA
(3)在第三个时钟上升沿,Master采样HREADY为低,扩展Data Phase
(4)在第四个时钟上升沿,Master采样HREADY为高,传输完成

备注:
(1)此处Address A是wait state
(2)写操作—在扩展周期保持数据不变;读操作—在扩展周期不提供有效数据,直到传输快结束时才给出有效数据

3. 基本信号

信号 含义 所属组
HCLK 时钟信号,所有输入信号都在hclk上升沿进行 全局信号
HRESETn 复位信号,低电平有效
注:复位master时,需要保证此时HTRANS=idle
复位slave时需要保证HREADYOUT=high
全局信号
HADDR[31:0 32bit地址总线 master output
HBURST[2:0] 该信号表明传输的burst类型 master output
HMASTLOCK 当为高时,该信号表明当前传输为锁定序列的一部分 master output
HPROT[3:0] 该信号表明当前传输的privileged mode access、user mode access、opcode fetch、data access master output
HSIZE[2:0] 表明传输的大小,通常为byte、halfword、word master output
HTRANS[1:0] 传输类型,分为:IDLE/BUSY/NONSEQ/SEQ master output
HWDATA[31:0] master给slave的写数据 master output
HWRITE 指明传输方向。当hwrite为高时,表示写;当hwrite为低时,表示读 master output
HRDATA[31:0] slave返回master的读数据 slave output
HREADYOUT 当该信号为高时,表示该次传输完成 slave output
HRESP 该信号为高时,表示此次传输为OKAY;
当该信号为低时,表示此次传输为ERROR
slave output
HSELx slave的片选信号 slave input
HREADY 当该信号为高时,表示之前的传输已经完成 master input & slave input

(1) Transfer types

HTRANS[1:0] 传输类型 描述
2’b00 IDLE IDLE态表示不需要数据传输。当Master不想进行数据传输时,可以发送该传输状态。Slave忽略IDLE传输态,返回一个零延时的okay hresp
2’b01 BUSY BUSY态使得Master在burst传输中间插入idle(即burst中间暂停传输) 。该传输态表明Master正在进行burst操作,但是下一次操作还未开始。当Master使用BUSY传输态时,地址和控制信号反应和下一次burst传输信息保持一致。Slave忽略BUSY态,返回一个零延时的okay hresp
2’b10 NONSEQ 该传输态表示单次传输或者是burst传输的起始。地址和控制信号与之前的传输无关
2’b11 SEQ 该传输态表示burst传输。地址和控制信号与之前的传输相关,地址依次递增(hsize定义的递增大小)
注:地址的递增分为incr和wrap,见后面

信号时序

【AMBA】AHB-Lite总线协议

基本操作:
(1)T0-T1:NONSEQ传输态开始一次读取操作,为burst操作的第一拍
(2)T1-T2:Master插入BUSY态,延迟burst操作的第二拍,同时Slave提供第一拍的读数据
(3)T2-T3:Master开始burst传输的第二拍,传输态为SEQ,同时master忽略hrdata(BUSY态读回的数据,Master忽略掉)
(4)T3-T4:Master继续传输第三拍,Slave提供第二拍的hrdata
(5)T4-T5:Master传输第四拍,Slave将hready拉低,插入wait state
(6)T5-T6:Slave提供第三拍hrdata
(7)T6-T7:Slave提供第四拍hrdata

(2) Transfer size

HSIZE size(bits) 描述
3’b000 8 Byte
3’b001 16 Halfword
3’b010 32 Word
3’b011 64 Doubleword
3’b100 128 4-word line
3’b101 256 8-word line
3’b110 512 -
3’b111 1024 -

注:(1)HSIZE定义的传输大小必须要小于等于数据宽度
   (2)联合HSZIE和HBURST,可以定义wrapping bursts的地址边界
   (3)HSIZE和HADDR有完全相同的时序,在burst transfer中保持常数

(3) Burst operation

HBURST[2:0] Type Description
3’b000 SINGLE Single burst
3’b001 INCR Incrementing burst of undefined length
3’b010 WRAP4 4-beat wrapping burst
3’b011 INCR4 4-beat incrementing burst
3’b100 WRAP8 8-beat wrapping burst
3’b101 INCR8 8-beat incrementing burst
3’b110 WRAP16 16-beat wrapping burst
3’b111 INCR16 16-beat wrapping burst

注:(1)Master发送的burst操作最大不能超过1KB
  (2)地址边界=the number of beats in a burst * the size of the transfer,其中beats的大小由HBURST控制,传输带下由HSIZE控制

时序信号

(1) Four-beat wrapping burst,WRAP4

【AMBA】AHB-Lite总线协议
基本操作:

HBURST=WRAP4:burst four-beat
HSIZE=Word:地址递增值为0x4
地址边界:4-beat *word=16byte

T0-T1:NONSEQ传输态开始一次写传输,地址为0x38;为burst传输的第一beat
T1-T2:SEQ传输态继续burst传输的第二beat,地址递增为0x3C;同时Slave拉低0x38的HREADY,扩展0x38的Data Phase
T2-T3:0x38的传输完毕
T3-T4:SEQ传输态继续burst传输的第三beat,地址递增为0x30(WARP4对齐16byte边界);同时0x3C完成传输
T4-T5:SEQ传输态继续burst传输的第四beat,地址递增为0x34;同时0x30完成传输
T5-T6:0x34传输完毕

(2) Four-beat incrementing burst,INCR4

【AMBA】AHB-Lite总线协议
基本操作:

HBURST=INCR4:burst four-beat
HSIZE=Word:地址递增值为0x4
因为是incrementing burst,因此到达16byte地址边界后继续增加

T0-T1:NONSEQ传输态开始一次读传输,地址为0x38;为burst传输的第一beat
T1-T2:SEQ传输态继续burst传输的第二beat,地址递增为0x3C;同时Slave拉低0x38的HREADY,扩展0x38的Data Phase
T2-T3:HREADY为高,Slave给出0x38的读数据
T3-T4:SEQ传输态继续burst传输的第三beat,地址递增为0x40(INCR4,地址递增跨过16byte边界);同时Slave给出0x3C的读数据
T4-T5:SEQ传输态继续burst传输的第四beat,地址递增为0x44;同时Slave给出0x40的读数据
T5-T6:Slave给出0x44的读数据

(3) Eight-beat wrapping burst,WRAP8

【AMBA】AHB-Lite总线协议
基本操作:

HBURST=WRAP8:burst eight-beat
HSIZE=Word:地址递增值为0x4
地址边界:8-beat *word=32byte

T0-T1:NONSEQ传输态开始一次读传输,地址为0x34;为burst传输的第一beat
T1-T2:SEQ传输态继续burst传输的第二beat,地址递增为0x38;同时Slave给出0x34的读数据
T2-T3:SEQ传输态继续burst传输的第三beat,地址递增为0x3C;同时Slave给出0x38的读数据
T3-T4:SEQ传输态继续burst传输的第四beat,地址递增为0x20(WARP8对齐32byte边界);同时Slave给出0x3C的读数据
T4-T5:SEQ传输态继续burst传输的第五beat,地址递增为0x24;同时Slave给出0x20的读数据
T5-T6:SEQ传输态继续burst传输的第六beat,地址递增为0x28;同时Slave给出0x24的读数据
T6-T7:SEQ传输态继续burst传输的第七beat,地址递增为0x2C;同时Slave给出0x28的读数据
T7-T8:SEQ传输态继续burst传输的第八beat,地址递增为0x30;同时Slave给出0x2C的读数据
T8-T9:Slave给出0x30的读数据

(4) Eight-beat incrementing burst,INCR8

【AMBA】AHB-Lite总线协议

HBURST=INCR8:burst eight-beat
HSIZE=Halfword:地址递增值为0x2
因为是incrementing burst,因此到达16byte地址边界后,地址继续增加

T0-T1:NONSEQ传输态开始一次读传输,地址为0x34;为burst传输的第一beat
T1-T2:SEQ传输态继续burst传输的第二beat,地址递增为0x36;同时Slave给出0x34的读数据
T2-T3:SEQ传输态继续burst传输的第三beat,地址递增为0x38;同时Slave给出0x36的读数据
T3-T4:SEQ传输态继续burst传输的第四beat,地址递增为0x3A;同时Slave给出0x38的读数据
T4-T5:SEQ传输态继续burst传输的第五beat,地址递增为0x3C;同时Slave给出0x3A的读数据
T5-T6:SEQ传输态继续burst传输的第六beat,地址递增为0x3E;同时Slave给出0x3C的读数据
T6-T7:SEQ传输态继续burst传输的第七beat,地址递增为0x40(INCR8,地址递增跨过16byte边界);同时Slave给出0x3E的读数据
T7-T8:SEQ传输态继续burst传输的第八beat,地址递增为0x42;同时Slave给出0x40的读数据
T8-T9:Slave给出0x42的读数据

(4) Slave Response Signaling

Master发起一次transfer后,Slave控制该transfer如何工作。Master发起一次transfer之后,不能取消该transfer。Slave通过HRESP来反映transfer状态。

HRESP Response Description
0 OKAY 成功完成传输/扩展周期
注:HREADY表明该次传输是完成还是等待(wait state)
1 ERROR 传输过程中发生错误
注:Error response需要两个周期,在第二个周期HREADY为高

Transfer Response是由HRESP和HREADY组合完成的,组合行为
【AMBA】AHB-Lite总线协议
也就是说,Slave反应transfer的状态有三种方式
(1)立即完成(HREADY为高,HRESP为OKAY)
(2)插入一个或者多个wait states,等待完成(HREADY为低,HRESP为OKAY)
(3)返回error

Transfer done

HREADY为高(高电平),HRESP为OKAY(低电平)

Transfer pending

HREADY为低(低电平),HRESP为OKAY(低电平)
注:推荐Slave插入的wait state不超过16

Transfer Error

OKAY response一般在一个周期给出,Error response在两个周期给出。
第一个周期:HREADY为低(低电平),HRESP为ERROR(高电平)
第二个周期:HREADY为高(高电平),HRESP为ERROR(高电平)

Error response需要两个周期的原因是因为AHB-Lite总线的二级流水特性。当Slave开始返回一个ERROR响应的时候,Master已经发送了下一次transfer的地址。因此two-cycle error response使得Master在第二周期时将HTRANS设置为IDLE,Slave对IDLE态响应OKAY。
【AMBA】AHB-Lite总线协议
T0-T1:HREADY为高,HRESP为OKAY,传输完成
T1-T2:HREADY为低,HRESP为OKAY,传输等待(地址A的等待)
T2-T3:HREADY为低,HRESP为ERROR,传输失败,Error response的第一个周期(地址A写失败)
T3-T4:HREADY为高,HRESP为ERROR,传输失败,Error response的第二个周期(地址A写失败)
      Master将HTRANS设置为IDLE,地址B(Address Phase在T2处采样)的传输操作被取消
T4-T5:HREADY为高,HRESP为OKAY,传输完成(Slave对IDLE态不进行处理)

(5) Waited transfer

当Slave需要更多时间提供和采样数据时,使用Hready插入wait state。处于wait state状态时,master只能改变传输类型和地址。

Transfer type changes during wait states

当传输处于wait state时,Master只能在以下几种情况改变传输类型
  1.IDLE transfer
  2.BUSY transfer,fixed length burst
  3.BUSY transfer,undefined length burst

IDLE transfer

当传输处于wait state时,Master被允许将传输类型从IDLE更改为NONSEQ。当传输类型更改为NONSEQ,除非HREADY为高且Transfer不再处于wait state状态,否则Master不能再更改传输类型。
【AMBA】AHB-Lite总线协议

T0-T1:Master对地址A发起一次Single burst
T1-T2:Master对地址Y插入IDLE状态,Slave插入wait state(HREADY=LOW)
      此次wait state是地址A的状态
T2-T3:Master对地址Z插入IDLE状态
T3-T4:Master将传输状态更改为NONSEQ,并对地址B发起INCR4 burst操作
T4-T5:HREADY=LOW,传输处于wait state状态,Master不能更改HTRANS,将HTRANS保持为NONSEQ
T5-T6:HREADY=HIGH,Slave返回地址A的读数据DATA(A),Master开始INCR4传输的第一拍
T6-T7:HREADY=HIGH,Slave返回地址B的读数据DATA(B),Master开始INCR4传输的第二拍,将HTRANS更改为SEQ,给出地址B+4

BUSY transfer,fixed length burst

当传输处于wait state且burst长度固定时,Master被允许将传输类型从BUSY更改为SEQ。当传输类型更改为SEQ,除非HREADY为高且Transfer不再处于wait state状态,否则Master不能再更改传输类型。

注:由于BUSY态只能在两次连续的burst之间插入,因此这种情况只适用于burst长度固定的几种类型:
(1)INCR4,INCR8和INCR16
(2)WRAP4,WRAP8和WRAP16
【AMBA】AHB-Lite总线协议
T0-T1:Master对地址0x24发起INCR4操作
T1-T3:Master在地址0x28插入BUSY态,Slave插入wait state(HREADY=LOW)
      此次wait state是地址0x24的状态
T3-T4:Master将HTRANS更改为SEQ
T4-T5:HREADY=LOW,传输处于wait state状态,Master不能更改HREANS状态,保持为SEQ
T5-T6:HREADY=HIGH,Slave返回地址0x24的读数据DATA(0x24),Master开始传输INCR4第二拍,给出地址0x28
T6-T7:HREADY=HIGH,Slave返回地址0x28的读数据DATA(0x28),Master开始传输INCR4第三拍,给出地址0x2C

BUSY transfer,undefined length burst

当传输处于wait state且burst长度不固定(INCR)时,Master被允许将传输状态从BUSY更改为其他任何传输类型。如果更改为SEQ则该burst继续,如果更改为IDLE或NONSEQ则该burst终止。
【AMBA】AHB-Lite总线协议

T0-T1:Master对地址0x64发起INCR操作
T1-T3:Master对地址0x68插入BUSY态,Slave插入wait state(HREADY=LOW)
      此次wait state是地址0x64的状态
T3-T4:Master将HTRANS更改为NONSEQ,同时地址更改为0x10,HBURST更改为INCR4,结束INCR burst
T4-T5:HREADY=LOW,传输处于wait state状态,Master不能更改传输类型,将HTRANS保持为NONSEQ
T5-T6:HREADY=HIGH,Slave返回地址0x64的读数据DATA(0x64),Master开始INCR4传输的第一拍,给出地址0x10
T6-T7:HREADY=HIGH,Slave返回地址0x10的读数据DATA(0x10),Master开始INCR4传输的第二拍,给出地址0x14

Address changes during wait state

当传输为wait state时,Master只能在HTRANS发生变化时改变地址。但是当HTRANS=IDLE时,地址可以任意改变。
【AMBA】AHB-Lite总线协议
T0-T1:Master对地址A发起一次Single burst
T1-T2:Master对地址Y插入IDLE状态,Slave插入wait state(HREADY=LOW)
      此次wait state是地址A的状态
T2-T3:Master对地址Z插入IDLE状态
T3-T4:Master将传输状态更改为NONSEQ,并对地址B发起INCR4 burst操作
T4-T5:HREADY=LOW,传输处于wait state状态,Master不能更改HTRANS,将HTRANS保持为NONSEQ
T5-T6:HREADY=HIGH,Slave返回地址A的读数据DATA(A),Master开始INCR4传输的第一拍
T6-T7:HREADY=HIGH,Slave返回地址B的读数据DATA(B),Master开始INCR4传输的第二拍,将HTRANS更改为SEQ,给出地址B+4

(5) Protection control

HPROT[3]
Cacheable
HPROT[2]
Bufferable
HPROT[1]
Privileged
HPROT[0]
Dtat/Opcode
Description
- - - 0 Opcode fetch
- - - 1 Data access
- - 0 - User access
- - 1 - Privileged access
- 0 - - Non-bufferable
- 1 - - bufferable
0 - - - Non-cacheable
1 - - - Cacheable

如果主机不能提供明确的保护信息,则推荐使用:
1.Master设置HPROT=4’b0011,表示Non-cacheable,Non-bufferable,Privileged access,Data access
2.除非必须,Slave不使用HPORT

注:HPROT控制信号和address bus有相同的时序,在burst传输中要一直保持常数

4.参考文献

AMBA3 AHB-Lite文章来源地址https://www.toymoban.com/news/detail-468151.html

到了这里,关于【AMBA】AHB-Lite总线协议的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AMBA总线协议(8)——AHB(六):分割传输

            在之前的文章中,我们重点介绍了AHB传输的仲裁,首先介绍了仲裁相关的信号,然后分别介绍了请求总线访问,授权总线访问,猝发提前终止,锁定传输和默认主机总线,在本文中我们将继续介绍AHB的分割传输。 系列文章合集:AMBA总线协议(0)——目录与传送门

    2024年02月11日
    浏览(39)
  • AMBA总线协议(9)——AHB(七):终章

            在之前的文章中我们讲述了AHB协议的分割传输机制,它使得从机可以决定一次传输是否继续进行,以防止 传输的执行将占据大量的时钟周期,有效提高了总线的公平性与效率问题,本文中我们将一次性学习完AHB最后的内容,包括有复位,数据总线的位宽和接口设备

    2024年02月11日
    浏览(31)
  • 【AMBA】ARM总线-APB/AHB/AXI介绍

    什么是总线?首先,在学习AMBA总线之前,我们先对总线下一个定义。根据维基百科的定义:总线(Bus)是指计算机组件间规范化的交换数据(data)的方式,即以一种通用的方式为各组件提供数据传送和控制逻辑。根据chatgpt的解释: 总线(Bus)是计算机中用于传输数据、地址

    2024年02月12日
    浏览(46)
  • AMBA协议AXI-Lite(AXI-Lite介绍)

    AXI_Lite顾名思义即简化版的AXI协议,是对完整的AXI协议裁剪后的AXI协议; 特点: 突发长度永远是1,即只能单次读写,无法连续读写,常用于配置寄存器; 由于删减了逻辑,其资源也消耗较少; 地址映射,相较于AXI-Stream,AXI-Lite的每个数据读写都需要对应的地址; AXI_Lite的系

    2024年02月13日
    浏览(58)
  • FPGA-AMBA协议、APB协议、AHB规范、AXI4协议规范概述及它们之间的关系

    笔记记录,AMBA协议、APB协议、AHB规范、AXI4协议规范概述,只是概述描述,具体详细的协议地址传输、数据传输等内容将在下一章节详细说明。 AMBA(Advanced Microcontroller Bus Architecture)是一种由ARM公司提出的处理器总线架构,它定义了处理器、内存和外设之间的通信标准 。

    2024年02月04日
    浏览(35)
  • <AMBA总线篇> AXI总线协议介绍

    目录 01 AXI协议简介 AXI协议特性 AXI协议传输特性 02 AXI协议架构 AXI协议架构 write transaction(写传输) read tramsaction(读传输) Interface and interconnect 典型的AXI系统拓扑 03 文章总结 大家好,这里是程序员 杰克 。一名平平无奇的嵌入式软件工程师。 对于学习Xilinx FPGA(ZYNQ)而言,官方提

    2024年02月10日
    浏览(45)
  • AMBA总线协议AXI——学习笔记

    2023.3.25 2023.4.23 AXI :高级可拓展接口 高性能、高带宽、低延迟 单向通道体系结构 独立的地址和数据通道 支持多项数据交换。通过 并行执行burst操作 ,极大地提高了数据吞吐能力。 AXI4 :高性能内存映射需求(如读写DDR、使用BRAM控制器读写BRAM等),为了区别,有时候也叫这

    2023年04月23日
    浏览(53)
  • FPGA开发(4)——AXI_LITE总线协议

    对于axi总线的学习我主要是参考了赛灵思的ug1037文档以及arm的INI0022D手册,对其中的内容做了总结。 AXI是amba总线的一种,包含三种,axi full、axi lite和axi stream。 AXI工作:axi接口包含了五组通道,分别是读地址、写地址、读数据、写数据以及写响应。数据可以在主机和从机中双

    2024年01月16日
    浏览(53)
  • 【ARM AMBA AXI 入门 15 -- AXI-Lite 详细介绍】

    请阅读 【ARM AMBA AXI 总线 文章专栏导读】 AMBA AXI4 规范中包含三种不同的协议接口,分别是: AXI4-Full AXI4-Lite AXI4-Stream 上图中的 AXI FULL 和 AIX-Lite 我们都把它们叫做 Memory map, memory map的协议是可以寻址的,它是有地址的,它每次的访问都是针对内存中的一个

    2024年02月04日
    浏览(48)
  • stm32中的AHB、APB1、APB2分别属于计算机三大总线数据总线、地址总线和控制总线中的哪一种?

    最近在看计算机体系结构和stm32,对于AHB、APB1、APB2总线找不到在计算机体系结构中的属于,于是深入探究了AHB、APB1、APB2和计算机三大总线数据总线、地址总线和控制总线的关系。 AHB=Advanced High Performance Bus,译作高级高性能总线。AHB 用于高性能模块(如CPU、DMA和DSP等)之间的连

    2024年02月10日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包