-
Die
Erfindung betrifft das technische Gebiet der Datenübertragung
bei dem eine Anzahl Datenworte in einem Datenrahmen mit Zeitschlitzen
nach einem TDM-Verfahren von einer Sendereinheit zu einer Empfangseinheit übertragen
werden, sowie ein Gerät
zur Durchführung
des Verfahrens.
-
Hintergrund der Erfindung
-
Bei
einem Audiomischpult neuerer Generation können zum Beispiel 16 Audiokanäle bearbeitet werden.
Diese Audiokanäle
sind Monokanäle.
In einem solchen Gerät
wird die Bearbeitung der Audiokanäle von einem DSP-Prozessor
(Digitaler Signal Prozessor) erledigt. Dazu sind sämtliche
Kanäle
digitalisiert worden mit Hilfe eines oder mehrerer A/D-Wandler.
Die digitalen Audiodaten gelangen zunächst in eine Speichereinheit
von der sie nach Bedarf zu dem DSP-Prozessor transportiert werden. Die
bearbeiteten Daten werden über
eine D/A-Wandlereinheit an die verschiedenen Lautsprecher verteilt oder
zur Ausgabe über
digitale oder analoge Schnittstellen vorbereitet. Zur Ausgabe von
Dolby Digital 5:1 Raumklang-Signalen, sind schon allein sechs verschiedene
Monokanäle
als die DA-Ausgänge
erforderlich. Bei dem DVD-Audio-Abstastverfahren wird eine Wortbreite
mit 24-Bit Auflösung
(Dynamik) und 96 kHz Abtastrate benutzt. Entsprechend aufwändig ist
die Übertragung
der sechs Kanäle
von dem DSP-Prozessor zu einem Ausgabeschaltkreis, der in dem zu
betrachtenden Mischpult beispielsweise als FPGA-Baustein realisiert ist. Für diese
Datenübertragung
hat sich ein TDM-Verfahren (Time Division Multiplex) bewährt. In
dem TDM Datenrahmen können 16
Monokanäle
mit jeweils 32-Bit
Datenworten gleichzeitig übertragen
werden. Die Übertragung
eines TDM-Datenrahmens nimmt die Zeit von 1/48000 Sekunde in Anspruch.
Die entsprechende Draht-Schnittstelle
besteht aus einer Taktleitung, einer Rahmen-Synchronisationsleitung sowie zwei unidirektionalen,
bitseriellen Datenübertragungsleitungen.
Obwohl solche drahtgebunden Schnittstellen eher Fehler unanfällig sind,
besteht dennoch ein Problem bei der Datenübertragung.
-
Erfindung
-
Die
Datenübertragung
nach den TDM-Verfahren zwischen DSP und FPGA-Baustein findet mit Hilfe
von DMA-Unterstützung
weit gehend automatisiert, das heißt ohne Unterstützung seitens
des DSP-Prozessorkerns statt. Die DMA-Einheit (Direct Memory Access)
ist in der Regel Teil des DSP Prozessors. Der DSP-Prozessorkern
ist damit entlastet und kann sich anderen Aufgaben, wie zum Beispiel Dekodierung
oder Enkodierung von digitalen Audiodaten widmen. Die zugehörige Software,
die vom DSP-Prozessor abgearbeitet wird, kann hingegen, insbesondere
wenn sie sich noch im Entwicklungsstadium befindet, Fehler anfällig sein.
Wenn solch ein Fehler auftritt, so führt das dazu, dass für die Ausgabe
der Audiodaten mitunter keine neuen Daten im Ausgabepuffer zur Verfügung gestellt
werden. Da der Datenausgabeprozess aber DMA-gesteuert abläuft, bedeutet
das, dass die im Ausgabepuffer vorhandenen Daten immer wieder über die
TDM-Schnittstelle zum FPGA-Baustein ausgegeben werden. Diese Daten
werden dann auch über
die Lautsprecher hörbar wiedergegeben,
was zu unangenehmen Störgeräuschen führen kann.
-
Es
wurde beobachtet, dass sogar ein Wortfehler auftreten kann, bei
dem lediglich ein Audio-Abtastwort beeinträchtigt ist und nicht in den
Ausgabepuffer ordnungsgemäß eingeschrieben
wird, so das alle nachfolgenden Audiodatenworte um eine Stelle verschoben
sind. Dies wirkt sich bei der Ausgabe der Daten als Vertauschung
von Audiokanälen
aus. Somit werden die Daten für
die vorderen Lautsprecher Links, Mitte, Rechts sowie für die hinteren
Lautsprecher und den Tiefbass- Lautsprecher vertauscht, was für den Benutzer
ebenfalls sich als hörbarer
Effekt darstellt.
-
Die
Aufgabe der Erfindung besteht darin solche Fehlerfälle zu erkennen
und die auftretenden Störeffekte
zu unterbinden. Diese Aufgabe wird durch die Maßnahmen der unabhängigen Ansprüche 1 und
8 gelöst.
Dabei werden als Fehlererkennungsmaßnahme eine Anzahl Markierungsbits
innerhalb eines ungenutzten Abschnittes eines bestimmten Datenwortes
des TDM-Datenrahmens eingefügt,
wobei das Muster der Markierungsbits in einer festgelegten Sequenz
von Datenrahmen zu Datenrahmen wechselt. Diese Maßnahme bewirkt,
dass im Empfangsgerät überprüft werden
kann, ob der jeweils eingetroffene Datenrahmen die Markierungsbits
an der vereinbarten Stelle aufweist, und ob die Markierungsbits
dem Muster entsprechen, das entsprechend der festgelegten Sequenz
als Nächstes
zu erwarten wäre.
Wenn dem nicht so ist, wird ein Fehler erkannt und es kann entweder
ein Fehlerzustandregister gesetzt werden oder der Fehler zu dem
DSP-Prozessor rückübertragen
werden, wodurch ein Neustart der Software, die auf dem DSP-Prozessor
ausgeführt
wird, ausgelöst
werden kann. Durch den Neustart würden die Register neu gesetzt
werden und auch die Datenübertragung
würde neu
aufgesetzt werden, so dass die eventuell bestehende Vertauschung
der Kanäle dadurch
behoben werden würde.
Die Fehlererkennung basiert auch darauf, dass über den DMA-Datenausgabeprozess
immer wieder ein im Ausgabepuffer befindliches Muster der Markierungsbits übertragen
würde.
Wenn die festgelegte Sequenz dann so vereinbart wird, dass diese
Sequenz nicht durch bloßes
Wiederholen von Datenrahmen innerhalb des Ausgabepuffers erzeugt
werden kann, so ist die Fehlererkennungsmethode zuverlässig.
-
Durch
die in den abhängigen
Ansprüchen aufgeführten Maßnahmen
sind vorteilhafte Weiterbildungen und Verbesserungen der in den
unabhängigen
Ansprüchen
aufgeführten
Erfindung möglich. Sehr
vorteilhaft ist, wenn in einem Markierungsprozess die Markierungsbits
jeweils an der entsprechenden Position innerhalb eines ungenutzten
Abschnitts des bestimmten Datenwortes des Datenrahmens im jeweils
gültigen
Ausgabepuffer gesetzt werden. Dies erlaubt es die ordnungsgemäße Abarbeitung
des Programms von Seiten des DSP-Prozessors zu überprüfen.
-
Ebenfalls
vorteilhaft ist es, wenn die festgelegte Sequenz für das Wechseln
der Markierungsbits von Datenrahmen zu Datenrahmen sich danach bestimmt,
wie viele Ausgabepuffer abwechselnd zur Datenausgabe benutzt werden,
um eine Fehlererkennung zu ermöglichen.
Wenn zum Beispiel zwei Ausgabepuffer abwechselnd in den DMA-Prozess benutzt
werden, so wäre
es vorteilhaft, wenn als festgelegte Sequenz eine Dreiersequenz
benutzt würde. Durch
das fortwährende
Ausgeben des Inhaltes der beiden Ausgabepuffer würde nämlich nur eine Zweiersequenz
entstehen. Die Fehlererkennungsmethode auf Empfangsseite wird die
Sequenz auswerten und den Fehlerfall signalisieren, wenn sie lediglich eine
Zweiersequenz erkennt.
-
Zeichnungen
-
Ausführungsbeispiele
der Erfindung sind in den Zeichnungen dargestellt und werden in
der nachfolgenden Beschreibung näher
erläutert.
Es zeigen:
-
1 ein
Blockschaltbild des Audiomischpultes;
-
2 den
TDM-Datenrahmen;
-
3 ein
Signaldiagramm für
die Datenübertragung über die
drahtgebundene TDM-Schnittstelle;
-
4 eine
beispielhafte Sequenz des Musters der Markierungsbits bei aufgetretenen
Fehlern;
-
5 ein
Zustandsdiagramm für
eine Fehlererkennungseinheit in der Empfangseinheit für die Datenübertragung über die
TDM-Schnittstelle;
und
-
6 ein
Zustandsdiagramm für
den Markierungsprozess, der in der Sendeeinheit bei der Datenübertragung
nach dem TDM-Verfahren abläuft.
-
Beschreibung der Erfindung
-
Die 1 zeigt
ein grobes Blockschaltbild des Audiomischpultes. Darin bezeichnet
die Bezugszahl 10 den DSP-Prozessor. DSP-Prozessoren sind im
Stand der Technik seit langem bekannt und es steht eine Vielzahl
solcher Prozessoren für
konkrete Anwendungen zur Verfügung.
Als Beispiel für
eine konkrete Realisierung der Erfindung wird der Signalprozessor
vom Typ ADSP-21161N des Herstellers ANALOG DEVICES genannt. Dieser
besitzt einen spezialisierten Prozessorkern, eine On-Chip-Speichereinheit
eine DMA-Einheit sowie verschiedene Schnittstellen für die Daten
Ein- und Ausgabe. In der 1 gezeigt sind die Komponenten
Prozessorkern 13, Speichereinheit 14, DMA-Einheit 11 und TDM-Schnittstelle 12.
Innerhalb der Speichereinheit 14 sind zwei Ausgabepuffer 15 und 16 gesondert
hervorgehoben. Die Datenausgabe von diesen Ausgabepuffern 15 und 16 zur
TDM-Schnittstelle 12 findet mit DMA-Unterstützung statt.
-
Mit
der Bezugszahl 30 ist ein erster externer Speicherbausteinen
bezeichnet. Die Bezugszahl 40 bezeichnet einen zweiten
externen Speicherbaustein. Beide Speicherbausteine sind über einen
parallelen Datenbus 50 mit dem DSP-Prozessor 10 verbunden.
Die Bezugszahl 20 bezeichnet einen FPGA-Baustein (Field
Programmable Gate Array). In dem FPGA-Bausein 20 sind die
verschiedenen Ein-Ausgabeeinheiten
für die
verschiedenen Audiokanäle
integriert. Die AD- und DA-Wandler sind extern zum FPGA angeordnet,
nicht gezeigt. Zur Datenein- und Ausgabe kann die bekannte SPORT-Schnittstelle,
entsprechend Serial Port, dienen. Des Weiteren befindet sich im
FPGA 20 eine Logik, die als TDM-Schnittstelle dient. Dafür ist wie
bei jeder seriellen Datenübertragung
ein Schieberegister nötig
und eine Einheit, die die darin befindlichen Daten entsprechend
der Belegung in dem TDM-Rahmen den einzelnen AD- oder DA-Wandlereinheiten
zuordnet. Des Weiteren befindet sich in dem FPGA-Baustein eine so
genannte Zustandsmaschine, die die Fehlererkennung mit Hilfe des
erfindungsgemäßen Verfahrens
vornimmt. Der FPGA-Baustein 20 beinhaltet ebenfalls weitere
Schnittstellen. So ist z. B. eine Busschnittstelle vorgesehen, mit
deren Hilfe ein weiterer Micro-Controller 70 Einstellungen
vornehmen kann. Dazu ist der externe Microcontroller 70 über einen weiteren
Bus 80 mit dem EPGA-Baustein 20 und dem DSP-Prozessor 10 verbunden.
Typische Einstellungen im FPGA-Baustein betreffen die Auswahlmöglichkeit,
welche der vorhandenen DA-Kanäle über die
TDM-Schnittstelle 60 zum DSP-Prozessor 10 weitergeleitet
werden sollen und die Auswahl, über
welche DA-Wandler die vom DSP bearbeiteten Daten ausgegeben werden
sollen.
-
Die 2 zeigt
den Aufbau des TDM-Datenrahmens. Der TDM-Datenrahmen besteht aus Zeitschlitzen
für 16
Datenworte. Die einzelnen Zeitschlitze sind mit dem Bezugszeichen
SL0 bis SL15 markiert. Innerhalb eines jeden Zeitschlitzes SL0 bis SL15
kann ein 32-Bit Datenwort übertragen
werden. Im gezeigten Anwendungsfall der Übertragung von Audiodatenworten
werden Audiodatenworte mit 24-Bit Dynamikumfang übertragen. Das heißt, dass in
jedem Zeitschlitz SL0 bis SL15 ein Datenabschnitt der Breite von
8-Bit ungenutzt ist. In 2 ist dargestellt, das dieser
Datenabschnitt jeweils am Anfang eines Zeitschlitzes lokalisiert
ist und aber die jeweils letzten 8 Bits mit den Nummern 24 bis 31 des
Datenwortes betrifft. Dieser TDM-Datenrahmen
reicht aus für
die Übertragung
von 16 Audiokanälen
(Monokanäle).
Je nach Anwendungsfall müssen
nicht alle 16 Zeitschlitze gleichzeitig benutzt sein. Insbesondere, besteht
ein Unterschied in der Übertragung
der Daten vom FPGA 20 zum DSP-Prozessor 10 und
der Gegenrichtung vom DSP-Prozessor 10 zum FPGA-Baustein 20.
Es handelt sich bei dem Gerät
um ein Audiomischpult. Die Hauptaufgabe dieses Gerätes besteht
deshalb darin mehrere Audiokanäle
zu mischen. Aus mehreren Audiokanälen wird deshalb einen einzelner
abgemischter Kanal entstehen, der dann wieder ausgegeben werden
soll. In der Gegenrichtung, d. h. vom DSP-Prozessor 10 hin
zum FPGA-Baustein 20 werden deshalb üblicherweise weniger Kanäle auszugeben
sein.
-
Die
Markierungsbits zur Fehlerüberprüfung sind
in der 2 mit der Bezugszahl M1 und M2 bezeichnet. Diese
Bits sind am Anfang des TDM-Datenrahmens positioniert. Die Markierungbits
befinden sich aber nur am Anfang des ersten Zeitschlitzes des Datenrahmens.
Die restlichen 6 Bits des ungenutzten 8-Bit Abschnittes des ersten
Datenwortes bleiben weiterhin unbenutzt. In ihnen steht das so genannte Extension-Sign-Bit
des im Zeitschlitz vorhandenen Audiodatenwortes. Es steht also entweder überall eine
0 oder überall
eine 1 in diesem Abschnitt. Die Markierungsbits M1 und M2 werden
in dem Markierungsprozess von seitens der Software des DSP-Prozessors
gesondert gesetzt. Es werden dabei nur die beiden Bitmuster %01
und %10 verwendet. Dies ist in der 2 ebenfalls
dargestellt.
-
3 zeigt
ein Signaldiagramm für
die Datenübertragung über die
TDM-Schnittstelle 60. Das Taktsignal ist in der ersten
Zeile gezeigt. Mit der fallenden Flanke im Taktsignal wird zu Beginn
einer Datenübertragung
ein Startsignal ES über
die Synchronisationsleitung übertragen.
Dieses Startsignal ist low-aktiv und dauert nur die Übertragungszeit
eines Datenbits. Gleichzeitig mit dem Startsignal wird über die
Datenleitung D das erste Datenbit übertragen. Es handelt sich
um das erste Markierungsbit M1, da dieses ja als erstes in dem Datenrahmen übertragen wird.
Die drahtgebundene Schnittstelle 60 ist als Master/Slave-Busschnittstelle
ausgelegt. Die entsprechende TDM-Schnittstelle 12 im
DSP-Prozessor 10 arbeitet als Master, hingegen ihr Gegenpart
im FPGA-Baustein 20 als Slave. Deshalb wird der Takt für die Datenübertragung
von dem DSP-Prozessor 10 vorgegeben.
Ebenfalls wird auch das Rahmensynchronisationssignal über die
ES-Leitung nur von dem DSP-Prozessor 10 gebildet.
-
Als
festgelegte Sequenz für
das Wechseln des Bitmusters der Markierungsbits wird eine Dreiersequenz
eingesetzt. Wenn das erste Bitmuster %01 als F0 bezeichnet ist und
das zweite Bitmuster %10 als F1, so ist die festgelegte Sequenz
von der Art F1-F0-F0. Diese Sequenz kann durch das abwechselnde
Ausgeben der Daten in den beiden Ausgabepuffern 15 und 16 über den
automatisierten DMA-Prozess
nicht generiert werden. Es könnten
lediglich die Sequenzen F1-F0-F1-F0 ... und F0-F0-F0 ... im Fehlerfall
auftreten. Wenn die Fehlererkennungseinheit im FPGA-Baustein 20 auf
die zu erwartende Sequenz F1-F0-F0 programmiert ist, wird sie den
Fehler erkennen, sobald im DSP-Prozessor 10 der Markierungsprozess
ausfällt.
-
Der
Markierungsprozess läuft
so ab, dass die beiden ersten Bits im Ausgabepuffer 15 und 16 dediziert
entsprechend der festgelegten Sequenz gesetzt werden bevor die Ausgabe
der in den Ausgabepuffern befindlichen Daten stattfindet.
-
Die 4 zeigt
ein Beispiel einer auftretenden Sequenz. Zum Zeitpunkt t1 wird das F0 Bitmuster erkannt. Es wird
angenommen, dass das Bitmuster an der richtigen Position in der
Sequenz liegt und zu diesem Zeitpunkt wird deshalb kein Fehler erkannt. Zum
Zeitpunkt t2 wird keines der beiden benutzten Bitmuster
F0 und F1 in dem TDM Datenrahmen gefunden. Wie beschrieben, sind
nur die beiden Bitmuster %10 und %01 als Markierungsbitmuster verwendet.
Es bleiben also noch die Bitmuster %00 sowie %11 übrig, die
im Fehlerfall an erster Stelle des Datenrahmens auftreten können. Dies
könnte
passieren, wenn z. B. der DMA-Prozess ebenfalls einen Fehler verursacht.
Da die ersten 8 Bits in jedem Zeitschlitz SL0 bis SL15 ungenutzt
sind und entweder alle zu "0" gesetzt sind oder
zu "1", würde also
auch der Ausfall eines Datenwortes, bedingt durch den DMA-Prozess,
als Fehler erkannt werden. Wenn der Fehler zum Zeitpunkt t2 erkannt würde, so wird der DSP-Softwarestapel
neu gestartet. Die nachfolgenden Datenrahmen F1, F1 und E würden weiterhin
als fehlerhaft erkannt werden, weil noch nicht die festgelegte Sequenz
F1-F0-F0 im Datenstrom aufgetreten ist. Erst zum Zeitpunkt t8, wird die Ausgabe der Daten an die Lautsprecher
freigegeben, weil dann zum ersten Mal die festgelegte Seqenz F1-F0-F0
im Datenstrom ordnungsgemäß auftritt.
Die Sequenz wird dann auch eingehalten in den weiteren Datenübertragungen
zum Zeitpunkt t9 und t10.
-
Wie
erwähnt,
ist in dem FPGA-Baustein 20 auch eine Zustandsmaschine
für die
Fehlererkennung implementiert. Wie diese Zustandsmaschine arbeitet,
ist in der 5 gezeigt. Darin sind vier Zustände S1,
S2, S3 und ED mit Kreisen dargestellt. Wenn zum Beispiel im Datenstrom
das Bitmuster F1 eingetroffen ist, wird als Erstes der Zustand S1
eingenommen. Sollte im Datenstrom als Nächstes das Bitmuster F0 auftreten,
so wechselt die Zustandsmaschine vom Zustand S1 in den Zustand S2.
Wenn danach erneut das Bitmuster F0 im Datenstrom auftritt, wechselt
die Zustandsmaschine vom Zustand S2 zum Zustand S3. In diesem Fall
wurde die festgelegte Sequenz E1-F0-F0 ordnungsgemäß gefunden
und es wird kein Fehler erkannt. Der Zustandswechsel wiederholt
sich dementsprechend, wenn als Nächstes
im Datenstrom die Markierungsbits mit dem Muster E1 erkannt werden.
Dann wechselt die Zustandsmaschine wieder vom Zustand S3 in den
Zustand S1 zurück.
-
Sollte
in einem der Zustände
S1 oder S2 das Bitmuster F1 erkannt werden statt F0, so wechselt die
Zustandsmaschine sofort in den Zustand ED. Dieser Zustand wird eingenommen,
sobald ein Fehler erkannt wurde. Gleiches gilt, wenn im Zustand
S3 als Nächstes
das Bitmuster F0 erkannt wird. Im Fehlerzustand ED wird entweder
ein Fehlerspeicher gesetzt oder es wird ein Interrupt erzeugt, der
an den DSP-Prozessor 10 geht
und diesen zum Neustart der Software veranlasst, oder es wird ein
Reset-Signal für
den DSP-Prozessor 10 erzeugt,
oder es ergeht eine Benachrichtigung an den externen Mikrocontroller 70,
der von sich aus den Neustart der Software des DSP-Prozessors 10 veranlasst.
Gleichzeitig wird aber in der FPGA-Einheit das Ausgeben von Audiodaten über die
DA-Wandlereinheiten unterbunden. Dies dient dazu, die auftretenden
Störgeräusche im Fehlerfall
zu unterdrücken.
Sollte der Fehlerfall eingetreten sein, so kann ein Zustandswechsel
in den Zustand S3 nur dann stattfinden, wenn aufeinander folgend
die festgelegte Sequenz E1-F0-F0 im Datenstrom wieder aufgetreten
ist. Solange diese Sequenz noch nicht eingetroffen ist, verbleibt
die Zustandsmaschine im Fehlerzustand ED.
-
Auch
beim Neustart des Gerätes
geht die Zustandsmaschine zunächst
in den Fehlerzustand ED. Dies ist in der 5 durch
den Zustandspfeil der mit dem Wort "Start" beschriftet ist gezeigt.
-
Die 6 zeigt
noch die Zustandsmaschine für
den Markierungsprozess im DSP-Pozessor 10. Die Markierungsbits
werden immer abwechselnd nach der festgelegten Sequenz F1-F0-F0 gesetzt. Demgemäß wechselt
die Zustandsmaschine vom Zustand S3 zum Zustand S1 und danach in
den Zustand S2 und von dort wieder zurück in den Zustand S3.
-
Die
Erfindung ist nicht auf das hier beschriebene Ausführungsbeispiel
beschränkt.
Vielfältige
Abwandlungen des beschriebenen Ausführungsbeispiel sind möglich. So
kann die Anzahl der Markierungsbits je nach Anwendungsfall variieren.
Sind mehrere Ausgabepuffer vorhanden, müssen auch die Markierungsbits
erweitert werden und die festgelegte Sequenz wird ebenfalls anzupassen
sein. Die Position der Markierungsbits im Datenrahmen kann variieren. Gleichzeitig
kann die Häufigkeit
des Auftretens von Markierungsbits im Datenrahmen variiert werden.