如何解决准备/有效vs 2向握手vs 4向握手
我对就绪/有效握手在功能上是否等同于req / ack(2路)握手感到困惑?在功能上是等效的,我的意思是,在所有我们可以使用req / ack(2路)握手进行的情况下,我们都可以使用就绪/有效握手进行数据传输,反之亦然?有什么方案可以使一种方案起作用而另一种方案不能起作用?
作为对同一问题的扩展,req / ack(2路)在功能上是否等同于req / ack(4路)握手?通常,我发现差异在于所需的硬件和速度方面。在任何情况下,我们必然会使用req / ack(4路)或req / ack(2路)。
总而言之,我想在这三个方案之间建立连接-一个方案将在哪里失败而另一个方案将在哪里工作。
问题在于同步设计和异步设计
解决方法
一个老问题,但为了以后类似的查询,我还是会回答。
1.什么时候使用?
4 相或 2 相 req/ack
协议在没有时钟的异步逻辑中是必要的。信号是对彼此的响应:两者都是 4 阶段协议中的响应,ack
是 2 阶段协议中的唯一响应。
valid/ready
(或等效)协议由于时钟上升沿的同步,不需要归零相位,它只能用于同步逻辑。此外,只需要一个阶段,因为 valid
和 ready
在当前传输中不是相互响应,它们只是在下一个周期更新。
2.他们如何比较?
所有3个协议都准确控制数据的传输,它们也可以传输背压。所以是的,它们在功能上是等效的。
4 相 req/ack
信号切换两倍,从性能和功耗的角度来看,这不是很好。但是同步电路具有块缓冲器,当扇出很大时可能会消耗很多,这会产生其他后果,例如 EMI、需要本地电容器和/或使用扩频技术。这一切都取决于电路的规模和技术。但总的来说,使用需要以两倍速率切换信号的协议会更难保持相同的吞吐量。
2-phased ack/req
也提供相同的功能,但实现有其缺点,与自然的 4-phased 协议相比,处理高/低的逻辑可能更复杂。它需要异或门和参考寄存器来输出转换而不是状态(改变极性而不是指示“我准备好了”)。它需要异或门来检测是否应该发生状态变化。
从性能的角度来看,它需要更多资源并增加关键路径,但减少了阶段数。目前尚不清楚结果是否会提高性能,以进行检查,但这可能取决于技术。一种理由是在有限带宽的长线路或负载线路上传输协议,在这种情况下,以本地门区为代价提高这些线路的速率可能会很有趣。
3.它们可以互换吗?
可以在同步电路中使用 valid/ready
协议连接两个 req/ack
块。但是,为了在异步电路中将两个 req/ack
块与 valid/ready
协议连接起来,您需要第三个同步信号来实现传输周期的概念。
这个问题在大多数情况下是没有实际意义的,因为有惩罚并且没有优势。 valid/ready
或等效项将用于同步电路。在异步电路中,您必须在 2 相或 4 相 req/ack
之间进行选择。
可以将 2 相和 4 相 req/ack
块与异步电路中的 XOR 和 S/R 锁存器连接起来。
总结
当它们用于各自的同步/异步实现时,它们在功能上是等效的,但不能始终用于其他域(req/ack
可以用于同步域但性能不佳,valid/ready
不能用于在异步域中如此使用)。每种实现对性能、功耗和资源利用率都有不同的影响。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。