我希望在 verilog 中生成一组连续的

3 -> 'b111
4 -> 'b1111
5 -> 'b11111

我希望我可以使用 {num{1'b1}} ,但我发现该值必须是常量。
在verilog中有什么方法可以生成一组连续的值吗?

最佳答案

使用系统 verilog,您可以使用 '1 语法,它会根据左侧自动调整大小。

此外,Dodon Victors 答案中的上述函数 2^N - 1 只是带符号符号的 -1。我已经展示了下面两者的用法。

一些模拟器在宽度大于 32 时可能无法正常工作,尽管我相信所有现代模拟器都解决了这个问题。

下面是 EDAPlayground 的示例:

module dut;

  logic [65:0] test1;
  logic [65:0] test2;

  initial begin
    #1ps;
    test1 = '1;
    test2 = -1;

    #1ps;
    $displayb(test1);
    $displayb(test2);
  end
endmodule

输出:
# 111111111111111111111111111111111111111111111111111111111111111111
# 111111111111111111111111111111111111111111111111111111111111111111

关于verilog - 如何在verilog中生成一组连续的,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23239366/

10-11 21:49