DSP

AHB总线问答

2019-07-13 18:19发布

原文:huanhuan   链接:http://blog.163.com/huanhuan_hdu/blog/static/1352981182011625916845/ Advanced High-performance Bus(AHB):主要用于高性能模块(如CPU、DMA和DSP等)之间的连接。 AHB总线上最多可以有16个主模块和任意多个从模块,整个AHB总线上的传输都由主模块发出,由从模块负责回应。
仲裁:主设备可以在一个突发传输中解除HLOCK信号吗? 应用于AHB AHB规范中要求所有在地址传输相位内的控制(除了HADDRHTRANS)在突发传输周期中保持稳定。 尽管HLOCK信号不是一个地址传输相位内的信号,但是它却直接控制HMASTLOCK信号,而该信号是在地址传输相位的。 所以HLOCK信号必须在整个突发传输周期中维持为高,并且只能在最后一个地址传输相位之后改变,HMASTLOCK信号随之改变。 仲裁:主设备可以在被分配到总线而有不需要使用总线的时候进行一个不是IDLE的传输吗? 应用于:AHB 是的。主设备可以在被分配到总线而有不需要使用总线的时候进行一个不是IDLE的传输。但是请注意,在这种情况下任然建议主设备继续维持请求信号,以便仲裁器不会在传输过程中将总线使用权分配给另一个优先级更低的主设备。 仲裁:如果一个主设备当前被默认分配到了总线使用权,那么它在开始一个非IDLE传输之前需要维持HBUSREQ多少个周期? 应用于:AHB 不需要。主设备可以立即开始一次非IDLE传输。 仲裁:HLOCK信号和HMASTLOCK信号之间有什么关系? 应用于:AHB 在每个传输周期中的地址传输相位开始的时候,仲裁器都会对将要驱动地址信号线的主设备的HLOCK信号采样,如果HLOCK信号在此时有效那么仲裁器就会拉高HMASTLOCK并维持整个传输周期中的地址传输相位阶段。 仲裁:HGRANT信号可以在什么什么改变? 应用于:AHB HGRANT信号可以在任意周期改变,并有可能是一下几种情况:
  • HGRANT信号有效,然后在当前传输周期完成之前移除。这是有可能的并且是允许的,因为HGRANT信号只在HREADY信号为高的时候被主设备采样。
  • 主设备可以不需要申请而得到总线使用权。
  • 以上两点意味着主设备可能在申请总线的同时获得总线使用权。这发生在在主设备在同一个周期申请总线并同时被仲裁器分配总线使用权。
仲裁:为什么HADDR信号有时候是仲裁器的输入信号? 应用于:AHB 地址总线,HADDR,本是不需要作为仲裁器的输入信号的,但是在有些设计中却可以用于帮助仲裁器决定改变总线使用权的恰当时机。例如,仲裁器可以设计成当突发传输到达4字边界的时候改变总线使用权。 仲裁器可以设计成总是允许突发传输完成吗? 应用于:AHB 应用于:AMBA AHB 从设备给出SPLIT,RETRY 或ERROR 响应总会引起突发传输提前结束,而这是不受仲裁器控制的,因此(仲裁器)必须予以支持。 未定义长度的INCR 突发传输的结束点并不能预测到,所以还没有有效的方法设计仲裁器以保证在将总线授予另一个主设备时突发传输已经结束。 定长的INCRx 和WRAPx突发传输能够计数它们传输的节拍,所以仲裁器可以允许他们传输结束。但是由于AHB仲裁的同步时序,所以没有办法避免在突发传输第一次传输发起之后就立即结束突发传输的可能性。 仲裁器只有通过对HBURST 信号的采样才知道一个定长的突发传输正在进行。但是HBURST 信号第一次可以被采样到的店是在突发传输第一节拍的第一个时钟周期之后,而在那时,仲裁器很可能已经决定将总线授予另一个主设备并相应要改变HGRANT 信号。在这种情况下,只有一条从HBURST 到HGRANT 的组合路径能够帮助及时检测到突发传输以避免提前结束,但是组合路径在AHB 总线中是不允许的。 主设备应该在一个锁定传输中什么时候拉高是释放HLOCK 信号? 应用于:AHB 在一个锁定传输中,HLOCK 信号必须至少在地址传输相位之前一个周期拉高。这样才能保证仲裁器在地址传输相位开始的时候,采样到的HLOCK 信号为高。 主设备应该在锁定传输中最后一次传输的地址传输相位发起之后释放HLOCK 信号。 主设备应该在什么时候释放HBUSREQ 信号? 应用于:AHB
对于一个未定义长度的突发传输(INCR),主设备必须保持HBUSREQ 信号为高一直到突发传输中的最后一次传输的地址传输相位发起之后。这将意味着如果倒数第二次传输是一个零等待状态,那么主设备可能会在未定义长度突发传输之后还被授予总线都多一次额外的传输。 对于定长突发传输,主设备可以在第一次获得总线发起传输之后就释放HBUSREQ 信号。只所以可以这样做是因为仲裁器能够对突发传输中的传输节拍计数并保持主设备一直被授予总线知道突发传输的结束。 但是,仲裁器并没有强制要求必须允许突发传输的结束。所以,如果仲裁器在突发传输结束之前就改变了HGRANT 信号,那么主设备必须再次拉高HBUSREQ 信号。 仲裁器在一次锁定传输之后什么时候会将总线授予另一个主设备?
应用于:AHB 仲裁器总会授予主设备在锁定传输周期之后一个额外的传输,所以主设备能够保证在锁定传输周期之后HMASTLOCK 信号为低的时候执行一次传输。而这恰巧又是在锁定传输的最后一次传输的数据相位上。 此时,仲裁器可以将改变HGRANT 信号授予另一个主设备,但是如果在最后一次锁定传输的数据相位上收到一个RETRY 响应,那么仲裁器将会继续驱动HGRANT 信号以确保那个执行锁定传输的主设备继续获得总线;如果在最后一次锁定传输的数据相位上收到一个SPLIT 响应,那么仲裁器将会将总线授予一个虚拟的主设备。 总体:对于一个允许断电或者时钟停止的从设备,需要什么样的系统支持? 应用于:AHB
如果系统视图访问一个断电的或者时钟停止的从设备,你必须确保这次访问能够唤醒电源供电或恢复时钟,或者配置AHB 译码器所有这种类型的访问重定向到一个虚拟从设备,这样以避免系统访问一个无效的从设备时永远等停在那里。 这种方式的重定向需要确保随机IDLE  地址的访问将会有HREADY 为高,HRESP=OKAY 的默认响应,但是对于真正的访问(NONSEQ 或者SEQ)将会有ERROR 响应。 总体:什么时候可以发生突发传输提前结束?
应用于:AHB 突发传输提前结束或是因为仲裁器在突发传输过程中改变HGRANT 信号,或是因为从设备在任一传输节拍中给出非OKAY 响应。注意虽然主设备不能决定一个定长的突发传输直到主设备被仲裁器或者从设备提示要这样做。 所有的AHB 主设备,从设备和仲裁器都必须设计成支持突发传输提前结束。 总体:HTRANS 信号可以在HREADY 为低时改变吗?
应用于:AHB 一般来说,AHB 主设备不应该在HREADY 信号为低的时候改变控制信号,但是在以下情况,允许改变HTRANS 信号:
  • HTRANS = IDLE
AHB 主设备在执行一个内部操作并且没有发起一次总线传输。但是在AHB 等待状态下(HREADY 为低),主设备可能会决定需要一次总线传输然后在下一个周期将HTRANS 改为NONSEQ。
  • HTRANS = BUSY
HTRANS 在此时正是给予主设备一定时间以完成其内部操作,而这可能是与HREADY 信号无关的(例如,AHB 中的等待状态)。因此HTRANS 信号可以在下一个周期改变为任意合法的值,如,在突发传输需要继续时改为SEQ,在突发传输结束时改为IDLE,在需要发起一个单独的传输时改为NONSEQ。
  • HRESP = SPLIT/RETRY
正如AHB 规范中所述,主设备必须在双周期响应SPLIT和RETRY的第二个周期保持HTRANS为IDLE,所以HTRANS 会在第二个周期中从第一个周期中的值改变为IDLE。
  • HRESP = ERROR
主设备允许在回应ERROR 响应时改变HTRANS 信号,就像回应SPLIT/RETRY响应一样,并且取消当前突发传输中的后续传输(即使HTRANS当前表示的是定长突发传输)。在这种情况下,HTRANS 信号在第响应的二个周期改变为IDLE。或者主设备也可以允许继续当前传输。
总体:BUSY 传输可以发生在突发传输之后吗? 应用于:AHB BUSY 传输只能发生在不定长突发传输(INCR)的结束。 BUSY 传输不能发生在定长突发传输(SINGLE,INCR4,WAP4,INCR8,WAP8,INCR16,WAP16)的结束。 总体:主设备可以在传输等待中改变地址和控制信号吗? 应用于:AHB 可以的。如果地址和控制信号表示的是一个IDLE 传输,那么主设备可以在HREADY 为低的时候将传输改为一个真正的传输(NONSEQ)。
但是如果主设备当前正表示一个真正的传输(NONSEQ或者SEQ),那么主设备不能在传输等待中取消这次传输,除非主设备接收到SPLIT。RETRY或者ERROR 响应。 总体:AHB 主设备可以直接连到AHB 从设备吗? 应用于:AHB
任何不支持SPLIT 响应的从设备都可以直接连到AHB 主设备上。如果从设备确实有使用SPLIT 响应,那么一个简化版的中采取还是需要的。
如果一个AHB 主设备直接连到AHB 从设备,那么必须确保从设备在复位的时候维持HREADY 信号为高,并且从设备选择信号HSEL 永远维持为高。
总体:所有的从设备都必须支持BUSY 传输类型吗?
应用于:AHB
是的。所有从设备都必须支持BUSY 传输类型以确保它能够与任何主设备兼容。
总体:地址必须对齐吗?即使是IDLE 传输?
应用于:AHB
是的。地址应高根据传输宽度(HSIZE)对齐,即使是IDLE 传输。这会避免在仿真的时候,总线监视器发出的警告。
总体:在AHB 系统中可以支持多少个主设备?
应用于:AHB
AHB 规范中提供了最多16 个主设备,然而,这还包括一个虚拟主设备,即真正的总线主设备最多之后15 个。习惯上总线主机号0 被分配给虚拟总线主机。
总体:AHB到APB的桥接器如何处理不是32-bits 的访问?
应用于:AHB,APB
桥接器应该简单的将整个32-bit 的数据都传输过去。但是请注意,当进行小于32-bit的数据传输时,确保外设正处在APB 数据总线上的正确比特位上。
总体:HREADY 信号是从设备的输入信号还是输出信号?
应用于:AHB
AHB 从设备必须将HREADY 信号既作为输入信号又作为输出信号。
从设备需要输出HREADY 信号以便能够扩展传输中的数据传输相位。
从设备同时需要将HREADY 信号作为一个输入信号,以便能够判断上一次选择的从设备在什么时候完成它的最后一次传输,以及当前从设备的数据传输相位即将开始。
每一个AHB 从设备都应该有一个HREADY 输出信号(习惯上命名为HREADYOUT)连接到从设备—主设备多路器上多路器的输出信号就是全局HREADY 信号,它将连接到AHB 系统上的所有主设备并且同时作为HREADY 输入信号反馈输入到所有的从设备。
总体:默认从设备真的需要吗?
应用于:AHB
如果整个4G byte空间都被定义使用到了,那么默认从设备是不需要的。但是,如果在整个存储地址空间分配上存在未定义的区域,那么确保在访问不存在的地址空间时AHB 系统不会发生死锁是很重要的。默认主设备的功能是非常简单的,并且同时在译码器中就实现了。
总体:虚拟主设备真的需要吗?
应用于:AHB
任何存在支持SPLIT 响应的从设备的AHB 系统都是需要有虚拟主设备的。应为如果所有其它主设备都接收到了SPLIT 响应,那么系统会将总线使用权分配给虚拟主设备。
虚拟主设备中不需要什么逻辑,它的实现只需要简单的将其输入信号连接到地址/控制多路器的虚拟主机位置。虚拟主机需要驱动HTRANS 为IDLE,HLOCK 为低,所有其它主设备输出信号驱动为合法状态。 总体:主设备在扩展的传输中可以改变HADDR 吗?
应用于:AHB
如果主设备表示它想进行NOSEQ,SEQ 或者BUSY 传输,那么它就不允许在扩展的传输中(当HREADY 为低时)改变地址总线上的值,除非它接收到了ERROR,RETRY 或者SPLIT 响应。如果主设备表示它想进行一个IDLE 传输,那么它可以改变地址信号。
总体:有规定需要HPROT,HSIZE 和HWRITE 信号在突发传输中需要保持恒定吗?
应用于:AHB
是的,控制信号必须在整个突发传输中都要保持恒定。
总体:规范里面建议只有16个等待状态,如果需要16个以上的等待周期该怎么做?
应用于:AHB
对于一些从设备而言,16个以上的等待周期是可以接受的。例如,一个串行的ROM,它只在系统商店初始化的时候会被访问时会插入大量的等待状态,但是在系统完成上电初始化之后,它并不影响系统性能和延时的计算。
对于另一些从设备,存在多项选择。SPLIT 或者RETRY 响应可以用于表示从设备暂时还不能执行数据传输请求,或者从设备被访问时,给出一个中断响应,或者在查询一个状态寄存器之后能访问。这两种情况都表示从设备不能够在可接受的等待周期中给出应答。
总体:不同的突发传输用在什么地方?
应用于: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] = 4'b0011。
总体: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 主设备将会永久的获得总线。全功能AHB 主设备HBUSREQ 输出信号保留不接,HGRANT 输入信号直接接到逻辑‘1’(1'b1)。
由于AHB-lite 不支持SPLIT 和RETRY 响应,AHB-lite HRESP 信号只有1 位,所以全功能AHB 主设备HRESP[1:0] 输入信号应该将HRESP[1] 接到逻辑‘0’(1'b0)。
全功能AHB 主设备是在锁定传输的地址传输相位之前驱动HLOCK 信号的,并且通常是经由仲裁模块重现返回到全功能主设备以产生HMASTLOCK 信号,这将是和地址传输相位对其的。
下面的Verilog 代码可以用来产生 AHB LOCK -> AHB-lite 的HMASTLOCK 信号返回时序功能。
always @( negedge HRESETn or posedge HCLK ) begin
    if ( !HRESETn )
        HMASTLOCK <= 1'b0;
    else begin
        if ( HREADY )
            HMASTLOCK <= HLOCK;
    end
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 系统端的HREADY 为低(1'b0)。
如果AHB 从设备需要支持SPLIT 响应,那么不仅需要上面支持RETRY 响应用到的Ahb2Ahb 桥接器,还需要一个本地虚拟主设备和一个仲裁器。SPLIT 响应需要仲裁器将总线分配给两一个主设备,所以需要一个虚拟主设备放在本地全功能AHB 总线上去驱动IDLE 传输,只到从设备可以去完成SPLIT 传输。
AHB 和AHB-lite 有什么区别?
应用于:AHB
AHB-lite 是全功能的AMBA 2 AHB 规范的一个简化版本,只支持一个主设备。
这样的简化移除了仲裁逻辑所需要的信号,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:所有的从设备都应该支持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 总线以减轻主系统总线的负荷。 (完)