¿cómo inicializar un vector de registros en verilog?

0

Quiero inicializar los siguientes registros de 16 bits en mi módulo.

reg [15:0] coefficient[4:0];

Usé el operador de concatenación para hacer esto:

reg [15:0] coefficient[4:0] = {16'd26, 16'd270, 16'd734, 16'd21, 16'd90};

pero lo simulo con ISE, recibo este error:

constant value of constant expression must be used for initialization

¿Cómo puedo solucionarlo?

EDITAR: como initial no es sintetizable, no lo usé. ¿hay otra manera?

    
pregunta Fatemeh Karimi

2 respuestas

1

Quería sugerirle que use System Verilog pero no creo que ISE lo admita. (Pasé por la configuración del archivo y no pude encontrarlo).

Luego tienes que usar una declaración inicial:

initial
begin
   coefficient[0] = 16'd26;
   coefficient[1] = 16'd270;
   ...
end
    
respondido por el Oldfart
1

Debes usar un valor explícito al reiniciar. Esto es compatible con la implementación de ASIC y FPGA. Además, permite un restablecimiento limpio si es necesario, ya que no hay garantía de lo contrario, ese coeficiente volvería a su primer estado. Por ejemplo:

always @(negedge nRESET) begin
    coefficient[0] <= 16'd26;
    coefficient[1] <= 16'd270;
    ...
end

También puede consultar this old question.

    
respondido por el awjlogan

Lea otras preguntas en las etiquetas