上一篇写到pipeline的实现,但是在存在大规模流水线电路中很容易出现长路径时序问题。所以需要对时序进行优化。
https://blog.csdn.net/loading_up/article/details/116722760?spm=1001.2014.3001.5501
握手信号中的优化时序方式:
1. 对vld和data进行打拍寄存一级,且ready实现无气泡传输。
与上一篇的区别在于控制信号的产生逻辑上:
//control path
always@(posedge clk)
begin
if (!rst_n)
begin
vld_s0 = 0;
vld_s1 = 0;
vld_o0 = 0;
vld_o1 = 0;
vld_s2 = 0;
end
else if (vld_in)
begin
vld_s0 = vld_in;
vld_o0 <= en0 ? vld_s0 : vld_o0;
vld_s1 = vld_in;
vld_o1 <= en1 ? vld_s1 : vld_o1;
vld_s2 = (vld_o0 & vld_o1) ? vld_in: vld_s2;
vld_o2 <= en2 ? vld_s2 : vld_o2;