Upload
vunhu
View
218
Download
2
Embed Size (px)
Citation preview
ÜbersichtImplementierung
ZusammenfassungAusblick
Audiosignalverarbeitung mit FPGA
Oswald Berthold
Humboldt-Universität zu BerlinInstitut für Informatik
Lehrstuhl Signalverarbeitung und Mustererkennung
2. März 2010
Oswald Berthold Audiosignalverarbeitung mit FPGA 1 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Outline
1 Übersicht
2 Implementierung
3 Zusammenfassung
4 Ausblick
Oswald Berthold Audiosignalverarbeitung mit FPGA 2 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Audiosignalverarbeitung mit FPGAs
Projekt im Rahmen des Seminars �Hardware derSignalverarbeitung�, WS09/10, F. Winkler
Hardware Plattform: Xilinx Spartan und Virtex
Grundlagen des Entwurfs: Toolchain (EDK, ISE)
System: Framework, Schnittstellen, vorhandene Komponenten
Oswald Berthold Audiosignalverarbeitung mit FPGA 3 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Aufgabenstellung
Entwicklung einer Schwellwert-getriggerten Audioübertragungüber Netzwerk (z.B. Babyfon)
Allgemeiner: ein System, dass ein einkommendes Signalanalysiert und bei Eintreten bestimmter Ereignisse (z.B.Überschreiten eines Schwellwerts) die Übertragung diesesSignals, auch kombiniert mit anderen Signalen, über einIP-Netzwerk auslösen kann.
Oswald Berthold Audiosignalverarbeitung mit FPGA 4 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Hardware
Das System soll auf der Xilinx Virtex II Pro Plattformimplementiert werden.
Das xupv2p-Board stellt neben dem Chip die notwendigenSchnittstellen zur Verfügung
Audio-Interface (AC97)Netzwerk Interface (NIC)
Virtex II Pro verfügt über zwei eingebettete PPC-Prozessoren
Oswald Berthold Audiosignalverarbeitung mit FPGA 5 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Überlegungen zu Architektur und Vorgehen
Samples müssen vom Audio-Interface abgeholt, in einemhardware-unabhängigen Kern verarbeitet und anschliessendüber die Netzwerkschnittstelle verschickt werden.
�komplexe� Schnittstellen werden von Prozessoren (PPC,Microblaze) bedient
Durchführung in zwei Phasen
1 Basissystem mit �Null-Kern� (Identität) stellt den vollständigenSignalpfad her
2 Anschliessende Einbindung eines in massgeschneiderterHardware realisierten Signalverarbeitungs-Kerns(Strukturskizze auf der folgenden Seite)
Oswald Berthold Audiosignalverarbeitung mit FPGA 6 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
System Block-Diagramm
Signalquelle AC'97
Analoges Si-gnal, Line Pegel
PPC0
BRAM0
Custom HW
GPIO
BRAM1
PPC1
GPIO
NIC EmpfängerUDP/IP
UDP Socket
Soundcard
PC
Mikrofon
PC
FPGA
xupv2p
Abbildung: Vorgri�: Struktur nach der Implementierung
Oswald Berthold Audiosignalverarbeitung mit FPGA 7 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Implementierung
Im folgenden werden einige Details der Implementierung erläutert.
Programmierung der eingebetteten PPC-Prozessoren
Audio-Schnittstelle
Netzwerkschnittstelle
Schnittstelle zwischen beteiligten Komponenten
BRAM-Kopierer in VHDL
Schwellwerterkennung in VHDL
System-Kon�guration über Netzwerk
Oswald Berthold Audiosignalverarbeitung mit FPGA 8 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Toolchain
xupv2p Board mit Version 10 der Xilinx Tools bespielbar
EDK: Hardware/Software Codesign
Hardware-Spec über system.mhs: enthält Komponenten (IPcores) und deren VerdrahtungSoftware-Spec über system.mss: Kon�guration derProzessoren, notwendigen Treiber in Abhängigkeit von derverwendeten Hardware, Software-Bibliotheken, OS, . . .Softwareentwicklung für ProzessorenBuild-Prozess wird über Make�les aus EDK gesteuert
ISE: zur Entwicklung, Simulation und Synthese einzelnerHardware-Komponenten / IP Cores.
xmd: Xilinx Debugger lädt die Software-Komponenten in denProzessor
Oswald Berthold Audiosignalverarbeitung mit FPGA 9 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Audio-Schnittstelle
AC97 Chip auf xupv2p: LM4550VH
Basis: Verschiedene Xilinx-Beispiele die den AC97 Chip ineinem Microblaze-basierten System verwenden
Weiterverwendbare Komponente: OPB basierte AC97Komponenten aus audio.zip(http://www.xilinx.com/univ/xupv2p.html)
Minimales Programm für PPC
Lesen der Audiosamples über eine vom Treiber zur Verfügunggestellte FIFOSerielle Kommunikation zum DebuggingSchreiben der Samples auf den DAC
Oswald Berthold Audiosignalverarbeitung mit FPGA 10 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Audio-Schnittstelle
Software Treiber für opb_ac97, FIFO und Pu�er basiertesLesen und Schreiben
Im FIFO-Modus ist die Ausgabe je ein 16 Bit Sample für denlinken und rechten Kanal, die in ein int32 gepackt sind
Xuint32 *aucur;
aucur = (Xuint32*) \
XPAR_PPC405_1_AUDIO_BRAM_CNTLR_BASEADDR+2;
for ( i = blocksize)
*aucur = XAC97_ReadFifo(XPAR_OPB_AC97_0_BASEADDR);
XAC97_WriteFifo(XPAR_OPB_AC97_0_BASEADDR, *aucur);
aucur++;
// irgendwas mit dem block machen
Oswald Berthold Audiosignalverarbeitung mit FPGA 11 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Netzwerkschnittstelle
Komponenten der Ethernet NIC: MAC (im FPGA), PHY(LXT972A)
Basis: Umfangreiches Xilinx-Demo mit verschiedenenNetzwerkanwendungen: Webserver, Echo-Server, . . .
Kon�guration des xilkernel-Layers (minimales OS) für den PPCProzessor (Ethernet Treiber)
LwIP Bibliothek für IP Stack
UDP
Oswald Berthold Audiosignalverarbeitung mit FPGA 12 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Hardware-unabhängige Schnittstelle
Voraussetzung um signalverarbeitende Hardware in denSignalpfad zu bekommen, m.a.W. die Samples müssen ausdem Prozessor in den SV-Kern gelangen
Optionen
FSL (Fast Simplex Link), Microblaze onlyGPIO (Overhead auf Prozessorseite)BRAMBus (OPB, PLB), Aufwand
Oswald Berthold Audiosignalverarbeitung mit FPGA 13 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
BRAM-Schnittstelle
Double-Bu�er Prinzip
Füllen des ersten Pu�ersSignal Pu�er 1 vollLesen des ersten Pu�ersSignal Pu�er 1 gelesenanalog mit Pu�er 2
Optionen zur Synchronisation (Zustandsübermittlung)
reservierte Adressen im BRAMGPIO Leitungen
Oswald Berthold Audiosignalverarbeitung mit FPGA 14 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
BRAM-Schnittstelle Automat
Nochmal als Automat
1
2
Start
init
i < size buf1
i = size buf1
i < size buf2
i = size buf2
Abbildung: Automat zur 2-Pu�ersynchronisation
Oswald Berthold Audiosignalverarbeitung mit FPGA 15 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
BRAM-Kopierer in VHDL
einfacher BRAM-Kopierer: lesen des Quell-BRAMs undSchreiben des Ziel-BRAMs
synchrone Addresserzeugung
Zustandsübermittlung über GPIO
Oswald Berthold Audiosignalverarbeitung mit FPGA 16 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Schwellwerterkennung in VHDL
Realisierung eines einfachen Schwellwerttriggers in VHDL
Kern: memwriter
GPIO
BRAM
Addr-GenProzess
Betrag
Mittelwert
≥ threshold? BRAMJa
GPIO
Ja
Addr-Gen Prozess
IF IF
Signalverarbeitung
Abbildung: SV-KernOswald Berthold Audiosignalverarbeitung mit FPGA 17 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Schwellwerterkennung: Implementierung
Einlesen eines Stereosignals
Splitten des Stereosignal, dann doppelte Ausführung derModule:
BetragsbildungMittelwertbildung über Fenster festgelegter Grössebei Überschreitung des Schwellwerts Auslösen der Übertragungüber die GPIO-Steuerung
Oswald Berthold Audiosignalverarbeitung mit FPGA 18 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Empfangsteil
Empfang ist auf einem Standard Linux-PC realisiert
netcat (nc) liest Pakete von Socket und übergibt diese an dieStandardeingabe von sox (Sound Exchange)
sox konvertiert Samples in geeignetes Format und schreibtdiese auf die Soundkarte, das sieht dann so aus:
$ nc -u -l -p 8000 | \
sox -t raw -c 2 -r 24000 -w -s -x - \
-t ossdsp -w -s /dev/dsp
Oswald Berthold Audiosignalverarbeitung mit FPGA 19 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
System-Kon�guration über Netzwerk
Ähnliches Vorgehen für die Kommunikation in Rückrichtung
Netzwerkthread auf Prozessor kann über GPIO Parameter imSV-Kern setzen
netcat kann auch zum Setzen dieser Parameter (Schwellwert,Aktivierungsdauer) benutzt werden
$ echo /t,100 | nc -u 192.168.1.11 8000
Oswald Berthold Audiosignalverarbeitung mit FPGA 20 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Statische und dynamische Systemteile
Der statische hardware-abhängige Teil des System abstrahiertbzw. vereinheitlicht den Zugri� auf die Resourcen, ähnlicheinem Betriebssystem.
Der veränderbare Teil (SV-Kern) ist über einehardware-unahängige Schnittstelle mit dem statischen Teilverbunden.
Siehe Abb. nächste Seite
Oswald Berthold Audiosignalverarbeitung mit FPGA 21 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Statische und dynamische Systemteile allgemein
IN1(ADC)
IN2 (Cam) ... OUT1 OUT2 ...
Statischer Teil (OS,hardwareabhängig)
Internal IF Internal IF ...
SV-Kern 1 SV-Kern 2 ...
Dynamischer Teil (Kerne)
FPGA
Board
bi-direktional bi-direktional
Abbildung: statischer und veränderbarer SystemteilOswald Berthold Audiosignalverarbeitung mit FPGA 22 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Statisch / dynamisch im konkreten System
Signalquelle AC'97
Analoges Si-gnal, Line Pegel
PPC0
BRAM0
Custom HW (SV-Kern)
GPIO
BRAM1
PPC1
GPIO
NIC EmpfängerUDP/IP
UDP Socket
Soundcard
PC
Mikrofon
PC
FPGA
xupv2p
Abbildung: statischer und veränderbarer SystemteilOswald Berthold Audiosignalverarbeitung mit FPGA 23 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Weitere Schritte
Viele Verbesserungen denkbar und möglich
Einkanaliges Modell mit kon�gurierbarer Kanalanzahl
heterogene Kanäle
Kompression in der Übertragung
Redundanz durch prädiktive Signalkomponenten
vollwertiger Rückkanal
Entwicklung weiterer Kerne
Oswald Berthold Audiosignalverarbeitung mit FPGA 24 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Kerne
Einsetzen verschiedener SV-Kerne, z.B.:
FilterungFilterbank oder FFT Block: Frequenz-abhängige Triggerungweitere Verfahren der Klassi�kation: Erkennen bestimmterWörter, Stimm- und Geräusch-Signaturen (AKF, HMM, ESN,. . . )Kompression. . .
Oswald Berthold Audiosignalverarbeitung mit FPGA 25 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Entwicklungsmethoden
zur Erstellung von SV-Kernen
manuell klassischer Entwurf in VHDL
System Generator
XML: freesp
Scilab / Scicos-HDL
Evolutionäre Verfahren auf analoger oder logischer Ebenezusammen mit (D)PR-Setup
Oswald Berthold Audiosignalverarbeitung mit FPGA 26 / 27
ÜbersichtImplementierung
ZusammenfassungAusblick
Ende
Nix mehr.
Oswald Berthold Audiosignalverarbeitung mit FPGA 27 / 27