Voici un outils intéressant pour dessiner des signaux digitaux. Par exemple un échange 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 :
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' }, ]} |
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},
}