Title: Anwendung der Methoden des Hardware/Software Codesigns am Beispiel eines MPEG1 Layer III Dekoders
1Anwendung der Methoden des Hardware/Software
Codesigns am Beispiel eines MPEG1 Layer III
Dekoders
- Systempartitionierung, Softwareoptimierung,
Simulation und Validierung
2Überblick
- 1. Funktionsweise MP3 Enkoder/Dekoder
- 2. Architektur des ATMEL FPSLIC AT94K
- Partitionierung und Reduktion des Rechenaufwands
- Softwareentwicklung für den AVR
- 4.1 MMC
- 4.2 Huffman-Dekodierung
- 4.3 Dequantisierung und Newton-Verfahren
- Softwareentwicklung für den DSP
- Erzielte Leistung
31. Funktionsweise des MP3 Enkoders
- Polyphasenfilterbank mit 32 Subbändern
- Fensterung (4 Typen) und MDCT
- Quantisierung
- FFT steuert Psychoakustisches Modell,
Fensterwahl und Quantisierungsstufe - Huffman-Kodierung
- Bitstream-Formatierung
4Funktionsweise des MP3 Dekoders
- Synchronisation auf Bitstream
- Lesen der Sideinfo-, Scalefactor- und
Header-Informationen - Huffman-Dekodierung
- IMDCT und Fensterung
- Polyphasensynthesefilter
5Signalflußbild des Dekoders
62. Architektur des FPSLIC
- 8 Bit AVR RISC Mikrocontroller, 18MHz
- 36 kB on Chip Dual Access SRAM
- Variabel verwendbar als Daten- und
Programmspeicher - 40K Gatter FPGA, FreeRAM integriert
- 8 Bit Bus zwischen AVR und FPGA
- 16 Select und 16 Interruptleitungen zwischen AVR
und FPGA
7AVR Blockschaltbild
8AVR-FPGA Interface
- Flexibler Datenaustausch ist über SRAM und
dedizierten - 8 Bit Bus möglich
9Zusätzliche externe Hardware
- MultiMediaCard-Interface
- D/A-Wandler
- Operationsverstärker
103. High Level Partitionierung
- Ein-/Ausgabeinterface zu MMC und D/A-Wandler
realisiert durch FPGA Hardware -
- Bitstreamverarbeitung effizient realisierbar auf
AVR Mikrocontroller - Multiplikationen und Transformationen benötigen
effiziente dedizierte Hardware
11Abschätzen des Rechenaufwands
- CPU Auslastung durch nicht optimierten
ISO-Dekoder
12 Reduktion des Rechenaufwands
- Problem
- großer Wertebereich und Multiplikation großer
Zahlen - Lösung
- Benutzen eines kompakten Fließkommazahlenformats
für Multiplikationen großer Wertebereiche in der
Software
134. Implementierung
- 4.1 MMC Interface
- Wird im SPI Modus betrieben
- Die MultiMediaCard liefert
- Daten byteweise bitseriell in Blöcken von
512 Byte - Puffer in zwei Hälften geteilt, eine enthält
gültige Daten, - die andere wird von der Karte nachgeladen, daher
keine lange Wartezeit beim Lesen der Daten
seitens der Software - Daten können bitweise aus dem Puffer gelesen
werden - Software Statemachine als Interruptroutine bildet
das MMC-Protokoll ab
144.2 Huffman-Dekodierung
- Huffman-Dekodierung liest einzelne Bits
- - Befehlsstruktur des AVR Mikrocontrollers
ermöglicht effiziente bitweise Verarbeitung des
Bitstromes - Wegen Speicherlimitierung müssen die
Huffman-Tabellen möglichst kompakt dargestellt
werden. - Daher Traversierung eines Binären Suchbaumes
implementiert (Tabellen belegen nur 6 kB). - Nachteil Alle Bits des Kodewortes müssen einzeln
gelesen werden, dies ist relativ ineffizient.
15Darstellung der Tabellen als C - Kode
- Vorteile
- Es wird kein Datenspeicher belegt
- Dereferenzierungen bei der Interpretation der
Tabellen entfallen - Der Programmspeicher kann eine Instruktion pro
Takt liefern, dagegen benötigt der
Datenspeicherzugriff zwei Takte - Beschleunigung der Dekodierung um 36 erreicht
16Umwandeln der Tabellen in C - Kode
- Automatische Synthese des C-Kodes aus der
Textdarstellung der Tabellen im MP3
Standarddokument durch Traversierung des
Huffmanbaumes
174.3 Dequantisierung
- Wertebereich der dekodierten Frequenzkoeffizienten
i - 0..8207
- Dequantisierungsformel
- nimmt nur 182 verschiedene
Werte an, dafür ist nur eine kleine Tabelle
notwendig. - Berechnen der Potenz problematisch
- Kleine Werte der Frequenzkoeffizienten
statistisch häufig, große sind selten. Daher die
ersten 100 Koeffizienten in Tabelle ablegen, die
größeren berechnen durch Anwenden des
Newton-Verfahrens.
18Newton-Verfahren
- Die Berechnung wird auf die Berechnung der
Nullstelle zurückgeführt. Nachteil Iteration ist
langsam! - Die Newton-Iterationsformel lautet
- Die Iteration wird nach zwei
- Schritten abgebrochen (Fehler lt 1 )
- Die benutzten Interpolationspolynome zur
Berechnung der Startwerte
195. Softwareentwicklung für DSP
- Ausgehend von Verhaltensspezifikation und
Befehlssatz wurde ein Modell des DSP erstellt. - Probleme
- Wie Software für DSP erstellen ?
- Wie Softwarefunktionalität validieren ?
- Wie Interaktion mit AVR Software prüfen ?
- Wie Änderungen in der Verhaltensspezifikation
durch spätere Designänderungen des DSP
berücksichtigen ?
20DSP Datenpfad (vereinfacht)
- Die genaue Beschreibung des Aufbaus erfolgt
später...
21DSP Assembler
- Es wurde ein Assembler für den DSP Befehlssatz
implementiert. Der Assembler prüft die Syntax der
Menmonics, unterstützt Labels und Konstanten
sowie einige Pseudo-Operationen und erzeugt den
Bytekode. Dies vereinfacht eine fehlerfreie
Assemblierung. - Der Assembler prüft zusätzlich Befehls- und
Datenabhängigkeiten zwischen aufeinander
folgenden Instruktionen, die durch die Pipeline
des DSP entstehen, und gibt entsprechende
Warnungen und Fehlermeldungen aus. - Reihenfolge der Befehle ist kritisch und bedarf
der Prüfung und Optimierung im Verlauf der
Softwareentwicklung.
22DSP Simulator
- Die Validierung des DSP Assemblerprogramms ohne
reale Hardware ist schwierig. - Da die Funktionalität des DSP vollständig
spezifiziert ist, wurde ein Simulator auf dem PC
implementiert, der das Verhalten des DSP nach
außen exakt nachbildet. - Simulator ermöglicht Test der Funktionalität,
Debugging und Benchmarking der Software. - - Kommunikation mit AVR Software über serielle
Schnittstelle ermöglicht Test der Funktion als
Gesamtsystem.
23Screenshot DSP Simulator
- Der Simulator ermöglicht sowohl die Ausführung
einzelner - Befehle, als auch die schnelle Simulation
längerer Kode- - abschnitte. Registerwerte können manuell geändert
werden.
24Optimierte Berechnung der IMDCT und des
Polyphasenfilters
- Triviale Berechnung der Transformationsgleichungen
führt zu sehr hoher Anzahl an Operationen. - Effiziente Implementierung durch Dezimierung im
Zeitbereich (Algorithmus von B.G. Lee) reduziert
Anzahl auf weniger als ein Viertel
25DSP Programmausführung Statistik
265. Erzielte Leistungen
- Statistik über Ressourcenauslastung
- DSP Assemblerprogramm 6604 Bytes Programm
- AVR C Programm 22876 Bytes Programm,
- 1190 Bytes Daten
- - SRAM Auslastung 97
- FPGA Auslastung 74
- AVR Auslastung 73
- DSP Auslastung 82
27Simulationszeiten Vergleich
- Simulationszeiten für die Berechnung der
Dekodierung einer MP3 Datei mit 64 kbit Datenrate
und 1 Minute Länge gemessen auf einem AMD Athlon
600MHz Prozessor
Simulations Modell Simulations Zeit
ISO Modell 17 s
TL System C Modell 41 s
Instruktions Modell (DSP) 901 s
Zyklus genaues Modell
28Mögliche Optimierungen
- Bitweiser MMC-SpeicherzugriffDies erfordert
eine komplexere MMC Controller Hardware und
beschleunigt die Huffman-Dekodierung - Newton-Verfahren zur Dequantisierung für hohe
Bitraten zu langsam, schnelleres
Näherungsverfahren benötigt - DSP Lade- und Speicherbefehle als Vektorbefehle
implementierenBeschleunigt das
Einlesen/Speichern von Daten, da ein wiederholtes
Lesen des Operationskodes nicht nötig ist.
29Partitionierung des Speichers
- Flexible Einteilung des SRAM Speichers in Daten
und - Programmspeicher möglich
Programmspeicher Datenspeicher
10 k Worte 12 k Worte 14 k Worte 16 k Worte 16 kB 12 kB 8 kB 4 kB