[[dtlab_t7]]

Z盲hler und PWM Generator mit FPGA und VHDL

Bauen Sie einen Modulo 13 Z盲hler und einen 搁颈苍驳锄盲丑濒别谤, die im Sekundentakt hochz盲hlen und einen PWM Generator, bei dem das An/Aus Verh盲ltnis 眉ber die Schalter eingestellt werden kann. Beide Schaltungen werden mit dem Logikanalysator vermessen.

Aktualisieren Sie das dtlab Projekt mit

cd ~/projects/dtlab
git pull

Die Datei beschreibt das Modul 鈥渢op_count鈥�. 鈥渢op_count鈥� stellt den toplevel auf dem FPGA dar.

Der 搁颈苍驳锄盲丑濒别谤 aus soll die roten LEDs ansteuern. Bei der letzten Aufgabe 搁颈苍驳锄盲丑濒别谤 haben Sie den 搁颈苍驳锄盲丑濒别谤 schon gebaut und an die roten LEDs angeschlossen. Der 搁颈苍驳锄盲丑濒别谤 wurde dort entweder permanent oder mit dem Flankendetektor enabled. Jetzt soll der 搁颈苍驳锄盲丑濒别谤 autark im Sekundentakt z盲hlen. Das Enablesignal dazu kommt aus dem Z盲hler .

  • Instantiieren Sie den 搁颈苍驳锄盲丑濒别谤 ringcnt in top_count
  • Instantiieren Sie Z盲hler cnt1sec in top_count

Der Z盲hler cnt1sec soll jede Sekunde ein Enablesignal liefern, damit der 搁颈苍驳锄盲丑濒别谤 einmal pro Sekunde weiterz盲hlt. Doch zun盲chst soll die Funktion im Simulator getestet werden. Eine Sekunde Echtzeit zu simulieren dauert in der Simulation sehr lange.

  • Bauen Sie den Z盲hler cnt1sec. cnt1sec soll f眉r die Simulation alle 5 Takte das Enablesignal aktivieren
  • Verbinden Sie ringcnt und cnt1sec, damit der 搁颈苍驳锄盲丑濒别谤 alle 5 Takte z盲hlt

Pr眉fen Sie jetzt im Simulator die Funktion

  • Produziert cnt1sec alle 5 Takte ein aktives Enablesignal?
  • Z盲hlt ringcnt alle 5 Takte weiter?
  • Zeigen die roten LEDs den Zustand vom 搁颈苍驳锄盲丑濒别谤 an, d.h. wird alle 5 Takte die n盲chste LED angeschaltet?

Testen Sie die Schaltung auf dem FPGA

  • 脛ndern Sie cnt1sec, damit jetzt das Enablesignal einmal pro Sekunde aktiviert wird.
  • Synthetisieren Sie das Design und Laden Sie es auf das FPGA
  • Wird pro Sekunde einmal die rote LED weitergeschaltet?

Jetzt soll zus盲tzlich der Modulo 13 Z盲hler eingebaut werden, der an der Siebensegmentanzeige HEX0 angezeigt wird. Der Z盲hler hat den Eingang 鈥渦p_i鈥�. Wenn 鈥渦p_i鈥� = 1 ist, dann soll der Z盲hler hochz盲hlen und sonst runterz盲hlen.

  • Instantiieren Sie den Modulo 13 Z盲hler
  • Der Z盲hler stand soll als Vorw盲rts-/R眉ckw盲rtsz盲hler funktionieren. Steuern Sie die Z盲hlrichtung 眉ber KEY1
  • Der Z盲hler soll mit dem Enablesignal von cnt1sec gesteuert werden

Pr眉fen Sie die Funktion im Simulator

  • Z盲hlt der Z盲hler nur, wenn der Z盲hler cnt1sec ein Enablesignal liefert?
  • Z盲hlt der Z盲hler hoch, wenn KEY1 auf 1 ist?
  • Z盲hlt der Z盲hler runter, wenn KEY1 auf 0 ist?
  • Z盲hlt der Z盲hler als Modulo 13 Z盲hler?

Der PWM Generator soll ein PWM Signal produzieren, dass abh盲ngig von den Schaltern SW[3..0] gesteuert wird.

  • Wenn die Schalter SW[3..0] alle aus sind, dann soll der Ausgang permanent auf '0' sein
  • Wenn die Schalter SW[3..0] vorzeichenlos die Zahl 4 anzeigen, dann soll der Ausgang f眉r 4 Takte auf '1' und f眉r 11 Takte auf '1' sein.
  • Wenn die Schalter SW[3..0] alle eingeschaltet sind, dann soll der Ausgang permanent auf '1' sein.
  • Die Periodendauer des Signals soll 15 Takte betragen.
  • Zeichnen Sie die Struktur des PWM Generators mit Addierern, Multiplexern, Vergleichern und Registern
  • Erg盲nzen Sie den VHDL Code in
  • Instantiieren Sie pwm in top_count
  • Das PWM Signal soll auf dem Expansionport EXP[2] ausgegeben werden
  • Das PWM Signal soll gleichzeitig die gr眉ne LED[3] ansteuern

Stellen Sie im Labor Ihre Ergebnisse vor. Bringen Sie die Zeichnungen und die Screenshots der Simulationen mit.

Konfigurieren Sie cnt1sec so, dass alle 5 Takte ein Enablesignal produziert wird. Zeigen Sie die Funktion des Modulo 13 Z盲hlers am Expansionsport.

Zeigen Sie die Funktion des PWM Generators am Expansionport.

  • dtlab_t7.txt
  • Last modified: 2025/03/14 20:46
  • by beckmanf