Lär dig Verilog: En kort Tutorial serie på Digital elektronik Design med FPGAs och Verilog HDL (20 / 21 steg)

Steg 20: VM 4.3: If/Else i Verilog

Denna handledning modul färdigställs bäst efter en gedigen förståelse för modul 4.2 om blockering och icke-blockerande uttalanden.

IF/Else är-satser i Verilog mycket användbara när de används korrekt. Först ta en titt på några regler som du måste följa för If/Else-satser i Verilog:

1. alla If/Else uttalanden måste placeras inne i en alltid blockera
2. alla värden anges med en If/Else uttalande måste vara av typen reg

3. om du tilldelar mer än en reg, använda "begin" och "slut" för att definiera tillämpningsområdet för den If/Else. Endast ett uttalande? Så oroa dig inte om det. Men hursomhelst slut varje inre linje i en If/Else med semikolon (semikolon aldrig följer instruktionen "börja" eller "slut").
4. Använd komparator operatörer med 2 symboler i förhållanden (dvs "& &" och "==" och "! =")

Det är i princip allt som finns till den. Om din kod är någonsin ger dig frågor, hänvisa till dessa fyra regler och fråga dig själv, "Följer min kod reglerna?".

I Verilog får vi använda tre grundläggande villkorliga satser: om annat, och annat om. Innan vi kommer att använda dessa dock, måste vi gå över hur du tilldelar värden till en reg.

Vi vet att en reg är en tråd som kan ha en egen källa, det vill säga en tråd som kan skapa sitt eget värde. Vi vet också att vi kan ha buss regs och enda regs.

Du kan använda en reg som du skulle en variabel i C/C++; Det kommer att lagra sitt värde förrän uttryckligen ändras:

REG myReg;
myReg = 1' b1; blockera
myReg < = 1' b0; icke-blockerande

Det här alternativet anger reg logic hög spänning sedan till logik låg spänning. Värden som tilldelats regs bör dock endast ske inne i en alltid blockera såvida inte du kommer aldrig ändra dess värde. Om du bara behöver, till exempel en konstant logik high wire, du kan ge en reg värdet utanför en alltid blockera.

Tilldela (inte likställa detta att tilldela nyckelord) ett värde till en reg kräver följande format för den vänstra sidan av uttrycket:

< namn på reg >< lika med operatören (= eller < =) >

Och till höger (värde):

< buss bredd > ' < värde typ >< värde >

Detta är viktigt eftersom bredden på reg måste exakt matcha bredden på värdet. Det finns många olika typer av värden vi kan tilldela reg, som binärt, hexadecimalt och decimal (kallade i Verilog b, h och d respektive) men jag rekommenderar att de som bara lärande Verilog använder endast binära värden. De är lätt att arbeta med och också lätt att felsöka.

När du använder binära värden måste du skriva ut varje värde (1 eller 0) i varje bit i reg om inte du gör reg antingen alla höga eller allt låg.

Exempel:

my_reg < = 4' b0; juridiska
my_reg2 < = 3' b010; juridiska
my_reg3 < = 4' b01; olagligt (bredd mismatch, väntar 4 bitar)

Dessa uttalanden skulle läsas i klartext engelska som till exempel, "fyra bit binära noll" eller "tre bit binära två".

Nu när vi vet hur du tilldelar ett värde till en reg, låt oss titta på hur du använder If/Else uttalanden i Verilog, börjar med ett exempel:

modul testMod)
ingång a,
input b,
utgång c
);

REG Q;

alltid @ (a, b) //if statligt av en eller b förändringar, åter kör den här koden
börja
om (en == 1' b1 || b == 1' b0)
Q < = 1' b0;
annat
Q < = 1' b1;
slutet

tilldela c = Q;

endmodule

Du kan spåra genom denna koden och härleda hur en If/Else uttalande fungerar i Verilog?

Om vi vill hantera fler än ett värde om "om" utlöser (Obs: om din om uttalande förändrar två värden, din else-sats måste också ändra två värden för att förhindra flyttalsvärden)?

modul testMod)
ingång a,
input b,
utgång [1:0] c
);

REG Q;
REG T;

alltid @ (a, b) //if statligt av en eller b förändringar, åter kör den här koden
börja
om (en == 1' b0)
börja
Q < = 1' b0;
T < = 1' b0;
slutet
annars om (en == 1' b1 & & b == 1' b1)
börja
Q < = 1' b1;
T < = 1' b0;
slutet
annat
börja
Q < = 1' b1;
T < = 1' b1;
slutet
slutet

tilldela c [0] = Q;
tilldela c [1] = T;

endmodule

Jag tror att detta exempel band en massa idéer omfattas i denna tutorial serie tillsammans. Jag slängde också i ett Else If-uttryck. Inga överraskningar men det fungerar som ett C/C++. Se bara till att varje villkor åtgärder hanterar samma utgångarna (i detta fall både Q och T behandlades i varje fall). Observera de start- och sökord på platser du intuitivt tror ska vara klammerparenteser.

Det är ungefär allt som finns att If/Else If/Else uttalanden i Verilog. Kom ihåg att hänvisa till designregler på toppen av denna Tutorial modul för felsökning.

Se Steg
Relaterade Ämnen

Att få igång med Python och programmering - The kort handledning

så jag ser att du är intresserad av lärande om programmering... eller ormar.Om du är här i ormar, tyvärr är detta inte platsen för dig. Ja, kanske...Om du är här för att lära sig om programmering eller Python då du har kommit. Denna handledning gjord...

DIY Basic sy Tutorial T-shirt / jacka / tröja / bygel / Normal och Raglan ärm

Hur jag syr en t-shirt? Sömnad för nybörjare. Vi visar dig hur att sy en skjorta, top med ärm, raglanärm, raglan tröja själv. Principen är alltid densamma oavsett om du är sömnad t-shirts, jackor, långa ärmar, raglanärm, klänningar med ärmar etc.Vi h...

Himmelska Mechanica serie: växellåda design och konstruktion

Himmelska Mechanica är en 16-ft lång kinetic stål skulptur av vårt solsystem som representerar den majestätiska dansen av himlakropparna. Den skapades av en grupp ledd av Jessika Welz för Burning Man 2014.(Projektet Facebooksida: https://www.facebook...

GTA IV - utan grafiken kort Tutorial - av SBTOPZZZ

Välkommen killar,Kan börja Grand Theft Auto 4 utan grafikkort.Steg 1: Steg 1: möjligt att ha GTA IV utan grafikkort?Om du frågar mig, säger jag Ja.GTA IV konfigurerar alltid din dator för att kontrollera krav, speciellt Grafikkort.Så, jag hade också...

DIY mikrofon byggnad Tutorial serie

del 1Del 2Del 3Del 4Del 5Del 6 Detta är en sex delar serie videoklipp om hur man bygger din egna mikrofoner. Jag kommer på detta ur bygga mikrofoner för förstärkt munspel, men många av tipsen skulle gälla byggnad mikrofoner för andra ändamål. Videorn...

1. hacka Panasonic GH2 Tutorial serie - komma igång

[youtube]0b8iBiUPWoI[/youtube]...

2. hacka Panasonic GH2 Tutorial serie - använder hacket

[youtube]IOisy0Oq0TE[/youtube]...

3. hacka Panasonic GH2 Tutorial serie - testa inställningar

[youtube]ZPhrMmX4E3Y[/youtube]...

4. hacka Panasonic GH2 Tutorial serie - testning Footage - ISO Bug

[youtube]N21mzRjJG74[/youtube]...

Hur man gör en låg poly spel modellen ser mycket mer detaljerade med mixer och Gimp

Så du vill göra ett spel men du har en dator som inte kan hantera grafik alla väl och men du ändå vill göra något som ser wicked. Detta är en metod jag gjorde upp när jag försöker göra spel.En formel jag vilja leva av är roligt > arbete. Om du arbeta...

Hur till göra mat bilder ser aptitlig med rekvisita och naturlig belysning

En bild säger tusen ord!Det finns inget som tar en minnesvärd bild och visar det för släkt och vänner och få fave recensioner på hur bilden ser ut och hur det känns när observera det.Som en ivrig foodie mig själv och inte en professionell fotograf, j...

HUR DU LÄR DIG RITA! OKONVENTIONELLA sätt att rita saker, det är enkel och trevlig.

För dem som gillar ritningen och konst! och aldrig ens försökt Rita någon sak cuz han tror att han aldrig har någon talang! Detta instructable kan vara ditt första steg som konstnär!Jag har börjat lära sig Rita bara två år sedan på mitt första år som...

Photoshop Tutorial: Skapa nödställda textur med genomskinlig bakgrund

Detta Photoshop tutorial ska show dig hur man skapar nödställda struktur och spara den som en tif-fil med en genomskinlig bakgrund i teckningen i Adobe Illustrator....

Video Tutorial: Hur man skapar en webbsida med SliceMaker produkter?

Detta är en video tutorial av SliceMaker produkter. I denna video tutorial, kommer att vi lära dig att skapa en komplett webbsida med hjälp av SliceMaker produkter.Du behöver inte skriva koder manuellt när du skapar en webbsida med SliceMaker produkt...

SliceMaker Tutorial: Hur man skapar en webbsida med SliceMaker produkter?

SliceMaker mjuk kommer att fortsätta att ge dig nya video tutorials om hur du använder deras produkter. Detta är en av den video tutoials av SliceMaker produkter. Genom denna video tutorial lära du enkelt dig att skapa en webbsida med SliceMaker prod...

Brainstorming buss Shelter design med kortplats bygga kort

studenter tillsammans bygga fysiska brainstorming modeller av busskurer med Tom registerkort som de konvertera i kortplatsen bygga kort. Slot skyddsrum modell byggnad verkstad lektionen inbjuder elementära studenter att föreställa multipurpose bussku...

2015 gym Guide: Lär dig att träna + förbättra din hälsa med 16 + års professionell vägledning!

Personlig träning är dyrt. Ännu människor fortfarande dra nytta av den personliga touch som en fitness expert erbjuder. Mitt mål med denna uppskrivning är att informera dig om att du har alternativ för DIY fitness utbildning. Jag älskar personliga tr...

Knex pistol: Gear Series #1-GGLP (växel Grenade Launcher och Pistol)

denna pistol är sparka igång en ny serie: GEAR -serien. Jag planerar att göra (förutom GGLP) ett gevär, sniper och hagelgevär.Denna pistol har en optimal räckvidd på 40ft, inklusive granat. Det är robust och ganska bärbara, tidningen rymmer ca 6 enda...

DIY blåser lila krita konst! Med hjälp av FIG lila!

i bara några enkla steg, kan du skapa detta roliga dekoration, perfekt för studentrummet eller något utrymme som behöver lite extra! Ingen limpistol som behövs!Här är vad du behöver:-1 duk.-En bild på någon låtsas att blåsa bubblor tryckt på vanliga...