-
GEBIET DER ERFINDUNG
-
Diese
Erfindung betrifft die Audiocodierung und ist insbesondere im Gebiet
der Telekommunikation und des Internets anwendbar, beispielsweise
bei welchem mehrwegige Sprachcodierer unter Verwendung einer einzigen
digitalen Signalprozessor- (DSP) Vorrichtung implementiert werden.
-
HINTERGRUND
-
Wegen
dem rechnerisch kostspieligen Wesen des Codierens und Decodierens
eines Echtzeittons, wurden üblicherweise
Audiocodierer/-decodierer ("Codecs") durch spezialisierte,
integrierte Schaltkreischips implementiert. WO 99/10807 offenbart
z. B. wie vielseitig eine Software verwendet werden kann, um eine
Vielzahl an virtuellen Modems zu implementierten, welche gleichzeitig
verwendet werden können.
Völlig
selbständig
arbeitende Softwaremodems arbeiten vielseitig mit einer einzigen
Codeliste. Zwei Softwaremodule bilden mit der DSP-Hardware die Schnittstelle.
Die Modemsteuerschicht verarbeitet DSP-Petriebsarten, schafft und zerstört Modemverbindungen
und überwacht
die Modemtätigkeit.
Die Leitung Ein/Ausgabe-Schicht ist für das Übertragen von Daten zum und
vom DSP verantwortlich. Eine Alternative ist, die Audiocodecfunktionen
in der Software (Firmware, Mikrocode, etc.) für den Betrieb auf einem universelleren
digitalen Signalprozessor ("DSP") zu liefern. Mit
dem Einsatz eines leistungsfähigeren
digitalen Signalprozessors, ist es möglich, dass mehr als ein Codec
unter Verwendung eines einzigen DSP-Chips schritthaltend implementiert werden
kann. Beispielsweise kann es für
einen leistungsfähigen
DSP möglich
sein, eine Vielzahl an unterschiedlichen Audiosignalen oder Kanä len in Echtzeit
zu verarbeiten, um dadurch eine Vielzahl an Sprachverschlüsselungsgeräten ("Vocoder") unter Verwendung
einer einzigen Verarbeitungsvorrichtung zu implementieren.
-
ZUSAMMEMASSUNG DER ERFINDUNG
-
Nach
der vorliegenden Erfindung ist ein Verfahren zum Implementieren
einer Vielzahl an Codierern und/oder Decodierern (Codecs) geliefert,
welches eine einzige digitale Signalprozessor- (DSP) Vorrichtung
anwendet, wobei die Funktion jedes Codecs durch den DSP nach einem
Operationscodeprogramm ausgeführt wird,
wobei das Verfahren folgende Schritte umfasst:
Schaffen eines
Operationscodeprogramms, welches in einem ersten Speicher zur Steuerung
des DSP als Codec zu funktionieren gespeichert ist;
Schaffen
eines zweiten Speichers, welcher eine Vielzahl an Speichersegmenten
umfasst;
Implementieren einer Vielzahl an Codecs mittels des
DSP durch das mehrmalige Ausführen
des Operationscodeprogramms im ersten Speicher und in ablaufinvarianten
Vorgängen,
wobei jeder Codecvorgang mit Zugang zu einem entsprechenden separaten
Speichersegment im zweiten Speicher zum Speichern von Daten versehen
ist, welche beim Encodieren/Decodieren eines entsprechenden separaten
Datenstroms verwendet werden.
-
Die
vorliegende Erfindung liefert auch eine Datencodier- und/oder Decodieranlage,
in welcher eine Vielzahl an Codierern bzw. Encodierern und/oder
Decodierern (Codecs) mittels einer einzigen digitalen Signalprozessor-
(DSP) Vorrichtung implementiert sind, welche folgendes umfasst:
einen
digitalen Signalprozessor (DSP);
einen ersten an den DSP gekoppelten
Speicher, welcher ein Operationscodeprogramm enthält, wobei
die Funktion jedes Codecs durch den DSP bei Betrieb nach dem Operationscodeprogramm
ausgeführt
wird;
einen zweiten an den DSP gekoppelten Speicher, welcher
unterteilt ist, um eine Vielzahl an separaten Speichersegmenten
zu umfassen;
wobei eine Vielzahl an Codecs mittels des DSP
durch das mehrmalige Ausführen
des Operationscodeprogramms im ersten Speicher und in ablaufinvarianten
Vorgängen
implementiert ist, wobei jeder Codecvorgang mit Zugang zu einem
entsprechenden separaten Speichersegment im zweiten Speicher zum
Speichern von Daten versehen ist, welche beim Encodieren/Decodieren
entsprechender separater Datenströme verwendet werden.
-
Vorzugsweise
ist auch ein dritter Speicher vorgesehen, welcher durch jeden Codecvorgang
für geteiltes
Speichern temporärer
Variablen und Datenpufferung beim Encodieren/Decodieren der entsprechenden
separaten Datenströme
zugänglich
ist.
-
Jeder
Codecvorgang greift vorzugsweise auf das entsprechende Speichersegment
mittels indirekter Adressierung zu, welche auf mindestens einem
Indexregister basiert, wobei mindestens ein Indexregister für jeden
Codecvorgang eingestellt ist, um die Adressierung von Variablen
für diesen
Codecvorgang an das entsprechende Speichersegment zu ändern.
-
In
einer bevorzugten Form der Erfindung, ist die Vielzahl an Speichersegmenten
im zweiten Speicher benachbart und das zumindest eine Indexregister
ist für
jeden Codecvorgang nach einer Distanzadresse eingestellt, welche
auf dem Unterschied von Adressen aus einem ersten der Speichersegmente
zu einem Speichersegment basiert, welches diesem Codecvorgang ent spricht.
Vorzugsweise weisen alle Speichersegmente im zweiten Speicher die
gleiche Größe auf.
-
In
einer Form der Erfindung, ist der erste Speicher mit einer Vielzahl
an Operationscodeprogrammen zum Implementieren verschiedener Codecarten
versehen, wobei unterschiedliche Codecvorgänge aus den verschiedenen Codecarten
ausgewählt
werden können.
Dann weisen vorzugsweise alle Speichersegmente im zweiten Speicher
die gleiche Größe auf und
die Speichersegmentgröße wird
nach dem durch irgendeinen der Vielzahl an unterschiedlichen Codecarten
benötigten
Maximalspeicher ausgewählt.
-
Diese
Methodenlehre kann verwendet werden, um den bestehenden Code des
DSP-Aufbaus zu verändern
oder einen neuen Algorithmus mit einem mehrfachen Vorgangsmerkmal
zu implementieren. Die Mehrfachinstanz- bzw. Mehrfachvorgangsimplementierung
kann. verwendet werden, um Mehrkanalsignale unter Verwendung eines
Softwaremoduls zu verarbeiten.
-
KURZE BESCHREIBUNG DER
ZEICHNUNGEN
-
Im
Folgenden wird die Erfindung nur mittels eines Beispiels mit Bezug
auf die bevorzugten Ausführungsformen
derselben und den beiliegenden Zeichnungen detaillierter erklärt werden,
in welchen:
-
1 ein Blockdiagramm einer
einfachen Audioencodierungsanlage ist, welche einen DSP anwendet;
-
2 ein Blockdiagramm einer
Datenspeicherstruktur für
eine erste Ausführungsform
der vorliegenden Erfindung ist; und
-
3 ein Blockdiagramm einer
Datenspeicherstruktur für
eine zweite Ausführungsform
der Erfindung ist, welche eine Vielzahl an verschiedenen Codecarten anwendet.
-
DETAILLIERTE BESCHREIBUNG
DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
-
Die
im Folgenden beschriebenen Ausführungsformen
der Erfindung sind im Zusammenhang mit Audiocodierern durch die
Operationscodes in der Form von Software, Formware oder Mikrocode
implementiert, welche auf einem universellen digitalen Signalprozessorchip
arbeiten. Die beschriebenen Ausführungsformen betreffen
insbesondere die Implementierung von Sprachcodecs der Art, welche
Gegenstand der ITU-T Empfehlung G.729 ist. Es wird jedoch denjenigen
mit gewöhnlichen
technischen Fähigkeiten
bewusst sein, dass die vorliegende Erfindung nicht notwendigerweise
auf solch eine Umgebung begrenzt ist und weiter verwendet werden
kann, um Codierer für
andere Formen von Echtzeit-Datenströmen zu implementieren, welche
andere Formen von Sprachübertragung
und/oder Faksimileübertragung
oder Speichercodieren enthalten.
-
Eine
einfache Audioencodieranlage 10, welche auf einem Universal-DSP
basiert, ist in Form eines Blockdiagramms in 1 veranschaulicht. Die Audiocodieranlage 10 umfasst
einen digitalen Signalprozessor (DSP) 12, welcher gekoppelt
ist, um Eingabedaten zu empfangen und codierte Ausgabesignale zu
erzeugen. Der DSP 10 ist an einen Massenspeicher 14 gekoppelt.
Der Speicher 14 versorgt den DSP 12 mit Daten,
um zu ermöglichen,
dass das Codieren der empfangenen Eingabedaten stattfindet. Der
Speicher 14 kann mehrere verschieden Formen von Daten enthalten,
einschließlich
dauerhaft im Speicher gespeicherten Nur-Lese-Daten und temporären Daten,
welche vorübergehend
während
Codierbetrieben gespeichert werden. Der Speicher 14 kann
auch gespeicherte Operationscodes enthalten, welche vom DSP verwendet
werden, um das Codieren auszuführen,
welches normalerweise permanent in der Nur-Lese-Form im Speicher
gespeichert werden würde.
-
Eine
der Überlegungen,
mit welcher man sich beim Implemen tieren von Mehrfachcodecs auf
einen einzigen DSP durch das Betreiben. von Mehrfachvorgängen der
DSP-Operationscodes, welche die Codecoperation steuern, befassen
muss ist, die Anordnung des Massenspeichers, so dass jeder Vorgang
des Codec eine effiziente Verwendung des Speichers aufweisen kann
und nicht andere Codecvorgänge
stört,
welche gleichzeitig verwendet werden. Nach einer Ausführungsform
der vorliegenden Erfindung wird dies durch das Anordnen des Datenspeichers
erreicht, wie im Blockdiagramm der 2 veranschaulicht.
Diese beispielhafte Ausführungsform
betrifft die Implementierung eines Mehrfachvorgangsvocoders mit
4 Kanälen
auf einen einzigen DSP. Wie in 2 gezeigt,
ist der Datenspeicher in unterschiedliche Teile aufgeteilt, welche
in diesem Fall einen Festwertspeicher (ROM), einen lokalen RAM und
einen statischen RAM umfassen. Der ROM wird verwendet, um alle Nur-Lese-Daten
zu speichern, welche die Programmoperationscodes und ähnliches
enthalten können.
Der lokale RAM wird zum Speichern der temporären Variablen und zum Datenpufferbetrieb
verwendet. Der statische RAM wird andererseits zum Speichern aller
globalen und historischen Variablen verwendet, welche für die Codieroperationen
benötigt
werden, beispielsweise Daten, welche zum Verarbeiten des nächsten Rahmens
der Ausgabe verwendet werden. Wie im Blockdiagramm gezeigt, ist
in diesem Fall der statische RAM in separate Bereiche für jeden
DSP-Codecvorgang aufgeteilt. Folglich ist der statische RAMi für die
Verwendung nur durch den ith – Codierer
(i = 1, 2, 3, 4) eingeschränkt,
während
der Daten-ROM und
der lokale ROM von allen vier Kanälen geteilt wird.
-
Die
bevorzugte Form der vorliegenden Erfindung umfasst die Aufteilung
des Datenspeichers basierend auf ihren Eigenschaften und mittels
eines Indexregisters oder eines Indexmodifizierers, um die Adresse der
statischen RAM-Segmentdaten
zu ändern,
welche für
jeden Codecvorgang verwendet werden. Der Programmcodespeicher kann
wie üblich
angeordnet werden. Wenn jedoch der Programmspeicher zum Zugreifen auf
Daten verwendet wird, muss dieser Teil des Speichers auch auf die
gleiche Weise aufgeteilt werden, wie der Datenspeicher, wie z. B.
X oder Y. Diese Methodenlehre lässt
eine leichte Handhabung des Betriebssystems oder Echtzeit-Kernroutinen
aufgrund der Leichtigkeit des Öffnens
und Schließens
der verschiedenen Vorgänge
zu.
-
Zuerst
wird die Aufteilung des Datenspeichers nach seiner Zugriffseigenschaft
erhalten, beispielsweise in der in 2 gezeigten
Ausführungsform,
welche ROM-Daten, temporäre,
lokale RAM- und statische oder globale RAM-Segmente umfasst. Der
Daten-ROM und der temporäre,
lokale RAM werden für
jeden Vorgang geteilt. Nur die statischen RAM-Segmente werden ausschließlich durch
entsprechende Codecvorgänge
verwendet. Auf dieses statische RAM-Segment wird unter Verwendung
eines Indexregisters durch das Hinzufügen eines Distanzwertes zur
Adresse des statischen RAM-Segments für einen besonderen Vorgang
zugegriffen. Dies ist die Basis des Verfahrens zum Implementieren
eines neuen Algorithmus für
Mehrfachcodecvorgänge
auf einen einzigen DSP. Mittels dieses Verfahrens, welches unten
detaillierter beschrieben ist, können bestehende
DSP-Programmoperationen relativ leicht geändert werden, um Mehrfachcodecvorgänge zu betreiben.
-
Wenn
bestehende DSP-Codes für
Mehrfachvorgansoperationen geändert
werden, ist es nicht notwendig alle bestehenden Namen der Variablen
unter Verwendung der Anordnung des Datenspeichers mit wie oben beschriebenen
Aufteilungen zu ändern.
Für den
Zugriff auf den Speicher der Festdaten ist es nur notwendig, die
bestehende Adressierbetriebsart zu ändern, um ein indirektes Adressierschema
zu erhalten, welches das Index- und Adressregister verwendet. Ein
Beispiel wird in der Tabelle unten gezeigt, welches einen von STMicroelectronics
hergestellten DSP D950 verwendet. Für andere DSPs kann eine ähnliche
Möglichkeit
eingesetzt werden. In der Tabelle ist ax0 eines der Adressregister
und sind ix1 und ix2 Indexregister.
-
-
Um
die Adressierinformation an jeden Kanalvocoder zu übermitteln
sollten zwei Indexregister für
diesen ablaufinvarianten Zweck reserviert werden, nämlich IX2
und IY2, wenn ein DSP D950 verwendet wird. Dadurch wird die Adresse
aller statischen Variablen, welche in den entsprechenden statischen
RAM-Segmenten gespeichert sind, durch diese zwei Indexregister von
Anfang an geändert.
-
Es
gibt zwei Verfahren, durch welche von den statischen RAMs auf gespeicherte
Daten zugegriffen werden kann. Eines ist das direkte Adressieren
und das andere das indirekte Adressieren. Für ablaufinvariante Implementierungen
muss jedoch ein Zugriff zum statischen RAM durch indirektes Adressieren
bestehen. Um das ablaufinvariante Merkmal zu erreichen und Mehrfachvorgangscodecs
durchzuführen,
sollten die bestehenden Operationscodecs für den DSP folglich unter Verwendung
des Indexregisters geändert
werden, was als Beispiel in der Tabelle oben angezeigt ist.
-
Wenn
die Adressieroperationscodes entsprechend geändert wer den und der Datenspeicher
wie in 2 gezeigt angeordnet
ist, kann eine Mehrfachvorgangsanlage mit 4 Kanälen wie folgt arbeiten,
Wiederhole
folgende Codes
/*erster Vorgang*/
Ix2=#Distanzadressex1
Iy2=#Disttnzadressey1
Rufe
Codierer
/*zweiter Vorgang*/
Ix2=#Distanzadressex2
Iy2=#Distanzadressey2
Rufe
Codierer
/*dritter Vorgang*/
Ix2=#Distanzadressex3
Iy2=#Distanzadressey3
Rufe
Codierer
/*vierter Vorgang*/
Ix2=#Distanzadressex4
Iy2=#Distanzadressey4
Rufe
Codierer
wobei Distanzadressex1=Distanzadressey1=0, Distanzadressei=Adressexi-Adressex1, Distanzadresseyi=Adressey1-Adressey1 für i = 1,
2, 3. Die Adresse xi gleicht nicht notwendigerweise
der Adresse yi Ein Beispiel einer Größe eines
statischen RAMs ist ca. 1560 Wörter
im X-Speicher und 256 Wörter
im Y-Speicher für einen
Codec, welcher nach ITU-T G.729 arbeitet. Die Größe des statischen RAMs wäre üblicherweise
für jeden
Vorgang des Vocoders G.729 die gleiche.
-
Dies
ist für
eine neue Implementierung oder zum Umwandeln einer bestehenden DSP-Operationscodierung
zu einer ablaufinvarianten Mehrfachvorgangsimplementierung. Da dieses
Verfahren keine Veränderung
der Namen der Variable in der DSP-Codierung benötigt, ist es im Vergleich zu
Zeigern sowohl bei MIPS als auch dem Anschlussaufwand effizient.
-
Wenn
es in einer Anlage mehr als eine Art von Sprachcodec gibt, kann
das hierin beschriebene Verfahren immer noch angewandt werden. Für eine Anlage,
welche eine Vielzahl an verschiedenen Codecs verwendet, kann der
Speicher wie in 3 veranschaulicht
angeordnet werden, für
welchen die Mehrfachvorgangs-Zugriffsverfahren unten beschrieben
werden.
-
In 3 wird das Speicherabbild
für eine
Anlage mit 4 Kanälen
gezeigt, bei welcher die 4 aktiven Kanäle jede mögliche Kombination von Codecs
sein könnten,
welche nach ITU-T G729, G723,1 und FAX operieren. In diesem Fall
umfasst die Größe des ROM-Segments
ROM-Daten für
alle Codecarten. Die Größe des temporären, lokalen
RAM-Segments ist die Maximalgröße des lokalen
RAMs, welche von jedem der Codecs verwendet wird. Alle verschiedenen
Codecs teilen das lokale RAM-Segment. Ähnlich weisen
alle statischen RAM-Segmente eine Größe auf, um die den Rahmen verarbeitenden
Speicherplatzbedürfnisse
irgendeiner der möglichen
Codecsimplementierungen unterzubringen. Die ermöglicht unterschiedliche Codecs,
um unterschiedliche statische RAM-Segmente zu verwenden.
-
Ein
Beispiel ist eine Anlage mit 4 Kanälen und zwei unterschiedlichen
Sprachcodecs, nämlich
G723,1 und G729. Die Programmoperationscodes sind in diesem Beispiel
separat in einem Programmspeicher (nicht gezeigt) gespeichert. Der
Datenspeicher ist wie in 3 gezeigt
angeordnet. Solch eine Mehrfachvorgangsanlage mit 4 Kanälen kann
wie folgt arbeiten,
Wiederhole folgende Codes
/*erster
Vorgang*/
Ix2=#Distanzadressex1
Iy2=#Distanzadressey1
Wenn (Codecmerker1==CODEC1)
Rufe
Codierer1
Andernfalls
Rufe Codierer2
/*zweiter Vorgang*/
Ix2=#Distanzadressex2
Iy2=#Distanzadressey2
Wenn
(Codecmerker2==CODEC1)
Rufe Codierer1
Andernfalls
Rufe
Codierer2
/*dritter Vorgang*/
Ix2=#Distanzadressex3
Iy2=#Distanzadressey3
Wenn
(Codecmerker3==CODEC1)
Rufe Codierer1
Andernfalls
Rufe
Codierer2
/*vierter Vorgang*/
Ix2=#Distanzadressex4
Iy2=#Distanzadressey4
Wenn
(Codecmerker4==CODEC1)
Rufe Codierer1
Andernfalls
Rufe
Codierer2
wobei Distanzadressex1=Distanzadressey1=0, Distanzadressex1=Adressexi-Adressex1, Distanzadressey1=Adresseyi-Adressey1 für
i = 1, 2, 3. Die Merkervariable Codecmerkeri ist
durch ein Betriebssystem oder eine Systemsteuerung schreibbar, um
vorzuschreiben, welche Codecart für jeden Vorgang verwendet wird.
-
Die
vorangehende detaillierte Beschreibung der vorliegenden Erfindung
wurde nur mittels eines Beispiels präsentiert, und viele Variationen
zu den bestimmten Details darin können denjenigen mit gewöhnlichen technischen
Fähigkeiten
offensichtlich sein, ohne vom Wesen der Erfindung abzuweichen. Folglich
sollen solche genaueren Einzelheiten nicht das Wesen der Erfindung
begrenzen, welche in den anhängenden
Ansprüchen
definiert ist.