大家好,欢迎来到IT知识分享网。
- AMBA-AHB信号:
- 小写n表示低电平有效;
- 前缀T表示与测试有关的信号;
- AHB信号列表:
- 一个时钟源:HCLK;
- 一个复位控制器:HRESETn;
- 七个主机信号:HADDR[31:0]、HTRANS[1:0]、HWRITE、HSIZE[2:0]、HBURST[2:0]、HPROT[3:0]、HWDATA[31:0];
- 一个译码器信号:HSETx:从机选择;
- 三个从机信号:HRDATA[31:0]、HREADY、HRESP;
- 当有多个主机存在就需要仲裁器来对主机的操作进行选择(x表示信号的来源模块):
-
AHB总线互联
-
AMBA AHB总线协议设计使用一个中央多路选择器互联方案。由仲裁器决定哪个主机可以发送接收信号;由译码器来决定对读写数据和多路信号选择器进行响应。
-
下面是一个三主机四从机的AMBA AHB设计:
-
-
- AHB操作概况:
- 总线主机向仲裁器发送请求,仲裁器指示总机何时被授予使用总线:在AHB开始传输之前总线主机必须被授权使用总线;
- 被授权的总线主机通过驱动地址和控制信号发起一次AHB传输;
- 这些信号包括:地址、方向、传输宽度、突发传输;
- 突发传输:
- 增量突发:在地址边界不回环,以固定增量的方式不断传输;
- 回环突发:在特定的边界上回环;
- 在传输中从机可以通过HRESP[1:0]对主机的传输进行响应
- RESP[1:0]:
- OKEY: 表示正常,并且HREADY变高时表示传输成功完成;
- ERROR: 表示传输错误;
- RETRY 和 SPLIT 表示传输不能立即完成,主机应该继续尝试传输。
- RESP[1:0]:
- 在常规操作中主机被允许在仲裁器授予另一个主机访问总线之前完成所有的传输,且为了避免过多的仲裁延时,当前突发可以被打断,剩余的的传输必须由当前主机重新向仲裁器发起一次合适的突发传输。
- 基本传输
- AHB传输包含两个截然不同的部分:
- 地址相位:只会持续单个周期;
- 数据相位:可能需要多个周期,通过HREADY实现。
- 下图是一个没有等待的简单传输:
在这个没有等待的简单传输中:
- 主机在HCLK的第一个上升沿之后将地址和控制信号驱动到总线上;
- 然后在HCLK的第二个个上升沿从机采样地址和控制信息;
- 之后从机对本次传输做出响应(HREADY),主机在HCLK的第三个上升沿采样响应信号。
- 地址和数据是交叠的,这也是总线高性能的一个操作;从机可以插入等待周期到任意传输中。下图是一个具有等待周期的传输:
注:
-
对写操作而言,总线主机必须保持数据在整个扩展周期中稳定有效;
-
对读操作而言,从机没有必要保证数据直到传输结束都稳定。
- AHB传输包含两个截然不同的部分:
-
传输类型 (TRANS)
-
每个传输都可以分为四个不同类型。
在上图中:
-
第一个传输是一次突发的开始,所以是nonseq;
-
主机不能立即执行突发的第二次传输,所以使用了busy信号来延迟传输;
-
主机立即执行了第三次传输,但从机不能立即完成传输,所以插入了一个 (HREADY)等待状态;
-
突发的最后一个传输以无等待状态完成。
-
-
-
突发操作:
-
AHB规定了4/8/16拍突发,单一传输以及未定长度的突发和信号传输。
-
4拍字传输的边界是16字节:0c,1c,2c,3c都加4的10进制是16,32,48,64,都属于16字节的边界,所以回环。
- 0x00、0x04 、0x08、0x0c;
- 0x10、0x14、0x18、0x1c;
- 0x20、0x24、0x28、0x2c;
- 0x3c、0x34、0x38、0x3c;
-
-
- 突发信号编码:
注:
-
突发禁止超过1KB的地址边界;
-
执行单个传输使用未指定长度的增量突发可以理解为长度为1的突发;
-
突发大小指的是突发的节拍数量;实际的突发传输数据大小是突发大小乘以每拍数据的字节(传输大小HSIZE[2:0])计算。
-
所有的突发传输必须将地址边界和传输大小对齐。
- 从机能够监控HTRANS信号决定一个突发什么时候提前终止,并且在每次开始传输之后都有忙或者连续的信号。
-
如果产生一个非连续或者空闲传输,那么表明一个新的突发已经开始,并且旧的突发已经终止。从机对HTRANS[1:0]信号的监控会保证这一点。
-
下面是四拍和八拍的回环增量突发以及一个未定长度的例子:
-
字传输 :地址每次递增4个字节;
-
半字传输:地址每次递增2个字节;
-
-
控制信号:
- 和传输类型和突发类型一样,控制信号和地址总线必须保持一个严格一致的时序,且在一次突发过程中必须保持不变。
- 传输方向:
- HWRITE为高时,表示写传输,主机将数据广播到写数据总线上;
- HWRITE为高时,表示读传输,从机将数据广播到写数据总线上;
- 传输大小:
-
- 传输大小被用来和HBURST[2:0]信号一起决定回环突发的地址边界。
-
- 保护控制
- HPROT[3:0]:包含在总线的信息中,给那些希望执行某种保护级别的模块使用。
- 一次预取址或数据访问;
- 预取址:操作没有副作用,如果有副作用是不允许进行操作的,比如fifo;
- 特权模式访问或用户模式访问;
- 对于带有存储器管理单元的总线主机来说有表示访问时高速缓存(cache)还是缓冲(buffer)的。
-
注意:并不是所有总线主机都能产生正确的保护信息,因此建议从机没有严格要求时不要使用HPROT[3:0]信号 。
- 一次预取址或数据访问;
- HPROT[3:0]:包含在总线的信息中,给那些希望执行某种保护级别的模块使用。
- 地址译码:
- 对于内个总线的从机来说,都需要一个中央地址译码器来提供选择信号,HSELx;
- 使用简单的译码方案以避免复杂译码逻辑以及确保高速运作;
- 从机只能在HREADY为高时采样地址可控制信号以及HSELx;
- 特殊情况下有可能在HREADY低时采样HSELx,但是被选中的从机将会在当前传输完成后进行变更。
- 在系统设计中如果有包含一个存储器映射并未完全填满(存储空间)的情况时应该设置一个额外的默认从机以在访问任何不存在的地址空间中给出响应:
- 非连续或者连续传输试图访问一个不存在的地址空间时这个默认从机应该提供一个ERROR响应;
- 空闲或者忙传输访问不存在的空间时默认从机应该给出一个零等待状态的OKEY响应。
- 典型默认从机的功能将作为译码器的一部分来实现。
- 从机传输响应
-
- 在主机发起传输后,由从机决定传输该如何进行。AHB规范中没有做出总线主机在传输已经开始后取消传输的规定。
- 只要从机被访问,那么从机就必须提供一个表示传输状态的响应。
- 立刻完成传输;
- 插入多个等待状态以允许有时间完成传输;
- 发出一个错误信号来表示传输完成;
- 延时传输的完成:允许主机和从机放弃总线,把总线留给其他传输使用。
- 每个从机在放弃总线前必须插入多个等待信号(最好不要超过16个)以便新的主机有足够的时间可以访问到总线。
- 四种响应:
- OKAY :典型的从机将会用HREADY信号在传输中插入等待状态,并且在HREADY为高时同时给出OKEY响应,以表示传输完成;
- ERROR:从机用来表示某种形式的错误条件和相关的传输,例如:试图访问一个只读的存储空间;
- RETRY :从机用来表示传输未完成且主机应该继续重新传输直到完成;
- SPLIT :传输未完成且失去主线的使用权,总线主机必须在下一次被授权时重试传输,当传输完成时,从机能够代替主机访问从机。
- 当从机需要插入一定数量的等待状态优先于从机将要给出何种响应时,从机必须将响应驱动为OKAY。
-
双周期响应:
从机有多种方式来完成传输:
-
- 仅有OKAY响应可以在单周期给出,其他三个ERROR、SPLIT、RETRY响应需要至少两个周期;
- 为了完成这些响应,在倒数第二个周期驱动HRESP[1:0]给出ERROR、RETRY、SPLIT,同时READY为低给传输扩展一个额外的周期;最后一个周期HREADY驱动为高结束传输,同时HRESP[1:0]保持以表示ERROR、RETRY、SPLIT。
- 为了满足上面的双周期,可能在传输时会被插入等待,这段期间HREADY必须为低电平,同时HRESP为OKEY;
-
- 需要双周期响应是因为总线通道的本质特征。
- 在从机开始发出ERROR、SPLIT、RETRY中的任意一个响应时接下来传输的地址已经广播到总线上了。双周期响应允许主机有足够的时间取消该地址并且在下一次传输之前驱动HTRANS[1:0]为空闲传输;
- 对于SPLIT和RETRY响应接下来的传输必须取消,因为在当前传输完成之前禁止下一次传输发生;
- 然而,对于ERROR响应,由于当前传输不被重复,所以可以选择完成接下来的传输,也可以选择取消突发中剩下的传输。
-
图中包含的事件:
-
主机从地址A发起传输;
-
这次传输在接收到响应之前主机将地址移动到A+4;
-
从机在地址A不能立刻完成传输,因此从机发出一个RETRY响应。该响应指示主机在地址A的传输无法完成并且在地址A+4的传输被取消,而用空闲代替;
-
- 一个传输中从机请求一个周期来决定将要给出的响应(在HRESP为OKAY的事件段),之后从机用一个双周期的ERROR响应结束传输。
-
- 分块和重试:
- 分块和重试响应提供了一种无法给传输提供数据时释放总线的机制;
- 这两种机制都允许主机在总线上结束传输允许更高优先级的主机能够访问主机;
- 分块与重试的不同之处在于:
- 对RETRY而言,仲裁器将继续使用优先级方案,只有最高优先级的主机能够被获准访问主线;
- 对SPLIT而言,仲裁器将调整优先级方案,允许次一优先级的主机也能够访问总线。为了完成SPLIT传输,从机必须通知仲裁器何时数据可用,
- SPLIT传输增加了仲裁器和从机的复杂性,但也提供了完全释放总线给其他次优先级使用的机会;
- RETRY传输就只允许优先级最高的主机能够使用总线;
- 总线主机在遇到SPLIT、RETRY时,主机应该继续请求总线并尝试传输知道传输成功完成或者遇到ERROR响应时终止;
-
- 数据总线:
- 为了不使用三台驱动在一条总线上作出读和写操作。AHB系统分开了读写数据总线。
- 最小的数据宽度为32位,但总线宽度可以增加。8/16/32/64/128/256/512/1024,然而256位的总线就可以几乎满足所有应用。
- HWDATA[31:0]
- 写数据总线在写传输期间由总线主机驱动,且在传输完成之前写数据总线必须保持有效;
- 所有数据传输必须对其到传输大小等的地址边界;
- 字传输 :A[1:0] = 00;
- 半字传输:A[0] = 0;
- 如果数据宽度小于总线宽度,例如在32位总线上传输16位数据,总线主机仅需要驱动相应的字节通道,从机必须选择正确的字节通道进行读数据;
- 有效字节通道取决于系统的端结构,AHB不指定端结构,这就需要总线上的主机和从机端结构相同;
- HRDATA:
- 读数据总线由从机驱动,读数据总线不必保证一直有效,只需要在传输的最后一个周期保持有效;
- 对于宽度小于总线宽度的从机,从机只需要在有效的字节通道中读取数据;
-
端结构:
- 为了使系统正确运行,所有模块、数据通路、桥接器都是相同端结构的;
- 不支持动态端结构,因为在大多数嵌入式系统中,这将导致明显的硅晶片多余;
- 只有在应用场合非常宽泛的模块才会设计为双端结构,通过一个配置引脚或者内部控制来选择端结构;
- 而对于特定用途的模块,端结构固定为大端、小端,使接口体积更小、功耗更低、性能更高。
- 仲裁器:
- 仲裁机制被确保任意时刻只有一个主机能够访问总线;
- 仲裁器的功能是检测许多不同的使用总线的请求和决定当前总线的主机哪一个的优先级最高;
- 仲裁器也接受来自从机需要完成SPLIT传输的请求;
- 请求总线访问(HBUSREQx):
- 总线主机能够在任意时间周期使用HBUSREQx请求对总线的访问,而仲裁器在时钟的上升沿采样HBUSREQx信号,并使用内部的优先级算法决定哪一个主机将会得到访问总线的机会;
- 如果主机请求HLOCKx,这将提示仲裁器主机正在执行一系列不可分割的动作,仲裁器将会锁定总线,其他主机将不被授予总线;HLOCKx必须提前一个周期,以防止仲裁器将总线授予其他主机
- 当一个主机正在使用总线且执行一个固定长度的突发,那么主机不没必要继续请求总线;并且仲裁器会监视HBURST[2:0]决定主机被授予使用总线多久;
- 如果主机希望在当前传输中执行另一个突发,则主要在突发中重新请求总线;
- 如果主机在一次突发中失去总线,那么该主机必须重新请求总线的使用;
- 对未定长度的突发主机应该继续请求,知直到最后一次传输已经开始;
- 对于主机而言驱动传输类型HTRANS应该默认为空闲,以应对未请求总线而被授予总线的情况(该主机被作为默认主机);
- 授予总线访问(HGRANTx):
- 仲裁器通过断言适当的HGRANTx信号来表示请求总线的总机中哪个优先级最高,接下来改变HMASTER[3:0]来指明使用总线的主机是哪个;
- 无等待状态且HREADY为高的总线授予过程:
-
总线移交过程:
-
两个主机移交过程:
- 插入一个等待状态来完成数据总线的移交过程;
-
移交总线时仲裁器的动作:
-
HGRANT和HMASTER信号在系统中如何使用:
- 因为有了中央多路选择器,每个主机可以提前输出地址,而不需要等待被授予总线;
- HGRANTx信号仅仅被用来决定它何时拥有总线并因此需要考虑何时让地址被何时的从机采样;
- HMASTER总线可被用来控制写数据多路选择器
- 突发提前终止:
- 通常仲裁器在突发结束之前不会将总线移交给一个新的主机。但是如果仲裁器决定突发必须被提前终止以防过长的总线访问时间那么他会在一个突发完成之前将总线授予给另外一个总线主机。
- 如果主机在突发传输中失去了对主线的所有权,主机必须更新HBURST和HTRANS信号;
- 锁定传输:
- 仲裁器会监视各个主机的HLOCKx信号以确定合适主机希望执行一个锁定连续传输,之后会确定没有其他主机被授予总线;
- 在一个连续锁定传输之后,仲裁器将总是保持一个总线授予以确保锁定序列的最后一个成功传输;
- 建议在任何锁定连续传输之后插入一个空闲传输以提供给仲裁器有开始突发传输之前改变(总线授予的情况);
- 仲裁器也负责断言HMASTLOCKx信号,该信号指示每个从机当前传输是锁定的,因此必须在其他主机被授予总线之前被处理掉;
- 默认总线主机:
- 每个系统必须包含一个默认主机。如果其他所有主机不能使用总线时,该主机被授予总线,且该主机必须只能执行一个空闲(IDLE)传输;
- 如果没有请求总线,那么仲裁器将授予默认主机使用总线的权限,或者总线被授予访问延时较低的主机;
- 授予默认主机总线是为了让系统进入一个低功耗状态;
- 如果其他所有主机都在等待SPLIT传输完成时,默认主机必须被授予总线。
- 分块传输:
-
- 分块传输通过根据从机的响应操作来分离(或者分块)主机操作以给从机提供地址和合适的数据,提高了总线的总体使用率;
- 当传输产生时,如果从机认为这次传输将占据大量的时钟周期,那么从机将会发出一个SPLIT响应。该信号提示仲裁器尝试这次传输的主机不被授予访问总线,知道从机表示准备好了;
- 并且会屏蔽已经是SPLIT传输主机的任何请求;
- 任何一个发出SPLIT响应的从机必须表示它有能力完成这个传输,并且通过记录HMASTER[3:0]信号上的主机序号来实现;
-
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/31009.html