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

Steg 15: VM 3.3: Hur att instansiera en modul

I modulen tidigare nämnde jag likheterna mellan instansieras moduler i Verilog och anropa funktioner i C/C++.
Låt oss titta på hur vi skulle initiera en modul i Verilog.
Här är den modul som vi kommer att arbeta med:

"tidsskala 1ns / 1ps

modul srlatch)
ingång S,
input R,
produktionen Q
);

Wire Q_int, Qn_int;

tilldela Q_int = ~ (S & Qn_int);
tilldela Qn_int = ~ (R & Q_int);
tilldela Q = Q_int;

endmodule

Av nu det inte ska finnas någon Verilog i denna modul inte kunde du förklara.

Så låt oss säga vi ville göra en krets med två SR-lås (oavsett hur meningslösa denna krets är i verkligheten), alla med en switch för deras "set" drift och en delad återställningsknapp. Utdata för varje lås blir en LED.

Med dessa specifikationer i åtanke, låt oss göra övre modulens definition. Kom ihåg att översta modul deklarationer innehåller bara in- och utgångar som kommer och går från den verkliga världen.

"tidsskala 1ns / 1ps

Utmaning: Att skriva denna modul förklaring med bussar
topp () modul
ingång switch0,
ingång VÄXEL1,
ingång btn0,
utgång led0,
output led1
);

endmodule

Stor! Nu måste vi lägga till två SR-lås till vår krets. Hur skulle vi göra detta?

Säg inte "Hårt kod uppförandet av två SR-lås och tilldela sina ingångar och utgångar respektive." Vi kommer att skapa en instans av två instanser av en SR-spärren. Här är hur vår topp modul ser ut efter instansieringen:

"tidsskala 1ns / 1ps

topp () modul
ingång switch0,
ingång VÄXEL1,
ingång btn0,
utgång led0,
output led1
);

srlatch () sr0
. S(switch0),
. R(btn0),
. Q(led0)
);

() srlatch sr1
. S(switch1),
. R(btn0),
. Q(LED1)
);

endmodule

Så vad återstår för att göra? Ingenting; absolut ingenting (förutsatt att du redan har en UCF fil redo). Varför?

Orsaken ligger i modul instansieringen. Låt oss ta en närmare titt på en.

srlatch () sr0
. S(switch0),
. R(btn0),
. Q(led0)
);

Första raden: srlatch sr0 (

Detta är en mycket viktig linje vars formulär du behöver att engagera sig i minnet. Först kommer srlatch. Detta är namnet på basmodulen vi instansieras. sr0 är namnet på instansen. Parentesen öppnas instansieringen. Varje instansiering börjar sådär; "< modul att instansieras >< förekomstnamn >(".

Det finns vissa mindre vanliga fall där instansiering kommer att skilja sig något, men även då denna form fortfarande kommer att vara närvarande.

De följande tre raderna:
. S(switch0),
. R(btn0),
. Q(led0)

Ta en titt på srlatch port Modulnamn och sedan ser tillbaka på dessa tre rader. Detta är i en omväg, liknande till hur vi anropa en funktion i C/C++; Det är där vi passerar parametrarna.

Skillnaden är att i Verilog vi går båda ingångar till modulen och utgångar till modulen. D.v.s. talar vi om den specifika instansen av modulen var dess ingångar kommer från och där vi vill utgångarna att gå.

Ett annat sätt att se på detta är att vi passerar modulen en uppsättning ingångar och utgångar, alla vars värde är kontinuerligt uppdaterade antingen från modulen (resultat) eller utanför modulen (input).

Låt oss bryta ner uttalande: . S(switch0)

Varje modul instansiering måste en rad uttalanden som liknar detta en, ett uttalande per ingång/utgång. Den ". S"hänvisar till ingången S i modulen srlatch och (switch0) hänvisar till ingående switch0 finns i den översta modulen. Ser ett mönster?

. < portnamnet i instansierad modul > (< portnamnet i nuvarande modul->)

Detta begrepp är också liknande att anropa funktioner i andra programmeringsspråk som C/c ++; i funktionsanropet passerar vi värden (som vi känner av variabel namn) i funktionen. Vi kallar detta värde en sak i, till exempel huvudsakliga, men i funktionen det kallas något annat. I det här exemplet Verilog, vi har en ingång i den översta modul som kallas "swtich0", och vi vill "S" värdet av "sr0" ska vara lika oavsett "switch0" är.

Som jag nämnde tidigare, behöver du en port initiering instruktion per port i modulen du instansieras, men om du instansieras en modul som har, säg, en [7:0] buss ingång kallas "T", du behöver inte göra 8 uttalanden som ". T[0](input[0]) ". Du kan skicka hela bussar genom att hänvisa till namnen bara, så du kunde passera "Input" till "T"genom att säga". T(input) ". Kom ihåg dock att buss dimensioner måste matcha upp (dvs. du inte kan passera en 5 port buss i en modul som har en 3 port buss).

Dessutom måste porttyper matcha. Du kan endast skicka indata till en ingång och en utgång (eller en tråd, mer om det senare) till en utgång.

Separat port initiering uttalanden med ett enda komma. Bra kodning stil dikterar att varje rad innehåller endast en exemplifiering. Från detta bör du kunna förstå dessa tre rader kod.

Nära instansieringen med en matchande parentesen och semikolon.

Efter instansieringen sker framgångsrikt, blir utgångarna av modulen instansierad i huvudsak tillgänglig inom den aktuella modulen. Du kan sedan skicka dessa utgångar till översta nivån hamnar och även andra instansierad moduler ingångar.

Innan vi avslutar denna diskussion, låt oss sammanfatta hur man initiera en modul (kom ihåg att "nuvarande modul" hänvisar till den modul som gör instansieringen):

< modulnamn >< () namnet på instansen >
. < portnamnet i modulen till instantieras > (< port/wire namn i nuvarande modul->),
... < upprepa ovan så många gånger som behövs >...
. < portnamnet i modulen till instantieras > (< port/wire namn i nuvarande modul->)
);

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