在valid-ready双向握手机制下,对valid和data进行打拍实现对下游接口的valid信号时序优化。无论下游ready是否有效,数据均会在寄存器中寄存一拍。要求数据输出不能丢弃或乱序,且下游的valid和data为寄存器输出。
接口如下:
module forward_pipe #(
parameter WIDTH = 8)
(
input clk,
input rst_n,
input [WIDTH -1:0]data_in,
input data_in_valid,
output data_in_ready,
output[WIDTH -1:0]data_out,
output data_out_valid,
input data_out_ready
);
endmodule
题目解析
还是典型的握手协议题目,握手信号的打拍和enable型的还是有很大区别的。握手协议的产生valid和ready都可能是由复杂逻辑产生的,这时就需要对接口进行打拍以优化时序。相比而言,valid打拍的场景更为常用。
valid和data打拍核心还是在于两个寄存器,那么先来做一下valid的打拍寄存器。
对于valid的打拍,第一个问题是要不要带复位呢?显然是需要的,这种控制信号不带复位就是找挂呢。接下里,寄存器的en信号逻辑是什么呢?简