Inhaltsverzeichnis:

Modell eines Universal-Aus-Schalters - Gunook
Modell eines Universal-Aus-Schalters - Gunook

Video: Modell eines Universal-Aus-Schalters - Gunook

Video: Modell eines Universal-Aus-Schalters - Gunook
Video: Diese macOS Einstellungen solltest du SOFORT ändern (macOS Monterey)! | Nils-Hendrik Welk 2024, Juli
Anonim
Modell eines Universal-Aus-Schalters
Modell eines Universal-Aus-Schalters

Sind Sie es leid, zu überprüfen, ob alle Lichter in Ihrem Haus aus sind, bevor Sie schlafen gehen? Wünschen Sie sich, Sie könnten jedes Licht auf einmal ohne viel Aufhebens ausschalten? Um Strom und Zeit zu sparen, haben wir uns entschieden, ein System zu entwickeln, das theoretisch ein ganzes Haus auf einmal herunterfahren könnte.

Wir haben einen Beweis für dieses Konzept mit ein paar LEDs und einer basys 3-Platine modelliert und ein Design entwickelt, das alle LEDs mit einem Knopfdruck deaktiviert. Dieses Modell könnte auch auf ein tatsächliches Heimbeleuchtungssystem angewendet werden, obwohl es eine kompliziertere Verkabelung und Modifikationen an den gegebenen VHDL-Dateien erfordern würde.

Schritt 1: Importieren Sie die angegebenen VHDL-Dateien

Damit unser Modell richtig funktioniert, müssen Sie die Software herunterladen, die dem Basys 3-Board die Anweisungen gibt.

Zuerst müssen Sie ein Synthesetool herunterladen, um vhdl-Dateien auf Hardware zu implementieren. Wenn Sie sicher sein möchten, dass der gesamte Code unser Design vollständig repliziert, ohne dass Änderungen erforderlich sind, empfehlen wir Ihnen, Vivado 2016.2 zu verwenden. Nachdem Sie Vivado installiert haben, können Sie ein Projekt erstellen und unsere Quelldateien herunterladen. Fügen Sie sie Ihrem Projekt als Quellen hinzu, vergessen Sie nicht, auch die Einschränkungsdatei hinzuzufügen!

Als nächstes erklären wir, was jede der Quelldateien macht. Überspringen Sie die Schritte 2 bis 6, wenn Sie nur zum physischen Aufbau des Geräts gelangen möchten.

Schritt 2: Aufschlüsselung des VHDL-Top-Moduls

Aufschlüsselung des VHDL-Top-Moduls
Aufschlüsselung des VHDL-Top-Moduls
Aufschlüsselung des VHDL-Top-Moduls
Aufschlüsselung des VHDL-Top-Moduls

Das oberste Modul des Projekts verbindet alle einzelnen Komponentenmodule mit der verwendeten Hardware. Wie Sie sehen, haben wir oben die Module killSwitch und SummerControl als Komponenten definiert.

Der untere Abschnitt gibt an, wie diese Module miteinander verbunden sind. Wir haben vier LEDs an das Board angeschlossen und sie den killSwitch-Modulen dev0 bis dev3 zugeordnet. Wir haben vier KillSwitch-Module definiert, da wir eines benötigen, um den Zustand jeder angeschlossenen LED zu verwalten. Jedes dieser Module verwendet das Takt- und Tastensignal, das wir in der oberen Moduldefinition erstellt haben, sowie die entsprechenden Eingangsschalter- und Ausgangsgerätesignale.

Das Summersteuermodul an der Unterseite aktiviert den Summer, wenn die Universal-Aus-Taste gedrückt wird. Wie Sie sehen, werden dem Summersteuermodul das Takt- und Tastensignal als Eingänge übergeben. Es wird auch über den physischen Summer-Ausgangspin geleitet, um ihn entsprechend zu steuern.

Schritt 3: Aufschlüsselung des VHDL-Kill-Switch-Moduls

Aufschlüsselung des VHDL-Kill-Switch-Moduls
Aufschlüsselung des VHDL-Kill-Switch-Moduls
Aufschlüsselung des VHDL-Kill-Switch-Moduls
Aufschlüsselung des VHDL-Kill-Switch-Moduls

Der Kill Switch ist der universelle Ausschalter, und das Modul befasst sich hauptsächlich damit, ihn mit anderen Schaltungselementen zu verbinden, damit beim Drücken alle Lichter ausgeschaltet werden.

Während das obere Modul die Verbindung von physischer Hardware mit Software übernimmt, übernimmt das killSwitch-Modul die Hauptlogik jedes Geräts. Das Modul nimmt Eingänge für das Taktsignal, den Universal-Aus-Taster und den Geräte-Kippschalter auf. Im Gegenzug steuert es den Zustand des Geräte-Pins, mit dem es verbunden ist.

Im Architekturabschnitt des Codes sehen wir, dass es eine Abhängigkeit vom dFlipFlop-Modul hat, um Speicher zu speichern. Sie können auch sehen, dass wir vier Signale deklariert haben, die verwendet werden, um das Flip-Flop zu verbinden und unsere logischen Anweisungen zu implementieren. Im Verhaltensabschnitt des Codes haben wir eine Instanz des dFlipFlop-Moduls erstellt und unsere I/O-Signale den Ports zugewiesen.

Von hier aus liegt der Hauptteil unserer Logik in den Signalwerten für invertState und isDevOn. Unsere logische Grundlage für das Gerät ist wie folgt: „Jedes Mal, wenn der Schalter umgelegt wird, kehrt das Licht seinen Ein-/Aus-Zustand um. Jedes Mal, wenn die Taste gedrückt wird und die LED gerade an ist, wechselt die LED ihren Zustand in Aus. Aus diesen beiden Aussagen können wir extrapolieren, dass der Zustand der LED das XOR des Schalters und unseres Speicherelements sein sollte. Auf diese Weise invertiert eine Änderung einer der beiden die LED. Dies ist im isDevOn-Signal implementiert. Der LED-Ein-Zustand für das Speicherelement wird von unserem invertState-Signal verarbeitet. Wenn die LED leuchtet und die Taste gedrückt wird, aktualisiert unser Speicherelement und invertiert seinen Zustand. Dadurch wird auch der Zustand der LED invertiert.

Schritt 4: Aufschlüsselung des VHDL-Flip-Flop-Moduls

Aufschlüsselung des VHDL-Flip-Flop-Moduls
Aufschlüsselung des VHDL-Flip-Flop-Moduls

Ein Problem bei unserem Design war die Tatsache, dass nach Verwendung des Aus-Schalters zuvor eingeschaltete Lichter möglicherweise zweimal umgedreht werden müssen, um in die Ein-Position zurückzukehren. Dies wäre für die Menschen im Laufe der Zeit eine ziemliche Unannehmlichkeit. Wir haben es geschafft, diese Unannehmlichkeiten zu umgehen, indem wir ein "Flip Flop", ein Schaltungselement, das Informationen speichern kann, in unser Design integriert haben. Jetzt merkt sich das System, ob ein Lichtschalter zuvor eingeschaltet war, sodass er sich bei erneutem Umlegen unabhängig von seiner Ausgangsposition einschaltet.

Der VHDL-Code verwendet if- und else-Anweisungen, um das Flip-Flop als Komponente in unserem Schaltungsdesign zu erstellen. Es stellt sicher, dass der Flipflop-Ausgang seinen Eingang überschreibt, wenn das Taktsignal von einem niedrigen in einen hohen Zustand übergeht, wenn die Glühbirne eingeschaltet ist und wenn der Ausschalter gedrückt wird. Beim Überschreiben des Eingangs wird das Flipflop invertiert.

Schritt 5: Aufschlüsselung des VHDL-Piezo-Summermoduls

Aufschlüsselung des VHDL-Piezo-Summermoduls
Aufschlüsselung des VHDL-Piezo-Summermoduls
Aufschlüsselung des VHDL-Piezo-Summermoduls
Aufschlüsselung des VHDL-Piezo-Summermoduls

Diese Datei ist etwas überflüssig, was das Hardware-Design betrifft, aber sie ist unerlässlich, damit die Top-Modul- und Constraint-Dateien reibungslos laufen. Wenn Sie den Piezo-Summer nicht verwenden möchten, laden Sie diese Datei herunter, aber schließen Sie den Summer nicht an das Basys 3-Board an.

Der Piezo-Summer gibt beim Drücken der Deaktivierungstaste einen Zwei-Noten-Ton ab, der dem Benutzer eine akustische Rückmeldung gibt, dass die Taste gedrückt wurde. Wir haben dies verhaltensmäßig in VHDL durch eine Reihe von if-Anweisungen in einer Prozessstruktur implementiert. Wir haben damit begonnen, einen ganzzahligen Wert zu erstellen, um zu verfolgen, wie viele Uhrenänderungen aufgetreten sind. Sobald der Prozess beginnt, verbringt das Programm die erste halbe Sekunde (0 bis 50 Millionen Taktimpulse) damit, eine A-Note bei 440 Hertz auszugeben. Dies wird erreicht, indem das Piezo-Summersignal alle geraden Vielfachen von 227272 Takt-Ticks mit einer Modulo-Funktion invertiert wird. Diese Zahl ergibt sich aus der Division des Taktsignals der Karte (100 MHz) durch die gewünschte Frequenz (400 Hz). Während der zweiten halben Sekunde (50 bis 100 Millionen Taktstriche) gibt das Board auf dieselbe Weise wie zuvor einen F-Ton mit 349,2 Hertz aus. Nach einer Sekunde inkrementiert das Programm die Clock-Variable nicht weiter und hört auf, irgendetwas vom Piezo-Summer auszugeben. Durch erneutes Drücken der Universal-Aus-Taste wird diese Zahl auf 0 zurückgesetzt und der Rauschzyklus neu gestartet.

Schritt 6: Aufschlüsselung der VHDL-Einschränkungsdatei

Die Constraints-Datei teilt Vivado mit, welche Geräte auf dem Basys 3-Board wir verwenden. Es liefert Vivado auch die Namen, die wir den Geräten in unserem Code gegeben haben. Vivado benötigt diese Informationen, um unsere Logikelemente mit der physischen Hardware zu verbinden. Die Einschränkungsdatei enthält eine große Menge an auskommentiertem (unbenutztem) Code. Diese Codezeilen verweisen auf die Geräte auf dem Board, die wir nicht verwenden.

Die von uns verwendeten Geräte umfassen vier Eingangsschalter mit der Bezeichnung V17, V16, W16 und W1 auf der Platine. Wir verwenden auch den universellen Ausschalter mit der Bezeichnung U18. Die Ausgangspins für unsere vier verbundenen LEDs sind JB4, JB10, JC4 und JC10. Für unseren Piezzo-Summer verwenden wir den Ausgangspin JA9.

Wie in der oberen Modulaufschlüsselung erwähnt, müssen Sie, wenn Sie der Platine zusätzliche LEDs oder andere Geräte hinzufügen möchten, den Umfang der SW- und Dev-Signale erhöhen, weitere killSwitch-Module hinzufügen und diese miteinander verbinden. Anschließend müssen Sie diese Variablennamen über die Constraint-Datei mit der Gerätehardware verknüpfen. Dies kann erfolgen, indem Sie die Codezeilen, die den Pins zugeordnet sind, die Sie verwenden möchten, auskommentieren (wieder aktivieren) und dann den Namen der zugehörigen Variablen im oberen Modul hinzufügen. Die richtige Syntax dafür kann von den von uns verwendeten Geräten kopiert werden. Die Namen der Pins, die Sie auf der Platine verwenden möchten, finden Sie im Baasys 3-Referenzhandbuch hier.

Schritt 7: Aufbau des Basys 3

Aufbau des Basys 3
Aufbau des Basys 3
Aufbau des Basys 3
Aufbau des Basys 3

Sie müssen Ihre LEDs in die richtigen I/O-Ports des Basys 3 stecken. Folgen Sie den bereitgestellten Bildern, um die richtigen Ports zu bestimmen, denn wenn Sie eine LED in den falschen Port stecken, leuchtet sie nicht auf. Wenn Sie sich für den Anschluss des Piezo-Summers entschieden haben, müssen Sie diesen auch an die richtigen E/A-Ports anschließen.

Wenn das Board fertig ist, schließen Sie es über ein USB-Kabel an Ihren Computer an.

Schritt 8: Implementieren von VHDL-Dateien in Basys 3

Implementieren von VHDL-Dateien in Basys 3
Implementieren von VHDL-Dateien in Basys 3
Implementieren von VHDL-Dateien in Basys 3
Implementieren von VHDL-Dateien in Basys 3

Nun, da Ihr Board fertig ist und Ihr Code fertig ist, können Sie endlich das Modell zusammenstellen.

Sobald Sie Ihr Projekt in Vivado eingerichtet haben, müssen Sie auf die Schaltfläche "Generate Bitstream" klicken, um den Code zu kompilieren, bevor er auf das Board hochgeladen wird. Wenn Sie zu diesem Zeitpunkt eine Fehlermeldung erhalten, müssen Sie überprüfen, ob Ihr Code genau mit unserem übereinstimmt. Wenn ich es genau sage, meine ich sogar die Semikolons oder die Arten von Klammern, die verwendet werden. Nachdem Ihr Bitstream erfolgreich geschrieben wurde, gehen Sie innerhalb von Vivado in den Hardware-Manager und klicken Sie auf die Schaltfläche "Open Target" und dann direkt danach auf "Program Device". Ihr Basys 3-Board sollte nun voll funktionsfähig sein.

Schritt 9: Verwenden des Basys 3-Boards

Verwendung des Basys 3-Boards
Verwendung des Basys 3-Boards

Jetzt, da das Basys 3 Board betriebsbereit ist und so programmiert wurde, dass es unser Modell repräsentiert, müssen Sie wissen, wie man es benutzt.

Jeder der vier am weitesten rechts stehenden Schalter steuert eine der LEDs. Wenn Sie sie betätigen, wird die LED ein- oder ausgeschaltet. Wenn die LED nicht aktiviert wird, überprüfen Sie, ob Sie an den richtigen E/A-Port angeschlossen sind und dass Ihre LED überhaupt funktioniert.

Wenn Sie alle LEDs gleichzeitig deaktivieren möchten, müssen Sie die mittlere Taste der oben angezeigten fünf Tasten drücken.

Schritt 10: Zeigen Sie vor

Das Modell dient als nette kleine Neuheit, die Sie vor Ihren Freunden und Ihrer Familie demonstrieren können. Es kann theoretisch auch verwendet werden, um den universellen Ausschalter in Ihr elektrisches Haussystem zu integrieren, wenn Sie die LEDs durch Kabel zu Ihren Leuchten ersetzen. Obwohl es möglich ist, müssen wir dennoch davon abraten. Es besteht die Möglichkeit, sich selbst oder Ihrem Zuhause ernsthaften Schaden zuzufügen, wenn Sie versuchen, ohne die Hilfe eines Elektrikers neu zu verkabeln.

Empfohlen: