Inhaltsverzeichnis:

Basys 3 Wecker - Gunook
Basys 3 Wecker - Gunook

Video: Basys 3 Wecker - Gunook

Video: Basys 3 Wecker - Gunook
Video: 3 außergewöhnliche Wecker von Amazon im Test! 2024, Oktober
Anonim
Basys 3 Wecker
Basys 3 Wecker

Unser Projekt erstellt einen Wecker mit der Basys 3 FPGA-Platine, einem Arduino und einer Lautsprechertreiberplatine. Der Benutzer kann über 11 Eingabeschalter am Basys 3 die aktuelle Uhrzeit in die Platine eingeben und den Wert mit der mittleren Taste auf der Platine sperren. Der Benutzer kann dann die Weckzeit mit denselben Schaltern eingeben, aber die linke Taste drücken, um die Weckzeit zu sperren. Wird die falsche Uhrzeit eingegeben, kann die Reset-Taste (obere Taste) gedrückt werden und die aktuelle Uhrzeit und Weckzeit werden auf 00:00 gestellt. Der Benutzer kann dann die Uhr mit dem ganz linken Schalter starten und den Wecker mit dem nächsten Schalter einschalten. Wenn der Wecker eingeschaltet ist, ertönt der Wecker, wenn die Uhrzeit und die eingestellte Weckzeit übereinstimmen.

Schritt 1: Black-Box-Diagramm

Black-Box-Diagramm
Black-Box-Diagramm
Black-Box-Diagramm
Black-Box-Diagramm

Wir begannen unser Projekt mit dem Zeichnen eines Black-Box-Diagramms, um die in unserem Programm benötigten Ein- und Ausgänge zu visualisieren. Die folgenden Eingänge für unser Programm wie 5-Bit-Eingang (Hour_in) wurden initialisiert, um die 24-Stunden-Zeit anzugeben, 6-Bit (Min_in)-Eingang, um bis zu 60 Minuten anzuzeigen, eine Reset-Taste (Rst_b), damit der Benutzer ändern ihren Zeiteingang, einen 1-Bit-Eingang (alm_en), der den Alarmeingang lädt, einen 1-Bit-Eingang (alarm_sw), um den Wecker auszuschalten, wenn er aktiviert wird, einen 1-Bit-Eingang (e_sec), der steuert, wann der Zähler Sekunden laufen, ein 1-Bit-Eingang (Led_btn), der die aktuelle Uhrzeit einstellt, und zuletzt ein 1-Bit-Eingang (clk), der die von der Basys 3-Karte angezeigte Uhrzeit steuert. Die Ausgänge sind der (alm_on), der das Signal an den Arduino sendet, der sseg-Ausgang, der die Eingangszeit des Basys 3 anzeigt, und der Anodenausgang, der steuert, wo die Eingänge auf der Sieben-Segment-Anzeige angezeigt werden.

Schritt 2: Langsame Uhr

Langsame Uhr
Langsame Uhr

Die Datei slow clock oder clock_div2 erstellt eine Uhr mit einer Frequenz von 2 Hz. Wenn wir diese Uhr unserem Sekundenzähler zuführen, wird der Sekundenwert jede Sekunde um eins erhöht. Der langsame Takt wird verwendet, um ein zuverlässiges Taktsignal zu erzeugen, das einmal pro Sekunde von niedrig auf hoch wechselt.

Schritt 3: Zähler

Schalter
Schalter
Schalter
Schalter

Komponentenzähler (Minuten und Sekunden):

Die Grundfunktion von Minuten und Sekunden besteht darin, dass sie Zähler sind. Der Minutenzähler nimmt den Eingang (Vin) auf, der ein Signal von den Eingängen (Min_in) ist, und zählt dann, bis der gewünschte Eingang erreicht ist. Die Sekunden nehmen nur die Eingabe von switch(e_Sec) auf, da sie nicht auf den sieben Segmenten angezeigt werden können, und zählt im Hintergrund, sobald der Schalter auf High '1' steht. Beide geben ihren Wert an (Qout) aus, und dann wird er in (data) gespeichert, der ihn an SSEG sendet, was in der Verknüpfungsdatei erfolgt. Wenn Minuten und Sekunden die Werte von 59 erreichen, wird sie zurückgesetzt und die Ausgabe von ihnen ist „1“, um die Minuten/Stunde zu erhöhen. Es kann auch mit einem Reset(rst_b) auf ihre Eingänge gemappt werden.

Schritt 4: Stundenzähler

Zähler Stunde
Zähler Stunde
Zähler Stunde
Zähler Stunde

Komponentenzähler Stunde

Ähnlich wie beim Komponentenzähler der Minuten und Sekunden nimmt die Stundenkomponente Eingaben wie (Vin) auf, die ein Signal von der Verknüpfungsdateieingabe (Hour_in) sind, und hat Ausgänge, die auf die gleiche Weise mit den Minuten und Sekunden verknüpft sind. Wenn der Zählwert der Stunde 24 00 erreicht, wird er auf 00 00 zurückgesetzt.

Schritt 5: Alarm

Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm
Alarm

Die.vhd-Alarmdatei besteht aus D-Flip-Flops, bei denen es sich um Speichergeräte handelt, die digitale Daten speichern können. In der Alarmdatei wird die Uhrzeit gespeichert, zu der der Alarm aktiviert wird. Um die Daten von Stunden (5 Bit Eingabe) und Minuten (6 Bit Eingabe) zu speichern, müssen wir 11 D-Flip-Flops in unserer Alarmdatei ausstempeln. Dazu müssen wir zunächst die Logik für den Betrieb von d-Flip-Flops importieren und die Komponenten abbilden. Jedes der 11 D-Flip-Flops speichert ein Datenbit von den Eingängen und ermöglicht die Zuordnung der Daten zu den Ausgängen der Alarmdatei. Da D-Flip-Flops Daten speichern, können wir die Daten zu einem späteren Zeitpunkt auch dann verwenden, wenn die Eingangsschalter geändert wurden.

Schritt 6: Universeller Sieben-Segment-Anzeigentreiber

Universeller Sieben-Segment-Anzeigentreiber
Universeller Sieben-Segment-Anzeigentreiber
Universeller Sieben-Segment-Anzeigentreiber
Universeller Sieben-Segment-Anzeigentreiber
Universeller Sieben-Segment-Anzeigentreiber
Universeller Sieben-Segment-Anzeigentreiber

Der universelle Sieben-Segment-Anzeigentreiber empfängt die Eingaben von der Uhr und dem Uhrsatz und kann sie an die Sieben-Segment-Anzeige auf der Platine ausgeben. Der Treiber ist in der Lage, zwei separate Zählwerte gleichzeitig auf der Platine auszugeben. Wir haben diese Funktion verwendet, um sowohl die Stundenzeit als auch die Minutenzeit separat anzuzeigen. Die Siebensegmentanzeige kann nur eine Zahl gleichzeitig aktivieren, daher muss die sseg-Datei Multiplexing verwenden, um alle Zahlen der Zeit gleichzeitig anzuzeigen. Das Taktsignal der Platine wird in den sseg eingespeist, um die richtige Zeit für das Multiplexen beizubehalten. Ein Binär-zu-Binär-codierter Dezimalcodierer ist erforderlich, um die Eingaben in die Datei in eine Form umzuwandeln, die auf der Sieben-Segment-Anzeige ausgegeben werden kann. Die endgültige Ausgabe der sseg-Datei wird auf die Siebensegmentanzeige abgebildet und die korrekte Uhrzeit wird auf dem Display angezeigt.

Schritt 7: Datei verknüpfen

Datei verknüpfen
Datei verknüpfen
Datei verknüpfen
Datei verknüpfen
Datei verknüpfen
Datei verknüpfen

Die Linkdatei verbindet alle anderen Aspekte des Programms und ordnet die Signale ihrem richtigen Ort zu. Jede Komponente wird in die Datei eingebracht und instanziiert. Signale werden verwendet, um Daten von einer Komponente zur anderen zu übertragen. Die Portzuordnung folgt dem oben aufgeführten Blackbox-Diagramm. Die Linkdatei enthält auch die Logik, die bestimmt, wann der Alarm aktiviert wird. Der Großteil des Projekts wird zu diesem Zeitpunkt bereits abgeschlossen sein. Die verbleibende Arbeit besteht darin, jedes Signal an den entsprechenden Ort zu leiten.

Schritt 8: Arduino

Arduino
Arduino
Arduino
Arduino

Das Arduino wird verwendet, um den Lautsprecher zu aktivieren sowie den Ton und die Dauer der über den Lautsprecher gespielten Note zu steuern. Das Arduino liest ein digitales Signal von der Basys 3-Platine. Wenn dieses Signal hoch ist, gibt das Arduino ein PWM-Signal aus, das den Ton und die Dauer des Alarms steuert. Das Ausgangssignal des Arduino wird mit dem Eingangssignal einer Lautsprechertreiberplatine verbunden, die die Lautstärke des Lautsprechers erhöht. Das Arduino führt diesen Vorgang sehr schnell durch und wiederholt sich viele Male pro Sekunde.

Schritt 9: Kabelführung

Kabelführung
Kabelführung

Das Arduino- und Basys 3-Board müssen physisch verbunden sein, um Signale zwischen den Boards zu übertragen. Das erste Kabel, das zu verdrahten ist, ist das vom Erdungsstift des JA PMOD des Basys 3 zum Erdungsstift des Arduino. Als nächstes verbinden Sie ein Kabel von Pin 1 des JA PMOD des Basys 3 mit dem digitalen Pin 7 des Arduino. Als nächstes verbinden Sie zwei Erdungsstifte vom Arduino mit den Erdungsstiften des Lautsprechertreibers. Verbinden Sie als nächstes den 3,3-V-Ausgang des Arduino mit dem Vcc-Pin des Lautsprechertreibers. Als nächstes verbinden Sie den digitalen Pin 9 des Arduino mit dem In-Pin des Lautsprechertreibers.

Empfohlen: