打怪升级之记录一次惨烈的BUG修改过程

BUG描述

在写以太网时,时常会不自觉地把收尾信号跟FIFO存储信号混为一谈,导致最后一个信号的接收出现严重的BUG:

打怪升级之记录一次惨烈的BUG修改过程_第1张图片

就像上图这样,最后的收尾标志信号与FIFO写入信号重合,导致最后的信号无法正常读出。

打怪升级之记录一次惨烈的BUG修改过程_第2张图片

如上图所示,但结束信号与最后的读取信号同时到达时,就不会有正常的enable信号产生。

解决方案

将终止标志信号向后延申两个周期即可。

module Signal_Dly_T
(
input wire sys_rst_n,
input wire signal_clk,
input wire signal,

output wire signal_dly_t
);
reg signal_dly;
reg signal_dly_dly;

assign signal_dly_t = signal_dly_dly;

//signal_dly
always@(negedge signal_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        signal_dly <= 1'b0;
	else
		signal_dly <= signal;

//signal_dly_dly
always@(negedge signal_clk or negedge sys_rst_n)
    if(sys_rst_n == 1'b0)
        signal_dly_dly    <=  1'b0;
	else
		signal_dly_dly <= signal_dly;

endmodule

添加这样的工具,就可以使信号延后。

你可能感兴趣的:(bug,fpga开发)