ready/valid vs 2 次握手 vs 4 次握手
ready/valid vs 2-way handshaking vs 4-way handshaking
我很困惑 ready/valid 握手在功能上是否等同于 req/ack(2 次)握手?通过功能等效,我的意思是我们可以在所有可以使用 req/ack(2 次)握手的情况下使用 ready/valid 握手执行数据传输,反之亦然?是否存在一种方案有效而另一种方案无效的情况?
作为同一问题的扩展,req/ack(2 向)在功能上等同于 req/ack(4 向)握手吗?大多数情况下,我发现不同之处在于所需的硬件,当然还有速度。是否有任何场景我们必须为此使用 req/ack(4 向)或 req/ack(2 向)。
综上所述,我想在三个方案之间建立联系——一个方案失败而另一个方案有效的地方。
问题是在同步和异步设计的上下文中
一个老问题,但为了以后类似的查询,我还是会回答的。
1.什么时候使用?
4-phased 或 2-phased req/ack
协议在没有时钟的情况下,在异步逻辑中是必需的。这些信号是对彼此的响应:两者都是 4 阶段协议中的响应,ack
是 2 阶段协议中的唯一响应。
由于时钟上升沿同步,valid/ready
(或等效)协议不需要 return 将相位归零,它只能用于同步逻辑。此外,只需要一个阶段,因为 valid
和 ready
不是在当前传输中相互响应,它们只是在下一个周期更新。
2。他们如何比较?
这三种协议都可以准确控制数据的传输,它们也可以传输背压。所以是的,它们在功能上是等价的。
4 相 req/ack
信号切换两倍,从 性能 和 功耗的观点。但是同步电路具有块缓冲器,当扇出很大时可能会消耗很多,这会产生其他后果,例如 EMI,需要本地电容器 and/or 使用扩频技术。这完全取决于电路的规模和技术。但一般来说,使用需要以两倍速率切换信号的协议来维持相同的吞吐量将更加困难。
2-phased ack/req
也提供相同的功能,但实现有其缺点,处理 high/low 的逻辑可能比自然的 4-phased 协议更复杂。它需要 XOR 门和一个参考寄存器来输出转换而不是状态(改变极性而不是指示“我准备好了”)。它需要 XOR 门来检测是否应该发生状态变化。
从性能的角度来看,它需要更多的资源,增加了关键路径,但减少了阶段的数量。目前尚不清楚结果是否会提高性能,需要检查,但这可能取决于技术。一个理由是协议在有限带宽的长线路或负载线路上传输,以牺牲局域面积为代价提高这些线路的速率可能很有趣。
3。它们可以互换吗?
可以在同步电路中使用 req/ack
协议连接两个 valid/ready
块。但是,为了在异步电路中将两个 req/ack
块与 valid/ready
协议连接起来,您需要第三个同步信号来实现传输周期的概念。
这个问题在大多数情况下没有实际意义,因为有惩罚没有优势。 valid/ready
或等效物将用于同步电路。在异步电路中,您必须在 2 相或 4 相之间进行选择 req/ack
。
可以在异步电路中使用 XOR 和 S/R 锁存器连接 2 相和 4 相 req/ack
块。
总结
它们在各自的同步/异步实现中使用时在功能上是等效的,但不能总是在其他域中使用(req/ack
可以在同步域中使用但性能不佳,valid/ready
不能在异步域中这样使用)。每种实现对性能、功耗和资源利用率都有不同的影响。
我很困惑 ready/valid 握手在功能上是否等同于 req/ack(2 次)握手?通过功能等效,我的意思是我们可以在所有可以使用 req/ack(2 次)握手的情况下使用 ready/valid 握手执行数据传输,反之亦然?是否存在一种方案有效而另一种方案无效的情况?
作为同一问题的扩展,req/ack(2 向)在功能上等同于 req/ack(4 向)握手吗?大多数情况下,我发现不同之处在于所需的硬件,当然还有速度。是否有任何场景我们必须为此使用 req/ack(4 向)或 req/ack(2 向)。
综上所述,我想在三个方案之间建立联系——一个方案失败而另一个方案有效的地方。
问题是在同步和异步设计的上下文中
一个老问题,但为了以后类似的查询,我还是会回答的。
1.什么时候使用?
4-phased 或 2-phased req/ack
协议在没有时钟的情况下,在异步逻辑中是必需的。这些信号是对彼此的响应:两者都是 4 阶段协议中的响应,ack
是 2 阶段协议中的唯一响应。
由于时钟上升沿同步,valid/ready
(或等效)协议不需要 return 将相位归零,它只能用于同步逻辑。此外,只需要一个阶段,因为 valid
和 ready
不是在当前传输中相互响应,它们只是在下一个周期更新。
2。他们如何比较?
这三种协议都可以准确控制数据的传输,它们也可以传输背压。所以是的,它们在功能上是等价的。
4 相 req/ack
信号切换两倍,从 性能 和 功耗的观点。但是同步电路具有块缓冲器,当扇出很大时可能会消耗很多,这会产生其他后果,例如 EMI,需要本地电容器 and/or 使用扩频技术。这完全取决于电路的规模和技术。但一般来说,使用需要以两倍速率切换信号的协议来维持相同的吞吐量将更加困难。
2-phased ack/req
也提供相同的功能,但实现有其缺点,处理 high/low 的逻辑可能比自然的 4-phased 协议更复杂。它需要 XOR 门和一个参考寄存器来输出转换而不是状态(改变极性而不是指示“我准备好了”)。它需要 XOR 门来检测是否应该发生状态变化。
从性能的角度来看,它需要更多的资源,增加了关键路径,但减少了阶段的数量。目前尚不清楚结果是否会提高性能,需要检查,但这可能取决于技术。一个理由是协议在有限带宽的长线路或负载线路上传输,以牺牲局域面积为代价提高这些线路的速率可能很有趣。
3。它们可以互换吗?
可以在同步电路中使用 req/ack
协议连接两个 valid/ready
块。但是,为了在异步电路中将两个 req/ack
块与 valid/ready
协议连接起来,您需要第三个同步信号来实现传输周期的概念。
这个问题在大多数情况下没有实际意义,因为有惩罚没有优势。 valid/ready
或等效物将用于同步电路。在异步电路中,您必须在 2 相或 4 相之间进行选择 req/ack
。
可以在异步电路中使用 XOR 和 S/R 锁存器连接 2 相和 4 相 req/ack
块。
总结
它们在各自的同步/异步实现中使用时在功能上是等效的,但不能总是在其他域中使用(req/ack
可以在同步域中使用但性能不佳,valid/ready
不能在异步域中这样使用)。每种实现对性能、功耗和资源利用率都有不同的影响。