Vortrag über Signalprozessoren
Click here to load reader
description
Transcript of Vortrag über Signalprozessoren
Seminarvortrag26. Juni 1998
Universität - Gesamthochschule Kassel
Aufbau und Anwendung vonDigital Signal Prozessoren
vonSven Semmelrodt
Roger Wolf
INHALTSVERZEICHNIS
Gängige µProzessoren besitzen eine ‘von Neumann’ Architektur
Daten und Programmcode liegen in einem gemeinsam adressierbaren Speicherbereich
einfache Hardware, sehr flexibel PC
Programm und Daten werden sequentiell gelesen sehr langsam
Signal Prozessoren besitzen eine ‘Harvard’ Architektur
Daten und Programmcode liegen in unterschiedlich adressierbaren Speicherbereichen
aufwendige Hardware
ermöglicht sehr effiziente Bearbeitung von Daten
DSP’s erweiterte ‘Harvard Architektur (1 Programm, 2 Daten Bereiche)
Abbildung 1-1: Vereinfachtes Blockschaltbild des DSP 56002
Folie 2
Zahlenformate der Signalverarbeitung
Festkomma Darstellung
‘geringere’ Genauigkeit als Fließkommazahlen
Zahlenbereich von -1 X 1 Skalieren wird notwendig
kein Überlauf bei der Multiplikation möglich (Ausnahme: -1 -1 = 1)
einfache Rechenwerke
Fließkomma Darstellung
hohe Genauigkeit
Zahlenbereich: Mantisse 2 Exponent
aufwendige Rechenwerke (getrennte Berechnung von Exponent und
Mantisse)
aufwendige Überlaufs- und Rundungslogik wird notwendig
Bit 23 22 21 ... 2 1 0
Wert 0 1 1 ... 0 1 0
Wichtung -20 2-1 2-2 ... 2-21 2-22 2-23
Abbildung 1-2: 24 Bit Festkommaformat
Bit 31 ... 24 23 ... 0
Bedeutung Exponent +/- Mantisse
Abbildung 1-3: 32 Bit Fließkommaformat (TI)
Folie 4
Zahlenformate der Signalverarbeitung
Abbildung 1-4: 24 Bit Festkomma Rechenwerk (ALU)
Folie 4
Adreßwerke von DSP’s
Spezielle Eigenschaften des Adreßwerkes
Modulo Adressierung (Implementierung von Ringspeichern)
Bit Reversed Addressing (Implementierung von FFT Algorithmen)
Abbildung 1-5: Verzögerung durch umspeichern von Abtastwerten
4094
4095
0
1
23
4.
.
.
.
.
.
.
.
.. .
.
.
.
.
.
Ringpufferzeiger R0 A enthalte den neuen Abtastwert
Bearbeitungsschritte:
1: B = *(R0 2: *(R0) = A 3: R0 + 1
4: if (R0 == 4096) then R0 = 0
B enthält den 4096-fach verzögerten Abtastwert
Abbildung 1-6: Verzögerung mit Hilfe von Ringspeichern
Folie 6
Adreßwerke von DSP’s
Adresse Speicherinhalt
$00 x [ 0 ]
$01 x [ 1 ]
$02 x [ 2 ]
$03 x [ 3 ]
$04 x [ 4 ]
$05 x [ 5 ]
$06 x [ 6 ]
$07 x [ 7 ]
$08 ...
... ...
Abbildung 1-7: Speicherkonfiguration für FFT-Algorithmus
Bearbeitungsschritte 1 2 3 4 5 6 7 8
Benötigte Abtastwerte x [0] x [4] x [2] x [6] x [1] x [5] x [3] x [7]
Zugehörige Adressen $00 $04 $02 $06 $01 $05 $03 $07
Binäre Adressen 000 100 010 110 001 101 011 111
Binäre Bit Rev. Addr. 000 001 010 011 100 101 110 111
Bit Reversed Addr. $00 $01 $02 $03 $04 $05 $06 $07
Abbildung 1-8: Prinzipschaubild der Bitverdrehten Adressierung
Operationen für die Bitverdrehte Addressierung
Adresse = $06
Bits drehen $06 = 110 011 = $03
Adresse inkrementieren $03 $04
Bits drehen $04 = 100 001 = $01
Adresse = $01
Folie 7
Piplinestruktur und Befehlssatz
Bearbeitungsphasen während der Befehlsausführung :
Programmwort aus Programmspeicher lesen (Fetch)
Programmwort decodieren (Decode)
Operanden aus Programmspeicher lesen (Read)
Befehl ausführen (Execute)
Zyklus Fetch Decode Read Execute
m - 3 Befehl ‘1’ - - -
m - 2 Befehl ‘2’ Befehl ‘1’ - -
m - 1 Befehl ‘3’ Befehl ‘2’ Befehl ‘1’ -
m Befehl ‘4’ Befehl ‘3’ Befehl ‘2’ Befehl ‘1’
m + 1 ... Befehl ‘4’ Befehl ‘3’ Befehl ‘2’
m + 2 ... ... Befehl ‘4’ Befehl ‘3’
m + 3 ... ... ... Befehl ‘4’
Abbildung 1-9: Befehlsverarbeitung mit einer 4 stufigen Pipelinestruktur
Beispiel 1: Beispiel 2:
... ...
BR XYZ BRD XYZ
ADD ... OR ...
MPY ... ADD ...
... SUB ...
ADD ...
XYZ: OR ... MPY ...
ADD ... ...
SUB ...
ADD ... XYZ: ADD ...
... ...
Abbildung 1-10: Konfliktbehebung durch verzögerte Programmverzweigung
Folie 8
Piplinestruktur und Befehlssatz
Zykl. F. D. R. E. Zykl. F. D. R. E.
m - 3 BR - - - m - 3 BRD - - -
m - 2 MPY BR - - m - 2 OR BRD - -
m - 1 - - BR - m - 1 ADD OR BRD -
m - - - BR m SUB ADD OR BRD
m + 1 OR - - - m + 1 ADD SUB ADD OR
m + 2 ADD OR - - m + 2 ... ... ... ...
m + 3 SUB ADD OR - m + 3 ... ... ... ...
m + 4 ADD SUB ADD OR m + 4 ... ... ... ...
m + 5 ... ... ... ... m + 5 ... ... ... ...
Abbildung 1-11: Pipline mit und ohne Sprungkonflikt
Spezielle Befehle
Repeat Single Instruction
ermöglicht ‘Zero Overhead Loops’ durch spezielle Schleifen-register
Wiederholt n-mal den folgenden Befehl (z. B. Speicher löschen)
kein Softwareaufwand zur Implementierung einer Programm-schleife (Zähler inkrementieren, Prüfen der Abbruchbedingung)
einmalige Initialisierung (4 Zyklen wegen Piplinestruktur)
Programm läuft so schnell, als würde der Befehl n-mal im Source-Code auftauchen
Repeat Instruction Block
Wiederholt n-mal den folgenden Befehlsblock
siehe oben
Automatic Addressincrement / decrement
ermöglicht automatisches weitersetzen von Datenzeigern
Inkrement bzw. Dekrement von Zeigern
Multiply and Add
Parallele Multiplikation und Addition
Folie 9
Peripherie von Signalprozessoren
Standardausstattung
Interrupt Controller
Mindestens eine serielle oder parallele Schnittstelle
On-Chip RAM (256 - 1k Worte pro RAM Block)
Boot ROM
Timer/Counter
I/O Ports
Externes Bus Interface
Zusatzperipherie je nach Hersteller und Typ
DMA Controller
n-fach Serielles Interface
n-fach Paralleles Interface
Host bzw. Debug Interface
Clock Generator mit PLL
Befehls Cache
ROM Tabellen
Alle peripheren Einheiten sind über den Interrupt Controller mit der ‘CPU’ und - wenn vorhanden - mit dem DMA Controller verbunden, um gezielt in den Programmablauf eingreifen zu können.
Folie 10
Anwendungsbeispiel ‘FIR-Filter’
Abbildung 1-12: Filterstruktur eines N-stufigen FIR-Filters
Differenzengleichung:
Übertragungsfunktion bzw. Impulsantwort:
X-Speicher Y-Speicher
0 x [n] R0 0 a0 R1
1 x [n+1] 1 a1
2 x [n+2] 2 a2
... ... ... ...
N - 2 x [n + N - 2] N - 2 aN-2
N - 1 x [n + N - 1] N - 1 aN-1
Abbildung 1-13: Speicherbelegung für die FIR-Filter Berechnung
Folie 11
Anwendungsbeispiel ‘FIR-Filter’
HAUPT_PROG{ < Initialisierung des Prozessors und der Peripherie > < Initialisierung des Eingangs- und Koeffizientenspeicher als Ringpuffer > while (1) { < Auf nächsten Abtastwert warten > < Abtastwert empfangen und im Eingangspuffer eintragen > < FIR Funktion aufrufen > < Berechneten Ausgangswert ausgeben > }}
FIR (Version 1){ B = 0 for k = 0 to N ;N-fach Schleife (6 Zykl. / Durchlauf) {
X0 = *(R0) ;Abtastwert laden (1 Zyklus)R0 + 1 ;Zeiger weitersetzen (1 Zyklus)Y0 = *(R1) ;Koeffizient laden (1 Zyklus)R1 + 1 ;Zeiger weitersetzen (1 Zyklus)A = X0 Y0 ;x[n-k] * ak (2 Zyklen)B = A + B ;aufsummieren (1 Zyklus)
} return (B) }
FIR (Version 2){ A = 0 X0 = *(R0 ++) ;1. Abtastwert laden (1 Zyklus) Y0 = *(R1 ++) ;1. Koeffizient laden (1 Zyklus) Repeat N ;N-fach Hardw. loop(4 Zyklen) {
A = A + X0 Y0 ; x[n-k] * ak (2 Zyklen)|| X0 = *(R0 ++) ;par. Wert laden|| Y0 = *(R1 ++) ;par. Koeff. laden
} return (A)}
Performance FIR (Version 1): N 13 Zyklen + Initialisierung
Performance FIR (Version 2): N 2 Zyklen + Initialisierung
Folie 12
Anwendungsbeispiel ‘FIR-Filter’
Prozessor ADSP-21060 TMS320C40Befehlsausführung 25 ns 25 nsSpitzen-MFLOPS 120 801024-Punkte FFT (komplex) 0,46 ms 0,96 msDivision 150 ns 225 nsDMA-Bandbreite Port / Port 40 MBytes/s 32 MBytes/sDMA-Bandbreite Off- / On-Chip 240 MBytes/s 32 MBytes/sDMA-Bandbreite On- / Off-Chip 240 MBytes/s 53 MBytes/sDatenregister 32 8Interner RAM (32 Bit Worte) 2 mal 64k 2 mal 1kParallele Ports 6 6Serielle Ports 2 0DMA-Kanäle 10 6
Abbildung 1-14: ADSP-21060 gegen TMS320C40
Prozessor ADSP-2104 TMS320C203Evaluation Boards $ 89 $ 99Software Entwicklung $ 395 $ 4000Emulator $ 1495 $ 4000Summe $ 1979 $ 8099
Abbildung 1-15: Entwicklungskosten im Vergleich
Prozessor ADSP-2104 TMS320C203Befehlsausführung 50 ns 25 nsMIPS 20 40FFT Berechnung 0,596 ms 0,626 msZyklen 11914 25033Datenspeicher (32 Bit Worte) 256 288Prg.-speicher (32 Bit Worte) 512 256Serielle Ports 2 2Piplinestruktur 2 Stufig 4 StufigModulo Adressierung ja -Datenregister 32 4Parallele Verarbeitung keine Einschr. mit Einschr.Externe Speicherzugriffe 0 Waitstates X WaitstatesIndirekte Addressierung keine Einschr. mit Einschr.Befehlsverarbeitungszeit 1 Zyklus 1 - 4 Zyklen
Abbildung 1-16: ADSP-2104 gegen TMS320C203
Folie 13