Stap 7: Logica in Verilog
Deze regel is waar de "magische" gebeurt. Tot op dit punt, uw code alle inputs en outputs heeft beschreven, en nu u uitgangen op basis van deze input zal manipuleren. toewijzen is een ander Verilog trefwoord; u gebruikt over en weer. Toewijzen verklaringen zijn permanente beschrijvingen van een output op basis van een of meer input. U hebt niet meer dan één toewijzen instructie per uitgang, maar u kunt meer dan alleen een eenvoudige logica uitdrukking per toewijzing hebben. De dichtstbijzijnde C++ gelijkwaardig is aan een toewijzen is een variabele instellen op een waarde, alleen in Verilog u de "waarde" niet wijzigen nadat het ingesteld omdat na wordt ingesteld, de waarde is afhankelijk van de fysische toestanden van ingangen.
Herinner me, Verilog een hardwarebeschrijvingstaal, wat betekent dat u alleen beschrijft hoe een circuit zich gedraagt. De Staten van switch [0] en switch [1] kunnen wijzigen terwijl het circuit live is (b.v. u flip switch [0] te laag voltage logic) maar de toewijzingsinstructie is vastberaden; geleid zal alleen worden gereden om logica hoogspanning op "overschakelen van [0] & ~ switch [1]".
Dus hoe zit het met "switch [0] & ~ switch [1]"? We kennen dat beide ingangen, maar wat doen de '&' en ' ~ ' betekenen?
Wanneer wij logica vergelijkingen voor digitale schakelingen handgeschreven, gebruiken wij een '•' voor en '+' voor OR, ⊕ voor XOR, en als we willen om aan te geven van de inverse, of "niet" van een woord, we een bar eroverheen trekken. Er zijn equivalenten aan al deze en meer in Verilog, zoals te zien in de bijgevoegde tabel.
We kunnen het groeperen van verklaringen met behulp van haakjes; Dit is vooral handig voor het maken van NAND, NOR, en XNOR-poorten, als we de vergelijking uitvoeren als we voor niet-omgekeerde versie van de poort zouden, voegt toe de vergelijking tussen haakjes en een ' ~ ' aan de voorzijde. Bijvoorbeeld, om de Verilog verklaring van "F is gelijk aan een xnor B", waar zouden we beginnen? Toch moeten we "toewijzen" F een waarde, dus codering "toewijzen van F =" zou een goed begin... OK, dus een xnor B... We hebben niet een XNOR-symbool! Geen zorgen, kunnen we A XOR B dan het omkeren van de gehele looptijd! Dit leidt tot een definitieve oplossing van "toewijzen van F = ~(A ^ B);"
Opmerking de operatoren; de operator "INV" wordt geassocieerd met de term aan haar linkerzijde, en en of, XOR, etc. volgen standaard logica vergelijking prioriteitsregels.
Vergeet niet de puntkomma na de instructie toewijzen!
Dus terug te gaan naar ons voorbeeld toewijzen leidde switch [0] = & ~ switch [1]; betekent dat geleid zal worden gereden om de hoogspanning logica dan en slechts dan als switch [0] een logica "one is" en switch [1] een logica "nul is".