-
Gebiet der
Erfindung
-
Die
vorliegende Erfindung betrifft ein System und ein Verfahren zur
Sprach- und Audiocodierung, insbesondere betrifft sie ein System
und ein Verfahren, welches Modusbits dazu verwendet, zu spezifizieren,
welche Codierungsnorm implementiert ist, so dass das System die
korrekten Datenmanipulationen für
diese Codierungsnorm ausführt.
-
Hintergrund
der Erfindung
-
Mobile
Kommunikationsgeräte
wie zum Beispiel zellulare Telefone kommunizieren mit Telefonen
und Computersystemen unter Verwendung von analogen oder digitalen
Signalen in verschiedenen Abschnitten des Signalübertragungswegs. Die Umwandlung
der Analogsignale in digitale Signale und umgekehrt erfolgt unter
Verwendung von Analog-Digital- und Digital-Analog-Wandlern. Die
Kompression von Sprachsignalen erfolgt unter Verwendung einer von
mehreren Sprach- (und Audio-)codierungsnormen.
-
Einige
der wichtigeren Codierungsnormen beinhalten die North American cellular
standards (z.B. IS54), die ITU-T-Normen G. 723, G. 728 und G. 729
sowie die europäischen
Zellular-Normen (GSM-EFR, GSM-FR, GSM-HR). Die Sprachverarbeitungs-Spezifikationen
der GSM sind zum Beispiel beschrieben in der Schrift GSM 6.01-6.32
Recommendation Specification, oder in dem Buch von Michael Mouly
und Marie-Bernadette Pauter mit dem Titel The GMS System for Mobile
Communications, Palaiseau, Frankreich, ISBN 2-9507190-0-7.
-
Typischerweise
beinhalten diese Codierungsnormen unterschiedliche Algorithmus-Spezifikationen, welche
definieren, wie Daten manipuliert werden müssen, damit die Daten der Codierungsnorm
entsprechen. Beispielsweise ist GSM in einer bit-exakten Norm spezifiziert,
welche im Einzelnen sämtliche
arithmetischen Operationen und die hierfür geforderte Genauigkeit definiert.
Damit erzeugt jede der Norm folgende Implementierung bei einer gegebenen
Eingangssequenz die gleiche Ausgangsgröße. Durch Bereitstellung einer
Sammlung von Prüfvektoren
als Teil der Norm lässt
sich in einfacher Weise die Erfüllung
der GSM verifizieren.
-
Als
Ergebnis der strikten Spezifikationen wie dieser benötigt eine
gegebene Datenoperation möglicherweise
eine abweichende Implementierung, abhängig von der angewendeten Norm.
Beispielsweise ist eine Mehrfachgenauigkeit aufweisende Multiplikation,
die die Bits in einem Datenwort um fünfzehn Bits nach rechts verschiebt,
gemäß der GSM-HR
spezifiziert als eine fünfzehn
Bits umfassende Rechtsverschiebung, ist aber gemäß der GSM-EFR spezifiziert
als eine Rechtsverschiebung um sechzehn Bits und eine Linksverschiebung um
ein Bit.
-
Üblicherweise
sind Codierungssysteme für
eine einzige Codierungsnorm implementiert und konfiguriert. Das
heißt:
Ein gegebenes System kann nicht dynamisch umgeschaltet werden zwischen
verschiedenen Codierungsnormen. Damit ist zur Bereitstellung der
passenden Decodierung für
unterschiedliche Codierungsnormen mehr als das eine Codierungssystem
erforderlich. Dies erhöht
möglicherweise
die Kosten für
einen Benutzer beträchtlich,
sollte der Benutzer sein System nachrüsten, um eine andere Codierungsnorm
zu unterstützen.
-
Die
Europäische
Patentveröffentlichung
mit der Nummer 0718757 ist repräsentativ
für den
Stand der Technik.
-
Demnach
besteht Bedarf an einem Codierungsverarbeitungssystem, welches in
geeigneter und wirtschaftlicher Weise Signale verarbeiten kann,
die in einer Vielfalt von Codierungsformaten definiert sind.
-
Erfindungsgemäß wird ein
Verfahren zum Manipulieren von Signalinformationen gemäß Anspruch
1 geschaffen, weiterhin eine arithmetische Dateneinheit gemäß Anspruch
16 sowie ein digitales Signalverarbeitungsverfahren gemäß Anspruch
20 und Anspruch 23.
-
In
einen digitalen Signalprozessor eingebrachte Modusbits definieren
die Implementierung unterschiedlicher Datenoperationen in Verbindung
mit Codierungsnormen. Der digitale Signalprozessor lässt sich einfach
durch Ändern
der Einstellung des Modusbits so rekonfigurieren, dass er an eine
andere Codierungsnorm angepasst ist.
-
Bei
einer Ausführungsform
definiert ein Modusbit für
eine Verschiebung um fünfzehn,
ob das System eine konventionelle Rechtsverschiebung um fünfzehn Bits
durchführt,
oder ob es eine Verschiebung nach rechts um sechzehn Bits und eine
Verschiebung nach links um ein Bit durchführt. Durch die Verwendung des Modusbits
zum Spezifizieren der Codierungsnorm kann das System einen gemeinsamen
Fünfzehn-Verschiebebefehl
sowohl für
die GSM-HR- als auch die GSM-EFR-Codierungsnorm benutzen.
-
In
einer weiteren Ausführungsform
unterstützt
ein Modusbit eine Schiebeumlaufoperation. Dieses Modusbit legt fest,
ob das aus einem Datenwort herausgeschobene höchstwertige Bit als Übertragbit
einen Addierer in der nächsten
Stufe der Verarbeitungskette zugeleitet wird.
-
Kurze Beschreibung
der Zeichnungen
-
Diese
und weitere Merkmale der Erfindung ergeben sich aus der folgenden
detaillierten Beschreibung bevorzugter Ausführungsformen und den Patentansprüchen in
Verbindung mit den begleitenden Zeichnungen, in denen ähnliche
Bezugszeichen sich durchwegs auf ähnliche Elemente beziehen,
und in denen zeigen:
-
1 ein
Blockdiagramm einer Ausführungsform
einer arithmetischen Dateneinheit gemäß der Erfindung;
-
2 eine graphische Darstellung einer Fünfzehn-Bit-Verschiebeoperation,
wie sie hier behandelt wird;
-
3 ein
Blockdiagramm einer Ausführungsform
eines Datenverschiebers, der dazu dient, die fünfzehn Bits um passende Verschiebungsoperation
gemäß der Erfindung
zur Implementierung; und
-
4 ein
Blockdiagramm einer Ausführungsform
einer Implementierung einer Schiebeumlaufoperation gemäß der Erfindung.
-
Beschreibung
der bevorzugten Ausführungsformen
-
Ein
digitaler Signalprozessor (DSP) ist eine Spezial-CPU, die zur Datenverarbeitung
und zur Analyse von Signalen aus analogen Quellen dient, beispielsweise
in Form von Schall.
-
Die
analogen Signale werden unter Verwendung verschiedener Algorithmen,
beispielsweise der schnellen Fourier-Transformation, in digitale
Daten umgewandelt und analysiert. DSPs sind für besonders rasche Leistung
bei gewissen Operationen ausgelegt (beispielsweise Multiplikation,
Multiplizieren und Akkumulieren und Verschieben und Akkumulieren),
weil die rechenintensiven Verarbeitungsanwendungen für DSPs starken
Gebrauch von solchen Operationen machen. Aus diesem Grund enthält ein DSP
typischerweise spezielle Hardwareschaltungen zum Ausführen von
Multiplikations-, Akkumulations- und Verschiebeoperationen.
-
Eine
populäre
Form einer DSP-Architektur ist als Multiply-Accumulate oder MAC-Prozessor
bekannt. Der MAC-Prozessor implementiert eine Architektur, die Vorteil
aus dem Umstand zieht, dass die meisten üblichen Datenverarbeitungsoperationen
die Multiplikation von zwei Werten beinhalten, gefolgt von einer
Addition des resultierenden Werts auf einen anderen Wert und Akkumulieren
des Ergebnisses. Diese grundlegenden Operationen werden in wirtschaftlicher
Weise unter Verwendung von speziell konfigurierten Hochgeschwindigkeits-Multiplizierern
und -Akkumulatoren ausgeführt,
daher die Bezeichnung "Multiply-Accumulate". Um die Verarbeitungsleistung
von MAC-Prozessoren zu steigern, wurden diese so ausgestaltet, dass
sie gleichzeitig verschiedene Prozesse ausführen. Zu diesem Zweck wurden
DSP-Architekturen mit mehreren MAC-Strukturen entwickelt. Beispielsweise
ist ein dualer MAC-Prozessor in der Lage, gleichzeitig zwei unabhängige MAC-Operationen
auszuführen.
-
1 veranschaulicht
eine arithmetische Dateneinheit ("DAU")
D eines (nicht gezeigten) digitalen Signalprozessors.
-
Gemäß 1 lässt sich
die vorliegende Erfindung in einer großen Vielfalt von digitalen
Signalverarbeitungsanwendungen implementieren. Vorzugsweise ist
die Erfindung in einer arithmetischen Dateneinheit ("DAU") D zur Verwendung
in einem dualen MAC-Prozessor einbezogen.
-
Die
DAU enthält
duale 32-Bit-Register x(32) und y(32), die als vier 16-Bit-Register yh, yl,
xh und xl betrieben werden, wenn sie eingesetzt werden, um die Eingangssignale
an zwei vorzeichenbehaftete, 16-Bit- X 16-Bit-Multiplizierer M1 und M2 geben. Die
einzelnen Multiplizierer erzeugen 32-Bit-Ergebnisse, die in zugehörigen Produktregistern
p0(32) und p1(32) gespeichert werden. Die Produktregister kommunizieren
mit einem 32-Bit-Datenbus
IDB(32), der als Primär-Datenpfad
für die
arithmetische Dateneinheit dient.
-
Die
in den jeweiligen Produktregistern p0(32) und p1(32) gespeicherten
Daten können
arithmetischen Registerverschiebungen unterzogen werden und werden über Multiplexer
MUX entweder einer 40 Bits umfassenden arithmetisch-logischen Einheit
ALU mit einem Addier-/Vergleiche-/Auswahl-Merkmal ACS, einer 40 Bits
umfassenden Manipulationseinheit BMU oder einem 40 Bits umfassenden
und drei Eingänge
aufweisenden Addierer/Subtrahierer (ADDER) zugeführt. Die arithmetisch-logische
Einheit implementiert Additions-, Subtraktions- und verschiedene
logische Operationen. Die Bitmanipulationseinheit implementiert
Barrel-shifts, Bit-Einfügungen
und -Extraktionen sowie eine Normierung. Als Komplement zu den arithmetischen
Einheiten und Bitmanipulationseinheiten führt der Addierer allgemeine
Additions- und Subraktionsoperationen durch. Gleichzeitige Multiplikations-
und Akkumulationsoperationen lassen sich unter Verwendung von zwei
Multiplizierern, der ALU und dem ADDER erreichen.
-
An
den Ausgängen
der arithmetischen, der Bitmanipulations- und Addiereinheiten ALU,
BMU und ADDER befindliche Saturator-Einheiten ermöglichen,
dass eine Überlauf-Sättigung
die einzelnen Ergebnisse modifiziert. Das Merkmal der Überlaufsättigung
wirkt optional auch auf Akkumulatorenwerte ein, wenn die Daten zu
dem Speicher oder zu einem oder mehre ren Registern übertragen
werden. Dieses Merkmal trägt
verschiedenen Sprachkodierungsnormen Rechnung, so zum Beispiel der
Global System Modulation oder GSM, Vocodern mit voller, halber und
erweiterter Rate. Darüber
hinaus erfolgt das Verschieben innerhalb der arithmetischen Pipeline
in verschiedenen Stadien, um verschiedenen Normen für Multiplikationen
mit erweiterter Genauigkeit Rechnung zu tragen.
-
Die
modifizierten Ergebnisse aus den einzelnen Satturatoren werden anschließend über einen
Teiler/Multiplexer SPLITMUX zu einem Registerarray geleitet, welches
acht 40-Bit-Akkumulatoren a0 bis a7 enthält. Jedes der betreffenden
Akkumulatorpaare enthält
einen hohen und einen niedrigen Teil.
-
Die
arithmetische Dateneinheit DAU enthält in konventioneller Weise
auch mehrere 16 Bits umfassende Buszugriffs-Steuerregister mit Zählern c0 – c2, Arithmetikeinheit-Steuerregister
auc0 und auc1, Prozessorstatuswörter
psw0 und psw1, Hilfsregister ar0 – ar1 sowie einen Viterbi-Unterstützungswort
vsw.
-
Von
vornehmlicher Bedeutung ist hier, dass die DAU D einen Verschieber 20 enthält, welcher
zur Ausführung
einer 15 Bits umfassenden Rechtsverschiebung dient, ferner eine
Bitmanipulationseinheit ("BMU") 22, und
eine arithmetisch-logische Einheit ("ALU") 24 und
ein Modusbitregister auc0 26.
-
Die "Verschieben-um-fünfzehn"-Operation wird im
Einzelnen an Hand der 2-3 beschrieben. Die
in 2 mit A, B und C bezeichneten Darstellungen
stellen einen Zustand eines Datenworts und zugehörige Datenbits vor und nach
Verschiebeoperationen dar. Die über
den Datenwörtern
angegebenen Zahlen bedeuten die Bitstellen. Beispielsweise werden
bei A die Bits 0-15 durch den gepunkteten Bereich des Datenwortes
dargestellt. Das 32 Bits umfassende Wort A mit den Bits 0-31 wird
um fünfzehn
Bits nach zwei alternativen Verfahren nach rechts verschoben (dargestellt
durch die Pfeile in B und C), die beiden Ergebnisse sind bei B beziehungsweise
C dargestellt. Die bei B dargestellte Verschiebeoperation ist eine
Standard-Verschiebung (üblicherweise
bezeichnet mit >>15). Die in C dargestellte
Verschiebeoperation ist eine Verschiebung um sechzehn nach rechts
und um ein Bit nach links (typischerweise bezeichnet durch: >>16<<1). Diese Operation lässt das
Bit 0 der verschobenen Daten (28) gelöscht übrig, ungeachtet des Werts
des Bits 15 (30) in A. Im Gegensatz dazu zeigt B, dass
nach der Verschiebung das Bit 0 (28) gegenüber dem
Bit 15(30) in A unverändert
ist.
-
3 zeigt
eine Ausführungsform
der für
fünfzehn
Bits ausgelegten Verschiebeschaltung. Beim Multiplexer 32 (einer
der Multiplexe MUX, die unter den Produktregistern p0, p1 in 1 dargestellt
sind) wählen entweder
die nicht verschobenen Daten 36 aus der Datenquelle 34 oder
die Bits aus der Datenquelle 34 aus, die einer Verschiebung
von fünfzehn
Bits nach rechts bei 38 entsprechen. In 1 wird dies
erreicht durch Steuern der Verschiebung der Ausgänge von p0, p1. Für die Implementierung
der Verschiebeoperation gemäß 3 wird
das Bit 15 von der Datenquelle mit dem Eingangsbit 0 der Bits 38
verbunden. Um die Komplexität der 3 zu
verringern, sind lediglich einige repräsentative Verbindungen veranschaulicht.
-
Ein
Modusbit 40 für
eine Verschiebung um fünfzehn
(SHFT15) steuert, ob die Verschiebung eine Operation >>15 oder eine Operation >>16<<1 ist. Wenn das
Modusbit SHFT15 im Register auc0 26 (1)
nicht gesetzt ist, bleibt das Bit 0 der verschobenen Daten beim
Durchgang durch den Multiplexer 32 unverändert. Wenn
das Modusbit 40 SHFT15 im auc0-Register 26 gesetzt
ist, wird das Bit 0 der verschobenen Daten von der Schaltung 42 beim
Durchgang durch den Multiplexer gelöscht.
-
In
einer alternativen Ausführungsform
können
die aktuellen spezifizierten Verschiebeoperationen durchgeführt werden
(beispielsweise wird das Datenwort tatsächlich verschoben). Allerdings
bietet die Ausführungsform
nach 3 die Möglichkeit
eines Datendurchsatzes mit Leistungsvorteilen, die bei Hochgeschwindigkeits-DSP-Anwendungen
von Bedeutung sind.
-
Im
Folgenden werden Programmierbeispiele für Multiplikationen mit Mehrfachgenauigkeit
dargestellt, die ein Modusbit SHFT15 beinhalten.
-
Das
erste Beispiel zeigt eine Multiplikation 16 × 31 gemäß GSM-HR:
-
In
der ersten Zeile wird das Modusbit 40 SHFT15 auf seinem
Standardwert (0 oder gelöscht)
gehalten. In der zweiten Zeile werden die Produktregister p0, p1
und der Akkumulator a0 zurückgesetzt,
und über
einen Zeiger werden die Register y und xh geladen. In der dritten
Zeile werden die Produkte von xh mit zwei Teilen des y-Registers
gebildet, und in der vierten Zeile werden die beiden Produkte addiert,
wobei das Produkt unterer Ordnung p1 um fünfzehn nach rechts verschoben
wird. Bei dem gelöschten
Bit 40 ist die Verschiebung eine normale Rechtsverschiebung um 15
Bits, wobei das Bit 0 der Daten a0 unverändert bleibt.
-
Das
zweite Beispiel zeigt eine Multiplikation 16 × 31 gemäß GSM-EFR oder G. 729:
In der
ersten Zeile wird das Modusbit
40 SHFT15 auf 1 gesetzt.
Der Rest des Codes ist der gleiche, nur dass das Modusbit
40 jetzt
ein Löschen
des Bits 0 der Daten a0 veranlasst, wodurch eine Verschiebung >>16<<1 simuliert wird.
-
Es
ist erkennbar, dass die gleichen Befehle für GSM-HR, GSM-EFR und G. 729
der Multiplikation mit erweiterter Genauigkeit gelten. Die hier
be schriebene Erfindung spart also teuren Befehlsraum ein und liefert dennoch
die Flexibilität,
um mehrere Codierungsnormen zu unterstützen. Darüber hinaus ermöglicht die
relative Einfachheit dieser Ausgestaltung die Implementierung unter
dem Einsatz von weniger Schaltungsaufwand als bei einigen herkömmlichen
Verfahren.
-
4 zeigt
eine weitere Ausführungsform
der Erfindung, die sich auf eine Schiebeumlaufoperation bezieht.
Ein S&R-Bit 46,
wie es zum Beispiel in dem auc0-Register 26 (1)
definiert ist, legt fest, ob das höchstwertige Bit ("MSB") 48 der
aus einem Datenwort 50 herausgeschobenen Bits zu dem Übertrageingang des
Bits 0 (52) des anschließenden Addierers geleitet wird.
Wenn der Addierer 58 eine Addition ausführt, wählt ein Multiplexer 51 entweder
eine "0" (S&R-Bit 46 ist
nicht gesetzt) oder das MSB 48 (S&R-Bit 46 ist gesetzt) als
Eingang für
den Übertrageingang
beim Bit 0 52. Wenn der Addierer 58 eine Subtraktion
durchführt,
führt der
Multiplexer eine ähnliche
Operation durch wie oben geschildert, wobei eine Zusatzbitmanipulation
der niedrigstwertigen Bits des Datenworts eine Subtraktion bildet.
Diese Bitmanipulation hängt
von der Art der Subtraktion seitens des Addierers 58 ab
(zum Beispiel Zweierkomplement etc.).
-
Die
Ausführungsform
nach 4 wird im dem DAU D nach 1 realisiert.
Die Verschiebeoperation geschieht mit Hilfe der BMU 22.
Das herausgeschobene Bit wird vorübergehend in einem Register
gespeichert, beispielsweise im PSW0 56. Dieses Bit wird
bei einer späteren
Addition, die von der Addierschaltung 58 in der ALU 24 ausgeführt wird,
benutzt.
-
In
der Praxis kann die Schiebeumlaufoperation eine bessere numerische
Leistung bei gewissen DSP-Berechnungen, beispielsweise schnellen
Fourier-Transformationen, erbringen.
-
Aus
dem oben Gesagten ist ersichtlich, dass die vorliegende Erfindung
ein effektives System und ein effektives Verfahren zum Unterstützen mehrerer
Codierungsnormen bietet. Während
gewisse spezifische Ausführungsformen
der Erfindung als typisch offenbart sind, ist die Erfindung nicht
auf diese speziellen Formen beschränkt, sie ist vielmehr in breitem
Umfang mit sämtlichen
Variationen anwendbar, die in den Schutzumfang der beigefügten Ansprüche fallen.
-
Für den Fachmann,
an den sich die vorliegende Erfindung richtet, sind zahlreiche Modifikationen
und Anpassungen ersichtlich. Beispielsweise können bei der Ausführung der
beanspruchten Erfindung verschiedene Architekturen, Datenverarbeitungskomponenten,
Datenspeicherkomponenten und Programmiersprachen verwendet werden.
Damit sind die spezifischen Strukturen und Verfahren, die oben im
Einzelnen erläutert wurden,
lediglich beispielhaft für
einige wenige spezielle Ausführungsformen
der Erfindung.