Verilog - número variable de entradas / salidas

1

¿Hay alguna manera en verilog para hacer lo siguiente? Tengo un número variable de FIFO (1 a 4) creados con una declaración de generación dentro de un módulo

pseudocódigo:

module()
    generate( for i to NUM_FIFOS )
        FIFO fifoI( args )

Lo que quiero hacer es tener los datos de lectura de estos FIFO como salidas de todo el módulo. ¿Hay una manera de tener un número variable de salida?

por ejemplo

module(
    generate for( i = 0 to NUM_FIFOS )
        output FIFO_dataI
    )

¡Gracias por la ayuda!

    
pregunta ballaw

1 respuesta

2

Use un ancho de bus parametrizado:

module FIFO #(WIDTH=8) (
  output [WIDTH-1:0] out,
   /* other ports */
);

Luego sobrescriba el parámetro al generar las instancias.

module top #(NUM_FIFO=4,WIDTH_FIFO=8)(
  output [NUM_FIFO*WITDH_FIFO-1:0] FIFO_data,
   /* other ports */);
/* ... other code ... */
genvar i;
generate
    for(i=0; i<NUM_FIFO; i++) begin : gen_fifo
        FIFO #(.WIDTH(WIDTH_FIFO)) fifoI (
          .out( FIFO_data[i*WIDTH_FIFO +: WIDTH_FIFO] ),
          /* args */ );
    end : gen_fifo
endgenerate
endmodule : top
    
respondido por el Greg

Lea otras preguntas en las etiquetas