https://zhuanlan.zhihu.com/p/359330607
三种情况:
- valid先发起请求
- ready先发起请求
- 同时发起请求
仔细观察上述3幅时序图,我们了解valid-ready握手机制需要注意三件事:
- valid与ready不可过度依赖,比如valid不可以等待ready到达再拉高(为了防止死锁TODO: 有没有具体点的例子?说明后果),但是在axi协议中的握手信号,ready是可以等待valid拉高再拉高的,valid不可依赖ready的原因是防止死锁(deadlock),本文的代码他俩彼此可以互相独立发出请求拉高;
- valid拉高时与有效数据同步,时钟要对齐;(valid与有效数据拉高的时钟要对齐,提高效率)
- 当数据计算好后,valid可以拉高等待ready拉高,但是每当握手成功之后,数据需要更新,如果此时没有新的有效数据,valid要拉低。
通过一个Ready信号告诉自己前面的模块暂停数据传输的方法被称之为‘反压’。