如何在 Verilog 中输出一个常数值?

How can you output a constant value in Verilog?

我正在尝试输出一个 1280 位的数组,每个 10 位长,数字为 0->128。

我听说 localparam 可能是最好的选择,但这似乎是一个奇怪的要求,所以我想知道是否有经验的人可以帮助我。

谢谢

您可以在初始或重置语句中使用 for 循环:

reg [0:1279] big_vector;
integer i;

// here you need an initial
// or a reset section
   for (i=0; i<128; i=i+1)
      big_vector[ i*128 +: 10] = i;

如果您不这样做 touch/change big_vector 综合工具会将其转换为常量。

您可以创建一个函数,为局部参数或任何其他信号提供常量值。

wire [1279:0] signal;

assign signal = pattern(0);

function [1279:0] pattern(input arg); // Verilog requires at least one argument to a function
integer i;
begin
     for (i=0;i<128;i=i+1)
       pattern[i*10 +:10] = i;
end
endfunction

SystemVerilog:

    wire [1279:0] signal;

    assign signal = pattern();

    function bit [1279:0] pattern(); 
      for (int i=0;i<128;i++)
           pattern[i*10 +:10] = i;
    endfunction