【问题标题】:verilog output stuck on last if statementverilog 输出卡在最后一个 if 语句上
【发布时间】:2018-05-02 21:57:44
【问题描述】:

问题:我正在合成我的代码,它读取 1200 个 16 位二进制向量,分析它们并根据 4 个 if 语句的行为设置一个名为 classe 的 2 位寄存器。问题似乎是 classe 卡在最后一个 if 语句上 - 其中 classe 设置为第 11 位或第 3 位。

当我使用测试平台时,我的代码运行良好。

我认为它卡住了,因为不知何故,总是块一次读取所有 1200 个向量,如模拟中所见,而不是每个时钟沿一个?

我在这里附上了一张模拟截图:https://imgur.com/a/No2E9cq

module final_final_code
(
output reg [ 0:1] classe

    );

reg [0:15] memory [0:1199];
reg[0:15] vect:
integer i; 

//// Internal Oscillator
defparam OSCH_inst.NOM_FREQ = "2.08";
OSCH OSCH_inst
    (
    .STDBY(1'b0),       // 0=Enabled, 1=Disabled also Disabled with Bandgap=OFF
    .OSC(osc_clk),
    .SEDSTDBY()             // this signal is not required if not using SED
    );

initial begin
$readmemb("C:/Users/KP/Desktop/data.txt", memory, 0, 1199);
i = 0;
end


  always  @(posedge osc_clk) begin
     vect = memory[i];
     if ((memory[i][3] == 1'b0)) begin
         classe = 2'b10;
     end

     if ((memory[i][11] == 1'b0)) begin
          classe = 2'b01;
    end

    if ((memory[i][8] == 1'b1 &&  memory[i][4] + memory[i][5] + memory[i][6] + memory[i][7] >= 4'b0100)) begin
        classe = 2'b00;
    end

    if ((memory[i][0] + memory[i][1] + memory[i][2] + memory[i][3] + memory[i][4] + memory[i][5] + memory[i][6] + memory[i][7] + memory[i][8] + memory[i][9] + memory[i][10] + memory[i][11] + memory[i][12] + memory[i][13] + memory[i][14] + memory[i][15] <= 1'b1)) begin
        classe = 2'b11;
end
     i = i + 1'd1;
     if (i == 4'd1199) begin
         i = 0;
    end
end





endmodule           

【问题讨论】:

  • 很可能,因为您忘记重置模型中的值(您可能在测试台中伪造)并且没有正确使用非阻塞分配,因此您的模拟不会产生有效的结果。您的“if”语句链准备按顺序相互覆盖。

标签: verilog fpga lattice-diamond


【解决方案1】:

除了 john_log 所说的:

最后一个 if 语句始终为 TRUE。您正在添加 1 位操作数并与 1 位结果进行比较,因此结果为 1'b1 或 1'b0,它们始终为

您应该检查您的 FPGA 工具是否支持:

initial begin
$readmemb("C:/Users/KP/Desktop/data.txt", memory, 0, 1199);
i = 0;
end

尤其是综合工具从文件中加载内存。上次我使用 FPGA 是不可能的。

【讨论】:

    猜你喜欢
    • 2021-03-05
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    • 2022-01-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多