1、概念
通讯设备之间任何实际应用信息的传送总是伴随着一些控制信息的传递,它们按照既定的通讯协议工作,将应用信息安全、可靠、高效地传送到目的地。握手协议就是在两个设备在通信之前,要互相的认识一下,然后才能互相传送。
在计算机的概念中,握手(Handshaking)预示着硬件或软件确立或维持两个机器或程序在同步中。握手经常需要在两个系统之间的信息或数据的交换。在两台计算机之间的硬件握手信号被电压水平或在电线中的脉冲携带。软件握手有很多握手协议。基本上,这个握手协议发送一个”hello”信息给接收系统,然后获得一个 “ok” 响应。当这个在两个系统之间的通信完成后,一个 “finish”信息应当被发送和被双方的系统证实。
2、原理
(1)、The master generates the VALID signal to indicate when the data is available.
(2)、The slave generates the READY signal to indicate that it accepts the data.
(3)、Transfer occurs only when both the VALID and READY signals are HIGH.
(4)、RESPONSE signal indicates one transaction is completed.
(1)、当sender端有数据要发送时,将valid置1,并保证数据有效,可以不用检测ready;
(2)、当receiver模块允许接受数据,将ready置1,可以不用检测valid是否有效;
(3)、在任一个cycle,如果valid=1 && ready=1, 则接受端将会在紧接着的下一个clock posedge将数据采入,并通过ready信号来表示自己是否可以接受新的数据;
(4)、在任一个cycle,如果valid=1 && ready=1,如果发送端仍有数据需要发送,则会在下一个clock posedge将新数据放入data bus,来表示自己有新的数据需要发送。如果没有新的数据需要发送,则将valid置0,表示没有数据需要发送。如果前一次的数据没有被接受端接受,即 ready=0,发送端需要保持valid=1,否则,数据将被丢弃,并没有被接收端收到。
如上图所示,c1周期,发送端有数据想要发送,将valid置1,并将D0稳定;可是c1周期接收端不肯接受数据(可能因为他正在忙于其他事务的处理), 数据没有被接受,发送端只能继续将valid置1,并保持D0不变。c2周期,接受端不再繁忙,可以接受数据了,于是他将ready置1,表明这个周期他 可以接受新数据。于是D0便在c2结束的那个上升沿被接收端取走。尽管接受端还想接受数据(c3周期,ready仍为1),但是发送端没有新数据需要发送,于是接收端继续保持ready=1,表明自己仍可以接受数据。紧接着,发送端在c4周期又有数据需要发送,于是就置vliad=1,而此时接收端正在等着呢,于是这个数据D1在c4周期,就传送完成。这次发送方发送完D1,紧接着还有D2需要发送,可是接收端不干了,他不能、不想、不愿意接受新的数据,于是D2和表明D2有效的valid只能一直保持在那里,等啊等,等啊等……直到c7,接收端可以接受了。于是D2终于传过去了。(这段作者描述的非常有趣…..注:非本人所写!)
转载于:https://www.cnblogs.com/Jerome_Lee/archive/2009/11/21/1607202.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/34712.html