INHOUDSOPGAWE:

Model van 'n universele afskakelaar: 10 stappe
Model van 'n universele afskakelaar: 10 stappe

Video: Model van 'n universele afskakelaar: 10 stappe

Video: Model van 'n universele afskakelaar: 10 stappe
Video: Hoe installeer ik een Niko enkelpolige schakelaar? 2024, November
Anonim
Model van 'n universele afskakelaar
Model van 'n universele afskakelaar

Is u moeg daarvoor om seker te maak dat al die ligte in u huis af is voordat u gaan slaap? Wens u dat u elke lig gelyktydig kan afskakel? Om krag en tyd te bespaar, het ons besluit om 'n stelsel te skep wat teoreties 'n hele huis tegelyk kan sluit.

Ons het 'n bewys van hierdie konsep gemaak met behulp van 'n paar LED's en 'n basiese 3 printplaat, en 'n ontwerp gemaak wat al die LED's met 'n druk van 'n knoppie sou deaktiveer. Hierdie model kan ook op 'n werklike huisbeligtingstelsel toegepas word, hoewel dit meer ingewikkelde bedrading en aanpassings aan die gegewe VHDL -lêers sou verg.

Stap 1: Voer die gegewe VHDL -lêers in

Om ons model korrek te laat werk, moet u die sagteware wat die Basys 3 -bord gee, die instruksies aflaai.

Eerstens moet u 'n sintesehulpmiddel aflaai om vhdl -lêers op hardeware te implementeer. As u seker wil wees dat die hele kode ons ontwerp volledig sal herhaal sonder dat daar enige wysigings nodig is, beveel ons aan dat u Vivado 2016.2 gebruik. Nadat u Vivado geïnstalleer het, kan u 'n projek skep en ons bronlêers aflaai. Voeg dit as bronne by u projek, moenie vergeet om ook die beperkingslêer by te voeg nie!

Vervolgens sal ons verduidelik wat elkeen van die bronlêers doen. Slaan stap 2 tot en met 6 oor as u net by die fisiese konstruksie van die toestel wil uitkom.

Stap 2: Verdeling van die VHDL -topmodule

Verdeling van die VHDL -topmodule
Verdeling van die VHDL -topmodule
Verdeling van die VHDL -topmodule
Verdeling van die VHDL -topmodule

Die boonste module van die projek is wat al die individuele komponentmodules verbind met die gebruikte hardeware. Soos u kan sien, het ons die killSwitch en buzzerControl -modules gedefinieer as komponente aan die bokant.

Die onderste gedeelte spesifiseer hoe hierdie modules aan mekaar gekoppel is. Ons het vier LED's aan die bord gekoppel en dit geassosieer met die killSwitch -modules dev0 tot en met dev3. Ons het vier killSwitch -modules gedefinieer omdat ons een benodig om die toestand van elke gekoppelde LED te bestuur. Elkeen van hierdie modules maak gebruik van die klok- en knoppiesignaal wat ons in die boonste module -definisie geskep het, sowel as hul onderskeie ingangskakelaar- en uitsettoestel seine.

Die zoemer -beheermodule aan die onderkant aktiveer die zoemer wanneer die universele afknoppie ingedruk word. Soos u kan sien, word die buzzer -beheermodule deur die klok- en knoppiesignaal as insette deurgegee. Dit word ook deur die fisiese buzzer -uitvoerpen geslaag om dit dienooreenkomstig te beheer.

Stap 3: Verdeling van die VHDL Kill Switch -module

Verdeling van die VHDL Kill Switch -module
Verdeling van die VHDL Kill Switch -module
Verdeling van die VHDL Kill Switch -module
Verdeling van die VHDL Kill Switch -module

Die Kill Switch is die universele afknoppie, en die module is hoofsaaklik gemoeid met die koppeling daarvan met ander kringelemente, sodat al die ligte sal afskakel as dit ingedruk word.

Terwyl die boonste module die koppeling van fisiese hardeware met sagteware hanteer, hanteer die killSwitch -module die hooflogika van elke toestel. Die module neem insette in vir die kloksignaal, die universele afknoppie en die toestel se skakelaar. In ruil daarvoor beheer dit die toestand van die apparaatpen waarmee dit gekoppel is.

In die argitektuurgedeelte van die kode sien ons dat dit afhanklik is van die dFlipFlop -module om geheue te stoor. U kan ook sien dat ons vier seine verklaar het wat gebruik sal word om die flip -flop aan te sluit en ons logiese stellings te implementeer. Binne die gedragsafdeling van die kode het ons 'n voorbeeld van die dFlipFlop -module geskep en ons I/O -seine aan die poorte toegeken.

Van hier af lê die grootste deel van ons logika in die seinwaardes vir invertState en isDevOn. Ons logiese basis vir die toestel is soos volg: "Elke keer as die skakelaar gegooi word, sal die lig die aan/af -toestand omkeer. Elke keer as die knoppie ingedruk word en die LED is tans aan, sal die LED sy toestand omskakel. " Uit hierdie twee stellings kan ons ekstrapoleer dat die toestand van die LED die XOR van die skakelaar en ons geheue -element moet wees, en sodoende verander 'n verandering in die LED. Dit kan gesien word geïmplementeer in die isDevOn -sein. Die LED op voorwaarde vir die geheue -element word hanteer deur ons invertState -sein. As die LED aan is en die knoppie ingedruk word, sal ons geheue -element opgedateer word en die toestand daarvan omkeer. Dit verander dan ook die toestand van die LED.

Stap 4: uiteensetting van die VHDL -flipflop -module

Verdeling van VHDL Flip Flop -module
Verdeling van VHDL Flip Flop -module

Een probleem met ons ontwerp was die feit dat, nadat u die afskakelaar gebruik het, moontlik twee keer gedraai moet word om terug te keer na die aan -posisie. Dit sal met verloop van tyd baie ongerief vir mense wees. Ons het daarin geslaag om hierdie ongerief te omseil deur 'n 'Flip Flop', 'n kringelement wat inligting kan stoor, in ons ontwerp op te neem. Nou onthou die stelsel of 'n ligskakelaar voorheen aan was, sodat dit weer aangeskakel word, ongeag die oorspronklike posisie.

Die VHDL -kode gebruik if en else -stellings om die Flip Flop as 'n komponent in ons stroombaanontwerp te skep. Dit verseker dat wanneer die horlosiesignaal oorgaan van 'n lae na 'n hoë toestand, as die gloeilamp aan is en as die afskakelaar ingedruk word, die uitset van die flip -flops sy insette oorskryf. As die invoer oorgeskryf word, word die flipflop omgekeer.

Stap 5: Verdeling van die VHDL Piezo -zoemer -module

Verdeling van die VHDL Piezo Buzzer -module
Verdeling van die VHDL Piezo Buzzer -module
Verdeling van die VHDL Piezo Buzzer -module
Verdeling van die VHDL Piezo Buzzer -module

Hierdie lêer is 'n bietjie oorbodig wat die hardeware -ontwerp betref, maar dit is noodsaaklik om die topmodule en beperkingslêers glad te laat verloop. Laai hierdie lêer af as u besluit om nie die Piezo -zoemer te gebruik nie, maar moenie die gonser aan die Basys 3 -bord heg nie.

Die Piezo -zoemer sal, as u op die deaktiveringsknoppie druk, 'n twee -noot toon speel wat die gebruiker hoorbare terugvoer gee dat die knoppie gedruk is. Ons het dit gedragsmatig in VHDL geïmplementeer deur middel van 'n reeks if -stellings in 'n prosesstruktuur. Ons het begin met die skep van 'n heelgetalwaarde om by te hou hoeveel klokveranderinge plaasgevind het. Sodra die proses begin het, spandeer die program die eerste halfsekonde (0 tot 50 miljoen horlosies) om 'n A -noot op 440 hertz uit te voer. Dit word bewerkstellig deur die piezo -gonsernaal elke ewe veelvoud van 227272 horlosies met 'n modulofunksie om te draai. Hierdie getal is die gevolg van die deel van die bord se kloksein (100 MHz) deur die gewenste frekwensie (400 Hz). Gedurende die tweede helfte van 'n sekonde (50 tot 100 miljoen horlosies) gee die bord 'n F -noot op 349,2 hertz uit op dieselfde metode as voorheen. Na 'n sekonde verhoog die program nie meer die klokveranderlike nie en stop dit niks met die piezo -zoemer nie. Deur weer op die universele af -knoppie te druk, word hierdie nommer teruggestel op 0, en die ruisiklus begin weer.

Stap 6: Verdeling van die VHDL -beperkingslêer

Die beperkingslêer vertel Vivado watter toestelle op die Basys 3 -bord ons gebruik. Dit gee Vivado ook die name wat ons aan die toestelle in ons kode gegee het. Vivado benodig hierdie inligting, sodat hy weet hoe ons ons logiese elemente aan die fisiese hardeware kan koppel. Die beperkingslêer bevat 'n groot hoeveelheid opmerkings (ongebruikte) kode. Hierdie kode lyne verwys na die toestelle op die bord wat ons nie gebruik nie.

Die toestelle wat ons gebruik, bevat vier ingangskakelaars met die naam V17, V16, W16 en W1 op die bord. Ons gebruik ook die universele afknoppie, gemerk U18. Die uitsetpenne vir ons vier gekoppelde LED's is JB4, JB10, JC4 en JC10. Vir ons piezzo -zoemer gebruik ons die uitvoerpen JA9.

Soos ons in die uiteensetting van die boonste module gesê het, moet u die omvang van die sw- en dev -seine vergroot, meer killSwitch -modules byvoeg en dit aan mekaar koppel as u ekstra LED's of ander toestelle op die bord wil voeg. U moet dan die veranderlike name koppel aan die hardeware van die toestel via die beperkingslêer. Dit kan gedoen word deur die kode-reëls wat verband hou met die penne wat u wil gebruik, nie in te vul nie (heraktiveer) en dan die naam van die geassosieerde veranderlike in die boonste module by te voeg. Die regte sintaksis hiervoor kan gekopieer word vanaf die toestelle wat ons gebruik. Raadpleeg die Baasys 3 verwysingsgids hier om die name van die penne wat u op die bord wil gebruik, uit te vind.

Stap 7: Konstruksie van die Basys 3

Die bou van die Basys 3
Die bou van die Basys 3
Die bou van die Basys 3
Die bou van die Basys 3

U moet u LED's in die regte I/O -poorte van die Basys 3 koppel. Volg die foto's om te bepaal wat die regte poorte is, want as u 'n LED in die verkeerde poort aansluit, sal dit nie brand nie. As u gekies het om die piëzo -zoemer aan te sluit, moet u dit ook op die regte I/O -poorte koppel.

As die bord gereed is, koppel dit via u USB -kabel aan op u rekenaar.

Stap 8: Implementering van VHDL -lêers na Basys 3

Implementering van VHDL -lêers na Basys 3
Implementering van VHDL -lêers na Basys 3
Implementering van VHDL -lêers na Basys 3
Implementering van VHDL -lêers na Basys 3

Noudat u bord gereed is en u kode klaar is, kan u die model uiteindelik aanmekaar sit.

Nadat u u projek in Vivado opgestel het, moet u op die knoppie "Genereer bitstroom" klik om die kode saam te stel voordat dit na die bord opgelaai word. As u tans 'n foutboodskap ontvang, moet u seker maak dat u kode presies by ons s'n pas. As ek presies sê, bedoel ek selfs die puntkomma of die tipe hakies wat gebruik word. Sodra u bitstream suksesvol geskryf is, gaan na die hardeware bestuurder in Vivado en klik op die knoppie "Doel oopmaak", en klik dan onmiddellik daarna op "Program toestel". U Basys 3 -bord moet nou ten volle funksioneel wees.

Stap 9: Gebruik die Basys 3 -bord

Gebruik die Basys 3 -bord
Gebruik die Basys 3 -bord

Noudat die Basys 3 -raad in werking is en geprogrammeer is om ons model voor te stel, moet u weet hoe u dit moet gebruik.

Elkeen van die vier skakelaars wat die verste na regs is, beheer een van die LED's, en deur dit te laat draai, sal die LED aan- of uitskakel. As die LED nie geaktiveer word nie, kyk of u by die regte I/O -poort aangesluit het en dat u LED in die eerste plek funksioneer.

As u alle LED's tegelyk wil deaktiveer, moet u die middelste knoppie in die stel van vyf knoppies hierbo druk.

Stap 10: Pronk

Die model dien as 'n netjiese nuutjie wat u voor u vriende en familie kan demonstreer. Dit kan teoreties ook gebruik word om die universele afskakelaar in u huis se elektriese stelsel te implementeer as u die LED's vervang met drade wat na u ligte lei. Alhoewel dit moontlik is, sal ons dit steeds moet aanbeveel. U kan uself of u huis ernstig benadeel as u sonder die hulp van 'n elektrisiën probeer om te bedrading.

Aanbeveel: