Obsah:

Model univerzálního vypínače: 10 kroků
Model univerzálního vypínače: 10 kroků

Video: Model univerzálního vypínače: 10 kroků

Video: Model univerzálního vypínače: 10 kroků
Video: Jak odemknout fabii bez klíčů rukama za 2 vteřiny 2024, Červenec
Anonim
Model univerzálního vypínače
Model univerzálního vypínače

Už vás nebaví kontrolovat, zda ve vašem domě zhasla všechna světla, než jdete spát? Přejete si, abyste mohli bez jakýchkoli potíží vypnout každé světlo najednou? Abychom ušetřili energii a čas, rozhodli jsme se vytvořit systém, který by teoreticky mohl zavřít celý dům najednou.

Pomocí několika LED diod a základní desky 3 jsme vymodelovali důkaz tohoto konceptu a vytvořili jsme design, který by deaktivoval všechny LED diody pouhým stisknutím tlačítka. Tento model by mohl být aplikován také na skutečný systém domácího osvětlení, i když by to vyžadovalo složitější zapojení a úpravy daných souborů VHDL.

Krok 1: Importujte dané soubory VHDL

Aby náš model fungoval správně, budete si muset stáhnout software, který dává desce Basys 3 pokyny.

Nejprve si budete muset stáhnout syntetizační nástroj pro implementaci souborů vhdl na hardware. Pokud si chcete být jisti, že celý kód bude plně replikovat náš design bez nutnosti jakýchkoli úprav, doporučujeme použít Vivado 2016.2. Poté, co si nainstalujete Vivado, můžete vytvořit projekt a stáhnout naše zdrojové soubory. Přidejte je jako zdroje do svého projektu, nezapomeňte přidat také soubor omezení!

Dále vysvětlíme, co každý ze zdrojových souborů dělá. Pokud se chcete dostat pouze k fyzické konstrukci zařízení, přeskočte kroky 2 až 6.

Krok 2: Rozdělení špičkového modulu VHDL

Rozdělení špičkového modulu VHDL
Rozdělení špičkového modulu VHDL
Rozdělení špičkového modulu VHDL
Rozdělení špičkového modulu VHDL

Nejvyšší modul projektu spojuje všechny jednotlivé moduly komponent s použitým hardwarem. Jak vidíte, moduly killSwitch a buzzerControl jsou definovány jako komponenty nahoře.

V dolní části je uvedeno, jak jsou tyto moduly propojeny. Na desku jsme připojili čtyři LED diody a spojili je s moduly killSwitch dev0 až dev3. Máme definovány čtyři moduly killSwitch, protože jeden potřebujeme ke správě stavu každé připojené LED. Každý z těchto modulů využívá hodinový a tlačítkový signál, který jsme vytvořili v definici nejvyššího modulu, a také jejich příslušné signály vstupních spínačů a výstupních zařízení.

Modul ovládání bzučáku ve spodní části aktivuje bzučák stisknutím univerzálního tlačítka pro vypnutí. Jak vidíte, modulu ovládání bzučáku je předáván signál hodin a tlačítek jako vstupy. Je také předán výstupnímu kolíku fyzického bzučáku, aby se odpovídajícím způsobem ovládal.

Krok 3: Rozdělení modulu VHDL Kill Switch

Rozdělení modulu VHDL Kill Switch
Rozdělení modulu VHDL Kill Switch
Rozdělení modulu VHDL Kill Switch
Rozdělení modulu VHDL Kill Switch

Kill Switch je univerzální vypínací tlačítko a modul se zabývá především jeho propojením s dalšími prvky obvodu, takže když je stisknuto, všechna světla zhasnou.

Zatímco horní modul zpracovává připojení fyzického hardwaru k softwaru, modul killSwitch zpracovává hlavní logiku každého zařízení. Modul přijímá vstupy pro hodinový signál, univerzální vypínací tlačítko a přepínač zařízení. Na oplátku kontroluje stav pinu zařízení, ke kterému je připojen.

V části architektury kódu vidíme, že má pro ukládání paměti závislost na modulu dFlipFlop. Můžete také vidět, že jsme deklarovali čtyři signály, které budou použity k připojení klopného obvodu a také k implementaci našich logických příkazů. V behaviorální části kódu jsme vytvořili instanci modulu dFlipFlop a portům přiřadili naše I/O signály.

Odtud hlavní část naší logiky spočívá v hodnotách signálu pro invertState a isDevOn. Náš logický základ pro zařízení je následující: „Při každém stisknutí spínače se světlo změní na stav zapnutí/vypnutí. Kdykoli stisknete tlačítko a dioda LED právě svítí, dioda LED změní svůj stav na vypnutý. Z těchto dvou příkazů můžeme extrapolovat, že stav LED by měl být XOR přepínače a našeho paměťového prvku. Tímto způsobem změna buď převrátí LED. To lze vidět implementované v signálu isDevOn. Stav LED pro paměťový prvek je zpracován naším signálem invertState. Pokud LED dioda svítí a tlačítko je stisknuto, náš paměťový prvek se aktualizuje a obrátí svůj stav. Tím se také invertuje stav LED.

Krok 4: Rozdělení modulu VHDL Flip Flop

Rozdělení modulu VHDL Flip Flop
Rozdělení modulu VHDL Flip Flop

Jedním z problémů našeho návrhu byla skutečnost, že po použití vypínače bude možná nutné dvakrát zapnout světla, aby se vrátila do zapnuté polohy. To by pro lidi v průběhu času bylo docela nepříjemné. Tuto nepříjemnost se nám podařilo obejít začleněním „Flip Flop“, obvodového prvku schopného ukládat informace, do našeho návrhu. Nyní si systém pamatuje, zda byl předtím zapnutý světelný spínač, takže pokud jej znovu otočíte, rozsvítí se bez ohledu na jeho počáteční polohu.

Kód VHDL používá příkazy if a else, aby vytvořil Flip Flop jako součást našeho návrhu obvodu. Zajišťuje, že když hodinový signál přechází z nízkého do vysokého stavu, když je žárovka zapnutá a když je stisknutý vypínač, přepne výstup žabky jeho vstup. Když je vstup přepsán, klopný obvod se převrátí.

Krok 5: Rozdělení modulu VHDL Piezo Buzzer

Rozdělení modulu VHDL Piezo Buzzer
Rozdělení modulu VHDL Piezo Buzzer
Rozdělení modulu VHDL Piezo Buzzer
Rozdělení modulu VHDL Piezo Buzzer

Tento soubor je trochu nadbytečný, pokud jde o hardwarový design, ale je nezbytný pro bezproblémový běh horního modulu a souborů omezení. Pokud se rozhodnete nepoužívat bzučák Piezo, stáhněte si tento soubor, ale nepřipojujte bzučák k desce Basys 3.

Piezo bzučák po stisknutí tlačítka pro deaktivaci přehraje tón se dvěma notami, který uživateli poskytne zvukovou zpětnou vazbu o tom, že bylo tlačítko stisknuto. Implementovali jsme to behaviorálně ve VHDL prostřednictvím řady příkazů if ve struktuře procesu. Začali jsme vytvořením celočíselné hodnoty, abychom měli přehled o tom, kolik hodinových změn došlo. Jakmile proces začne, program stráví první půl sekundy (0 až 50 milionů hodin) vydáním poznámky A při 440 hertzech. Toho je dosaženo převrácením signálu piezo bzučáku každých párkrát 227272 hodin tiků s funkcí modulo. Toto číslo je výsledkem vydělení hodinového signálu desky (100 MHz) požadovanou frekvencí (400 Hz). Během druhé půl sekundy (50 až 100 milionů hodin tiká) deska vydá notu F na 349,2 hertzů stejným způsobem jako dříve. Po jedné sekundě program dále nezvýší proměnnou hodin a zastaví výstup čehokoli z piezo bzučáku. Opětovným stisknutím tlačítka univerzálního vypnutí resetujete toto číslo na 0 a restartujete cyklus šumu.

Krok 6: Rozdělení souboru omezení VHDL

Soubor omezení říká Vivadovi, jaká zařízení na desce Basys 3 používáme. Také poskytuje Vivado názvy, které jsme dali zařízením v našem kódu. Vivado tyto informace potřebuje, aby věděl, jak propojit naše logické prvky s fyzickým hardwarem. Soubor omezení obsahuje velké množství komentovaného (nepoužitého) kódu. Tyto řádky kódu odkazují na zařízení na desce, která nepoužíváme.

Zařízení, která používáme, obsahují na desce čtyři vstupní přepínače označené V17, V16, W16 a W1. Používáme také univerzální vypínací tlačítko s označením U18. Výstupními piny pro naše čtyři připojené LED jsou JB4, JB10, JC4 a JC10. Pro náš piezzo bzučák používáme výstupní pin JA9.

Jak jsme uvedli v členění horního modulu, pokud chcete na desku přidat další diody LED nebo jiná zařízení, musíte zvýšit rozsah signálů sw a dev, přidat další moduly killSwitch a spojit je dohromady. Poté musíte tyto názvy proměnných propojit s hardwarem zařízení prostřednictvím souboru omezení. To lze provést odkomentováním (opětovným povolením) řádků kódu přidružených k pinům, které chcete použít, a poté přidáním názvu přidružené proměnné do horního modulu. Správnou syntaxi lze kopírovat ze zařízení, která používáme. Názvy pinů, které chcete použít na desce, najdete v referenční příručce Baasys 3 zde.

Krok 7: Sestavení základen 3

Konstrukce základen 3
Konstrukce základen 3
Konstrukce základen 3
Konstrukce základen 3

Budete muset zapojit své LED diody do správných I/O portů základen 3. Podle uvedených obrázků určete, jaké jsou správné porty, protože pokud zapojíte LED do nesprávného portu, nerozsvítí se. Pokud jste se rozhodli připojit piezo bzučák, budete jej také muset připojit ke správným I/O portům.

Když je deska připravena, připojte ji k počítači pomocí kabelu USB.

Krok 8: Implementace souborů VHDL do základen 3

Implementace souborů VHDL do základů 3
Implementace souborů VHDL do základů 3
Implementace souborů VHDL do základů 3
Implementace souborů VHDL do základů 3

Nyní, když je vaše deska připravena a váš kód je hotový, můžete konečně sestavit model.

Jakmile budete mít svůj projekt ve Vivado nastavený, musíte kliknout na tlačítko „Generovat bitstream“, abyste mohli kód zkompilovat, než bude nahrán na desku. Pokud se vám v tuto chvíli zobrazí chybová zpráva, musíte znovu zkontrolovat, zda se váš kód přesně shoduje s naším. Když říkám přesně, mám na mysli dokonce i středníky nebo typy závorek, které se používají. Jakmile bude váš bitstream úspěšně zapsán, přejděte do správce hardwaru ve Vivado a klikněte na tlačítko „Otevřít cíl“, poté hned poté klikněte na „Programovat zařízení“. Vaše deska Basys 3 by nyní měla být plně funkční.

Krok 9: Použití desky Basys 3

Použití desky Basys 3
Použití desky Basys 3

Nyní, když je deska Basys 3 v provozu a byla naprogramována tak, aby reprezentovala náš model, musíte vědět, jak ji používat.

Každý ze čtyř spínačů, které jsou nejvíce vpravo, ovládá jednu z LED diod, jejich přepnutí způsobí zapnutí nebo vypnutí LED. Pokud se kontrolka LED neaktivuje, zkontrolujte, zda jste zapojeni do správného I/O portu a zda je vaše LED dioda především funkční.

Pokud chcete vypnout všechny LED diody najednou, musíte stisknout prostřední tlačítko v sadě pěti tlačítek zobrazených výše.

Krok 10: Ukažte se

Tento model slouží jako úhledná malá novinka, kterou můžete předvést před svými přáteli a rodinou. Může být teoreticky také použit k implementaci univerzálního vypínače do vašeho domácího elektrického systému, pokud vyměníte LED za vodiče vedoucí k vašim světlům. I když je to možné, stále bychom proti tomu museli radit. Pokud se pokusíte znovu zapojit bez pomoci elektrikáře, existuje potenciál vážně poškodit vás nebo váš domov.

Doporučuje: