图3-5复位操作:主设备发起操作及相关信号变化详解

<股票配资网>图3-5复位操作:主设备发起操作及相关信号变化详解

图 3-5 复位操作

2.操作发起

操作总是由主设备发起,主设备发起的操作可以是单次读写、块读写或 RMW 操作。当主设备将 CYC_O 置为高时,一次传输操作开始。当主设备将 CYC_O 置为低时总线周期,主设备的所有其他信号没有意义。从设备只在 CYC_I 为高时才会对主设备发起的操作进行响应。CYC_O 和 STB_O 可以同时从无效变为有效表示操作开始图3-5复位操作:主设备发起操作及相关信号变化详解,CYC_O 持续有效直到操作结束,CYC_O 和 STB_O 可以同时从有效变为无效表示操作结束。

因此,在只有一个主设备时,可以将 CYC_O 和 STB_O 合并为一个信号,比如在 的源代码中就广泛地使用了这种方式,信号的名字称作 。

当存在多个主设备时,一个主设备完成操作后必须及时地将 CYC_O 信号置为低,以让出总线给其他主设备。

3.基本握手

由于在整个操作周期,CYC_O 必须始终保持有效,因此,后文将在给出的图示中忽略该信号,只在必要的时候给出。

握手发生在主设备和从设备之间。握手协议是主设备和从设备在握手时所遵守的共同规则。如图 3-6 所示,当主设备准备好传输数据,它将 STB_O 信号置高。STB_O 信号一直为高,直到从设备通过置高 ACK_O、ERR_O、RTY_O 对本次操作发起响应。在图 3-6 中以主设备的 ACK_I 信号作为示例,后文也如此。通过握手主设备和从设备不仅可以完成通信,而且可以控制它们之间的通信速率。

复位操作_总线周期_主设备发起操作

加载中...

图 3-6 基本握手协议

主设备发起操作_总线周期_复位操作

如果从设备保证能够在主设备发起操作时及时作出操作成功的响应,其 ACK_O 信号可以设计为 STB_I 和 CYC_I 信号的逻辑与,而 ERR_O 和 RTY_O 信号也可以不使用。因此 ERR_O 和 RTY_O 信号是可选的,而 ACK_O 信号是必须的。在点对点连接中,甚至可以将 ACK_I 信号直接置高。当存在 ERR_O 和 RTY_O 信号,主设备当发现 ERR_O 和 RTY_O 信号之一有效时如何进行响应取决于主设备的设计。

对于从设备,只有 STB_I 和 CYC_I 同时为高时,才能发起对主设备的响应。

实际上,对于主设备,其最小配置为只有 ACK_I、CLK_I、CYC_O、RST_I 和 STB_O;而对于从设备,其最小配置为只有 ACK_O、CLK_I、CYC_I、RST_I 和 STB_I,这里 CYC 和 STB 信号可以合并到一起成为一个信号。

在图 3-6 中,从 STB_O 到 ACK_I 存在一个长组合逻辑路径,在实际系统中很可能成为关键路径。因此,在设计中应尽量保证 STB_O 是触发器的直接输出。如果从 STB_O 到 ACK_I 存在一个长组合逻辑路径延迟不能满足设计的时序要求,可将从设备的 ACK_O 经过触发器寄存后再输出图3-5复位操作:主设备发起操作及相关信号变化详解,从而将长组合逻辑打破,但系统的吞吐量也将因此减小。关于如何既打破长组合逻辑又不影响系统的吞吐量,后文将进行详细讨论。

3.5.2 单次读/写周期

单次读/写操作每次操作只完成一次读或写,是最基本的总线操作方式。但是总线周期, 主设备或从设备也可以不支持单次读写操作,甚至没有地址和数据总线。

单次读操作如图 3-7 所示。在时钟上升沿 0,主设备将地址信号 ADR_O()、TGA_O()放到总线上,将 WE_O 置为低表示读操作,将适当的 SEL_O()信号置高通知从设备将数据放在数据总线的适当位置,将 CYC_O 和 TGC_O 置高表示操作正在进行,将 STB_O 置高表示操作开始。

复位操作_总线周期_主设备发起操作