Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Lire un chronogramme et un fichier VCD

Après cette leçon: Je peux lire un chronogramme et dire ce qui s’est passé à chaque coup d’horloge.

Leçon de 60 min7 commandesLab Conception numérique : Verilog, VHDL et yosys dans une VM Ubuntu privée

Un chronogramme dessine le temps d’un circuit

Un chronogramme est le dessin de ce qu’un circuit fait au fil du temps : une ligne par signal, le temps va vers la droite. C’est ainsi qu’on trouve pourquoi une sortie change au mauvais moment.

Un simulateur écrit ces changements dans un fichier VCD, en texte simple. Vous allez lire ce fichier, puis le transformer en dessin.

À la fin de cette leçon

Remarque

Je peux lire un chronogramme et dire ce qui s’est passé à chaque coup d’horloge.

Mots-clés

MotCe que ça veut direExemple
Signalun fil du circuit dont on suit la valeur
Chronogrammeun dessin des valeurs des signaux au fil du temps
Fichier VCDun texte qui note chaque changement de chaque signal
Pasle temps qu’une colonne du chronogramme représente5
Valeur inconnueun bit que rien n’a encore fixé, noté x

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un fichier VCD note les changements

VCD veut dire « Value Change Dump » : une liste des changements de valeur. Le fichier ne répète pas ce qui ne change pas.

Une ligne #10 annonce l’instant 10. Une ligne 1! met le signal de code ! à 1. Une ligne b101 " met le signal de code " à la valeur binaire 101, soit 5. Les lignes $var du début donnent le nom de chaque code.

Un extrait de fichier VCD

Code: bash
$timescale 1ns $end
$var wire 1 ! clk $end
$var wire 4 " q $end
$enddefinitions $end
#0
0!
b0 "
#5
1!
#10
0!
b1 "
#15
1!

Aller dans le dossier de travail

Commande
cd ~/hdl

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Compiler le compteur donné

Commande
iverilog -o /tmp/counter counter.v counter_tb.v

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lancer la simulation, qui écrit le fichier VCD

Commande
vvp /tmp/counter

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Lire le fichier de 5 à 15

Commande
sed -n '/^#5$/,/^#15$/p' out/counter.vcd

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

vcd2txt écrit un chronogramme en texte

Lire le fichier brut est long. L’outil vcd2txt le transforme en lignes : une ligne par signal, une colonne par pas de temps. Un signal d’un bit s’écrit avec _ pour 0 et # pour 1. Un bus de plusieurs bits montre son nombre.

La première ligne affichée dit combien de temps vaut une colonne. Lisez-la d’abord.

Le chronogramme avec un pas de 5

Commande
vcd2txt out/counter.vcd 5

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Exemple travaillé : les cinq premières colonnes

InstantclkrstqCe qui se passe
001xDépart : q est inconnue
5110Front montant avec rst à 1 : q devient 0
10010L’horloge redescend, rien ne change
15101Front montant avec rst à 0 : q compte
20001L’horloge redescend, q garde 1

Les cellules que les étudiants remplissent restent vides dans cet aperçu.

Un pas trop large cache des changements

Le chronogramme n’est qu’un échantillon : il regarde le signal une fois par pas. Ce qui change entre deux colonnes disparaît.

Dans ce banc de test, l’horloge a une période de 10 unités. Avec un pas de 20, chaque colonne tombe au même point du cycle. L’horloge semble alors figée à 0. Le Run suivant le montre.

Le même fichier avec un pas de 20

Commande
vcd2txt out/counter.vcd 20

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Erreur fréquente

Attention

Beaucoup de gens pensent qu’un pas plus large donne une meilleure vue d’ensemble. Un pas trop large saute des changements : avec 20, l’horloge ne bouge plus. Prenez un pas au plus égal à la moitié de la période de l’horloge, ici 5.

vcd2svg dessine le chronogramme

Pour un dessin, l’outil vcd2svg écrit un fichier SVG. Les signaux d’un bit sont des lignes qui montent et descendent. Un bus est une rangée de cases.

Le port 8000 du labo montre le dossier out dans un navigateur.

Dessiner le chronogramme

Commande
vcd2svg out/counter.vcd out/compteur.svg

Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.

Pour aller plus loin

Dans le chronogramme de pas 5, comptez les colonnes où q change. Puis relancez avec un pas de 10 et comptez encore.

Dites quel pas rend la lecture la plus courte sans rien perdre, et pourquoi.

À propos de ce labo et de sa source: Lab Conception numérique : Verilog, VHDL et yosys dans une VM Ubuntu privée

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.