Das Gantt-Diagramm in Abbildung \ref{fig:gantt} wurde auf eingetretene Verzögerungen angepasst, sodass die Deadline Mitte Dezember eingehalten werden kann.
Abbildung \ref{fig:projektplanung} zeigt den geplanten und benötigten Zeitaufwand für die Erstellung des Meilenstein 2 unterteilt in folgende Aufgabenbereiche:
- Einarbeitung
- Zeitplanung
- Design
- Implementierung
- Verifikation
- Dokumentation
Die Darstellung wird gesondert für die Studenten Marc Kossmann und Michael Riedel betrachtet. Diese Zeiten sind unabhängig von gemeinsam bearbeiteten Aufgaben. Die Abbildung \ref{fig:zeitbedarf} zeigt die komplette geplante und benötigte Zeit, die durch Aufsummierung der einzelnen Meilensteine entsteht.
Aufgrund der geringen Komplexität wurde für diese Komponente kein expliziter Designprozess wie z. B. in Meilenstein 1 durchlaufen. Nach einer kurzen Einarbeitung in die Aufgabenstellung und unter Berücksichtigung der Erkenntnisse aus dem Tutorial, wurde der Quellcode direkt entworfen. Anschließend wurde das gewünschte Verhalten mithilfe einer Modelsim-Simulation verifiziert. Abbildung \ref{fig:register_interface} zeigt die daraus entstandene Komponente register_interface
, die jetzt in Quartus zur Verfügung steht.
Adresse | Register |
---|---|
000 | ctrlReg |
001 | ctrlSetReg |
010 | ctrlClrReg |
011 | speedReg |
100 | stepsReg |
Table: Adressbeschaltung zum Registerzugriff \label{tab:adressen}
Gemäß Aufgabenstellung ermöglicht sie das Lesen und Schreiben über einen 3-Bit Adressbus. Dabei können die Register stepsReg
und speedReg
direkt, das ctrlReg
-Register direkt sowie über sogenannte Set und Clear-Register beschrieben werden. Durch die ctrlSetReg
und ctrlClrReg
-Register können einzelne auf 1
gesetzte Bits verändert werden, die mit 0
maskierten Bits behalten den bisherigen Wert.
Die Tabelle \ref{tab:adressen} zeigt die notwendige Beschaltung für den Registerzugriff.
Zugunsten der Übersichtlichkeit wurden alle definierten Datentypen in dem Header dataTypes.h
zusammengefasst.
Wie für diesen Meilenstein verlangt, verwendet die Steuersoftware nun die tatsächlichen Register der VHDL-Komponente register_interface
. Dazu wurden Makros für den Hardwarezugriff eingeführt und die entsprechenden Funktionen im Header registerAcces.h
angepasst.
Die UserInput
- und UserOutput
-Tasks haben bisher über eine Mailbox die Daten der Registerinhalte ausgetauscht. Diese Mailbox wurde in eine globale Variablenstruktur umgewandelt, da es in der Steuersoftware nur einen aktuellen Inhalt in den Registern gibt. Es ist nicht notwendig, vorherige Inhalte zwischenzuspeichern. Der geregelte Zugriff auf die globale Struktur wird durch die Verwendung eines Mutexes sichergestellt. Die Anpassungen sind in Abbildung \ref{fig:kommunikation} ersichtlich.