Verilog: pasar un vector como puerto a un módulo

0

Tengo dos módulos

  1. contador: la salida es un vector llamado error_count.
  2. lcd: Módulo para mostrar el código en una pantalla LCD. La entrada incluye clock y error_count.

El siguiente fragmento de código es el más relevante y se adjunta a continuación:

  1. Módulo de nivel superior:

    counter counter1 (..., error_count);
    lcd lcd1 (..., error_count);
  2. módulo contador:

    module counter (..., error_count);
    ...
    output reg [31:0] error_count = 0;
    ... //Update counter every clock cycle
    endmodule
    
  3. módulo lcd:

    module lcd (..., error_count);
    ...
    input [31:0] error_count;
    ... //error_count used to display on LCD
    endmodule
    

¿Qué está mal con este código? La pantalla solo imprime 0 como la salida. ¿Hay algún problema con la forma en que estoy pasando el vector?

Información adicional: Estoy usando el kit de inicio Xilinx Spartan 3E para probar este código. El código LCD está bien y lo he probado con un contador local (que era reg [31: 0]).

    
pregunta Neel Mehta

1 respuesta

1

El código que mostraste tiene algunos problemas:

  • No muestra cómo se declara error_count en el módulo de nivel superior. Si error_count se declara como wire error_count; , solo tiene un bit de su contador conectado entre el módulo contador y el módulo lcd.

  • No muestra cómo se actualiza el contador en el módulo de contador. Usted podría tener un error allí que hace que el contador nunca se actualice. Dado que se inicializa en 0, siempre tendrá una salida 0 del módulo contador.

  • No muestra ninguna entrada de reloj en el módulo contador. Si el reloj no está conectado, error_counter nunca se actualizará.

  • Dice que lcd tiene una entrada de reloj, pero no muestra que realmente lo haga y no muestra ningún código donde sea importante.

  • No muestra cómo se genera su reloj. Si no hay reloj, el contador no se actualizará.

  • No muestra los puertos de entrada y salida completos a ninguno de los módulos. Con su estilo de codificación, es fácil conectar una entrada incorrecta a un puerto incorrecto. Prefiero mucho intantiar los módulos con la sintaxis como

    counter counter1 ( .clk( clock ) , .error_count( error_count ) );

    Con este estilo, el orden de nombrar las entradas y salidas en la instancia no importa.

  • No ha mostrado ninguna señal de reinicio, pero probablemente tenga una. Si el restablecimiento se bloquea en el estado activo, probablemente el error_count nunca se incrementará.

respondido por el The Photon

Lea otras preguntas en las etiquetas