Étape 7: Logique en Verilog
Cette ligne, c’est là que la « magie » opère. Jusqu'à présent, votre code a décrit toutes les entrées et les sorties, et maintenant vous manipulerez sorties basés sur ces entrées. ayant-droit est un autre mot-clé Verilog ; celui que vous avez utilise maintes et maintes fois. Attribuer les déclarations sont des descriptions permanentes d’une puissance basée sur une ou plusieurs entrées. Vous n’aurez pas plus d’un ayant-droit énoncé par sortie, mais vous pouvez avoir plus d’une expression logique simple par affectation. Le C++ plus proche équivalent à un ayant-droit est définissant une variable égale à une valeur, seulement en Verilog, vous ne pouvez pas modifier la « valeur » une fois été définie parce qu’après avoir été défini, la valeur dépend de l’état physique des intrants.
Rappelez-vous, Verilog est un langage de description de matériel, ce qui signifie seulement vous décrivez comment un circuit se comporte. Les États de commutateur [0] et [1] peuvent changer lorsque le circuit est sous tension (par exemple vous mettez interrupteur [0] à basse tension logique), mais l’instruction d’assignation est résolue ; conduit la volonté encore rouler à haute tension logique à "commuter [0] & ~ commutateur [1] ».
Alors qu’en est-il "commuter [0] & ~ commutateur [1]" ? Nous savons tous les deux sont des entrées, mais quelle ne le « & » et ' ~ ' veut dire ?
Lorsque nous écrire des équations logiques pour les circuits numériques, nous utilisons un « • » pour AND, « + » pour OR, ⊕ pour XOR et si nous voulons indiquer l’inverse, ou « pas » d’un terme, nous dessiner une barre au-dessus de lui. Il existe des équivalents à tout cela et plus encore en Verilog, comme on le voit dans le tableau ci-joint.
Nous pouvons regrouper les instructions à l’aide de parenthèses ; Ceci est particulièrement utile pour créer la NAND, NOR, et gates XNOR, que nous mettons en œuvre l’équation comme nous le ferions pour la version non-inversé de la porte, ajouter des parenthèses autour de l’équation et ajouter un ' ~ ' sur son front. Par exemple, pour rendre la déclaration Verilog « F est égal à un xnor B », où on commencerait ? Certainement nous devons « assign » F une valeur, alors le codage « assigner F = "serait un bon début... OK, donc un xnor B.... Nous n’avons pas un symbole xnor ! Pas de soucis, nous pouvons faire A XOR B puis inverser le terme entier ! Cela conduit à une solution finale de « assigner F = ~(A ^ B); "
Remarque la précédence des opérateurs ; l’opérateur « INV » est associée à l’expression à sa gauche et l’et, ou, XOR, etc. Suivez les règles de priorité des équation logique standard.
N’oubliez pas le point-virgule après l’instruction assign !
Donc rentrer dans notre exemple, attribue a conduit = interrupteur [0] & ~ commutateur [1] ; moyens qui ont conduit seront conduits à haute tension logique si et seulement si l’interrupteur [0] est une logique « un » et interrupteur [1] est une logique « zéro ».