Inhaltsverzeichnis:

Grundlegende Stoppuhr mit VHDL und Basys3-Board - Gunook
Grundlegende Stoppuhr mit VHDL und Basys3-Board - Gunook

Video: Grundlegende Stoppuhr mit VHDL und Basys3-Board - Gunook

Video: Grundlegende Stoppuhr mit VHDL und Basys3-Board - Gunook
Video: Sportshop-Triathlon.de - LEAP RACE LP30 Stoppuhr mit 30 Memory 2024, November
Anonim
Image
Image

Willkommen bei der Anleitung zum Bau einer Stoppuhr mit grundlegendem VHDL und Basys 3-Board. Wir freuen uns, unser Projekt mit Ihnen zu teilen! Dies war ein letztes Projekt für den Kurs CPE 133 (Digital Design) bei Cal Poly, SLO im Herbst 2016. Das Projekt, das wir gebaut haben, ist eine einfache Stoppuhr, die die Zeit startet, zurücksetzt und anhält. Es nimmt drei Taster auf der Basys3-Platine als Eingaben auf und die Uhrzeit wird auf der vierstelligen Sieben-Segment-Anzeige der Platine angezeigt. Die verstrichene Zeit wird im Format Sekunden: Zentisekunden angezeigt. Es verwendet die Systemuhr des Boards als Eingabe, um die verstrichene Zeit zu verfolgen und gibt die Zeit an die vier Stellen der Siebensegmentanzeige aus.

Schritt 1: Materialien

Ein- und Ausgänge einstellen
Ein- und Ausgänge einstellen

Die Materialien, die Sie für dieses Projekt benötigen:

  • 1 Computer mit installiertem Vivado Design Suite WebPack von Xilinx (bevorzugen Sie Version 2016.2)
  • 1 Digilent Basys3 Xilinx Artix-7 FPGA-Board
  • 1 USB-Anschlusskabel

Schritt 2: Ein- und Ausgänge einstellen

Die obige Abbildung zeigt ein Blockschaltbild der obersten Ebene des Hauptmoduls der Stoppuhr. Die Stoppuhr nimmt die Eingänge "CLK" (Uhr), "S1" (Start-Taste), "S2" (Pause-Taste) und "RST" (Reset) auf und hat einen 4-Bit-Ausgang "Anodes", einen 7-Bit Ausgang "Segment" und einen Einzelbit-Ausgang "DP" (Dezimalpunkt). Wenn Eingang "S1" hoch ist, beginnt die Stoppuhr mit dem Zeitzählen. Wenn "S2" niedrig ist, hält die Stoppuhr die Zeit an. Wenn "RST" hoch ist, stoppt die Stoppuhr und stellt die Zeit zurück. Es gibt vier Submodule innerhalb der Schaltung: den Taktteiler, den Ziffernzähler, den Sieben-Segment-Anzeigetreiber und den Sieben-Segment-Anzeige-Encoder. Das Hauptmodul Stoppuhr verbindet alle Untermodule miteinander und mit den Ein- und Ausgängen.

Schritt 3: Uhren herstellen

Uhren herstellen
Uhren herstellen

Das Taktteilermodul nimmt einen Systemtakt auf und verwendet einen Teilereingang, um einen Takt mit einer Geschwindigkeit zu erzeugen, die nicht höher als die des Systemtakts ist. Die Stoppuhr verwendet zwei verschiedene Taktmodule, eines, das einen 500-Hz-Takt erzeugt und ein anderes, das einen 100-Hz-Takt erzeugt. Das Schema für den Taktteiler ist in der obigen Abbildung dargestellt. Der Taktteiler nimmt einen Einzelbit-Eingang "CLK" und einen 32-Bit-Eingang "Divisor" und den Einzelbit-Ausgang "CLKOUT" auf. "CLK" ist der Systemtakt und "CLKOUT" ist der resultierende Takt. Das Modul enthält auch ein NOT-Gatter, das das Signal "CLKTOG" umschaltet, wenn der Zähler den Wert des Divisors erreicht.

Schritt 4: Zählen bis Zehn

Zählen bis Zehn
Zählen bis Zehn

Der Ziffernzähler zählt jede Ziffer von 0 bis 10 und erzeugt einen weiteren Takt, damit die nächste Ziffer funktioniert, die oszilliert, wenn der Zählerstand 10 erreicht. Das Modul nimmt 3 Einzelbit-Eingänge "S", "RST" und "CLK" auf " und führt zu einer Einzelbit-Ausgabe "N" und einer 4-Bit-Ausgabe "D". Eingang "S" ist die Freigabe im Eingang. Die Uhr schaltet sich ein, wenn "S" hoch ist, und aus, wenn "S" niedrig ist. "RST" ist der Reset-Eingang, so dass die Uhr zurückgesetzt wird, wenn "RST" hoch ist. "CLK" ist der Takteingang für den Ziffernzähler. "N" ist der Taktausgang, der zum Eingangstakt für die nächste Ziffer wird. Ausgang "D" zeigt den Binärwert der Stelle an, an der sich der Zähler befindet.

Schritt 5: Zahlen anzeigen

Zahlen anzeigen
Zahlen anzeigen

Der Sieben-Segment-Anzeigecodierer codiert die vom Sieben-Segment-Anzeigetreibermodul empfangene Binärzahl und wandelt sie in einen Bitstrom um, der als '1' oder '0'-Werte für jedes Segment der Anzeige interpretiert wird. Die Binärzahl wird vom Modul als 4-Bit-Eingang „Ziffer“empfangen und ergibt den 7-Bit-Ausgang „Segmente“. Das Modul besteht aus einem Single-Case-Prozessblock, der jedem möglichen Eingabewert von 0 bis 9 einen bestimmten 7-Bit-Stream zuweist. Jedes Bit in den 7-Bit-Streams repräsentiert eines der sieben Segmente der Ziffern auf dem Display. Die Reihenfolge der Segmente im Stream ist „abcdefg“, wobei „0“die Segmente darstellen, die für die angegebene Nummer aufleuchten.

Schritt 6: So zeigen Sie die Stoppuhr an

So zeigen Sie die Stoppuhr an
So zeigen Sie die Stoppuhr an

In dem Sieben-Segment-Anzeigetreibermodul gibt es vier 4-Bit-Eingänge "D0", "D1", "D2" und "D3", die jeweils die vier anzuzeigenden Ziffern darstellen. Eingang "CLK" ist der Takteingang des Systems. Der Einzelbit-Ausgang "DP" stellt den Dezimalpunkt auf der Siebensegmentanzeige dar. Der 4-Bit-Ausgang „Anoden“bestimmt, welche Stelle der Siebensegmentanzeige angezeigt wird und der 4-Bit-Ausgang „temp“hängt vom Zustand des 2-Bit-Steuereingangs „SEL“ab. Das Modul verwendet 4 Multiplexer für den Steuereingang „SEL“und die drei Ausgänge; "Anoden", "Temp" und "DP".

Schritt 7: Alles zusammenbringen

Ein 'if'-Prozessblock, der vom 500-Hz-Takt abläuft, wird verwendet, um die Start- und Pause-Schaltflächen zu erstellen. Verknüpfen Sie anschließend alle Submodule im Stoppuhr-Hauptmodul, indem Sie die Komponenten jedes einzelnen Submoduls deklarieren und verschiedene Signale verwenden. Die Ziffern-Submodule nehmen den Taktausgang des vorherigen Ziffern-Submoduls auf, während das erste den 100-Hz-Takt aufnimmt. Die „D“-Ausgänge der Digit-Submodule werden dann die „D“-Eingänge des Siebensegment-Anzeigetreibermoduls. Und schließlich wird der "temp"-Ausgang des Siebensegment-Anzeigetreibermoduls zum "temp"-Eingang des Siebensegment-Encodermoduls.

Schritt 8: Einschränkungen

Einschränkungen
Einschränkungen

Verwenden Sie 3 Taster (W19, T17 und U18) für die Eingänge "RST", "S1" und "S2". W19 ist die Reset-Taste, T17 ist die Start-Taste (S1) und U18 ist die Pause-Taste (S2). Bei Verwendung von Port W5 ist auch eine Einschränkung für den Takteingang erforderlich. Denken Sie auch daran, diese Zeile zur Taktbeschränkung hinzuzufügen:

create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]

Verknüpfen Sie auch die Anoden und Segmente mit der Platine, damit die Stoppuhr auf der Sieben-Segment-Anzeige angezeigt wird, wie in der Einschränkungsdatei zu sehen.

Schritt 9: Testen

Testen
Testen

Stellen Sie sicher, dass Ihr Gerät funktioniert, indem Sie mit den drei Tasten spielen: Drücken und halten Sie sie in jeder möglichen Reihenfolge, um mögliche Probleme mit Ihrem Code zu finden.

Empfohlen: