Pregunta

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 reloj y error_count.

    Siguiendo el fragmento del 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 de 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 simplemente imprime 0 como la salida.¿Hay algo malo 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 contador local (que fue Reg [31: 0]).

¿Fue útil?

Solución

Debe declarar el cable de 32 bits dentro del módulo de nivel superior para conectar los dos puertos.

wire [31:0] error_count;

Si deja esto, se declara una red implícita que es solo un cable de 1 bits y no conectará los vectores correctamente.

Este error es un clásico Verilog Gotcha.La presentación aquí tiene una buena explicación de este y otros:

http://www.sutherland-hdl.com/papers/2006-snug-boston_standard_gotchas_presentation.pdf

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top