En Verilog/SystemVerilog, on peut trouver ce genre de code :
Mais que fait ce code ? Il renvoie Vrai si a est inférieur ou égal à b... Non, ce n'est pas ça. Le signe <= est surement un opérateur d'affectation : je mets b dans a... puis a dans b ? C'est pour échanger les valeurs de a et b (swap)
Code SystemVerilog : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 a <= b; b <= a;? Mais ça ne peut pas fonctionner, car « normalement » pour faire l'échange, il faut passer par une variable temporaire :
Code C : Sélectionner tout - Visualiser dans une fenêtre à part temp = a; a = b; b = temp;
En logique combinatoire, les sorties d'un système numérique ne dépendent que des états logiques présents aux entrées. Le système n'a donc pas de mémoire, et un système sans mémoire est forcément très limité.
Prenez l'exemple d'un système d'ouverture à code qui donne trois tentatives à l'utilisateur pour saisir le bon code. Dans un système à logique purement combinatoire, chaque saisie de code infructueuse ne peut produire qu'un seul résultat, car sans mémorisation, il ne peut pas tenir compte
Lors du billet précédent, nous avions vu comment établir la description d'un composant simple appelé multiplexeur :
Si sel=0, a est dirigé vers s, et si sel=1, c'est b qui est dirigé vers s
Au niveau d'abstraction le plus bas, le niveau structurel, ce composant est décrit par le câblage de portes logiques élémentaires (portes AND, OR et NOT dans ce cas précis). Voyons comment pourrait-on établir une description de ce composant à
On ne le rappellera jamais assez... Les langages de description de matériel (ou HDL pour Hardware Description Language) tels VHDL ou Verilog/SystemVerilog ne sont pas des langages de programmation classiques comme C, C++, Java, etc. Même si on retrouve des séquences procédurales dans la syntaxe de ces langages, il ne s'agit plus de produire des suites d'instructions exécutées séquentiellement par un CPU.
Le but des HDL est de générer des
Les Arduinautes connaissent bien ce genre de LED programmables que l'on retrouve souvent sous la forme de rubans souples de longueur 1m, 3m, ... 10m et plus, et que l'on utilise pour créer des effets lumineux personnalisés. Voir les bibliothèques FastLED ou NeoPixel par Adafruit.
Pour la démonstration, j'utiliserai un anneau de 12 LED WS2812B (quelques euros l'anneau en cherchant bien), mais que je connecterai à une carte FPGA Altera DE0-Nano.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.