赞
踩
这篇文章专门学习一下握手法。握手法分为半握手和全握手两种。
半握手的流程为:
①发送方将发送数据send_data输出,同时拉高REQ信号。
②接收方对REQ信号进行同步,并采样send_data,此时已经接收到数据了。
③接收方返回一个ACK信号,同时输出回写信号wb_data给发送方。
④发送方对ACK信号进行同步,并采样来自接收方的回写信号。
⑤发送方拉低REQ信号,发送方认为流程结束。可在下一个时钟周期重新拉高REQ信号开启下一次传输。
⑥接收方对REQ信号进行同步,若检测到REQ信号的拉低,则拉低ACK信号
全握手的流程为:
①~④与半握手完全一样。
⑤发送方拉低REQ信号,此时,全握手的行为将于半握手出现分歧。
⑥接收方对REQ进行同步,检测到REQ由高电平转低电平后,拉低ACK信号。
⑦发送方对ACK信号进行同步,检测到ACK由高电平转低电平后,认为流程结束。可在下一个周期重新拉高REQ信号开启下一次传输
半握手与全握手的本质区别在于传输结束的触发条件不一样。
传输结束条件:发送方接收到ACK信号
优点:传输周期短,传输效率高。
缺点:实用性受限,无法应用于快时钟转到满时钟的场合。
如果在快转满场景中应用半握手传输,将会出现发送方数据间隔性地传输到接收方的情况。比如发送方发送的数据是1->2->3->4->5->6->7,那么接收方接收到的数据可能是1->3->5->7。
传输结束条件:发送方接收到ACK信号的撤销。
优点:实用性强,快->慢,慢->快均适用
缺点:传输效率低,速度慢。
如图,发送方从001开始发送递增数,然而接收方每接收到一个数就要漏掉3个数,因此快时钟域到满时钟域是不可以使用半握手的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。