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

Stap 12: VM 3.0: Modulair ontwerp


Gelieve betalen aandacht aan modulair ontwerp. Dit is misschien wel de grootste enkel onderwerp in Verilog en is ook misschien de meest krachtige en nuttige eigenschap.

Door nu u moet zitten kundig voor eenvoudige logica functies gebruiken basisoperators Verilog implementeren (|, &,...) en krijgen om met succes uitvoeren op uw FPGA-board. Als u niet helemaal om dat stadium bent, kunt u beginnen met VM 2.0.

In "VM 2.0: mijn eerste Verilog Project" introduceerde ik het concept van "modules" en "modulaire" code; nu zijn er enkele nuances van modules die je weten moet om een bedreven 'modulaire designer'. Maar eerst moeten wij bespreken "What's modulaire ontwerp?"

Als u de oefening "hello_world" voltooid, waren u ingevoerd om de Verilog trefwoord "module". Elke Verilog-bronbestand bevat slechts één module-definitie. Dus hoe kunnen we complexe projecten die betrekking hebben op veel kleinere modules maken? Laten we gecontroleerde nemen het voorbeeld van het bouwen van een timer LED circuit. Wat zouden we moeten in onze schakeling maken een LED knipperen elke seconde als sommige schakelaar een logica een was en we alleen een 50MHz klok hadden?

Breken wat we nodig hebben in drie typen: ingangen, uitgangen en interne onderdelen.

Ingangen: fysieke signaalbronnen zoals een oscillator ("klok"), schakelaars, knoppen, datapoorten, enz...

Uitgangen: fysieke uitgangen die zal worden aangedreven door het circuit zoals LEDs, datapoorten, displays, enz...

Interne onderdelen: onderdelen die het nemen van de staat van de ingangen voor het genereren van een gewenste output; niet alle van deze hebben om te worden aangesloten op een poort van de "hoogste niveau", maar uiteindelijk moet alles "route".

Lees deze classificaties opnieuw; het is van vitaal belang dat u de verschillen kennen! Merk ook op de nieuwe woordenschatwoorden: "hoogste niveau" en "route".

Denk na over wat deze termen zou kunnen betekenen... Ik zal deze formeel definiëren in een minuut.

Deze drie soorten onderdelen vergelijken met een algebraïsche vergelijking, de ingangen zijn de onafhankelijke variabelen, de uitgangen zijn de afhankelijke variabelen en de interne componenten vertegenwoordigen de feitelijke vergelijking. Remembering deze analogie zal u helpen beslissen wanneer bezig met projecten als een bepaald onderdeel een input, output, of interne component is.

In het geval van het LED knipperen circuit is hier wat we hebben op een zeer hoog niveau:

Ingangen: 50 MHz klok, switch

Uitgangen: LED

Internals: een 50 MHz tot 1 Hz klok scheidingslijn, een en-poort (omdat LED moet pas op als beide de verdeelde klok en de switch zijn logica een)

Hoe zou u, op een zeer hoog niveau (wat betekent meestal "zwarte dozen" te vertegenwoordigen componenten in plaats van poort patronen), blok diagram dit circuit? Herinneren dat je een scheidingslijn klok maken kunt door het aansluiten van een aantal D-Flip Flops (DFFs) samen samen met sommige omvormers.

Zie het bijgevoegde-diagram voor het antwoord.

Uitdaging: In werkelijkheid hadden we een fysieke knop die alle DFFs in de klok scheidingslijn zou herstellen. Kunt u de herkomst en de bestemming van een knopje "Eerste" over dit blokdiagram tekenen?

Blokdiagrammen uitzien zijn de eerste stap om te helpen die u erachter te komen hoe een programma van Verilog, te schrijven zoals elke doos in het diagram als een exemplaar van een module in uw code eindigen zal. Merken hebben wij een groot blok waarin een aantal kleinere blokken; We noemen dit de "top"-module. De "top"-module is wat zorgt ervoor dat alle interne componenten van het circuit verbinden met fysieke in- en uitgangen.

Binnen deze bijzondere top module zijn twee dingen: een klok divider en een en-poort. Maar merk dat de klok scheidingslijn blok bevat ook een aantal kleinere blokken (DFFs). We DO NOT moet maken van alle deze DFFs in onze top module; We kunnen maken een aparte klok scheidingslijn module waarin alle de DFFs en maakt een instantie van dat klok scheidingslijn in onze top module.

Zoals u kan hebben geraden, we moeten ook een DFF module die we kunt instantiëren een aantal keren in de scheidingslijn van de klok. Dit kan we alleen bepalen het gedrag van een D-Flip Flop eens en vervolgens meerdere exemplaren van dat DFF instantiëren. Alles wat we moeten doen in onze Verilog code is elk exemplaar van de DFF verbinden door de juiste poorten (d.w.z. Verbind de inputs en outputs), maar meer op module instantiëren later.

Opmerking: Probeer niet om de code van dit knipperende LED project enkel nog; Er zijn een paar meer dingen die we moeten om te dekken.

Het punt van deze module is om u blootstellen aan modulair ontwerp; ziet u waarom ik deze tutorials "modules" noemen? Dit idee moet worden ingebakken in je geest als u doorgaat met leren en het gebruik van Verilog.

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