Digitale Signalverarbeitung - i6.in.tum.de · System-On-a-Chip (SOC) mit Schnittstellen zu PCI,...

54
Digitale Signalverarbeitung WS03/04 Echtzeitsysteme Kap. 4 G. Schrott nach dem Seminarvortrag von Robert Dörfel und Daniel Mentz

Transcript of Digitale Signalverarbeitung - i6.in.tum.de · System-On-a-Chip (SOC) mit Schnittstellen zu PCI,...

Digitale Signalverarbeitung

WS03/04 Echtzeitsysteme Kap. 4

G. Schrottnach dem Seminarvortrag von Robert Dörfel und Daniel Mentz

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 2

Was sind DSPs ?

Digitale SignalProzessoren sind spezielle Mikroprozessoren, die auf die Umsetzung von Algorithmen aus der Digitalen Signalverarbeitung optimiert sind:

Digitale Filter

Kompression, Dekompression

Modulation, Demodulation

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 3

Vergleich Analog - Digital

Beispiel Tiefpassfilter

Analoger RC-Tiefpass

Digitale Variante mit Hilfe eines DSPs

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 4

Anwendungsbeispiel

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 5

Vorteile von DSPsProgrammierbarkeit, flexibler EinsatzEine Hardware für viele AnwendungenReproduzierbarkeitStabilität, Keine Alterung, keine TemperaturabhängigkeitHöhere GenauigkeitAdaptive AlgorithmenNeue Möglichkeiten der Signalverarbeitung, die mit analogen Bausteinen nicht oder nur schwer realisierbar sind

Spezielle FilterAudiokompression, VideokompressionEcho, NachhallDigitale Modulationsverfahren (z.B GSM)Fehlerkorrigierende Codes (ECC)

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 6

Anwendungsbereiche von DSPsMobilfunk (GSM, PCS) und allgemein in der TelekommunikationMarktanteil beträgt hier 50 % (Stückzahltreiber)Modems, DSL-ModemsKonsumerbereich, Unterhaltungselektronik(Digitales Fernsehen, DVD, ...)Meßtechnik, intelligente SensorenKomplexe Digitale ReglerAudio/Video-KompressionMustererkennung, BildverarbeitungSprachsynthesizergroßer Markt (im Jahr 2000 831 Millionen Chips verkauft)Marktführer: Texas Instruments

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 7

Architektur von DSPsWelche Anforderungen werden an Signalprozessoren gestellt.Wie unterscheiden sie sich von herkömmlichen Mikroprozessoren bzw. Mikrocontrollern ?Welche architektonischen Besonderheiten besitzen sie ?

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 8

Anforderungen an DSPsBerechnungsintensive Algorithmen müssen in Echtzeit d.h. innerhalb eines Abtastintervalls ausgeführt werden.Anders als bei Prozessoren für den PC-Markt müssen vor allem arithmetische Operationen ausgeführt werden.

Um diese Anforderungen zu erfüllen, bedient man sich im wesentlichen den zwei folgenden Konzepten:Parallelisierung soweit wie möglichFunktionseinheiten, die Operationen wie z.B. die Multiplikation in einem Taktzyklus ausführen können.Schneller interner Speicher

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 9

Bestandteile Digitaler FilterVerzögerungsglied:

Multiplizierer:

Summierer/Addierer:

Zeitverzögerung um ein AbtastintervallAusgabe des Eingangssignal einen Takt später

Multiplikation von Signal x[n]mit konstantem Faktor A

Summation von Signal a[n]und Signal b[n]

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 10

Finite-Impulse-Response-FilterAllgemeiner Aufbau:

21

0 =c 31

1 =c41

2 =c 51

3 =c

Die Berechnungsvorschrift hat die Form

]3[]2[]1[][][ 3210 −+−+−+= nxcnxcnxcnxcny

Eine Summe von Produkten (product of sums) ist häufig in der Digitalen Signalverarbeitung anzutreffen. Deshalb bieten die meisten DSPs eine MAC-Operation (Multiply and Accumulate) an.

][ixcACCACC i+⇐

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 11

Weitere Operationen

Mit den zwei Operationen Addieren und Multiplizieren ist es noch nicht getan. Hinzu kommt eine Menge an Verwaltungsaufwand:

Befehl ladenBefehl dekodierenSpeicheradresse berechnenOperanden laden (meistens zwei pro Operation)Ergebnis speichernAbfragen von Schleifenbedingungen und ggf. Verzweigen

Der Grundgedanke zur Optimierung von DSP-Architekturen ist das Parallelisieren möglichst vieler Operationen.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 12

Von-Neumann Architektur

DM: Data MemoryPM: Program MemoryDP: Data ProcessorIP: Instruction Processor

Ein wesentliches Merkmal der Von-Neumann Architektur, ist der gemeinsame Speicher für Daten und Programmcode.Beim gleichzeitigen Zugriff auf den Hauptspeicher durch DP (Operanden laden) und IP (nächsten Befehl laden) kommt es zum Konflikt.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 13

Harvard Architektur

DM: Data MemoryPM: Program MemoryDP: Data ProcessorIP: Instruction ProcessorMUX: Multiplexer

Mit der Harvard Architektur ist es möglich einen Operanden sowie den nächsten Befehl parallel aus dem Speicher zu lesen.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 14

Pipelining auf dem Datenpfad

Das Ergebnis einer einzelnen MAC-Operation liegt nach vier Taktzyklen vor.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 15

Pipelining auf dem Datenpfad

Durch Pipelining konvergiert die Ausführungszeit bei aufeinanderfolgenden MAC-Operationen auf einen Taktzyklus pro MAC-Operation.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 16

Kaskadierte Arithmetikeinheit

Bei einer kaskadierten Arithmetikeinheit konvergiert die Ausführungszeit mehrerer aufeinanderfolgender MAC-Operationen gegen einen Taktzyklus

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 17

Pipelining auf Befehlsebene

Die drei Stufen der Befehlsausführung

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 18

Pipelining auf Befehlsebene

Im Regelfall wird der Befehl, der sich an der nächsten Speicheradresse befindet geladen. Schwierigkeiten treten bei Verzweigungen bzw. Schleifen auf.

Zero overhead loopingSprungvorhersage

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 19

Single Instruction Multiple Data

Mit einem einzigen Befehl werden mehrere Paare von Operanden parallel verknüpftEin Register wird in mehrere Teile aufgeteilt.Jeder Registerteil stellt einen Operanden dar.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 20

Very Long Instruction Word

Der TI TMS320C62x verfügt über 8 „functional untis“ (2 Multiplizierer, 6 ALUs)

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 21

Very Long Instruction Word

B .S2 LOOP ; branch to loop|| SUB .S1 A1,1,A1 ;* decrement loop counter|| ZERO .L1 A8 ; zero out sum0 accumulator|| ZERO .L2 B8 ; zero out sum0 accumulator

Alle Befehle denen „||“ vorangestellt ist, werden parallel mit dem aus der vorhergehenden Zeile ausgeführt.In der dritten Spalte steht die Funktionseinheit, auf der der Befehl ausgeführt werden soll.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 22

Very Long Instruction Word

Die einzelnen Instruktion werden während der Dispatch-Phase auf die Funktionseinheiten verteilt

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 23

AdressierungsartenRegisterindirekte Adressierung (*p)Pre- und post-modify (*++p, *p++)Modulo-Adressierung (zur Realisierung von Ringpuffern)Bit-reversed Addressing für die FFTSimultane Berechnung von zwei Adressen

Zahlendarstellungen in DSPs

Festkommazahlen (Fixed-Point Numbers)Gleitkommazahlen (Floating-Point Numbers)

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 25

Festkommazahlen

Wiederholung:Im Integerformat von Mikroprozessoren können nur ganzzahlige Werte abgespeichert werden.Sei n die Anzahl der verfügbaren Bits, dann erstreckt sich der Wertebereich bei vorzeichenbehafteten Werten von –2n-1 bis 2n-1-1. In 8 Bits lassen sich d.h. Werte zwischen –128 bis 127 speichern.

Schwierigkeiten können bei der Multiplikation entstehen: Multipliziert man zwei vorzeichenbehaftete 8-Bit Werte, so erhält man einen 15-Bit Wert.01010101*00101010 = 110111110010

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 26

FestkommazahlenBei Festkommazahlen wird ein anderer Weg gegangen, da hier nur Nachkommastellen gespeichert werden. Die Menge der möglichen Werte ist durch das Interval [-1;1[ gegeben. Der Abstände zwischen zwei benachbarten Werten liegen bei 2-n+1 und sind somit äquidistant.

Multipliziert man zwei Festkommazahlen miteinander, so erhält man wieder einen Wert, der im Interval [-1;1[ liegt.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 27

Gleitkommazahlen

Gleitkommazahlen bestehen aus den drei TeilenVorzeichen SMantisse Mund Exponent E

Der Wert einer Gleitkommazahl x errechnet sich wie folgt:x = (-1)S * 2E-127 * 1.FDer darstellbare Zahlenbereich erstreckt sich von ca. 10-38 bis 1038.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 28

AusblickGeringerer LeistungsverbrauchHöhere IntegrationdichteDSP und Mikrocontroller in einem Chip (Dual-Core, z.B. für Benutzerschnittstelle)DSP-MultiprozessorsystemeDSP-Kerne (wird in eine komplexere Systemlösung monolithisch integriert)System-On-a-Chip (SOC) mit Schnittstellen zu PCI, USB, AC97

DSP TMS320C50

Ein Beispiel für einen Digitalen Signalprozessor: der TMS320C50

von Texas Instruments

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 30

DSP TMS320C50

Allgemeine EigenschaftenArchitekturAdressierungBefehlssatzDas DSP Starter Kit von Texas InstrumentsBeispielprogramme

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 31

Allgemeine EigenschaftenFixpunkt-DSP (2er Komplement-Darstellung)„Modifizierte“ Harvard-Architektur:

Intern: Daten- und Programm-Bus sind getrenntNach außen: Ein Bus für Daten und Programme

4-Level-Pipelining auf Befehlsebene:

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 32

Architektur des TMS320C50Central processing unit (CPU):

SystemkontrolleCentral Arithmetic Logic Unit (CALU)

SchieberMultipliziererALU

Parallel Logic Unit (PLU)

On-Chip-Speicher:1056 × 16 Bit dual-access Daten-RAM9K × 16 Bit Programm/Daten-RAM2K × 16 Bit Programm-ROM

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 33

Central Arithmetic Logic Unit (CALU)

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 34

Multiplizierer

Multipliziert zwei 16 Bit-Werte und speichert das Ergebnis in dem 32 Bit breitem Produkt-Register.Der erste Operand ist das TREG0 der zweite kommt entweder vom Programm- oder vom Daten-BusMultiplikation wird in einem Takt ausgeführtBeispiele:

MPY #F5hMPY *

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 35

Arithmetic/Logic Unit (ALU)

32 Bit ALUOperationen:

Addition und SubtraktionLogische Operationen wie Und-/Oder-OperationenSchiebe und Rotationsbefehle

Die meisten Operationen werden in einem Takt ausgeführtBeispiele:

ADD #20hADD 11hADD *

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 36

Parallel Logic Unit (PLU)Mit der PLU können einzelne Bits gesetzt gelöscht und getestet werden. Dabei hat man sowohl Zugriff auf die Kontroll- und Status-Bits als auch auf jede andere Stelle im Daten-Speicher.Beispiele:

APL #1011h, 33hAPL 33h

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 37

Adressraum

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 38

Adressierungsarten

Short/Long Immediate Adressierung

Direkte Adressierung

Indirekte Adressierung

Ringpuffer

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 39

Short/Long Immediate Adressierung

Der Wert steht hinter dem Befehl im Programm-Speicher.Short:

Long:

Beispiele:ADD #15hshort immediate Adressierung, da der Wert mit 8 Bit dargestellt werden kann.ADD #FFFhlong immediate Adressierung, da der Wert nicht mehr mit 8 Bit dargestellt werden kann.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 40

Direkte AdressierungData Memory Page Pointer (DP): 9 Bit verweisen auf eine der 512 möglichen Speicherseiten, die eine Länge von 128 Wörter haben.Die restlichen 7 Bit werden in der Operation angegeben.

Beispiel:ADD 54h ; (DP=1eh)Addiert den Wert von der Speicherzelle 0f54h auf den Akkumulator(1eh × 80h + 54h = 0f54h)

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 41

Indirekte AdressierungDie Indirekte Adressierung erfolgt über die acht so genannten Auxiliary Register (AR0 – AR7), die jeweils eine Breite von 16 Bit haben und so den gesamten Adressraum abdecken.Welches der acht Register gewählt wird, steht im 3-Bit breiten so genannten Auxiliary Register Pointer (ARP).Nach einem Speicherzugriff kann der Registinhalt der acht AuxiliaryRegister wie folgt geändert werden:

Um eins inkrementiert oder dekrementiert werdenUm den Inhalt des Indexregister (INDX) erhöht beziehungsweise erniedrigt werden. Es ist auch möglich das Indexregister mit umgekehrter Übertragsrichtung aufzuaddieren oder abzuziehen.

Ebenso kann der Auxiliary Register Pointer mit einem neuen Wert gesetzt werden.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 42

Indirekte Adressierung

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 43

Indirekte AdressierungBeispiele: ARP = 2

ADD *Addiert den Speicherinhalt, auf den AR2 zeigt, auf den AkkumulatorADD *+, AR5Addiert den Speicherinhalt, auf den AR2 zeigt, auf den Akkumulator und erhöht den Wert von AR2 um eins und setzt den ARP auf 5ADD *0+, AR4Addiert den Speicherinhalt, auf den jetzt AR5 zeigt, auf den Akkumulator und addiert zusätzlich den Wert des Index-Register auf AR5. Der ARP zeigt nun auf AR4.ADD *0-Addiert den Speicherinhalt, auf den AR4 zeigt, auf den Akkumulator und zieht den Indexregister-Inhalt von AR4 ab.ADD *BR0+Addiert den jeweiligen Speicherinhalt auf den Akkumulator und erhöht den AR4 um den Wert des Indexregisters mit umgekehrten Übertragsrichtung.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 44

RingpufferFolgende Register steuern die zwei Ringpuffer des TMS320C50:

CBSR1: Startadresse des ersten RingpuffersCBER1: Endadresse des ersten RingpuffersCBSR2: Startadresse des zweiten RingpuffersCBER2: Endadresse des zweiten RingpuffersCBCR: Kontrollregister für die zwei Ringpuffer:

CAR1: Identifiziert das Auxiliary Register für den ersten PufferCENB1: erster Ringpuffer: 0 für ausgeschaltet; 1 für eingeschaltetCAR2: Identifiziert das Auxiliary Register für den zweiten PufferCENB2: zweiter Ringpuffer: 0 für ausgeschaltet; 1 für eingeschaltet

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 45

Befehlssatz des TMS320C50Befehle der für die ALU:

ADD: Addieren zu dem AkkumulatorADCB: Addiert den Akkumulator-Puffer auf den AkkumulatorCMPL: Komplementiert den AkkumulatAND / OR: Und- / Oder-OperationROL / ROR: Rotiert den Akkumulator nach links / rechtsROLB / RORB: Rotiert den Akkumulator und den Akkumulatorpuffer nach links / rechts.SACB: Speichert den Akkumulator im AkkumulatorpufferSBB: Subtrahiert den Akkumulatorpuffer vom AkkumulatorSFL / SFR: Schiebt den Akkumulator nach links / rechts.SFLB / SFRB: Schiebt den Akkumulator und den Akkumulatorpuffer nach links / rechts.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 46

Befehlssatz des TMS320C50Befehle für den Multiplizierer:

LT: Lädt das TREG0-Register mit einem WertLTA: Lädt das TREG0-Register und addiert das vorhergehende ProduktMPY: Multipliziert einen Wert mit dem TREG0-RegisterMPYA: Multipliziert wie MPY und addiert das vorhergehende ProduktMPYS: Multipliziert wie MPY und subtrahiert das vorhergehende ProduktMAC: Multipliziert und addiert WerteSQRA: Quadriert einen Wert und addiert das vorhergehende ProduktSPL: Speichert die unteren 16 Bit vom PREGSPH: Speichert die oberen 16 Bit vom PREG

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 47

Befehlssatz des TMS320C50Befehle für die Auxiliary Register:

ADRK: Addiert einen short immediate Wert zu dem aktuellen ARLAR: Lädt einen Wert in ein ARMAR: Ändert das aktuelle AR und den ARPSAR: Speichert ein AR in den Daten-SpeicherSBRK: Subtrahiert einen short immediate Wert zu dem aktuellen AR

Befehle für die PLU:APL: Und-Operation zwischen dem DBMR oder einer Konstante und einem Wert im Daten-SpeicherOPL: Oder-Operation zwischen dem DBMR oder einer Konstante und einem Wert im Daten-SpeicherSPLK: Speichert einen long immediate Wert in den Daten-SpeicherXPL: Exklusiv-Oder-Operation zwischen dem DBMR oder einer Konstante und einem Wert im Daten-Speicher

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 48

Befehlssatz des TMS320C50Speicherzugriffsbefehle

BLDD: Kopiert einen Block innerhalb des Daten-SpeichersLMMR: Lädt ein memory-mapped Register

Kontrollbefehle:B: unbedingter SprungBCND: bedingter SprungCALL: Unterprogramm-AufrufCC: bedingter Unterprogramm-AufrufRET: Unterprogramm-RücksprungRETC: bedingter Unterprogramm-Rücksprung

Wiederholungsanweisungen:RPT: Wiederhole nächste AnweisungRPTB: Wiederhole einen bestimmten Block

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 49

Beispielprogramm

Berechne Skalarprodukt

.mmregs

.ds 0f00hresult .word 0blank .word 0,0,0,0,0,0costs .word 10,20,30,40,50,60,70num .word 5,10,3,2,0,34,17

.ps 0a00hagain ldp #blank ;Lade data point register

lar ar0,#costs ;lade Adresse des arrayszap ;lösche akkusacl result,0 ;lösche Ergebisrpt #7 ;setze wiederholungszählermac num,*+ ;multipliziere und addieresacl result,0 ;schreibe Ergebnisb again

.end

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 50

Software Entwicklung

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 51

Das DSP Starter Kit (DSK)

Software:Der Assembler „dsk5a“Der Debugger „dsk5d“Der Loader „dsk5l“Beispielprogramme

Hardware: Das DSK-Board

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 52

Das DSK-Board

Serielle Schnittstelle

32K × 8 Bit Boot ROM

Signalprozessor TMS320C50 von Texas Instruments

Analoger Chinch-Eingang

Oszilator -Taktgeber

Analoger Chinch-Ausgang

Digital/Analog- und Analog/Digital-Wandler

Stromversorgung

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 53

Konfiguration für die Beispiele

Dem DSP wird über die serielle Schnittstelle Programm und eventuell Daten in den On-Chip-Speicher geschrieben. Der DSP beginnt mit der Abarbeitung des Programms.

Am Computer werden per MP3-Player Musiksignale erzeugt, die über den Line-Out des Computer in den Eingang des DSK-Boards gelangen.

Die eingehenden Signale werden vom DSP verarbeitet.

Die gerechneten Signale werden über den Lautsprecher ausgegeben.

Echtzeitsysteme Kap.4 Digitale Signalverarbeitung 54

Beispielprogramme

MACD-BeispielTiefpass, HochpassBandpass, BandstopOscilloskopDialerHall (Echokammer)Menuett