Der 4-Bit Zähler besteht aus einer Aneinanderreihung von 4 T-Flip-Flops, die wir im
Projekt 2 schon
kennengelernt haben. Natürlich könnten wir diese jeweils einzeln
aufrufen und dann einzeln zusammenschalten. Dies geht aber mit VHDL
viel eleganter.
Zuerst einmal legen wir uns eine Top-Level-Entity mit vier Ausgängen (
A_out bis D_out ) einem Takteingang und einem Reseteingang an.
Die vier Ausgänge schalten wir auf die LEDR0 bis LEDR3, der Takteingang
ist der Taster Key0, der Reseteingang der Taster Key1. Damit siehr
unser Pin-Planer so aus:
Wir erweitern unser getaktetes Flipflop um den Ausgang Q_strich und einen Reset-Eingang.
Das eigendliche Flipflop sieht dann so aus:
Dieses speichern wir als
flipflop.vhd in unseren Projektordner.
Nun erzeugen wir 4 Flipflops, wobei wir bei den letzten drei Flipflops
den Eingang clk mit dem Ausgang Q des vorherigen Flipflops verbinden.
Zuerst einmal legen wir mit component die Ein- und Ausgänge von unserem Flipflop fest. Wir erzeugen zwei interne Signalebusse,
Q und
Q_strich, die jeweils eine Bandbreite von 4 bit (
3 dowto 0) haben.
Wichtig: Die Sprungmarken flip0: flip1: und flip2: dürfen zwar beliebige Namen haben, müssen aber unbedigt verwendet werden!
Die Variabel i ist eine Zählvariabel, die von 0 bis 4 läuft (
0 to 4). Wenn diese die Zahl
0 hat (Sprungmarke
flip1:), dann wird als Eingang der Takteingang
clk verwendet,
reset wird mit
reset verbunden und die beiden Ausgänge werden auf die internen Signalebusse
Q und
Q_strich gelegt.
Für die restlichen drei Flipflops (Sprungmarke
flip2:) wird als Takteingang jeweils der Taktausgang
Q von dem vorherigen Flipflop verwendet, die Ausgänge werden auf die internen Signalbusse
Q bzw
Q_strich gelegt. Bei
i = 4 wird die Zählschleife abgebrochen.
Zuletzt wird der Signalbus
Q auf die Ausgangspins
A_out bis
D_out gelegt. Drückt man jetzt den ersten Taster (
key0) so zählt unser Zähler jeweils um eins nach oben und gibt das Ergebnis im Binärcode auf die Leds aus.
Der VHDL-Quelltext ist als
flipflop.txt und
zaehler_top.txt zum Import hinterlegt. Das gesamte Projekt kann als
4bit_zahler.zip heruntergeladen werden.