370 likes | 571 Views
2.8 Signalprozessor-Beispiele. 2.8.1 Ein einfacher Signalprozessor. NEC Audio-Signalprozessor PD6382. 2.8 Signalprozessor-Beispiele. Merkmale:. 2.8 Signalprozessor-Beispiele. Arithmetik-Einheit:. 2.8 Signalprozessor-Beispiele. Festkomma-Arithmetik, Multiplizierer:
E N D
2.8 Signalprozessor-Beispiele 2.8.1 Ein einfacher Signalprozessor NEC Audio-Signalprozessor PD6382
2.8 Signalprozessor-Beispiele Merkmale:
2.8 Signalprozessor-Beispiele Arithmetik-Einheit:
2.8 Signalprozessor-Beispiele Festkomma-Arithmetik, Multiplizierer: multipliziert einen 16-Bit und einen 19-Bit Operanden in einem Instruktionszyklus (108 ns) Operandenquellen: K-Register, 16 Bit, kann entweder vom internen Datenbus (obere 16 Bit) oder Koeffizientenspeicher geladen werden L-Register, 19 Bit, kann vom internen Datenbus geladen werden Datentransfer in die K- und L-Register sind mit Multiplikation in einer Instruktion kombinierbar Ergebnis: M-Register, 31 Bit (eigentlich 35-Bit, es doch nur 31 Bit verarbeitet)
2.8 Signalprozessor-Beispiele ALU: erlaubt Addition, Subtraktion, logische Verknüpfungen, ... von zwei 34-Bit Operanden Operandenquellen: Operand P: M-Register (31 Bit, zusätzliche obere 3 Bit mit 0 gefüllt) interner Datenbus (19 Bit, zusätzliche obere 3 und untere 12 Bit mit 0 gefüllt Operand P kann zusätzlich durch einen Barrel-Shifter verschoben werden (1 Bit nach rechts, 17/18 Bit nach links)
2.8 Signalprozessor-Beispiele Operand Q: Akkumulator-Register (34 Bit) Ergebnis: Akkumulator-Register Durch zwei Overflow-Einheiten kann zusätzlich überwacht werden, ob das Ergebnis einer ALU-Operation (OVC') oder ein Wert im Akkumulator (OVC) mehr als 31 Bit zur Darstellung benötigt
2.8 Signalprozessor-Beispiele Daten- und Koeffizientenspeicher Daten- und Koeffizienten- speicher unterscheiden sich im wesentlichen in ihrer Wortbreite und ihrer Adressierungslogik
2.8 Signalprozessor-Beispiele Koeffizientenspeicher: 128 x 16 Bit 7-Bit Adresslogik, erlaubt Laden der Adresse vom internen Datenbus und Inkrementieren der Adresse Datentransfer: zum K-Register, Datenbus (obere 16 Bit) Datenspeicher: 128 x 19 Bit 7-Bit Adresslogik, erlaubt Laden, Inkrementieren, Dekrementieren und Maskieren der Adresse Daneben über zwei 7-Bit Preset Register (PR1, PR2) eine automatische Zählschleife programmierbar (PR1: Startadresse, PR2: Stopadresse, sobald PR2 erreicht PR1 nachladen) Datentransfer: zum Datenbus, Akkumulator (untere 13 Bit)
2.8 Signalprozessor-Beispiele Peripherie 5 serielle Audio-Schnittstellen zum Anschluss von DA-/AD-Wandlern 2 Eingangs- und 3 Ausgangsschnittstellen Jede Schnittstelle verfügt über ein 19-Bit Datenregister (SI1 - SI2, SO1 - SO3) Die Steuerung der seriellen Schnittstelle erfolgt wahlweise über die Signale BCLK1 / LRCK1 oder BCLK2 / LRCK2 Die Auswahl hierüber erfolgt durch interne Kontrollregister (CNT-R1/2)
2.8 Signalprozessor-Beispiele Jede Schnittstelle kann ein Stereo-Signal übertragen BCLKx: serieller Übertragungstakt LRCKx: Kanalauswahl (links/rechts) Die Daten der Stereo-Kanäle werden nacheinander übertragen Ist LRCKx = 0, so wird gerade der linke Kanal übertragen, anderenfalls der rechte Kanal
2.8 Signalprozessor-Beispiele Die Übertragungswortlänge beträgt wahlweise 16- oder 19-Bit Für die Software wird die Übertragung des linken bzw. rechten Kanals durch das LEFTF-Flag angezeigt Sie muss dann jeweils den zugehörigen Wert in ein SOx-Register laden bzw. aus einem SIx-Register holen ==> das LEFTF-Flag sowie das LRCKx-Signal sind wichtige Steuerelemente zur Programmablaufkontrolle (näheres hierzu im Abschnitt Programmsteuerung)
2.8 Signalprozessor-Beispiele Neben den seriellen Audio-Schnittstellen verfügt der Prozessor über eine Schnittstelle für ein externes Delay-RAM für Hall-Effekte. max. RAM-Größe : 256k x 16 (2 Mbit)
2.8 Signalprozessor-Beispiele Für das Delay-RAM gibt es einen Schreibzeiger und 64 Lesezeiger Der Schreibzeiger kann gesetzt und inkrementiert werden Jeder Lesezeiger bewegt sich automatisch mit einem einstellbaren Offset hinter dem Schreibzeiger her ==> Ringspeicher mit 64 einstellbaren Verzögerungsleitungen für Verzögerungs-, Hall- und Echo-Effekte
2.8 Signalprozessor-Beispiele Als weitere periphere Schnittstelle ist eine serielle Host-Schnittstelle vorhanden Funktionen der Host-Schnittstelle: • Schreiben des Programmspeichers • Schreiben des Koeffizientenspeichers • Schreiben und Lesen der Kontrollregister
2.8 Signalprozessor-Beispiele Über diese Schnittstelle können mehrere Signalprozessoren mit einem Host verbunden werden, der die Programme in die Signalprozessoren überträgt und ihre Arbeitsweise kontrolliert Die Übertragung erfolgt in Form von Telegrammen
2.8 Signalprozessor-Beispiele Programmsteuerung Eine Instruktion des PD6382 ist 22 Bit breit und besteht aus mehreren Feldern, welche einzelne Komponenten des Prozessors steuern Die Instruktionen sind in verschiedene Gruppen aufgeteilt: OPA: Datentransfer, RAM-Zugriff und Adressierung, ALU-Operationen OPB: Datentransfer und bedingte ALU- Operationen RET: wie OPA, zusätzlich Rückkehr von Unterprogramm JMP: bedingte Sprünge, Calls und Operationen Ldx: div. Datentransfers von Immediate Daten EXR: Zugriff auf externes Delay-RAM
2.8 Signalprozessor-Beispiele Beispiel: OPA Instruktion ALU1 bestimmt die ALU-Operation P-SEL wählt unter verschiedenen Operanden am Eingang der ALU CPINC bestimmt, ob der Adresszeiger für das C-RAM inkrementiert wird DPHM ändert die drei höchstwertigen Bits des Adresszeigers für das D-RAM DPL1 ändert die vier niederwertigen Bits des Adresszeigers für das D-RAM DST1 bestimmt, wohin das auf dem internen Datenbus (IDB) befindliche Datenwort transportiert wird SRC legt die „Quelle“ des Datums auf dem IDB fest
2.8 Signalprozessor-Beispiele Der Programmspeicher umfasst maximal 256 Instruktionen (256 x 22 Bit) Er ist ein RAM und somit zunächst von undefiniertem Inhalt ==> Ein Programm wird über die Host-Schnittstelle mittels Instruction-Write Telegrammen seriell geladen
2.8 Signalprozessor-Beispiele Ist eine Instruktion in die Host-Schnittstelle übertragen, wird RDY solange inaktiv (0), bis die Instruktion in den Programmspeicher übernommen wurde. Übernahme einer Instruktion von der Host-Schnittstelle in den Programmspeicher: • automatisch per Hardware, während Reset aktiv ist => Initiales Laden eines Programms • per Befehl (Teil der OPB-Instruktion) während des Betriebs => Ersetzung von Programmteilen während des normalen Programmablaufs Bleibt Cn/D auf 1, können direkt weitere Instruktionen an nachfolgende Adressen geladen werden
2.8 Signalprozessor-Beispiele Typischer Programmablauf: Im allgemeinen wird ein Programm innerhalb einer Abtastperiode abgearbeitet und beginnt in der nächsten Abtastperiode von vorne ==> kurze Programme, wenige Schleifen o. Verzweigungen, Programmsteuerung durch den Abtasttakt Maximale Programmlänge bei verschiedenen Abtastraten:
2.8 Signalprozessor-Beispiele die Größe des vorhandenen Programmspeichers ist in den meisten Fällen ausreichend Die Steuerung des Programmablaufs erfolgt durch den LRCKx-Takt der seriellen Audio-Schnittstellen Dieser Takt zur Kennzeichnung des linken und rechten Kanals entspricht dem Abtasttakt Die steigende Flanke von LRCKx setzt deshalb den Programmzähler hardwaremäßig auf 0 zurück die Programmbearbeitung beginnt von vorne Bei Stereo-Signalen kann mittels des LEFTF-Flags zwischen linkem und rechtem Kanal unterschieden werden
2.8 Signalprozessor-Beispiele Typisches Programm für ein Stereo-Signal: Programm für den linken Kanal Warteschleife bis LEFTF=0 Programm für den rechten Kanal Endloswarteschleife (bis PC=0 durch steigenden Flanke von LRCKx)
2.8 Signalprozessor-Beispiele Pipeline-Bearbeitung dieses Programms:
Anwendungsbeispiel Digitales Stereo Audio Effekt-Gerät mit Signalprozessor und Mikrocontroller
2.8 Signalprozessor-Beispiele 2.8.2 Ein Hochleistungs-Signalprozessor (Texas Instruments TMS320C6000) • 8fach VLIW-CPU • EPIC-ähnliche Erweiterungen (Marken im Befehlswort) • Bedingte Ausführung aller Befehle (Predication) • 2 32x32 Bit Multiplizierer • 6 ALUs • 32- und 64-Bit Gleitkommaoperationen (C67x) • Erweiterung der Ganzzahlgenauigkeit auf 40 Bit möglich • Integrierter Daten- und Programmspeicher bis 7 MBits • Integrierte serielle Schnittstellen und Timer
2.8 Signalprozessor-Beispiele Blockdiagramm der C6000 Familie 16 Register pro Registerfile Dual-Port Datenspeicher/Cache Datenpfad- /Registerbreite 32 Bit (C62x,C67x) oder 64 Bit (C64x) Single-Port Programmspeicher/ Cache, 256 Bit Zugriffsbreite
2.8 Signalprozessor-Beispiele Funktionsumfang der ALUs
2.8 Signalprozessor-Beispiele Funktionsumfang der ALUs (fortg.)
2.8 Signalprozessor-Beispiele Funktionsumfang der ALUs (fortg.)
2.8 Signalprozessor-Beispiele Funktionsumfang der ALUs (fortg.)
2.8 Signalprozessor-Beispiele Befehlsverarbeitung Es werden immer Pakete zu je 8 Befehlen geholt Instruktion 1 Instruktion 2 Instruktion 3 Instruktion 4 Instruktion 5 Instruktion 6 Instruktion 7 Instruktion 8 Das p-Bit bestimmt hierbei, ob die Befehle parallel ausgeführt werden dürfen pi = 1 Instruktion i+1 darf parallel zu Instruktion i ausgeführt werden pi = 0 Instruktion i+1 muss eine Takt nach Instruktion i ausgeführt werden
2.8 Signalprozessor-Beispiele Beispiel: Treten keine (Daten-, Struktur-) Konflikte auf, so können im besten Fall 8 Befehle gleichzeitig verarbeitet werden
2.8 Signalprozessor-Beispiele Format eines Befehls am Beispiel der .L-Einheit: dst: Zieloperand src2: 2. Quelloperand src1/cst: 1. Quelloperand / Konstante op: Befehlscode x: Kreuzpfade benutzen (.L1,.S1,.M1,D1, -Einheiten greifen auf Register File B zu, .L2,.S2,.M2,D2, -Einheiten auf Register File A s: Auswahl Seite A oder B für Zieloperand
2.8 Signalprozessor-Beispiele creg und z: Bedingte Befehlsausführung, Predication creg spezifiziert das Bedingungsregister z legt fest, ob auf =0 oder 0 getestet wird Jeder Befehl kann so bedingt ausgeführt werden
2.8 Signalprozessor-Beispiele Pipeline (C62x, C64x; Ganzzahlarith.): 11-stufig, 8-fach parallel Jede Pipelinestufe verarbeitet ein Paket, das aus bis zu 8 verschiedenen Instruktionen bestehen kann (VLIW-Pipeline) Pipelinestufen: PG: Program address generate PS: Program address send PW: Program access ready wait PR: Program fetch packet receive DP: Instruction Dispatch DC: Instruction Decode E1-5: Execute 1-5
2.8 Signalprozessor-Beispiele Aufgabe der Ausführungsstufen für verschiedene Befehlstypen:
2.8 Signalprozessor-Beispiele Pipeline (C67x, Gleitkommaarith.): 16-stufig, 8-fach parallel Pipelinestufen: Doppelt so viele Ausführungsstufen