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
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Signal | un fil du circuit dont on suit la valeur | |
| Chronogramme | un dessin des valeurs des signaux au fil du temps | |
| Fichier VCD | un texte qui note chaque changement de chaque signal | |
| Pas | le temps qu’une colonne du chronogramme représente | 5 |
| Valeur inconnue | un 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
$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
cd ~/hdlAffiché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é
iverilog -o /tmp/counter counter.v counter_tb.vAffiché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
vvp /tmp/counterAffiché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
sed -n '/^#5$/,/^#15$/p' out/counter.vcdAffiché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
vcd2txt out/counter.vcd 5Affiché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
| Instant | clk | rst | q | Ce qui se passe |
|---|---|---|---|---|
| 0 | 0 | 1 | x | Départ : q est inconnue |
| 5 | 1 | 1 | 0 | Front montant avec rst à 1 : q devient 0 |
| 10 | 0 | 1 | 0 | L’horloge redescend, rien ne change |
| 15 | 1 | 0 | 1 | Front montant avec rst à 0 : q compte |
| 20 | 0 | 0 | 1 | L’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
vcd2txt out/counter.vcd 20Affiché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
vcd2svg out/counter.vcd out/compteur.svgAffiché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.