Scripter le dessin des signaux digitaux

Voici un outils intéressant pour dessiner des signaux digitaux. Par exemple un échange SPI :

Exemple communication d'un bus SPI

Exemple communication d’un bus SPI

Un gros deux manière de l’utiliser, la première en tant que webmaster pour l’inclure dans votre site pour illustrer vos publications. Vous pouvez trouver le code source sur ce lien GitHub. La seconde est d’utiliser directement l’éditeur en ligne proposé : http://wavedrom.com/editor.html

Je ne vais m’intéressé qu’a cette seconde option. Lorsque l’on ouvre la page, elle est divisée en deux parties distinctes. La partie supérieur est l’éditeur. L’inférieur sert à visualiser le résultat. Vous modifier l’exemple à votre guise jusqu’à obtenir le résultat obtenu. Pour sauver une image de votre création, il y a un menu en bas à droite de la page.

Pour l’explication sur le  langage utilisé pour vos script c’est assez simple. Commençons par visualiser les différent types de signaux possibles en créant un signal qui contient toutes ces options. La commande :

{ signal: [{ name:"Alfa", wave: "01.zx=ud.23.45"}] }

donnera Le résultat suivant :

wavedrom type de signaux

wavedrom type de signaux

Le tableau ci-dessous résume ma compréhension :

Type de signal description
0 signal indéfini à l’état bas
1 signal indéfini à l’état haut
. Répéte le précédent signal définit
z signal haute impédance
x signal indéfini changeant à chaque coup d’horloge
= signal indéfini ne changeant pas à chaque coup d’horloge
u Signal indéfini à l’état haut
d Signal indéfini à l’état bas
2 signal de couleur blanche
3 signal de couleur jaune
4 signal de couleur rose
5 signal de couleur bleu

Jouons avec le signal d’horloge. Souvent il est intéressant de pouvoir changer la phase de l’horloge ou par exemple d’indiquer un flanc. Cette indication permet par exemple d’indiquer le moment ou les données seront échantillonnées. Le code suivant permet de visualiser différentes options du signal d’horloge:

{ signal: [
  { name: "pclk", wave: 'p.......'},
  { name: "Pclk", wave: 'P.......'},
  { name: "nclk", wave: 'n.......'},
  { name: "Nclk", wave: 'N.......'},
  {},
  { name: 'clk0', wave: 'phnlPHNL'},
  { name: 'clk1', wave: 'xhlhLHl.'},
  { name: 'clk2', wave: 'hpHplnLn'},
  { name: 'clk3', wave: 'nhNhplPl'},
  { name: 'clk4', wave: 'xlh.L.Hx'},
]}
Différent type d'horloge

Différent type d’horloge

Pour plus d’aide je n’ai trouvé que ce tutoriel mais en anglais. Mais voici par exemple le code source permettant de créer la première figure de cet article.

{ signal: [
{ name: « nCS », wave: ’10…….1′},
{ name: « SCLK », wave: ‘N………’},
{ name: ‘MOSI’, wave: ‘x101..0..x’},
{ name: ‘MISO’, wave: ‘x1..01..0x’},],
foot:{tock:-1},
}

 

Laisser un commentaire