Kampis Elektroecke

Digitale Audioverarbeitung

Die Grundlage vieler digitaler Audiosysteme bildet die Inter-IC Sound Schnittstelle (kurz I2S), die für die Datenübertragung der digitalisierten Audiodaten zwischen verschiedenen Teilnehmern (z. B. von einem Prozessor zu einem DAC) zu übertragen. Für die Übertragung werden die folgende Signale benötigt:

Signal Funktion
Beschreibung
SCK Takt Taktleitung für die Datenübertragung.
SD Daten Über diese Leitung werden die einzelnen Bits eines jeden Datenwortes übertragen.
WS Word-Select Legt die Länge des übertragenen Datenwortes fest. Wird z. B. genutzt um den rechten, bzw. den linken Audiokanal zu markieren.

Über den I2S werden ausschließlich Audiodaten übertragen. Zusätzliche Daten, wie die Konfiguration einzelner Busteilnehmer, werden über andere Schnittstellen übermittelt. Ein Datentransfer findet dabei immer ausschließlich in eine Richtung und zwischen zwei Busteilnehmern statt, wobei der Busteilnehmer als Master agieren muss und für die Generierung der Taktsignale verantwortlich ist. In komplexen Systemen aus mehreren Sendern und Empfängern werden die Taktsignale von einem externen Busmaster erzeugt und der jeweilige Sender erzeugt die Daten.

Alle Daten werden als Zweierkomplement und MSB First übertragen. Bei einer positiven Differenz der Wortbreiten von Empfänger und Sender (sprich wenn die Wortbreite eines Teilnehmers kleiner ist als die des anderen) werden die übrigen Bits mit 0 aufgefüllt. Ist die Differenz negativ (also die Wortbreite eines Teilnehmers ist größer als die des anderen), so werden die restlichen Bits ignoriert. Laut Spezifikation können die Daten auf die positive oder die negativen Taktflanke synchronisiert werden, wobei die Daten immer mit der negativen Taktflanke eingelesen werden.

Das WS-Signal wählt den aktiven Kanal aus und alle Daten innerhalb einer Low- bzw. High-Phase werden dem jeweiligen Kanal zugeordnet. Hierbei gilt:

  • WS = 0 – Kanal 1 (Links)
  • WS = 1 – Kanal 2 (Rechts)

Das WS-Signal muss immer einen Taktzyklus vor dem MSB des nächsten Datenwortes gewechselt werden, damit der Empfänger die Daten in den richtigen Kanal einlesen kann. Üblicherweise entspricht die Taktfrequenz des WS-Signals der Abtastfrequenz des Audiosignals.

In den nachfolgenden Beispielen möchte ich einen kleinen Einblick in die Entwicklung eines Audiosystems für FPGAs (insbesondere das ZYBO) geben.

Design des I2S-Senders
AXI-Stream Interface für den Sender
Abspielen von Wave-Dateien
SSM2603 Audio Codec Erweiterung
Entwurf eines Audiofilters
Design des I2S-Empfängers
→ AXI-Stream Interface für den Empfänger

Während des Projektes habe ich zudem noch die folgenden, zusätzlichen Hilfsmittel genutzt:

Wavtones.com
MicroModeler DSP

Das komplette Projekt steht in meinem GitHub-Repository zum Download bereit.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert