Zwischenvortag zur Studienarbeit Implementierung von Standarddatenstrukturen in VHDL Jens Voß Dresden, 01.12.2015 Gliederung 1. 2. 3. 4. Einführung Datenstrukturen Aktueller Stand Ausblick 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 2 von 23 Einführung • Problemstellung und Motivation: • für Softwareentwurf umfangreiche Bibliotheken vorhanden • im Hardwareentwurf ebenfalls Verwendung von Standardkomponenten • allerdings: oft sehr speziell angepasst oder sehr simpel • Ergänzen des Angebots der PoC-Bibliothek 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 3 von 23 Einführung • Aufgabenstellung: 1. 2. 3. 4. 01.12.2015 Literaturstudium zu Standarddatenstrukturen Bewertung dieser Datenstrukturen Implementierung in VHDL Test und Bewertung Studienarbeit – Jens Voß Folie Nr. 4 von 23 Datenstrukturen Stack: • • • eine der einfachsten Datenstrukturen arbeitet nach dem LIFO-Prinzip geplante Funktionen: • mögliche Implementierungen: 01.12.2015 push pop mit RAM und Stackpointer als Schieberegister Studienarbeit – Jens Voß Folie Nr. 5 von 23 Datenstrukturen Deque: • • • • double ended Queue beide Enden arbeiten als Stack kann als FIFO benutzt werden geplante Funktionen: 01.12.2015 pushA/pushB popA/popB Studienarbeit – Jens Voß Folie Nr. 6 von 23 Datenstrukturen Deque: • • • aus den push/pop Operationen lassen sich 9 Fälle ableiten Überprüfung ob einfügen/löschen gültig Anhaltspunkt: Differenz der beiden Zeiger 01.12.2015 4 mögliche Ergebnisse Studienarbeit – Jens Voß Folie Nr. 7 von 23 Datenstrukturen Deque: • für voll/leer: B – A = 1 01.12.2015 Auswertung mittels Flags Studienarbeit – Jens Voß Folie Nr. 8 von 23 Datenstrukturen Deque: • 01.12.2015 beide dürfen schreiben/lesen: B – A ≥ 3 Studienarbeit – Jens Voß Folie Nr. 9 von 23 Datenstrukturen Deque: • 01.12.2015 wer darf lesen: B – A = 2 Studienarbeit – Jens Voß Folie Nr. 10 von 23 Datenstrukturen Deque: • 01.12.2015 wer darf schreiben: B – A = 0 Studienarbeit – Jens Voß Folie Nr. 11 von 23 Datenstrukturen FIFO mit Löschoption: • • • • FIFO mit der Möglichkeit Elemente zu löschen beim Einfügen wird TAG ausgegeben dient zur Identifikation beim Löschen wird Element für ungültig erklärt 01.12.2015 wird beim Lesen einfach übersprungen Studienarbeit – Jens Voß Folie Nr. 12 von 23 Datenstrukturen Priority Queue: • • • • 01.12.2015 Elementen wird Priorität zugeordnet Abarbeitung entsprechend der Prioritäten kann als normale FIFO benutzt werden grundlegende Datenstruktur: Heap Studienarbeit – Jens Voß Folie Nr. 13 von 23 Datenstrukturen Heap: • • balancierter bin. Baum Heap-Eigenschaft: 𝑘𝑒𝑦 𝑖 ≥ 𝑘𝑒𝑦(𝑝𝑎𝑟𝑒𝑛𝑡 𝑖 ) • vollständiger Baum • • 01.12.2015 von links einfügen evtl. umsortieren notwendig kleinster Wert immer oberster Wurzelknoten Studienarbeit – Jens Voß Folie Nr. 14 von 23 Datenstrukturen Heap: • • 01.12.2015 einfach als Array darstellbar Positionen: 𝑖 −1 ⌋ 2 Wurzel: ⌊ linker Knoten: 2𝑖 + 1 rechter Knoten: 2𝑖 + 2 Studienarbeit – Jens Voß Folie Nr. 15 von 23 Datenstrukturen Priority Queue: • Komplexitäten: 01.12.2015 Einfügen: O(1) Löschen: O(1) Umsortieren: O(log(n)) Aufbauen des Heaps: O(n) Studienarbeit – Jens Voß Folie Nr. 16 von 23 Datenstrukturen zurückgestellte Datenstrukturen: • • • • 01.12.2015 (doppelt) verkettete Liste Map Set weitere Bäume Studienarbeit – Jens Voß Folie Nr. 17 von 23 Aktueller Stand Literaturstudium: • soweit abgeschlossen Stack: • • Implementierung abgeschlossen erste Analyse der Syntheseergebnisse Deque: • Implementierung begonnen 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 18 von 23 Ausblick TODO: • Stack: ausführlichere Tests genauere Analyse der Ergebnisse • restliche Datenstrukturen: Implementierungen abschließen Analyse der Ergebnisse • Dokumentation und Ausarbeitung vervollständigen 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 19 von 23 Quellenverzeichnis 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 20 von 23 Quellenverzeichnis 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 21 von 23 Quellenverzeichnis 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 22 von 23 01.12.2015 Studienarbeit – Jens Voß Folie Nr. 23 von 23