AHB总线问答
总体:不同的突发传输用在什么地方?
应用于:AHB
通常,主设备在高速缓存行填充的时候使用回环突发传输,主设备先是想获取他想要的数据,然后完成突发传输把剩余的数据取出药用于高速缓存行填充。增量突发传输主要用在像DMA控制器一类的主设备,需要填充一个可能不是地址边界对齐的存储器的缓冲区。
总体:对于从设备而言,应该为HREADY 和HRESP 信号什么样的默认状态?
应用于:AHB
建议HREADY 的默认状态为高,并且HRESP 为OKAY 状态。这样的组合能够保证从设备即使是在低功耗模式下也能对IDLE 传输给出正确的响应。
总体:虚拟总线主设备和默认总线主设备之间有什么区别?
应用于:AHB
默认总线主设备是指系统中没有主设备在申请总线的时候,总线被分配给的那个主设备。通常情况下,最有可能申请总线的主设备就是默认总线主设备。
虚拟主设备是指只进行IDLE 传输的主设备。系统需要虚拟主设备是以便仲裁器能够保证能够将总线分配给一个不进行任何实际传输的主设备。仲裁器在以下两种情况下需要这样做:在一个锁定传输中得到一个SPLIT 响应;在所有其他主设备都已经得到SPLIT 响应的情况下,又得到一个SPLIT 响应。
总体:HPROT 信号默认应该是什么值?
应用于:AHB
许多主设备不能产生准确的保护信息,那么对于这些主设备,HPROT 信号默认应该表示为:Non-cacheable, Non-bufferable, Privileged, Data Accesses,也就是HPROT[3:0] = 4b0011。
总体:AHB 信号在复位时是什么状态?
应用于:AHB
AHB 规范中指出在复位时,总线信号应该是一个确定的有效的值。简单的理解就是信号应该是逻辑‘0’或‘1’,而不是高阻态Hi-Z。实际应该是什么样的有效的值要取决于设计者。HTRANS 信号是唯一一个在复位时确定的信号,它将强制为IDLE。
同时,HREADY 信号在复位时保持高电平也很重要。如果所有的系统从设备在复位时驱动HREADY 信号为高,这将保证这是情况正常。但是,如果存在从设备在复位的时候不是驱动HREADY 为高的,应该保证复位时选中的那个从设备需要驱动HREADY 为高。
总体:主设备应该在什么时候重建被提前结束的突发传输?有哪些限制它如何重建突发传输?
应用于:AHB
唯一的限制就是主设备应该使用有效的突发传输组合来重建剩下的突发传输。例如:如果一个主设备要进行一次8 拍的突发传输,但是在传输3 拍之后就失去了总线控制权,那么剩下的5 拍传输可以使用1 拍SINGLE 突发传输加一次4 拍的INCR4 传输,或者也可以使用5 拍的未定义长度INCR 突发传输。
为了简单,建议主设备使用INCR 突发传输去完成剩下的传输。
总体:为什么一次突发传输不允许跨域1 kbyte 边界?
应用于:AHB
如果AHB 从设备在突发传输开始的时候采样到HSELx 信号,它就会知道它将在整个突发传输过程中都被选择。同样的,对于在突发传输开始的时候没有被选择的从设备也知道它在下一次突发传输之前都不会被选择到。
1 kbyte 是AHB 从设备在存储器空间分配中可以占据的最小空间。因此,如果一个突发传输跨越了1 kbyte 边界,那么访问可能是开始的时候访问一个从设备而后的传输又转向另一个从设备,而根据上述原因,这是不允许发生的。
选择1 kbyte 边界是因为它对于一个合理的突发传输已经足够大,但是对于那些可以对其到1 kbyte 空间而无需使用太多的可用内存空间的外设来说又太小。
如何将一个AHB 主设备连到一个AHB-lite
应用于:AHB
AHB-lite
由于AHB-lite
全功能AHB 主设备是在锁定传输的地址传输相位之前驱动HLOCK 信号的,并且通常是经由仲裁模块重现返回到全功能主设备以产生HMASTLOCK 信号,这将是和地址传输相位对其的。
下面的Verilog 代码可以用来产生 AHB LOCK ->
always @( negedge HRESETn or posedge HCLK ) begin
end
下面的例子显示了可以在总线上产生的HTRANS 传输顺序:
一个普通的4 拍突发传输跟一个IDLE 传输。
N - S - S - S - I
一个带有BUSY 传输的普通4 拍突发传输。
N - S - B - S - B - S - I
一个4
N - S - S - S - N - S - S - S - I
一个单次传输跟一个4 拍的突发传输。
N - N - S - S - S - I
一个单次传输跟一个IDLE 传输。
N - I
一个带有BUSY 传输的未定义长度突发传输。
N - B - S - B - S - B - I
一个带有BUSY 传输的未定义长度突发传输紧跟着另一个突发传输。
N - B - S - B - S - B - N - S
如何将一个AHB 从设备连到一个AHB-lite
应用于:AHB
只要从设备不产生SPLIT 或者RETRY 响应,那么AHB 从设备和AHB-lite是兼容的,可以之间连接。
如果AHB 从设备需要产生RETRY 响应,那么需要一个Ahb2Ahb 桥接器(在ARM AMBA Design Kit(ADK)中有几个例子)连接AHB 从设备和AHB-lite系统。这个Ahb2Ahb 能够本地支持RETRY 响应,并保持AHB-lite
如果AHB 从设备需要支持SPLIT 响应,那么不仅需要上面支持RETRY 响应用到的Ahb2Ahb 桥接器,还需要一个本地虚拟主设备和一个仲裁器。SPLIT 响应需要仲裁器将总线分配给两一个主设备,所以需要一个虚拟主设备放在本地全功能AHB 总线上去驱动IDLE 传输,只到从设备可以去完成SPLIT 传输。
AHB 和AHB-lite
应用于:AHB
AHB-lite
这样的简化移除了仲裁逻辑所需要的信号,HBUSREQ 信号和HGRANT 信号,并且HRESP 信号只需要1 位,SPLIT 和RETRY 从设备响应只用在对多主设备的支持上。
移除任何仲裁逻辑同时意味着AHB 主设备HLOCK 输出信号需要会发给与地址传输相位对其的HMASTLOCK 信号(通常由AHB 仲裁器完成的功能)。
AMBA 系统镇中复位信号应该维持多少个周期?
应用于:AHB,APB
建议系统上的主设备组件和从设备组件应该在复位请求大于1 或者2 个周期时清除状态。同时建议系统设计者应该维持复位信号至少16 个周期,除非知道有主设备组件或者从设备组件需要更长周期的复位请求。
AHB 怎样处理锁定传输中的SPLIT 响应?
应用于:AHB
如果一个传输中受到SPLIT 响应,那么仲裁器就会夺回被SPLIT 的主设备的总线使用权并该主设备将不会再参与仲裁,直到从设备表示传输可以完成。如果一次访问是锁定的,那么该次访问就不能被其它主设备的访问所打断。
AHB 系统在处理这两种需求同时发生的情况只有一条途径,那就是将总线分配给“虚拟主设备”。虚拟主设备只进行IDLE 传输,这在锁定传输中式允许的,如果将总线分配给其它任何主设备都将违背锁定传输协议,如果仲裁器忽略SPLIT 相同将违背SPLIT 协议,所以虚拟主设备是唯一的选择。
虚拟主设备同时用在所有主设备都收到SPLIT 响应的情况下(虚拟主设备不能接受SPLIT 响应)。
建议支持split 的从设备的设计者能确保从设备监听HMASTLOCK 输入信号,以便在锁定传输中不返回SPLIT 响应,应为那样也是无济于事的。
SPLIT/RETRY:SPLIT 和RETRY 响应可以在突发传输中的任何时候给出吗?
应用于:AHB
是的,从设备可以在突发传输中的任何一次传输给出SPLIT,RETRY,ERROR 响应。从设备被没有限制只能在第一次传输给出这些响应。
SPLIT/RETRY:从设备可以在给出SPLIT 响应的同一个周期拉高HSPLITx 信号吗?
应用于:AHB
不可以。规范中要求HSPLITx 信号只能在给出SPLIT 响应之后被拉高。
SPLIT/RETRY:从设备可以同时使用SPLIT 和RETRY 响应吗?
应用于:AHB
通常,从设备并不同时使用SPLIT 和RETRY 响应。对于那些可能同时被多个不同的主设备访问的从设备都应该使用SPLIT 响应。RETRY 响应主要用在只被一个主设备访问的外设中。
SPLIT/RETRY:所有的主设备都应该支持SPLIT 和RETRY 吗?
应用于:AHB
是的。所有主设备都必须支持SPLIT 和RETRY 响应,以确保它们能够和任何的从设备兼容。主设备处理SPLIT 和RETRY 响应的方式都是一样的。
注意:如果系统是基于AHB-lite的,SPLIT 和RETRY 响应都是不支持的。AHB-lite
SPLIT/RETRY:所有的从设备都应该支持SPLIT 和RETRY 吗?
应用于:AHB
不是的。从设备只需要支持它需要使用的响应类型。例如:一个简单的片上存储器模块可以在仅仅一个等待状态后就能够响应所有的传输,那么它就不需要SPLIT 和RETRY 响应。
SPLIT/RETRY:在SPLIT 响应或RETRY 响应之后的IDLE 传输中,应该在总线上给出什么地址?
应用于:AHB
其实在这个传输周期中,总线上是什么地址信号并没有什么影响。被选择的不应该有任何行为,并且必须给出零等待的OKAY 响应。
在许多情况下,主设备保持地址信号不变将会更简单,地址信号保持主设备想要进行的下一次传输的地址不变,并只在下一次传输返回那个因为SPLIT 或是RETRY 响应而必须重新进行的传输的地址上。
在一些设计上,主设备可能是在IDLE 传输周期中返回到那个需要重传的地址上,这个当然也是完全可以接受的。
SPLIT/RETRY:SPLIT 和RETRY 响应有什么不同?
应用于:AHB
SPLIT 和RETRY 响应都被从设备在需要很多周期才能完成传输时使用的。这些响应允许数据传输表现出完成,以避免总线停顿,但是这也同时表示传输应该在下一次获得总线的时候重新尝试上一次传输。
它们两者的不同在于:SPLIT 响应告诉仲裁器可以将总线使用优先级交给所有其他主设备直到SPLIT 传输可以结束(实际上是忽略该主设备以后所有的传输请求直到发出SPLIT 的那个从设备表示它可以完成SPLIT 传输),而RETRY 响应仅仅告诉仲裁器将总线使用权交给最高优先级的主设备。
SPLIT 响应比RETRY 响应实现起来更复杂,但是它的优势在于允许最有效的使用总线带宽。
主设备在SPLIT 和RETRY 响应上相同的行为,主设备应该放弃下一次传输并重新尝试当前访问失败的访问。
SPLIT/RETRY:当AHB 主设备在在突发传输中间接收到从设备的RETRY 响应时,应该在HTRANS 上使用什么信号?
应用于:AHB
传输无论在何时重新发起的时候,它必须设置HTRANS 为NONSEQ,并且需要根据需求调整HBURST 信息(通常值表示INCR)。
SPLIT/RETRY:主设备可能会在SPLIT 响应之后永远失去总线吗?
应用于:AHB
是的。所以从设备必须不能在给出SPLIT 响应的同一个周期拉该HSPLIT 的相应位,这样的话主设备会永远失去总线。
总体:AHB 转APB 桥如何处理不是32-bit 的访问?
应用于:AHB、APB
桥接器只应该简单的传输完整的32-bit 的数据。需要注意如果向APB 从设备进行少于32-bit 的数据传输,确保设备在APB 总线上正确的位置很重要。
总体:为什么在APB 上没有等待信号?
应用于:APB
APB 在设计上是尽可能的有简单的接口。拥有这样简单的设计使得在连接一个新的APB 设备的时候更加简单,并且在分析计算系统性能的时候更简单。
虽然很多APB 设备是低速设备,像是UART,它们通常通过控制寄存器访问的。通常设备驱动程序首先会访问状态寄存器确定它是否空闲,然后才会去去访问数据寄存器。这样的两个操作都可以不需要附加的等待状态,因此外设可以作为一个APB 设备而被访问。
如果确是需要等待状态的外设,可以设计成AHB 从设备,在很少数情况下,如果设计需要包括很多这样的外设,那么可以使用第二级AHB 总线以减轻主系统总线的负荷。
评论