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

Steg 19: VM 4.2: blockera kontra icke-blockerande Verilog uttalanden

Det kan verka konstigt att vi växla från att diskutera alltid block för att blockera/icke-blockerande men detta är en perfekt tid att införa ett nytt koncept.

När vi skriver kod i C/C++, vår kod körs rad för rad i tur och ordning tills programmet berättas att avvika från detta mönster (t.ex. hoppa till en viss rad). En rad körs och endast efter det ytskikt kör är nästa rad avrättades. Mest av praktiska skäl märker vi inte varje försening i enkel Konsolapplikationer. Men i digital design, denna försening från utförande en linje till nästa kan få mycket negativa och märkbara konsekvenser. Även förseningar på mindre än en nanosekund skulle kunna orsaka problem; buggar att vara exakt.

En glitch definieras formellt som en momentan och oönskade förändringar i produktionen av en krets på grund av en ingång in ett övergående tillstånd och att ha minst två vägar genom kretsen utan motsvarande gate förseningar mellan vägar-ingången.

Tänk dig att du har två växlar (sw0 och sw1) som var både en logik 0, och den resulterande produktionen av en enda LED var en logik en om båda växlar var en logik 0 (LED = ~(sw0 & sw1)), bland annat önskas utgångar. Men säger du vänder sw1 till en logic hög. Tänk om bara för en bråkdel av en sekund att LED var fortfarande en logik en medan spänningen från sw1 källan "ripples" väg "nedströms" logik Gates i dess olika vägar innan den kommer till den sista gate i kretsen? Däri ligger en bråkdel av en sekund där lysdioden är en logik en när teoretiskt det borde vara en logik noll. din krets bröt reglerna för sin egen logik ekvationer!

Poängen med denna modul är att täcka Hur fixar buggar i din logik uttalanden, är poängen att även fint bildade logik ekvationer för kretsar som är "glitch gratis" potentiellt kan skapa en glitch om du använder en blockerande uttalande där du borde ha använt en icke-blockerande uttalande och vice versa.

Hur sker detta och varför skulle uttrycket fel Verilog orsaka detta?

En blockerande uttalande är en tilldelning (det behöver inte nödvändigtvis använda nyckelordet "tilldela") uttalande som använder operatorn "=". Blockerande uttalanden utförs som kod i C/C++: sekventiellt och i ordning.

En icke-blockerande uttryck är ett tilldela uttryck som använder den "< =" operatör. Icke-blockerande uttalanden i samma tillämpningsområde koden med andra icke-blockerande uttalanden kommer att köras samtidigt.

Re Läs ovanstående definitioner eftersom de är mycket viktiga.

En gemensam tanke studenter kan ha är "Verilog-koden är ett hårdvarubeskrivande språk, så det inte borde roll vilken typ av uttalande jag skriver eftersom det kommer att syntetisera i samma fysiska krets och beter sig på samma sätt." Detta är inte nödvändigtvis sant, eftersom den komplexa Verilog kompilatorn måste skapa olika transistor mönster för att passera olika signaler till olika platser och du måste ange om detta måste ske samtidigt eller vid andra tidsintervaller. Kan det vara mer effektivt att bygga en krets med blockering uttalanden som kan direkt signaler samtidigt bekvämt att gå runt men ofta är det viktigt att två eller flera output förändringar äger rum samtidigt i huvudsak.

Ser du hur en rad blockerande uttalanden kan ha negativa effekter av krets beteende? Top level tilldela uttalanden blockerar eftersom bara "exekveras deklarationerna" en gång, men något liknande en avkodare som kan "alltid" omvärdera villkor måste förändra utgångar samtidigt. Tänk de problem en ingenjör skulle ha om deras dekoder utdata GS och utsignaler EO ändrats vid olika tillfällen!

Ta en titt på några enkla exempel ("om" uttalanden skall ingå i nästa modulen!):

Example #1
alltid @ (sw0, sw1)
börja
om (sw0 == 1' b1)
börja
alla dessa utgångar tilldelas sina
värden på samma gång
RESULTAT1 < = 1' b0;
output2 < = 1' b1;
output3 < = 1' b0;
slutet
slutet

Exempel #2
alltid @ (sw0, sw1)
börja
om (sw0 == 1' b1)
börja
den första produktionen kommer att tilldelas, då två
kommer att tilldelas samtidigt
RESULTAT1 = 1' b0;
output2 < = 1' b1;
output3 < = 1' b0;
slutet
slutet

Exempel #3
alltid @ (sw0, sw1)
börja
om (sw0 == 1' b1)
börja
den första produktionen kommer att tilldelas, då två kommer att
tilldelas en efter en
RESULTAT1 = 1' b0;
output2 = 1' b1;
output3 = 1' b0;
slutet
slutet

Aldrig lagt ett blockerande uttalande i en strukturell logik block. Med andra ord aldrig sätta en "=" insidan av en alltid blockera. Även om du bara ändrar en utgång är det dålig praxis att använda ett blockerande uttalande.

Använd alltid ett blockerande uttalande när du använder nyckelordet "tilldela". Dessa uttalanden kommer alltid äga rum utanför en alltid blockera. Exempel användning skulle vara att förklara en reg vars värde du ändra insidan av en alltid block, sedan tilldela en utgång tråd "=" till den reg värde.

Tips: du kommer vanligtvis ge en reg ett värde med hjälp av formuläret: < namn på reg >< = < värde >;

Extra tips (dubbla): du kan bara ange värden för en reg i en alltid blockera, ingen tilldela värden för att ange tråd. Du kan, men senare tilldela kabeln för att motsvara den reg värde.

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...