TD5 VHDL et CAO

Un livre de Wikibooks.

[modifier] Génération automatique de Netlist

La majorité des logiciels de schéma modernes (frontal des logiciels de CAO) ont pour objectif de réaliser une liste des connexions électriques que l'on appellera netlist dans la suite de ce document. Ces netlists ont en général un format propriétaire mais certains outils sont capables générer ces netlists en VHDL. Il est donc possible à partir d'un schéma, de générer un circuit imprimé ou de choisir la logique programmable en utilisant des FPGAs ou ASICs.

[modifier] Décomposer une synthèse complexe

Lorsque l'on doit réaliser un circuit complexe, il convient en général de le décomposer le problème en deux parties : la partie de commande et la partie opérative. Si cette décomposition est classique en automatisme, elle demande une certaine expérience car à la différence de l'automatisme la partie opérative est elle-même composée d'un ou plusieurs circuits électroniques.

Disons pour simplifier que le niveau simple correspond à ce que l'on fait en schéma logique traditionnel : utiliser des composants simples existants et les assembler. C'est ce niveau qui va nous intéresser maintenant.

[modifier] Utilisations de compteurs

La partie opérative est constituée par un ou plusieurs compteurs. On lui ajoute une partie de commande spécifiée par un ou plusieurs diagrammes d'évolutions. Une exemple est détaillé ci-dessous : VHDLFig17.png

Il s'agit d'un compteur de passages : deux capteurs séparés appelés Droite et Gauche font incrémenter les compteurs si les personnes rentrent dans une pièce en passant d'abord par Droite puis par Gauche. Si elles sortent elles passent d'abord devant Gauche puis devant Droite et l'on décrémente les compteurs.

Ici la partie opérative est réalisée en circuit TTL classiques et la partie commande est une GAL 20V8. Si vous disposez de FPGA, il est possible de mettre à la fois la partie commande et la partie opérative dans le circuit.

Remarque :

Si vous réalisez cet ensemble dans un FPGA, le compilateur doit vous donner au moins un avertissement : l'horloge est réalisée par une partie combinatoire ce qui est une pratique déconseillée.

Il est possible de contourner le problème mentionné en remarque en s'arrangeant pour que la partie commande fonctionne sur front montant d'une horloge et la partie opérative sur front descendant de cette même horloge. Le compteur aura alors une entrée de validation pour compter que la partie commande mettra à un ou pas pour autoriser un comptage/décomptage. Cette technique pourra être utilisée dès que la partie commande et la partie opératives sont toutes deux séquentielles.