Lär dig Verilog: En kort Tutorial serie på Digital elektronik Design med FPGAs och Verilog HDL (7 / 21 steg)
Steg 7: Logik i Verilog
Denna linje är där det "magiskt" händer. Fram till denna punkt, din kod har beskrivit alla in- och utgångar, och nu du kommer att manipulera utgångar baserade på dessa insatsvaror. tilldela är en annan Verilog nyckelord. du kommer att använda om och om igen. Tilldela satser är permanent beskrivningar av en produktion baserad på en eller flera ingångar. Du får inte ha mer än en tilldela uttalande per utgång, men du kan ha mer än bara en enkel logik uttryck per tilldelning. Den närmast motsvarar en tilldela C++ är att en variabel är lika till ett värde endast i Verilog du inte kan ändra "värde" när den är inställd eftersom efter sätts, värdet beror på de fysiska tillstånd av insatsvaror.
Kom ihåg, Verilog är ett hårdvarubeskrivande språk, vilket betyder att du endast beskriver hur en krets fungerar. Påstår av växla [0] och byta [1] kan ändra medan kretsen är live (t.ex. du Vippomkopplare [0] till logik låg spänning) men tilldelningssats är beslutsam; ledde kommer endast köras till logic hög spänning på "växla [0] & ~ Växla [1]".
Så vad om "växla [0] & ~ Växla [1]"? Vi vet båda ingångar, men vad gör det '&' och ' ~ ' menar?
När vi handwrite logik ekvationer för digitala kretsar, använder vi en '•' för och, '+' för OR ⊕ för XOR, och om vi vill ange inversen, eller "inte" av en term, vi drar en bar över den. Det finns motsvarigheter till alla dessa och mer i Verilog, som sett i den bifogade tabellen.
Vi kan gruppera meddelanden med hjälp av parentes. Detta är särskilt användbart för att skapa NAND, NOR, och XNOR gates, som vi genomför ekvationen som vi skulle icke inverterad version av utfärda utegångsförbud för, lägga till parenteser runt ekvationen, och lägga till en ' ~ ' till dess framsida. Till exempel för att göra Verilog uttalande "F är lika med en xnor B", där skulle vi börja? Vi behöver säkert "tilldela" F ett värde, så kodning "tilldela F =" skulle vara en bra början... OK, så en xnor B... Vi har inte en xnor symbol! Inga problem, vi kan göra A XOR B sedan Invertera hela begreppet! Detta leder till en slutlig lösning av "tilldela F = ~(A ^ B);"
Observera operatorernas rangordning; operatorn "INV" är associerad med benämna till vänster och och, eller, XOR, etc. följa standard logik ekvation företräde regler.
Glöm inte semikolon efter programsatsen tilldela!
Så gå tillbaka till vårt exempel tilldela ledde = Byt [0] & ~ Växla [1]; innebär att ledde kommer att drivas till logic hög spänning om och endast om switch [0] är en logik "en" och switch [1] är en logik "zero".