Verilog忽略@(posedge sd_clk)延迟

时间:2018-04-21 22:42:24

标签: verilog

我正试图强迫Verilog等待一定数量的时钟周期,然后再进入always块。要初始化和SD卡,我需要在发送CMD0之前断言CS至少74个周期,但是我的波形输出显示完全忽略了这个延迟。我尝试展开重复块并将其替换为行为for循环,但这些都没有帮助。它也忽略了@(posedge writeRDY)行,所以我认为这不是因为时钟特有的东西。 This is a picture of the waveform output. mosi是SD卡的数据线。

任何关于导致这种情况的想法都将非常感激。

initial begin
    cs <= 1'b1;
    repeat (80) @(posedge sd_clk);
    busy <= 1'b1;
    @(posedge writeRDY);
    in_buffer <= 48'h800000000095; //CMD0. 80 -> CMD# with b_6 = 1, b_7 = 0. 32'b0 for arg, 8'h95 for CRC (checksum)
    @(posedge sd_clk);
    cs <= 1'b0;
    repeat (8) begin
        @(posedge aligned);
    end

end

1 个答案:

答案 0 :(得分:0)

您的波形不是非常有用,因为您在测试台上显示的信号:cs, sd_clk, busy, writeRDY, aligned,仅显示sd_clk。
您还没有告诉您正在使用哪种模拟器或工具。

repeat (80) @(posedge sd_clk);应等待80个时钟周期,但仅限于测试平台。该代码无法合成。 如果它在测试平台中,则您的模拟器不正确。