×
嵌入式 > 嵌入式开发 > 详情

AHB总线问答

发布时间:2022-07-08 发布时间:
|
仲裁:主设备可以在一个突发传输中解除HLOCK信号吗?

应用于:AHB

 

AHB规范中要求所有在地址传输相位内的控制(除了HADDR和HTRANS)在突发传输周期中保持稳定。

尽管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 响应可以用于表示从设备暂时还不能执行数据传输请求,或者从设备被访问时,给出一个中断响应,或者在查询一个状态寄存器之后能访问。这两种情况都表示从设备不能够在可接受的等待周期中给出应答。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
USB接口定义图