Projekt: SimpleState
Bisher wurden einfache Register und darauf basierende Zähler synthetisiert.
In diesem Projekt kommen State Machines, im deutschen Sprachgebrauch auch Zustandsmaschinen oder endliche Automaten dazu.
State Machines werden für komplexeren Vorgänge benötigt und dienen bei entsprechender Programmierung auch der Les- und Wartbarkeit des VHDL-Codes.
Spezifikation
Es werden jetzt alle Taster verwendet. Sie haben die folgende Funktion:
Taster | Funktion |
---|---|
0 | F_Reset |
1 | F_Mode |
2 | F_Up |
3 | F_Down |
Es werden jetzt alle LEDs verwendet. Nach der Bootphase haben sie die folgende Funktionen:
LED | Funktion |
---|---|
0 | Blinken (PWM Ausgang) |
1 | Activity |
3..2 | Mode anzeigen (siehe nächste Tabelle) |
Intern werden folgende Modi definiert:
Mode | Funktion | LED Anzeige |
---|---|---|
M_Nop | Nichts verändern | 00 |
M_Freq | Frequenz verändern | 01 |
M_Duty | Duty Cycle verändern | 10 |
M_Phase | Phase verändern | 11 |
Die LED 0 soll blinken und die Parametrierung dazu soll über die Taster erfolgen.
Nr | Name | Spezifikation |
---|---|---|
1a | Reset | Nach dem Einschalten und nach F_Reset: Taster 1..3 haben keinen Einfluss, gehe über in die Boot-Phase. |
1b | Boot | Die LEDs blinken: 1. Sekunde: Alle an 2. bis 5. Sekunde: Led 0 bis Led 3 nacheinander 6. bis 7. Sekunde: Alle LEDs aus. Gehe anschließend über zur Start-Phase. |
1c | Start | Der Modus ist auf M_Freq Die LED blinkt mit 1 Hz, 50 % Duty-Cycle und Phase 0 Das FPGA reagiert auf Taster 1 .. 3 |
2 | F_Mode | Der Modus wird zyklisch inkrementiert |
3 | F_Up | Veränderung des Blinkparameters nach oben: in M_Freq Frequenz mit 10 multiplizieren in M_Duty Duty-Cycle um 1 % erhöhen in M_Phase Duty-Phase um 1 % erhöhen |
4 | F_Down | Veränderung des Blinkparameters nach unten: in M_Freq Frequenz durch 10 dividieren in M_Duty Duty-Cycle um 1 % vermindern in M_Phase Duty-Phase um 1 % vermindern |
5 | Restart | Die Ereignisse F_Up und F_Down starten die PWM neu, falls der Modus nicht M_Nop ist. |
6 | MinFreq | Die minimale Frequenz ist 0,1 Hz im Normalbetrieb und 1 kHz in der Simulation. |
7 | MaxFreq | Die maximale Frequenz 1 MHz |
8 | MinDuty | Der minimale Duty-Cycle ist 0 % |
9 | MaxDuty | Der maximale Duty-Cycle ist 100 % |
10 | MinPhase | Die minimale Phase ist 0 % |
11 | MaxPhase | Die maximale Phase ist 99 % |
12 | Activity | Die Activity-LED toggelt mit der Basisfrequenz zur Phase 0 |
13 | ZyboSpeed | Auf dem ZYBO Board läuft alles um den Faktor 1,25 schneller ab. Das heißt, auch für den ZYBO kann man von einem Takt von 100 MHz anstatt der 125 MHz ausgehen. |
14 | SimSpeed | In der Simulation läuft die Bootphase um den Faktor 10000 schneller ab. Die Start Frequenz ist 1 kHz. |
Neu in diesem Projekt
- State Machines
- Hierarchisches Design
- Verwendung von IPs
Diese Projekt ist in einzelne Schritte unterteilt in denen Stück für Stück das endgültige Modul erstellt wird.
Analyse der Aufgabenstellung
Letztendlich benötigt man um die Spezifikation zu erfüllen einen Rechtecksignalgenerator (PWM). Der PWM-Ausgang wird bei erreichen der Startphase gesetzt und bei erreichen der Stopphase (Startphase + Duty-Cycle) wieder zurückgesetzt.
Der Taktgeber für die PWM ist 100 * die eingestellte Frequenz.
Der Modus-Button verändert den Modus und entsprechend des eingestellten Modus werden die Parameter für die PWM verändert.
Weiter zur Vorbereitung