实现xilinx fifo核心的仿真错误

时间:2017-09-22 05:48:20

标签: verilog xilinx fifo

我已经从Xilinx核心生成器为FIFO生成了核心IP。我在模拟设计时遇到了一些错误。

在刺激中,我的时钟开启每个#1,写入标志也设置为#1,然后是din,再次写入标志在#1处未设置。读取标志后跟相同的事情

问题是: 1.完整标志的设置早于数据填充FIFO。 2.读取不会从第一个指针开始,而是从第4个读指针开始。

有什么建议吗?

initial begin

    clk = 0;
    rst = 0;
    rst = 1;
    #1 rst = 0;
    wr_en = 0;
    rd_en = 0;

    for (i=0; i<1024; i=i+1) begin : wr_loop
        #1 wr_en = 1;
        din <= i;//$urandom_range(5,14);
        #1 wr_en = 0;
    end

    for (j=0; j<1024; j=j+1) begin : rd_loop
            #1 rd_en = 1'b1;
            #1 rd_en = 1'b0;
    end

    #900000 $finish;
end

    always #1 clk = ~clk;

模拟图像链接:(满足标志应在1024个条目后提升)

1 个答案:

答案 0 :(得分:0)

我认为你有时间问题。如果这是与clk上升沿同步的FIFO,则可能无法正确锁定wr_enrd_en个脉冲。

对于初学者,我会尝试将wr_en设置为您想要执行写入的clk周期数。另外,为了避免initialalways块之间的竞争条件,请clk阻止initial生成wr_en块,并确保rd_en和{{1}信号在 in 活跃(通常是下降)的clk边缘发生变化。