fpga在仿真时在复位之前要加1问题:
initial begin
rst_n=0;
wr_req=1;
#(20*CHANG+1); //不仅要在这里加1,要在每个激励信号第一次变化之前加1,如在第7行也要加1
rst_n=1;
@(posedge idle_flag)
#(CHANG+1); //加1不要少,否则正常信号可能会变成毛刺
wr_req=1;
end
fpga在进行前方真的时候不涉及任何延迟,在复位时等待时间加1是更好的模拟真实情况,并且减少错误,如果不加以可能会出现突变毛刺或者状态机跳变的时候跳变条件只维持一瞬间,并且要注意激励在每次变化之前也要延迟加1,如上述代码第7行要延迟101,因为第6行语句同步信号,让第4行加1的作用失效所以要重新加1否则仿真可能出错(暂时不知道为啥,有点看运气,有时候仿真效果没问题,有时候有)。