2.1-AHB(简介与信号描述)

资料来源

(1) AHB总线协议(一)_weixin_33875839的博客-CSDN博客 【未阅】

(2) AHB_百度百科 (baidu.com)【未阅】

(3) AHB总线协议(一) - 迈克老狼2012 - 博客园 (cnblogs.com) 【未阅】

(4) AHB总线协议(二) - 迈克老狼2012 - 博客园 (cnblogs.com) 【未阅】

(5) AHB总线系列学习(一) - 程序员大本营 (pianshen.com) 【未阅】

(6) amba bus spec翻译.pdf

(7) AXI总线的Burst Type以及地址计算 | WRAP到底是怎么一回事?_Ericcoding的博客-CSDN博客【未阅】

(8) AHB总线规范详解.pdf

注1:注意AHB与AHB Lite的区别;

注2:该系列文章还不够全面,关于slave插入等待,仅涉及到了HREADY拉低这种短等待,没提到RETRY与SPLIT长等待;

1.介绍

(1) AHB(Advanced High-performance Bus)用于高性能、高时钟频率的系统结构,典型的应用如ARM核与系统内部的高速RAM, Nand Flash, DMA, Bridge的连接;

(2) APB(Advanced Peripheral Bus)用于连接外部设备,对性能要求不高,而考虑低功耗问题;

(3) ASB(Advanced System Bus)(用处??);

1.1关于协议

(1) 单master设计: 译码器监测master提供的地址,选择正确的slave;复用器的输出将相应的slave数据反馈给master;

(2) 多master设计:需要使用互连组件提供仲裁决定谁占用总线,路由从不同master到合适slave的信号;

 

 注1:AHB总线系统有master, slave, arbiter, 数据多路选择器(写数据与读数据分别由对应的选择器),地址控制信号多路选择器, 译码器;

注2:有需要占用总线的master向arbiter提出占用总线请求,arbiter授权给指定master; 任一时间周期只有一个master可以接入总线,对其指定的slave进行读写操作;

注3:arbiter将获得授权的master信息传递给地址控制信号多路选择器以及读写数据多路选择器,以选择哪个master接入总线;

注4:总线统一规划slave的地址,译码器根据master需要访问的地址选择哪个slave与master进行数据通信;

(3) master接口:提供地址和控制信息用于读写操作;

(4) slave接口:slave响应master发起的传输,使用HSELx选择译码器发出的信号,来控制什么时候响应总线传输,相当于片选; slave需要反馈一些信号,表明总线传输完成或延展(即目前不能传输完,需要增加时间完成),传输成功还是失败;

(5) 互连interconnect: 互连组件提供master和slave之间的连接单master系统只需要译码器和复用器mux;多master系统需要仲裁谁占用总线和信号路由(地址,控制和写数据信号都需要路由);

(6) 译码器:解析每次传输的地址(HADDR),提供选择参与传输slave的信号(HSEL_*),还提供复用器的控制信号,也就是选择对应slave的输出信号(HRDATA);

(7) 复用器:slave到master的复用器需要复用读数据总线和slave的响应信号,即从多个slave的读出数据和响应中选择合适的反馈给master,一次传输只进行一个master和slave的数据传输;

1.2操作

(1) master通过驱动地址和控制信号发起一次传输,这些信号表明传输地址,读或写,传输位宽和是否是突发传输的一部分;

(2) 传输可以是单次的,也可以是地址等大增加的突发传输(incrementing burst),还可以回环突发(wrap burst);

(3) 写数据总线将数据从master移向slave,读数据总线将数据从slave移向master;

(4) 每次传输包含地址阶段(address phase) (即一个地址和控制周期)和数据阶段(data phase)(一个或多个周期用于数据传输);

(5) slave不能提出地址阶段需要扩展的请求(master可以通过BUSY状态延迟地址阶段),也就是地址信号需要再处理,因此所有的slave必须能够在地址阶段采样地址信息;

(6) slave可以通过使用HREADY信号提出扩展数据阶段的请求,也就是没准备好,需要等待,HREADY允许slave有额外的时间准备采样数据(HREADY信号是由复用器传递给master,单复用器的HREADY信号则源于slave的HREADYOUT信号);

(7) slave使用HRESP信号表示一次传输的成败;

2.信号描述

2.1 master信号

(1) HADDR:发往slave和decoder,32位系统地址总线;

(2) HBURST:发往slave,该值表示突发传输是单次的还是一次突发传输的一部分;

(3) HMASTLOCK:???发往slave;

(4) HPROT:发往slave,该信号指出传输是取指令还是数据访问,传输是特权模式还是用户普通模式;(当extended_memory_types特性为true时,HPROT[6:4]起作用);

(5) HSIZE:发往slave,指出传输的大小,也就是字节byte,半字节half-byte,字word;

(6) HNONSEC:发往slave和decoder,指出传输是安全的,还是不安全的(在secure_transfers为true时,支持该信号);

(7) HEXCL:发往互斥访问监视器,???

(8) HMASTER:发往互斥访问监视器和slave,master标识符; 互连组件确保每个master有独一无二的标识(exclusive_transfers为true时才支持);

(9) HTRANS:发往slave,指出当前传输是idele, busy, non-sequential还是sequential;

(10) HWDATA:发往slave,写数据总线;

(11) HWRITE:发往slave,指出传输方向,高电平表示写,低电平则表示读,与地址信号有一样的时序,但在突发传输中需要保持不变;

2.2 slave信号

(1) HRDATA:发往复用器,在读操作中,读数据总线传输选中slave的数据到复用器,复用器然后将数据传至master;

(2) HREADYOUT:发往复用器,高电平表示传输完成,低电平可以扩展一次传输;

(3) HRESP:发往复用器,低电平表示传输没问题,高电平表明传输出错;

(4) HEXOKAY:发往复用器,表明互斥传输exclusive transfer成功还是失败;

2.3 译码器信号

(1) HSELx:发往slave,用于找到master需要的slave(每个slave都有自己的选通信号);

2.4 复用器信号

(1) HRDATA:发往master,由译码器选择;

(2) HREADY:发往master和slave,高电平表示前面的传输已经完成,由译码器选择合适的slave的HREADYOUT信号;

(3) HRESP:发往master,由译码器选择合适的slave的HRESP信号;

(4) HEXOKAY:发往master,由译码器选择;

3.传输

3.1基本传输

(1) 最简单的传输不包含等待状态,一次传输由地址及控制信号阶段与数据阶段组成;

注1:HCLK上升沿,master驱动地址和控制信号; HCLK下一周期上升沿,slave采样地址和控制信息;

注2:任意一次传输地址阶段,同时是上一次传输的数据阶段(总线地址和数据的交叠是总线流水线pipelined特点的基础);

(2)slave插入等待状态的传输;

注1:slave可以插入等待状态以有足够的时间完成传输;

注2:每个slave由HREADYOUT信号,在数据阶段驱动HREADY信号,互连负责将所有slave的HREADYOUT信号组合产生一个HREADY信号来控制整个传输进度;

注3:对于读操作,在等待状态下,slave不需要提供有效数据直至传输快要结束,即在传输的最后一个周期提供即可;

注4:对于写操作,在extended周期中或等待状态下,master需要保持数据稳定不变,参考图3-4;

 

注5:slave插入等待状态的传输的副作用是会影响到下一次传输的地址阶段,需要延长下一笔传输的地址周期(地址B的读操作过程中,插入了等待状态;这对地址C的操作造成了影响,地址C在地址B操作完成前需要保持不变);

3.2传输类型

(1) HTRANS=2'b00,空闲状态IDLE,主设备占用总线,但不需要数据传输,也没有进行传输;slave必须提供0等待的OKAY响应,并且master??slave??忽略该传输(两次burst传输中间主设备发IDLE);

(2) HTRANS=2'b01,忙传输BUSY,master可以在突发传输的中间插入空闲周期,表示master继续突发传输,但master还没有准备好下一次传输,下一次传输不能立即发生;这种情况下,突发传输中地址和控制信号必须反映下一次传输,也就是准备下一次传输的地址阶段;仅仅未定义长度的突发传输可以在最后一个周期进行忙传输???; slave必须提供0等待的OKAY响应,并且master??slave??忽略该传输;

(3) HTRANS=2'b10,非连续突发传输NON-SEQ,表明是单次传输或突发传输中的第一个;地址与控制信号和上一次传输没有关联(burst的其他拍是前一次地址的增加); 单次传输视为长度为1的突发传输,因此也视为非连续的;

(4) HTRANS=2'b11,连续突发传输SEQ;突发传输余下的都是连续的,地址和前一次传输有关,控制信号和前一次传输一样,但地址等于前一次传输地址加上传输的大小,传输的大小通过HSIZE信号反映;

注1:在图3-6中,T1-T2内,master无法进行第二拍读,插入BUSY状态来延迟第二拍,而slave则提供第一拍的数据;

注2:T2-T3内,master准备启动第二拍,进入SEQ状态,master忽略slave在读数据总线提供的任何数据;

注3:T3-T4内,master启动第三拍,slave提供第二拍的数据;

注4:T4-T5内,master启动最后一拍,slave不能完成传输,拉低HREADY来插入等待状态; T5-T6, slave提供第三拍的数据; T6-T7, slave提供最后一拍的数据;

 

posted on 2021-11-29 09:45  知北游。。  阅读(867)  评论(0编辑  收藏  举报

导航