S/PDIF

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

S/PDIF (Sony/Philips-Digital Interface Format) ist ein Protokoll zur Übertragung digitaler Audiodaten. Gebräuchlich ist Stereo (2 Kanalton) bei Sampleraten von bis zu 192kHz und bis zu 24Bit. Die Bits werden per biphase mark code BMC codiert.

S/PDIF ist in der IEC 60958 festgelegt.

Beschreibung

Es handelt sich um eine serielle Verbindung über entweder optischen Lichtwellenleiter LWL oder elektrische abgeschirmte 2-Drahtverbindung COAX.

Als Stecker und Buchsen wird der RCA-Standard (Cinch) mit 75Ω bei 0,5Vss bzw. das TOSLINK-System verwendet.

Verwendung

S/PDIF wird benutzt, um HIFI-Elektronik auf digitalem Wege miteinander zu verbinden. Die Datenrichtung ist unidirektional.

Das Signal wird mit PLDs oder fertigen Chips codiert. Ein bekannter Hersteller für solche Chips ist Cirrus Logic. Die Anbindung erfolgt über eine synchrone, serielle Verbindung mit einem Worttakt. Bei I2S wird das erste Bit des neuen Wortes ein Takt nach dem Worttakt übermittelt. Weitere Formate beginnen oder enden genau mit dem Worttakt. Diese werden right-justified oder left-justified genannt.

Aufbau

Die größte Einheit im S/PDIF Datenstrom ist der sogenannte Block. Er besteht aus 192 aufeinander folgenden Frames, die überwiegend alle gleich aufgebaut sind: Jeder Frame besteht aus 2 (bei Stereo) Subframes. Es sind auch mehr als 2 Kanäle möglich. Jeder Subframe besteht aus Preamble, 24-Bit Audio-Daten, Validity, Userdata, Channel-status und Parity Bits.

Alle Datenbits (also alles ausser der Preamble) sind BMC codiert. Damit ist die Polarität des S/PDIF / BMC Signals unwichtig.

Jedes Datenbit wird durch den BMC in zwei Leitungsbits übersetzt. Eine 0 enthält nur eine Flanke am Ende, eine 1 in der Mitte und am Ende eine Flanke:

Daten   | 0 | 0 | 1 | 1 | 0 | 1 |
BMC    1|0 0|1 1|0 1|0 1|0 0|1 0|1

Diese Regel wird in der Präambel absichtlich verletzt. Während beim BMC keine längere Folge als 2 gleiche Bits hintereinander vorkommt, folgen in der Preamble 3 gleiche Bits hintereinander. Durch diese Besonderheit kann der Empfänger die Präambel also solche erkennen und sich synchronisieren. Es gibt 3 unterschiedliche Präambeln:Eine für den Blockstart, eine für den Framestart und eine für alle anderen Subframes. In Verbindung mit der Spiegelsymmetrie aufgrund der möglichen vertauschten Polarität ergeben sich 6 denkbare Präambeln:

  • Preamble B (11101000 oder 00010111) steht am Blockanfang und enthält Daten von Kanal A, welches links bei Stereo ist.
  • Preamble M (11100010 oder 00011101) steht am Anfang jedes Frames, welches nicht Blockanfang ist und enthält auch Daten von Kanal A.
  • Preamble W (11100100 oder 00011011) steht am Anfang jedes Subframes, welches nicht Block- oder Frameanfang ist. Es enthält in Folge alle weiteren Kanäle ab B aufwärts. Bei Stereo nur B - also rechts.

Bei Stereo ergibt sich also folgendes Muster:

BWMWMWMWMWM.....WMWMWBWMWM...

Bei Vierkanalton

BWWWMWWWMWWW...

In jedem Subframe folgen der Preamble die Audiodaten. 24 Bit, LSB First. Bei 16 Bit Audio befinden sich in den ersten 8 Bits also nur Nullen. Damit ergibt sich praktisch die gleiche digitale Aussteuerung. Vereinzelt weichen jedoch manche Hersteller von dieser Festlegung ab.

Danach wird das Validity-Bit übertragen. Es sagt aus, ob das Sample gültig ist und wiedergegeben werden darf.

Darauf folgt das User-Bit. Hier kann der Sender Daten nach belieben absenden.

Dann folgt das Channel-Status Bit. Es ist bei allen Subframes eines Frames gleich. In einem Block sammeln sich so 192 Bits. Dies ist der sogenannte Subcode, in dem sich auch das Copy-Bit versteckt. Mehr dazu im nächsten Absatz.

Der Subframe wird vom Parity-Bit abgeschlossen. Die Parität ist immer gerade. Somit ist der Wert des Bits immer so, dass sich die Polarität der nächsten Preamble nicht ändert.


Channel-Status / Subcode

Die im Channel-Status übermittelten Bits starten mit dem Blockstart. Die in den W-Subframes übertragenen Bits haben den selben Wert, wie im vorangegangenen B- bzw. M-Subframe. Die 192 Bits haben folgende Bedeutung:

Infos gültig, bei PRO-Bit = 0 - Also Consumer Mode

bit           0                         1
------------- ------------------------- ------------------------------------------
0     PRO-Bit Consumer / S/PDIF         (Professional / PRO / AES/EBU / 4-Channel)

1             Audio                     Kein Audio

2     C-Bit   Kopierschutz aktiv        Kopierschutz inaktiv
              Bei einem Wechsel mit 4-10Hz und CatCode für CD darf nicht kopiert werden.

3             Keine Emphasis             Emphasis 50/15us

4             Reserviert = 0
5             2 Kanal Audio             4 Kanal Audio
6-7           Mode (?) default = 00

8-14  catagory-code - siehe unten

15    L-Bit - siehe auch unten

16-19 Source  0-15, 0=Unspecified (16=LSB, 19=MSB)

20-23 Channel 0=Unspecified, 1=A (left), 2=B (right), ... 14=N, 15=O (20=LSB, 23=MSB)

24-27 Fs     0000 = 44.1kHz, 0100 = 48kHz, 1100 = 32kHz oder SRC (gibt es weitere für 88.2, 96, 176.4, 192kHz?)

28-29 Taktabweichung
             lt. Analog Devices AN22:               lt. Philips Service Manual f. DCC:
             00 = Level II +/- 1000ppm (default)    00 = Level II +/- 50ppm
             01 = Level III variable                01 = Level III +/- 1000ppm
             10 = Level I +/- 50ppm                 10 = Level I variable


Bits 30-191 sind ungenutzt / reserviert

C Bit, L Bit und Category Code

In Abhängigkeit des Category Codes und des L-Bits, werden bei einer Kopie L und C Bit verändert. Der Category Code ändert sich dabei in Abhängigkeit vom Gerät. Das Verfahren ist eine Wissenschaft für sich.

Abhängig vom Category Code kann die Veränderung des C und L Bits nämlich unterschiedlich ablaufen. So ist z.B. die Aufnahme aus einem Musikinstrument mit gesetztem C und L Bit endlos kopierbar, wohingegen eine Aufnahme aus einem Gerät mit General Code (0000000) ebenfalls mit gesetztem C und L Bits nur zwei Generationen übersteht.

Zur Vereinfachung habe ich die Category Codes in 3 Gruppen eingeteilt:

Gruppe 1:

  • 0000000 General
  • 01100xx ADC ohne SCMS

Gruppe 2:

  • 100xxxx Laser Optical (CD)
  • 001xxxx Broadcast
  • 0111xxx Broadcast

Gruppe 3:

  • 0000001 Experimental
  • 0001xxx Solid state Memory
  • 010xxxx Digital/Digital converters
  • 01101xx ADC mit SCMS
  • 101xxxx Musikinstrumente
  • 110xxxx Magnetical Tape or Disk

Zu Gruppe 1 lässt sich sagen, dass hier maximal 2 Generationen von einer Quelle mit C und L = 1, möglich sind. Wiedergabe der ersten Generation gibt C=0 und L=1 und der zweiten Generation C=0 und L=0 aus.

Gruppe 2 und 3 verhalten sich gleich, solange C=1 ist. Beliebig viele Kopien sind möglich, C bleibt immer 1.

Bei Gruppe 3 nimmt bei C=0 und L=0 gar nicht auf, mit L=1 ist eine Generation möglich.

Gruppe 2 lässt mit C=0 und L=0 ein mal kopieren. Die Bits verändern sich nicht, aber der Category Code.

Datenrate

Bandbreite

Da 64 Bit je Datenwort mit je 2 Takten übertragen werden müssen, beträgt der Datentakt ca 25 MHz. Das erfordliche Kabel muss also Bandbreiten bis etwa 100 MHz übertragen können.

Maximum

Praktisch werden mit COAX Übertragungsraten bis zu 384 kHz und 24 Bit pro Kanal erreicht, was aber besondere Übertrager benötigt. Üblich sind über die elektrische Verbindung nur 96kHz Stereo. Die normgemässen 192kHz sind meistens nur optisch möglich.

Probleme

Jitter

Da kein Takt ausdrücklich übertragen wird, muss der Empfänger diesen rekonstruieren, was aufgrund des nicht 100%ig gleichstromfreien Codes und äusseren Einflüssen wie EMV nicht vollständig gelingen kann. S/PDIF-Datenströme addieren damit immer ein zusätzliches Phasenrauschen, das Jitter genannt wird und im Empfänger behandelt werden muss.

Datenformate

Vereinzelt wird berichtet, daß manche Hersteller eine nicht normgemäße Methode verwenden, um die Lautstärke der Endgeräte zu steuern, indem sie z.B. bei 16-Bit-Daten das Raster versetzen, da es so theoretisch möglich ist, die Auflösung an 24-Bit-taugliche Geräte weiterzugeben. Allerdings wird dies von den jeweiligen Endgeräten nicht immer richtig interpretiert und es kommt zu Auflösungsverlusten.

Links