Question

J'ai deux modules

  1. comptoir:La sortie est un vecteur appelé error_count.
  2. écran LCD :Module pour afficher le code sur un écran LCD.L’entrée inclut l’horloge et error_count.

L'extrait suivant du code est le plus pertinent et est joint ci-dessous :

  1. Module de niveau supérieur :

    counter counter1 (..., error_count);
    lcd lcd1 (..., error_count);
  2. module compteur :

    module counter (..., error_count);
    ...
    output reg [31:0] error_count = 0;
    ... //Update counter every clock cycle
    endmodule
    
  3. Module LCD :

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

Quel est le problème avec ce code ?L'écran affiche simplement 0 comme sortie.Y a-t-il quelque chose qui ne va pas dans la façon dont je transmets le vecteur ?

Information additionnelle:J'utilise le kit de démarrage Xilinx Spartan 3E pour tester ce code.Le code LCD fonctionne bien et je l'ai testé avec un compteur local (qui était reg[31:0]).

Était-ce utile?

La solution

Vous devez déclarer un fil 32 bits dans le module de niveau supérieur pour connecter les deux ports.

wire [31:0] error_count;

Si vous omettez cela, un réseau implicite est déclaré qui n'est qu'un fil de 1 bit et ne connectera pas correctement les vecteurs.

Cette erreur est un piège classique de Verilog.La présentation ici a une bonne explication de celle-ci et d'autres :

http://www.sutherland-hdl.com/papers/2006-SNUG-Boston_standard_gotchas_presentation.pdf

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top