gpt4 book ai didi

Verilog:值与数组范围不匹配,模拟不匹配

转载 作者:行者123 更新时间:2023-12-04 15:11:32 24 4
gpt4 key购买 nike

据我所知,以下代码可以正确合成和模拟,但 XST 仍然给出以下 警告: value(s) does not match array range, simulation mismatch.有什么我想念的吗?

使用的工具:Xilinx ISE Project Navigator(合成器:XST)
FPGA:斯巴达 3E

module error_example(
input [47:0] data,
input [2:0] sel,
output [5:0] data_out
);

assign data_out = data[sel*6 +: 6];

endmodule
WARNING:Xst:790 - "error_example.v" line 8: Index value(s) does not match array range, simulation mismatch.
就像我说的,这行得通,我已经做了数学计算:
sel可以有从 0 到 7 的值,

如果 sel为 0,则 data_out = data[5:0]...

如果 sel是 7,然后 data_out = data[47:42]
我应该在这里做些不同的事情吗?这是 XST 中的错误吗?

最佳答案

我创建了 example on EDAplayground ,它在没有警告的情况下运行。

我通常不会将宽度与 parameter s 一起使用,如果您这样做,您可能希望与 reg 定义保持一致。

尝试:

  • parameter data = 48'h123456789ABC;
  • parameter [47:0] data = 48'h123456789ABC;

  • 我不认为我以前以这种方式使用过参数,但声明一个常量 reg 意味着相同的逻辑,这可能会避免警告。
  • reg [47:0] data = 48'h123456789ABC;

  • 注意:使用大写的常量( parameterlocalparam )是一种很好的做法。

    或者转换为 case 语句:
    always @* begin
    case (sel)
    3'd0: data_out = 6'dx;
    3'd1: data_out = 6'dx;
    // ...
    default : data_out = 6'd0;
    endcase
    end

    关于Verilog:值与数组范围不匹配,模拟不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22215855/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com