握手是最古老的子不同域之间传输数据的方式
握手信号的传输步骤
- A给B发送数据的同时发送请求req
- B根据自己的下一个时钟上升沿同步req成为req1
- B根据自己的下一个时钟上升沿识别req1成为req2(判断是否发送终止)
- B发送ack给A,表示已经接收到数据
- A根据自己的下一个时钟上升沿同步ack成为ack1
- A根据自己的下一个时钟上升沿识别ack成为ack2
- 重复上述操作
发送一个数据需要使用5个A周期
握手信号的要求
数据应该在发送时钟域内稳定至少两个时钟上升沿
请求信号req的宽度应该超过两个时钟周期,否者从高速时钟向低速时钟传递可能无法捕捉到该信号
缺点
比FIFO慢多了