error al definir múltiples parámetros

0

Quiero definir 19 parámetros de 16 bits de manera que pueda llamarlos como b [0], b [1], b [2], ... este es mi código:

    module optimizedSourceFIRfilter(aclk, s_axis_data_tvalid, s_axis_data_tdata, 
                        s_axis_data_tready, m_axis_data_tvalid, m_axis_data_tdata);

        input aclk, s_axis_data_tvalid;
        input [15:0] s_axis_data_tdata;
        output s_axis_data_tready, m_axis_data_tvalid;
        output [15:0] m_axis_data_tdata;


        parameter signed [15:0] b [18:0];
        b[0] = 26;
        b[1] = 270;
        b[2] = 963;
        b[3] = 2424;
        b[4] = 4869;
        b[5] = 8259;
        b[6] = 12194;
        b[7] = 15948;
        b[8] = 18666;
        b[9] = 19660;
        b[10] = 18666;
        b[11] = 15948;
        b[12] = 12194;
        b[13] = 8259;
        b[14] = 4869;
        b[15] = 2424;
        b[16] = 963;
        b[17] = 270;
        b[18] = 26;
    end module

sin embargo, esto no funciona y recibí estos errores:

near "[": syntax error, unexpected '['.

y este

vlog-13205) Syntax error found in the scope following 'b'. Is there a missing '::'?

¿Cómo puedo resolver eso?

EDITAR: También cambié parameter a reg , pero recibí los mismos mensajes de error

    
pregunta Fatemeh Karimi

1 respuesta

1

Solo puede inicializar un parámetro de matriz desempaquetado en SystemVerilog.

parameter signed [15:0] b [0:18] = {26,270, ... ,26};

En Verilog, tendría que empaquetar la matriz y seleccionar una porción del parámetro. Pero cada rebanada estaría sin firmar.

   parameter [0:(16*19)-1] b = {16'd26, 16'd270, ... , 16'd26};

Luego, cada sector b[I] desempaquetado se empaquetará b[I*16+:16] .

    
respondido por el dave_59

Lea otras preguntas en las etiquetas