Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... ·...

27

Transcript of Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... ·...

Page 1: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 2: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

ÜbersichtImplementierung

ZusammenfassungAusblick

Outline

1 Übersicht

2 Implementierung

3 Zusammenfassung

4 Ausblick

Oswald Berthold Audiosignalverarbeitung mit FPGA 2 / 27

Page 3: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 4: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 5: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 6: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 7: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 8: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 9: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 10: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 11: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 12: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 13: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 14: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 15: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 16: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 17: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 18: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 19: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 20: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 21: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 22: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 23: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 24: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 25: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 26: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

Ü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

Page 27: Audiosignalverarbeitung mit FPGA - informatik.hu-berlin.debertolos/hw/WS09 SE HWSV... · Audio-Interface (AC97) Netzwerk Interface (NIC) Virtex II Pro verfügt über zwei eingebettete

ÜbersichtImplementierung

ZusammenfassungAusblick

Ende

Nix mehr.

Oswald Berthold Audiosignalverarbeitung mit FPGA 27 / 27