HDL et vérification

Quel circuit obtient-on en synthétisant la description ci-dessus, qui compte les 1 dans d sur 8 bits ?

always @(*) begin
    count = 0;
    for (i = 0; i < 8; i = i + 1)
        count = count + d[i];
end
  1. AUn circuit séquentiel comptant un bit par cycle sur 8 cycles d'horloge
  2. BUn circuit combinatoire où la boucle est déroulée en 8 itérations, avec des additionneurs alignés
  3. CUne erreur, car une boucle for n'est pas synthétisable
Afficher la réponse et l'explication

Réponse : B. Un circuit combinatoire où la boucle est déroulée en 8 itérations, avec des additionneurs alignés

Une boucle for en HDL ne réutilise pas un même circuit de façon répétée comme en logiciel : la synthèse logique la déroule en autant de circuits que d'itérations. Cet exemple donne un circuit combinatoire de 8 additionneurs alignés, qui calcule tout en un seul cycle d'horloge. Un grand nombre d'itérations agrandit le circuit et allonge le délai, ce qui demande de la vigilance. Pour calculer avec moins de circuit en prenant du temps, on l'écrit sous forme de machine d'états cadencée.

S'entraîner sur ce thème Retour au thème

Autres questions sur HDL et vérification

  1. Quel est le type et le comportement de la réinitialisation dans la description ci-dessus ?
  2. Quelle est la différence entre réinitialisation synchrone et asynchrone ?
  3. Dans un circuit à réinitialisation asynchrone, pourquoi synchronise-t-on la levée de la réinitialisation (passage de 0 à 1) sur l'horloge par deux bascules avant de la distribuer ?
  4. Quelle est la structure de base d'une machine d'états décrite en HDL ?
  5. Dans la description de machine d'états ci-dessus, pourquoi écrit-on « next = state; » en tête du deuxième bloc always ?

Comparatifs sur ce thème