-
Die
vorliegende Erfindung betrifft Übertragungen
von Signalen in Echtzeit im Paket-Modus.
-
Die
betreffenden Signale können
insbesondere Sprechsignale sein. Zur numerischen Übertragung
eines Sprechsignals wird ein Abtasten des Signals durch eine Vorrichtung
zur Tonaufnahme notwendig, oder allgemeiner durch einen Sender.
Bei einer Echtzeitanwendung zum Beispiel beim Fernsprechen, ist
der Taktgeber des Empfängers
mit dem des Senders synchron, um Probleme einer zeitlichen Abweichung
zu vermeiden. Diese Bedenken gelten auch bei anderen Typen von Echtzeitsignalen,
zum Beispiel bei Videosignalen.
-
Es
wurden Protokolle entwickelt, die es erlauben, Signale in Echtzeit
in Datagrammnetze zu übertragen.
Bei Netzen, die nach dem IP-Protokoll („Internet Protocol") funktionieren,
handelt es sich insbesondere um das RTP-Protokoll („Real Time
Protocol"), das
in der Übertragungsschicht
mit dem UDP-Protokoll („User
Datagram Protocol")
funktioniert.
-
Jedes
RTP-Paket enthält
einen Kopf mit einer Sequenznummer des Pakets und eine Information
zur Datierung des Pakets bezüglich
des Taktgebers zur Signalabtastung. Diese Information enthält eine
Datierung eines Signalabschnitts, der im brauchbaren Bereich des
Pakets codiert wird und in der Anzahl der Zyklen des Taktgebers
zur Signalabtastung oder eines anderen Taktgebers, der mit diesem
synchron ist, ausgedrückt
wird. Die Sequenznummer gestattet es, die Sequenz der gesendeten Pakete
wiederherzustellen, wenn sie nicht in der Reihenfolge empfangen
wurden, und fehlende Pakete zu erfassen. Wenn ein oder mehrere aufeinanderfolgende
Pakete nicht empfangen wurden, gestattet es die Datierungsinformation,
die Anzahl der fehlenden Signalabtastwerte zu bestimmen, und somit
die Anzahl der Ersatzabtastwerte, die in den wiederhergestellten
Signalstrom in Echtzeit einzufügen
sind. Die Datierungsinformation kann verwendet werden, um den Empfänger zu
synchronisieren.
-
Die
Synchronisation erfordert gewöhnlich eine
Regelung der Frequenz des lokalen Taktgebers des Empfängers, wofür Kreisläufe benötigt werden, von
denen man sich wünschenswerterweise
lösen kann,
insbesondere wenn die die Pakete empfangende Vorrichtung sie synchron
zu anderen Einheiten weiterüberträgt.
-
Das
Patent US-A-5 623 483 beschreibt einen Paketempfänger, der ein Signal in Echtzeit
enthält, welcher
periodisch ein Paket entfernen oder hinzufügen kann, um Abweichungen des
Taktgebers bezüglich
des Senders zu kompensieren. Ein solches Entfernen oder Einfügen eines
Pakets führt
zu einer erkennbaren Abschwächung
des Signals in Echtzeit.
-
Die
Patentanmeldung EP-A-0 743 773 beschreibt einen Sprachdecodierer,
der Rahmen von codierten Signalen durch eine vorhersagende Methode
(CELP, „codeexcited
linear prediction")
empfängt, um
die Übertragungsrate
zwischen dem Codierer und dem Decodierer zu verringern. In Abhängigkeit von
der Anzahl der in einem Empfangsspeicher angehäuften Rahmen kann der Decodierer
die Verarbeitung des laufenden Rahmens ändern, um Abweichungen des
Taktgebers bezüglich
des Codierers zu kompensieren. Diese Änderung kann darin bestehen,
CELP-Unterrahmen
und sogar Abtastwerte des decodierten Signals zu entfernen oder
hinzuzufügen, Das
Signal in Abhängigkeit
von der Anzahl der im Eingangsspeicher angekommenen Rahmen so zu manipulieren,
sensibilisiert den Decodierer sehr für den Empfangsrhythmus der
Rahmen. Wenn dieser unregelmäßig ist,
was bei Datagrammnetzen des Typs IP oder des analogen Typs häufig der
Fall ist, erzeugt der Decodierer zahlreiche fehlerhafte Verbesserungen,
da sie nicht an einer Frequenzabweichung des Taktgebers liegen.
-
Ziel
der vorliegenden Erfindung ist es, eine effiziente Lösung für den oben
genannten Bedarf zu bereitzustellen.
-
So
schlägt
die Erfindung eine Vorrichtung zum Empfang von Paketen vor, die
jeweils Informationen zu Codierung eines Signals in Echtzeit und
einen Kopf enthalten, der eine Information zur Datierung des Pakets
bezüglich
eines Taktgebers zur Signalabtastung enthält, umfassend:
- – Mittel
zur Speicherung von Abtastwerten;
- – Mittel
zur Verarbeitung von Paketen für
die Speicherung einer Warteschleife von Signalabtastwerten, die
von asynchron empfangenen Paketen erhalten werden, in den Speichermitteln,
wobei die Abtastwerte der Warteschleife entsprechend den in den
Paketen enthaltenen Datierungsinformationen angeordnet werden;
- – Mittel
zur Übertragung
der Abtastwerte für
die Bildung eines synchronen Abtastwertstromes, der das Signal in
Echtzeit darstellt, im Rhythmus eines lokalen Taktgebers, wobei
die Abtastwerte aufeinanderfolgend durch Blöcke aus der Warteschleife übertragen
werden;
- – Regelungsmittel
zur Steuerung/Regelung der Übertragungsmittel,
um die Änderungen
der Anzahl von Abtastwerten der Warteschleife zu begrenzen, indem
Abtastwerte bezüglich
der in der Warteschleife gelesenen Abtastwerte in den synchronen
Strom eingefügt
oder entfernt werden, in Abhängigkeit
von der Entwicklung der während festgelegten
Zeitintervallen bezüglich
des lokalen Taktgebers von den Mitteln zur Verarbeitung der Pakete
in den Speichermitteln gespeicherten Anzahl von Abtastwerten, wobei
die Anzahl der während
der Übertragung
jedes Blocks in die Warteschleife eingefügten oder entfernten Abtastwerte wesentlich
geringer als die Anzahl der Abtastwerte ist, die aus einem Paket
erhalten werden.
-
Mit
den gewöhnlichen
Abtastfrequenzen, wird das Entfernen oder das Hinzufügen eines
Audiosignalabtastwertes fast unhörbar.
Die erfindungsgemäße Vorrichtung
nutzt das aus, um den auf synchrone Weise mit dem lokalen Taktgeber
wiederhergestellten Strom von Abtastwerten zu regeln, ohne die Frequenz
dieses Taktgebers regeln zu müssen. Durch
Beobachtung der Füllung
der Speichermittel mit Abtastwerten geschieht diese Regelung, um
einige Abtastwerte zu entfernen, wenn ein Überschuss an Abtastwerten in
Antwort auf den Paketempfang registriert wird, und um Abtastwerte
hinzuzufügen, wenn
im Gegensatz dazu die Abtastwertespeichermittel dazu neigen, sich
zu leeren. Die Anzahl der gespeicherten Abtastwerte wird nach der
Verarbeitung der empfangenen Pakete beobachtet, was eine Änderung
dieser Verarbeitung verhindert. Dies gestattet es außerdem,
die Regelung in Abhängigkeit
von einer Anzahl von Abtastwerten feiner auszuführen, und nicht in Abhängigkeit
von der Anzahl der empfangenen Pakete, welche aufgrund des asynchronen
Paketempfangs schwankt.
-
Die
Abtastwerte werden bevorzugt isoliert hinzugefügt oder entfernt. Sie könnten jedoch
in kleinen Gruppen hinzugefügt
oder entfernt werden, unter der Bedingung, dass die Größe dieser
Gruppen bezüglich
der Anzahl von Abtastwerten, die aus der Verarbeitung eines Pakets
resultieren, sehr klein ist, damit die Manipulation kaum erkennbar
bleibt.
-
Weitere
Besonderheiten und Vorteile der vorliegenden Erfindung gehen aus
der nachfolgenden Beschreibung von nicht begrenzenden Ausführbeispielen
hervor, mit Bezug auf die beigefügten
Zeichnungen, in denen:
-
1 ein
synoptisches Schema eines Übertragungssystems
mit einer erfindungsgemäßen Empfangsvorrichtung
ist;
-
2 und 3 Ablaufschemata
von Verfahren sind, die von den Empfangsvorrichtungen in 1 angewendet
werden, entweder beim Empfang eines Pakets oder bei der Übertragung
eines Blocks von Abtastwerten aus dem Ausgangsstrom;
-
4 ein
synoptisches Schema eines anderen Übertragungssystems mit einer
erfindungsgemäßen Empfangsvorrichtung
ist.
-
1 zeigt
eine Sendevorrichtung 1 und eine Empfangsvorrichtung 2,
die mittels eines Netzes 3 des IP-Typs in Verbindung stehen.
-
Im
betreffenden Beispiel umfasst der Sender 1 einen Audiocodierer 4,
weicher ein abgestastetes Sprachsignal mit einer Frequenz Fe mit beispielsweise 8 kHz verarbeitet. Die
von dem Codierer 4 verwendete Abtastfrequenz wird durch
Frequenzteilung von einem Quarzoszillator 5 erzeugt, dessen
Nominalfrequenz zum Beispiel 2,048 MHz ist.
-
Im
Beispiel von 1 ist der Sprachcodierer 4 ein
G.711-Codierer, der von der Internationalen Fernmeldeunion (ITU)
genormt wurde. Dieser Codierer liefert in PCM (Pulscodemodulation
oder PCM, Gesetz A oder Gesetz μ)
codierte Abtastwerte in Echtzeit, wobei jeder Abtastwert auf 1 Byte
(Durchflussrate von 64 kbits/s) codiert wird.
-
Der
Ausgangsstrom Φ des
Codierers 4 wird zu einer Schnittstelle 6 des
Sender 1 geliefert, welche die codierten Abtastwerte in
RTP-Pakete einfügt,
die in IP-Datagrammen über das
Netz 3 zum Empfänger 2 gesendet
werden.
-
Herkömmlicherweise
umfasst jedes gesendete Datagramm einen IP-Kopf, gefolgt von einem UDP-Kopf
und einem RTP-Kopf. Der IP-Kopf gibt insbesondere die IP-Adresse
des Senders 1 und die IP-Adresse des Empfängers 2 an.
Der UDP-Kopf gibt eine logische Port-Nummer UDP des Empfängers 1 an,
die dem Codierer 4 zugeordnet ist, und eine Port-Nummer
UDP, die dem Empfänger 2 entspricht. Der
RTP-Kopf enthält
eine Sequenznummer NP des Pakets, die auf 16 Bit codiert ist, und
eine Information TS zur Datierung des Pakets. Die auf 32 Bit codierte Datierungsinformation
TS entspricht dem Rang des ersten Abtastwertes des Pakets im Ausgangsstrom Φ des Codierers 4,
Modulo 232. Nach den Köpfen umfasst
der brauchbare Teil des RTP-Pakets
N PCM-codierte Signalabtastwerte, was N × 125 μs Sprache entspricht.
-
In
der betreffenden nachfolgenden, beispielhaften Ausführungsform
ist die Anzahl N kostant, zum Beispiel N = 40, und der Sender 1 setzt
keinen Ruheentfernungsmechanismus ein (der darin besteht, nicht
oder in geringerer Durchflussmenge zu übertragen, wenn keine Sprachaktivität im vom
Codierer 4 verarbeiteten Sprachsignal erfasst wird). In diesem
besonderen Fall sind die Daten TS und NP redundant, da sie einen
festen Bezug N haben. Folglich ist es gleichwertig, ob der Empfänger 2 auf
der Datierungsinformation TS oder auf der Sequenznummer NP basiert.
-
Der
Empfänger 2 umfasst
auch eine Schnittstelle 8 mit dem IP-Netz 3 zur
Verarbeitung der IP-Datagramme, die vom Sender 1 empfangen
werden, und zur Entnahme der Signalabtastwerte aus ihnen.
-
In
dem in 1 dargestellten Aufbau ist die Schnittstelle 8 mit
dem Bus 9 eines Mikroprozessors 10 verbunden,
mit dem auch ein RAM-Speicher 11 und eine synchrone Vorrichtung 12,
welche einen Abtastwertestrom Φ' erhält, verbunden
sind.
-
Die
synchrone Vorrichtung 12 kann insbesondere ein G.711-Decodierer
sein, der einer Vorrichtung zur Tonwiederherstellung zugeordnet
ist, um die Sprache für
einen Benutzer in Echtzeit wiederherzustellen. Sie kann auch eine
Vorrichtung mit einer Schnittstelle mit einer synchronen Verbindung
sein, zu der die Abtastwerte G.711 zurückgesendet werden.
-
Die
synchrone Vorrichtung 12 wird von einem Quarzoszillator 13 gesteuert,
dessen Oszillationsnominalfrequenz mit der des Oszillators 5 des Senders
identisch sein kann, um die Signalabtastwerte der Frequenz Fe zu berücksichtigen.
Unter Berücksichtigung
der Toleranzen der gewöhnlich
verwendeten Quarze (ungefähr
30 ppm bei der Oszillationsfrequenz) und des Temperaturbereichs,
der sie ausgesetzt werden können,
kann jede Oszillationsfrequenz eine Verschiebung aufweisen, die
bis zu 120 Hz bezüglich
der Nominalfrequenz von 2,048 MHz betragen kann. Die maximale Abweichung
zwischen dem Sender und dem Empfänger
beträgt
also ungefähr
240 Hz / 2,048 MHz, was eine Verschiebung von einem Signalabtastwert
alle ungefähr
8500 Abtastwerte bedeutet. Wenn man ein Anhäufen dieser Verschiebung erlaubt,
werden sich Störungen
im vom Empfänger
wiederhergestellten Signal zeigen. Es werden folglich kompensierende
Maßnahmen vorgesehen.
-
Der
RAM-Speicher dient dazu, eine Warteschleife mit Paketen zu umfassen,
welche asynchron bei der Schnittstelle 8 empfangen werden,
bevor sie synchron zur Vorrichtung 12 übertragen werden. Der Speicher 11 umfasst
L von 0 bis L-1 durchnummerierte Adressen, die jeweils ein Byte
umfassen können. Beispielhaft
sei L = 8000, was die Kapazität
einer Sprechsekunde darstellt.
-
Die
Schnittstelle 8 und die Vorrichtung 12 sind periphere
Einheiten gegenüber
dem Prozessor 10, der sie steuert/regelt, damit sie Zyklen
zum direkten Zugang zum Speicher (DMA, „Direct Memory Access") ausführen, um
Abtastwerte im Speicher 11 zu schreiben beziehungsweise
zu lesen.
-
Der
Prozessor 10 steuert/regelt die Schnittstelle 8,
damit sie DMA-Schreibzyklen im Seicher 11 ausführt, wobei
jeder Zyklus zum Beispiel das Schreiben von L Bytes von der Stelle
0 bis zur Stelle L-1 umfasst. Diese DMA-Zyklen folgen aufeinander,
so dass die Schreibvorgänge
im Speicher 11 kreisförmig erfolgen.
-
Die
Schnittstelle 8 wendet ein Verfahren zum Aufbau der Warteschleife
an, das heißt,
sie bringt die Pakete in die Reihenfolge der Sequenznummern und schreibt
ihre Abtastwerte in den Paketspeicher 11. Wenn Pakete zu
spät empfangen
werden, entfernt sie die Schnittstelle 8. Außerdem werden
die Pakete, die nicht rechtzeitig empfangen werden, durch Ersatzpakete
ersetzt (zum Beispiel Wiederholung des vorhergehenden Pakets oder
Ruhepaket).
-
2 zeigt
ein Beispiel eines solchen Verfahrens, das von der Schnittstelle 8 bei
Empfang eines die Sequenznummer NP tragenden RTP-Pakets ausführbar ist.
In diesem Beispiel umfasst die Schnittstelle 8 einen Pufferspeicher
mit Q Stellen, die jeweils die Daten-Bytes eines Pakets speichern
können,
entsprechend einer Kapazität
von N×Q
Bytes. In den Bezeichnungen in 2:
- – bezeichnet
NS die Sequenznummer des nächsten
im Speicher 11 zu schreibenden Paketes (NS = 0 bei der
Initialisierung)
- – ist
occ(i) ein Bit, das für
0 ≤ i < Q anzeigt, ob das Paket
mit der Sequenznummer NS + 1 angekommen ist (occ(i) = 1) oder nicht
(bei der Initialisierung occ(i) = 0 für 0 ≤ i < Q);
- – enthält Liste(i)
für 0 ≤ i < Q ein Ganzes zwischen 0
und Q-1, bezeichnend eine Stelle des Pufferspeichers, an der die
Abtastwerte des Pakets NS + i gespeichert sind, wenn occ(i) = 1
(bei der Initialisierung Liste(i) = i für 0 ≤ i < Q);
- – ist α ein Ganzes
gleich der Anzahl der beim Warten auf die Übertragung zum Speicher 11 empfangenen
Pakete (bei der Initialisierung α =
0);
- – bezeichnet
TDATA die N Bytes des letzten in den Speicher 11 übertragenen
Pakets, die in einem Register gespeichert werden, um die etwaigen
Ersatzpakete zu bilden (bei der Initialisierung können Null-Bytes
in TDATA genommen werden, was einem Ruhepaket entspricht);
- – bezeichnet
q eine im Pufferspeicher verfügbare Stelle
zum Schreiben der N Bytes des nächsten empfangenen
Pakets (bei der Initialisierung q = 0).
-
Beim
Empfang des NP-Paketes werden die N Daten-Bytes des Pakets an die
Stelle Q des Pufferspeichers geschrieben, und die Variable δ soll gleich dem
Abstand NP-NS zwischen der Sequenznummer des empfangenen Pakets
und der Sequenznummer des nächsten
zu übertragenden
Pakets sein (Schritt 20 in 2).
-
Wenn δ < 0 (Test 21),
wird das Paket zu spät empfangen,
um in den Speicher 11 übertragen
zu werden, so dass es entfernt wird. Das Verfahren in 2 wird
dann beendet, wenn wieder auf den Empfang des nächsten Pakets gewartet wird,
welches über
das von der Stelle q entfernte Paket geschrieben wird.
-
Das
Paket kann berücksichtigt
werden, wenn im Test 21 δ ≤ 0 ist. Das
Ganze α wird
dann in Schritt 22 um eine Einheit erhöht.
-
Wenn δ < Q (Test 23),
erhalten die Variablen occ(δ)
und Liste(δ)
in Schritt 24 die Werte 1 beziehungsweise q, um die Stelle
des Pakets NS + δ zu festzulegen.
Nach dem Schritt 24 wird die Variable α in Schritt 25 mit
Q verglichen. Wenn α < Q, ist der Pufferspeicher
nicht gesättigt,
so dass kein Paket zum Speicher 11 übertragen wird. In diesem Fall
geht das Verfahren mit den Schritten 26 bis 28 weiter,
um den Wert des Markierers q zu ändern.
Diese Schritte 26 bis 28, die das Verfahren des
Verfahrens 2 beenden, bestehen einfach darin, für den Markierer
q einen Wert Liste (i) wie 0 ≤ i < Q und occ(i) =
0 zu wählen.
-
Wenn
im Test 23 δ ≥ Q oder wenn
im Test 25 α ≥ Q ist, überträgt die Schnittstelle 8 ein
oder mehrere Pakete zum Speicher 11. Im Beispiel in 2 geschieht
dies in einer Schleife 30 – 37, initialisiert durch
i = 0 in Schritt 30.
-
Wenn
das Paket des Rangs NP – δ + i empfangen
wurde (occ(i) = 1 in Test 31), werden die N Bytes dieses
Pakets an der Stelle Liste(i) gelesen, in Schritt 32 in
das Register TDATA geladen und dann in Schritt 33 im DMA-Modus
zum Speicher 11 übertragen.
Außerdem
wird das Bit occ(i) auf 0 gebracht, und das Ganze α wird um
eine Einheit verkleinert.
-
Wenn
das Paket des Rangs NP – δ + i nicht empfangen
wurde (occ(i) = 0 in Test 31), wird in Schritt 34 ein
den N Bytes des Registers TDATA entsprechendes Ersatzpaket zum Speicher 11 übertragen,
und das Ganze α wird
um eine Einheit verkleinert, ohne den unteren Schwellenwert α = 1 zu unterschreiten.
Die N TDATA-Bytes werden anschließend in Schritt 35 auf
Null gebracht. Mit dieser Methode entspricht das Ersatzpaket des
Ranges NS der Wiederholung des Pakets NS-1, wenn dieses korrekt empfangen
wurde, und andernfalls einem Ruhepaket.
-
Nach
Schritt 33 oder 35 wird die Sequenznummer NS in
Schritt 36 um eine Einheit erhöht, und der Index i wird ebenfalls
erhöht,
Modulo Q. Wenn am Ende von Schritt 36 NP > NS + Q – 1 ist
(Test 37), kommt das Verfahren zurück auf Schritt 31,
um ein weiteres Paket zum Speicher 11 zu übertragen.
Andernfalls wird eine Verschiebung der Felder Liste und occ vorgenommen,
um sie in einer Schleife 38 – 41 zu aktualisieren.
Bei der Initialisierung 38 dieser Schleife ist j = 0 und
der Index i behält
den Wert, den er am Ende der letzten Iteration der Schleife 30 – 37 hatte.
In Schritt 39 werden die Werte Liste(i) und occ(i) in Liste(j)
und occ(j) übertragen.
Wenn j < Q – 1 (Test 40),
besteht der folgende Schritt 41 darin, j um eine Einheit
zu erhöhen,
sowie auch i Modulo Q. Wenn in Test 40 j = Q – 1, ist
das Verschieben der Felder Liste und occ beendet, und δ wird in
Schritt 42 mit Q verglichen. Wenn δ < 0, wird die sich an den Empfang des
NP-Pakets anschließende
Verarbeitung durch die Aktualisierung des Markierers q in den vorgenannten
Schritten 26 bis 28 beendet. Wenn δ ≥ Q, geht dieser
Aktualisierung des Markierers q in Schritt 43 das Schreiben
der Werte 1 beziehungsweise q in den Variablen occ(Q-1) und Liste(Q-1)
voraus.
-
Das
Lesen der Signalabtastwerte im Speicher 11, das den Signalstrom Φ' bildet, wird ebenfalls bei
den DMA-Übertragungszyklen
ausgeführt,
welche durch die synchrone Vorrichtung 12 unter der Kontrolle
des Prozessors ausgeführt
werden. Während
jedes Zyklus überträgt die Vorrichtung 12 einen Block
mit M Bytes, die im Speicher 11 mit seiner Abtastwerte-Durchgangsrate
gelesen werden, welche von der Oszillationsfrequenz des Quarz 13 abgeleitet wird.
Der Adresslesezähler
wird bei jedem gelesenen Abtastwert um eine Einheit (Modulo L) erhöht, so dass
der Speicher 11 ebenfalls mit einer zirkulären Addressierung
gelesen wird. Am Ende der DMA-Übertragung
jedes Blocks schickt die Vorrichtung 12 ein Unterbrechungssignal
zum Prozessor 10. Auf dieses Signal hin initialisiert der
Prozessor 10 den nächsten
DMA-Übertragungszyklus
und liefert der Vorrichtung 12 die entsprechenden Befehle.
-
Das
vom Prozessor 10 verwendete Verfahren zur Steuerung/Regelung
der DMA-Übertragungszyklen
kann dem in 3 dargestellten entsprechen. Bei
den Bezeichnungen in 3:
- – bezeichnet
NS0 die Anzahl der Pakete, die, sobald sie
in den Speicher 11 geschrieben sind, den Beginn der Übertragung
der Abtastwerte zur synchronen Vorrichtung 12 auslösen;
- – ist
P ein Markierer, der die Adresse des Beginns der durch die synchrone
Vorrichtung 12 unter Kontrolle des Prozessors 10 durchgeführten DMA-Übertragung bezeichnet;
- – bezeichnet
M die Byteanzahl eines Blocks von Abtastwerten, der während eines
DMA-Zyklus durch die Vorrichtung 12 übertragen wird;
- – bezeichnet
t die Anzahl der Bytes, die bis zu dem Moment im Speicher 11 gespeichert
wurden, an dem der Prozessor 10 einen DMA-Übertragungszyklus
zur synchronen Vorrichtung 12 initialisert;
- – ist Δ ein Ganzes,
das den einzuholenden Abstand zwischen der Anzahl der im Speicher 11 geschriebenen
und gelesenen Abtastwerte misst: wenn Δ > 0, gibt es einen Überschuss an Abtastwerten im
Speicher 11 bezüglich
derer, die im Strom Φ' übertragen wurden, und wenn Δ < 0, gibt es eher
ein Defizit an im Speicher 11 gespeicherten Abtastwerten.
-
Das
in 3 dargestellte Verfahren wird gestartet, wenn
NS0 Pakete im Speicher 11 geschrieben wurden
(Test 50), was der Prozessor 10 nachprüfen kann,
indem er den laufenden Wert der Variable NS des Verfahrens nach 2 abruft,
oder mit Bezug auf die laufende Schreibadresse im Speicher 11 durch
die Schnittstelle 8. Die Variablen P und Δ werden dann
in Schritt 51 mit 0 initialisiert.
-
In
Schritt 52 regelt/steuert der Prozessor 10 durch
die synchrone Vorrichtung 12 einen Lesezyklus im DMA-Modus,
damit ein Block mit M Bytes von der Adresse P Modulo L in den Strom Φ' übertragen wird. Im folgenden
Schritt 53 wird der Adressmarkierer P um M Einheiten, Modulo
L, erhöht,
und die Variable t erhält
den Wert N.NS entsprechend der Adresse des nächten Bytes im Speicher 11,
welches von der Schnittstelle 8 geschrieben wird. Dieser Schritt 53 beendet
die durch den Prozessor 10 ausgeführte Verarbeitung bezüglich des
laufenden Blocks des Stroms Φ'.
-
Der
Prozessor 10 wartet dann auf den Empfang des Unterbrechungssignals,
durch welches ihm die synchrone Vorrichtung 12 anzeigt,
dass sie die Übertragung
des laufenden Blocks beendet hat (Schritt 54).
-
Bei
Empfang dieses Unterbrechungssignals bestimmt der Prozessor 10 in
Schritt 56 die Anzahl der Bytes, die die Schnittstelle 8 während des
Lesens des letzten Blocks mit M Abtastwerten (darin eingeschlossen
die Ersatzpakete) in den Speicher 11 geschrieben hat. Diese
Anzahl d ist gleich N.NS-t mit dem neuen laufenden Wert der Sequenznummer
NS (oder mit der neuen DMA-Zugangsadresse durch die Schnittstelle 8,
gleich N.NS). In Schritt 57 wird der Abstand Δ aktualisiert,
indem ihm die Menge d-M hinzugefügt
wird, welche das Wachstum (oder die Verkleinerung, wenn d – M < 0) der Warteschleife
während
der Übertragung
des vorhergehenden Blocks darstellt.
-
Wenn
der neue Wert von Δ geringer
als ein negativer Schwellenwert oder Null -Δmax (Test 58) ist,
wird der Markierer des Beginns der DMA-Übertragung aus dem Speicher 11 um
Z Bytes zurückgesetzt,
das heißt,
dass die Anzahl P um Z Einheiten Modulo L verringert wird, und der
Abstand Δ in
Schritt 59 um Z Einheiten erhöht wird. Wenn der neue Wert von Δ größer als
der Schwellenwert + Δmax
ist (Test 60), wird der Markierer des Beginns der DMA-Übertragung
aus dem Speicher 11 um Z Bytes vorgerückt, das heißt, dass
die Anzahl P um Z Einheiten Modulo L erhöht wird, und der Abstand Δ in Schritt 61 um
Z Einheiten verringert wird. Wenn entweder nach Schritt 59 oder 61 –Δmax ≤ Δ ≤ Δmax, führt der
Prozessor den vorgenannten Schritt 52 aus, um die DMA-Übertragung eines Blocks mit
M Bytes von der Adresse P Modulo L zu regeln/steuern. Der Schwellenwert Δmax kann
Null sein.
-
Wenn
der Sende-Taktgeber und der Empfangs-Taktgeber synchron sind und
wenn die RTP-Pakete mit einer zeitlichen Verzerrung empfangen werden,
die kleiner als der Pufferbereich der Schnittstelle 8 ist,
bleibt der Abstand Δ immer
Null, und die Bildung des synchronen Stroms Φ' ergibt sich aus den aufeinanderfolgenden
DMA-Übertragungen von
Blöcken
mit M Bytes von gleichmäßig beabstandeten
Adressen.
-
Wenn
es zwischen den Sende- und Empfangs-Taktgebern Abweichungen gibt,
gibt es DMA-Übertragungszyklen,
an deren Ausgang Δ < -Δmax oder Δ > Δmax.
-
Wenn Δ < –Δmax (nicht
ausreichend Pakete empfangen in Bezug auf die Durchsatzrate des Stroms Φ'), werden die Z letzten
Abtastwerte am Beginn des folgenden Bocks wiederholt, was schwer hörbar sein
wird, wenn Z eine kleine Anzahl ist.
-
Wenn Δ > +Δmax, neigt der Speicher 11 dazu,
sich schneller zu füllen,
als er sich leert, und die Verschiebung des Markierers P in Schritt 61 führt zur Entfernung
von Z Abtastwerten im Strom Φ', um diese Abweichung
zu kompensieren.
-
In
der bevorzugten Ausführungsform
nimmt man Z = 1.
-
Mann
kann M = L nehmen, wobei die DMA-Übertragung durch die Vorrichtung 12 dann
darin besteht, den kompletten Speicher 11 zu lesen. Es ist
anzufügen,
dass die Anzahl M nicht unbedingt konstant ist. Man könnte beispielsweise
M = L + Z nehmen, wenn Δ > Δmax. In diesem letzten Fall
befinden sich die Z kopierten oder entfernten Abtastwerte am Beginn
des nächsten übertragenen
Blocks, wenn der Markierer P wie in 3 angegeben
geführt
wird, oder am Ende dieses Blocks, wenn systematisch P = 0 genommen
wird.
-
Die
vorhergehende Ausführungsform
basiert auf Paketen mit konstanter Größe (N Bytes) ohne Ruheunterdrückungsmechanismus.
In diesem Fall ist die Datierungsinformation in jedem RTP-Paket
mit der NP-Sequenznummer redundant (da TS = N.NP), was erklärt, dass
allein NP im oben beschriebenen Beispiel berücksichtig wurde. Wenn die Größe der Pakete
variabel ist und/oder wenn vom Sender ein Ruheunterdrückungsmechanismus
verwendet wird, werden die Adressen zum Schreiben im Speicher 11 durch
die Schnittstelle 8 und somit die gemessenen Differenzen
d zur Regelung des Stroms Φ' auf Basis der TS-Informationen
bestimmt, die aus den empfangenen Paketen erhalten werden.
-
In
der in 4 dargestellten Ausführungsvariante besteht das
in den RTP-Paketen enthaltene numerische Signal nicht direkt aus
Signalabtastwerten in Echtzeit, sondern stellt Rahmen codierter
Signale dar, welche von einem Vocoder erzeugt werden. Diese Rahmen
können
von einem von der ITU genormten Vocoder hergestellt werden, im dargestellten
Beispiel G.729 (oder auch G.723 etc). Der Codierer 4' des Senders 1 verfügt über Signalabtastwerte in
Echtzeit, welche auf synchrone Weise mit einem Abtastwerte-Taktgeber
numerisiert werden, welcher durch Teilung der Oszillationsfrequenz
des Quarz 5 erhalten wird, und wandelt sie in codierte
Rahmen um, die mit diesem Taktgeber synchron sind. Die Numerisierung
des Signals kann im Bereich des Senders mit einem Taktgeber stattgefunden
haben, der vom Oszillator 5 herausgegeben wird (Fall, in
dem der Sender 1 zum Beispiel ein Fernsprechterminal ist),
oder sie kann von einem entfernten Konverter ausgeführt werden,
wobei die Abtastwerte-Taktgeber des Konverters oder des Codierers 4' synchonisiert sind
(Fall, in dem der Sender 1 zum Beispiel eine Schnittstelle
zwischen einem IP-Netz und einer synchronen numerischen Verbindung
bildet).
-
Im
Bereich der Empfangsvorrichtung 2 überträgt die IP-Schnittstelle 8 den
brauchbaren Teil der RTP-Pakete auf dieselbe Weise wie vorher in
einen Speicher 11A, der die codierten Rahmen enthält. Abhängig vom
Füllstatus
dieses Speichers 11A steuert/regelt der Prozessor die Decodierung
der gespeicherten Rahmen, um die Signalabtastwerte in Echtzeit wiederherzustellen,
die in einen anderen Speicher 11B übertragen wurden. Diese Decodierung
geschieht auf asynchrone Weise durch den Prozessor 10 selbst
oder durch einen peripheren Decodierer G.729 15, der mit dem Bus 9 verbunden
ist. Die synchrone Vorrichtung 12 kann dann die Signalabtastwerte
im Speicher 11B auf die gleiche Weise wie vorher lesen.
Besser als einfach kopiert zu werden, können die Ersatzrahmen auf an
sich bekannte Weise durch eine Interpolation der Parameter des Vokoders bestimmt
werden, welche durch den Decodierer ausgeführt wird.
-
Der
vorher beschriebene Regelungsprozess ist rein logischer Art, wodurch
ein spezieller Kreislauf zur Regelung der Frequenz des Oszillators 13 der synchronen
Vorrichtung 12 vermieden wird. Die Regelung des Stroms Φ', die zeitliche Abweichungen
in Bezug auf den im Bereich des Senders 1 gebildeten Stromes Φ' vermeidet, resultiert
auf einer Messung der Menge an Signalen (darin eingeschlossen die
Ersatzpakete), die während
Zeitintervallen empfangen werden, die bezüglich des vom Oszillator 12 erzeugten
lokalen Taktgebers festgelegt werden. Jedes dieser Zeitintervalle
entspricht der DMA-Übertragung
eines Blocks zur Vorrichtung 12.
-
Als
Variation könnte
jedes dieser Zeitintervalle der DMA-Übertragung einer bestimmten
Anzahl K von Blöcken
entsprechen, was es gestattet, Schwankungen der Anzahl d von Abtastwerten
auszugleichen, welche während
der bezüglich
des lokalen Taktgebers festgelegten Zeitintervalle von der Schnittstelle 8 im
Speicher 11 gespeichert werden, welche Zeitintervalle am
unregelmäßigen Empfangscharakter
der IP-Datagramme liegen (im vorhergehenden Beispiel K = 1).