Leren Verilog: Een korte Tutorial-serie over digitale elektronica ontwerp met FPGA en Verilog HDL (20 / 21 stap)

Stap 20: VM 4.3: If/Else in Verilog

Deze Tutorial Module is beste na een stevige begrip van Module 4.2 blokkeren en niet-blokkerende verklaringen voltooid.

If/Else zijn statements in Verilog uiterst nuttig wanneer correct gebruikt.  Eerst neem een kijkje op een paar regels die u voor If/Else statements in Verilog volgen moet:

1. alle If/Else statements moeten worden gevestigd binnen van een altijd blokkeren
2. alle waarden ingesteld door middel van een If/Else statement moet type reg
3. Als u meer dan één reg toewijst, gebruik "begin" en "end" aan de draagwijdte van de If/Else. Slechts één instructie? Dan maak je geen zorgen over het. Maar één van beide manier eindigen elke interne regel van een If/Else met een puntkomma (een puntkomma nooit volgt nog een "begin" of "end"-instructie).
4. gebruik Comparateur exploitanten met 2 symbolen in omstandigheden (dat wil zeggen "& &" en "==" en "! =")

Dat is in principe alles wat er is. Als uw code u ooit problemen geven is, terug te verwijzen naar deze vier regels en vraag jezelf, "Doet mijn code volgen deze regels?".

Verilog krijgen we drie fundamentele voorwaardelijke instructies gebruiken: als, anders, en anders als. Voordat we naar deze wel gebruiken, moeten we gaan over waarden toewijzen aan een reg.

We weten dat een reg is als een draad die zijn eigen bron, dat wil zeggen een draad die zijn eigen waarde genereren kan kan hebben. We weten ook dat wij bus regs en één regs kunnen hebben.

U kunt een reg zoals je zou een variabele in C/C++; het slaat de waarde totdat het expliciet veranderd:

reg myReg;
myReg = 1' b1; blokkeren
myReg < = 1' b0; niet-blokkerende

Hiermee worden de reg op hoogspanning logica dan aan logica laagspanning. Echter waarden toegewezen aan regs moeten alleen optreden binnen een altijd blokkeren, tenzij u nooit zijn waarde veranderen zal. Als u precies nodig hebt, bijvoorbeeld een constante logica hoge draad, kan je een reg waarde buiten een altijd blokkeren.

Toewijzen van (niet gelijk dit aan het zoekwoord toewijzen) een waarde aan een reg vereist de volgende notatie voor de linker kant van de instructie:

< naam van reg >< evenaart exploitant (= of < =) >

En voor de rechterkant (de waarde):

< bus breedte > ' < waarde type >< waarde >

Dit is belangrijk omdat de breedte van de reg moet exact overeenkomen met de breedte van de waarde. Er zijn veel verschillende soorten waarden die wij aan de reg, zoals binair, hexadecimaal en decimaal toewijzen kunt (genoemd in Verilog b, h en d respectievelijk) maar ik aanbevelen dat degenen die gewoon Verilog leren zijn alleen binaire waarden gebruiken. Ze zijn makkelijk om mee te werken en ook makkelijk om op te lossen.

Bij het gebruik van de binaire waarden moet u uit elke waarde (1 of 0) van elke bit van de reg typen, tenzij u bent het maken van de reg allemaal hoog of alle laag.

Voorbeelden:

my_reg < = 4' b0; juridische
my_reg2 < = 3' b010; juridische
my_reg3 < = 4' b01; illegale (breedte mismatch; verwacht van 4 bits)

Deze verklaringen zou worden gelezen in plain Engels als, bijvoorbeeld, "4 bit binary nul" of "drie bits binaire twee".

Nu dat we hoe u een waarde toewijst aan een reg weten, laten we eens kijken naar het gebruik van If/Else verklaringen in Verilog, beginnend met een voorbeeld:

module testMod)
ingang a,
Input b,
uitvoer c
);

reg Q;

altijd @ (a, b) //if de staat van een of b veranderingen, opnieuw het uitvoeren van deze code
beginnen
Als (een 1' b1 == || b == 1' b0)
Q < = 1' b0;
anders
Q < = 1' b1;
einde

toewijzen van c = Q;

endmodule

Kunt u traceren door middel van deze code en afleiden hoe een If/Else statement werkt in Verilog?

Wat als we willen manipuleren van meer dan één waarde als de "als" veroorzaakt (Opmerking: als uw als instructie twee waarden wijzigt, uw instructie else moet ook twee waarden om te voorkomen dat zwevende waarden wijzigen)?

module testMod)
ingang a,
Input b,
uitgang [1:0] c
);

reg Q;
reg T;

altijd @ (a, b) //if de staat van een of b veranderingen, opnieuw het uitvoeren van deze code
beginnen
Als (een == 1' b0)
beginnen
Q < = 1' b0;
T < = 1' b0;
einde
anders als (een 1' b1 == & & b == 1' b1)
beginnen
Q < = 1' b1;
T < = 1' b0;
einde
anders
beginnen
Q < = 1' b1;
T < = 1' b1;
einde
einde

toewijzen van c [0] = Q;
toewijzen van c [1] = T;

endmodule

Ik denk dat dit voorbeeld banden veel van de ideeën in deze tutorial serie samen behandeld. Ik gooide ook in de instructie Else If. Geen verrassingen echter het werkt als een C/C++. Zorg er wel voor dat het elke voorwaarde acties behandelt de dezelfde uitgangen (in dit geval zowel Q als T werden behandeld in elk geval). Opmerking de begin- en eindtijden sleutelwoorden in de plaatsen u intuïtief dat moet accolades.

Dat is ongeveer alles wat er is If/Else If/Else verklaringen in Verilog. Vergeet niet te verwijzen naar de regels voor het ontwerp aan de bovenkant van deze Tutorial Module voor de foutopsporing.

Gerelateerde Artikelen

Hoe maak je een korting op de schouder lange mouwen jurk met riem

Hoe maak je een korting op de schouder lange mouwen jurk met riem

Turkoois, zwart of andere kleuren je wilt. Maak een mooie, dromerige jurk voor de lente! Stel dat u zal de afgunst tussen uw vrienden ;)Om deze jurk die je nodig hebt: jersey of lycra, pins, naaimachine, schaar, meten tape, krijt of potlood.Stap 1: E
Maken van een kort verhaal met niets, maar een willekeurige Object voor je

Maken van een kort verhaal met niets, maar een willekeurige Object voor je

Soms schrijven de moeilijkste manier om jezelf te uiten aan de wereld kan worden. Maar zodra u wat weet te schrijven en je zoveel oefenen hebt als je kunt krijgen, je bent een stap dichter bij steeds een groot schrijver.Uiteraard moet je een beetje m
LinKit een GPS Tutorial

LinKit een GPS Tutorial

Uit de talrijke functies die de Linkit één Raad van bestuur heeft, is GPS een van hen! Toen ik begon op proberen te gebruiken GPS de Linkit, kostte het me weken te halen op werking omdat:Was ik onbekend met de werking van GPSHet codevoorbeeld hoefde
Beginners Video Tutorial-serie voor IoT met Intel Edison (IntelIot)

Beginners Video Tutorial-serie voor IoT met Intel Edison (IntelIot)

Ongeveer een maand terug ik de gelegenheid gehad om deel uit te maken van IoT road show wordt georganiseerd door Intel in Pune, India. Het was een geweldige ervaring. Ik wilde een IoT gecontroleerde RC auto met paar functies te bouwen. Die hebben gew
SketchUp 3D modellering, Bestandsconversie en advies voor afdrukken in 3d, een korte handleiding

SketchUp 3D modellering, Bestandsconversie en advies voor afdrukken in 3d, een korte handleiding

Ik zag deze wedstrijd met betrekking tot afdrukken in 3d en dacht ik moet invoeren, deels omdat ik zou heel graag enkele van de prijzen en ook omdat ik denk dat dit instructable kan helpen u om uw 3D-modellering en vandaar animatie of 3d printen verm
Bouwen van een korte draak (16 voet 3 - Board Outrigger zeilen kano)

Bouwen van een korte draak (16 voet 3 - Board Outrigger zeilen kano)

Opmerking: versie 4.0 12 mei 2011--toegevoegde stap 7 over een korte trimaran conversie voor de uitdaging van de Everglades. Ik praat meer over zeilen (en andere dingen) op mijn blog, Tristram Shandy in de 21e eeuw, www.tristramshandy21st.blogspot.co
Krijgen begon met Python en programmeren - de korte Tutorial

Krijgen begon met Python en programmeren - de korte Tutorial

zodat ik zien dat u geïnteresseerd bent in het leren over programmeren... of slangen.Als u hier voor slangen, spijt dat is dit niet de plek voor jou. Nou, misschien...Als u hier bent om te leren over programmeren of Python dan u bent aangekomen. Deze
Een korte geschiedenis van de tijd

Een korte geschiedenis van de tijd

"Mensen begrijpen niet tijd. Het is niet wat u denkt dat het is. - Mensen veronderstellen dat de tijd een strikte progressie van oorzaak daartoe is... maar eigenlijk, vanuit het oogpunt van niet-lineaire, niet-subjectieve meer als een grote bal van w
Hoe schrijf je een kort verhaal

Hoe schrijf je een kort verhaal

IntroOm te leren hoe om te schrijven een kort verhaal, je moet kiezen uw thema's, instelling(en), tekens en het punt van uitzicht (1e persoon, 2de persoon, 3e persoon). Je moet hebben een interessant onderwerp en gebruik van grote woorden, zodat mens
Leren tekenen een stripfiguur

Leren tekenen een stripfiguur

Say goodbye te houden van mannen voor eeuwig! Dit Instructable leert u fundamentele beginselen die u kunnen helpen uw eigen indrukwekkende stripfiguur tekenen. Afhankelijk van hoe comfortabel u in tekenen bent, kan beheersen van dit eenvoudige karakt
Een volledig nieuwe theorie over de bouw van piramides (voor zover ik weet)

Een volledig nieuwe theorie over de bouw van piramides (voor zover ik weet)

Dus, hier is het uitgangspunt: U bent een miljardair dot com, of de uitvinder van een smaak van sociale media software app, of misschien u zojuist heb verlaten potjes door uw rijke oude oom en uw BFF pussycat heeft net verloren alle negen levens is d
Een andere How-To over verbetering van uw gezichtsvermogen natuurlijk.

Een andere How-To over verbetering van uw gezichtsvermogen natuurlijk.

ik zal open uw ogen tot een manier van verbeteren visie natuurlijk, door eenvoudige oog oefeningen die zal leiden tot een gezonde ogen en visie duidelijk te volgen. Ik zal vertellen dat u wilt dat ik weet, en ik wil horen van mensen die het toevoegen
Leren van een tweede taal een woord een dag armband

Leren van een tweede taal een woord een dag armband

de universele moeilijkheidsgraad van het leren van een tweede taal is het feit dat studenten oren, mond, ogen, handen en gedachten niet worden ondergedompeld in het milieu. Als ze niet de kans om te gebruiken wat ze leren al snel genoeg, vergeten stu
Hoe maak je een korte Film van Professional voor $80 (deel I - pre-productie).

Hoe maak je een korte Film van Professional voor $80 (deel I - pre-productie).

Deel II kan hier worden gevonden: How to make van een korte Film van Professional voor $80 (deel II - productie)Ik heb het maken van films sinds de vijfde klas. In deze tijd, heb ik talloze korte broek die voortdurend beter krijgen gemaakt. Als een s