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