-
Die
Erfindung betrifft allgemein drahtlose Kommunikationssysteme. Insbesondere
betrifft die Erfindung die Kodezuweisung in derartigen Systemen.
-
Hintergrund
-
In
Codemultiplex-Vielfachzugriff-(CDMA-)Kommunikationssystemen werden
Kommunikationen über
ein gemeinsam genutztes Frequenzspektrum gesendet. Um Fremdinterferenz
zwischen den übertragenen
Signalen zu minimieren, werden orthogonale Kodes verwendet. Kommunikationen, die
mit orthogonalen Kodes über
einen idealen drahtlosen Kanal übertragen
werden, erfahren keine Kreuzkodekorrelation, wenngleich in der Praxis
das orthogonale Wesen der Kodes aufgrund von mehreren Wegen in gewissem
Maß aufgehoben
werden kann.
-
1 ist
eine Darstellung eines Kodebaums für orthogonale variable Spreizfaktoren
(OVSF). Am oberen Ende des Baums ist ein Kode für einen Spreizfaktor von eins.
Kodes in jeder Reihe weiter unten in dem Baum haben einen zweifachen
Spreizfaktor des Spreizfaktors der Reihe über diesem Kode. Für den Kodebaum
der Zeitmultiplexduplex-(TDD-)Betriebsart eines Breitband-Kodemultiplex-Vielfachzugriff-(WCDMA-)Kommunikationssystems
des Partnerschaftsprojekts der dritten Generation (3GPP) ist der
maximale Spreizfaktor, wie in 1 gezeigt,
sechzehn (16). In anderen Systemen kann der maximale Spreizfaktor
erheblich größer, wie etwa
256 oder 512, sein.
-
1 ist
eine Darstellung eines OVSF-Kodebaums mit einem maximalen Spreizfaktor
von 16. Der Baum hat einen Kode mit einem Spreizfaktor 1 C1(1) mit
einem Wert „1". Zwei Kodes C2(2)
mit einem Wert von „1,
1" und C2(1) mit
einem Wert von „1, –1" haben einen Spreizfaktor
von 2. Vier Kodes C4(4) bis C4(1) haben einen Spreizfaktor von 4.
Acht Kodes C8(8) bis C8(1) haben einen Spreizkode von 8, und sechzehn
Kodes C16(16) bis C16(1) haben einen Spreizfaktor von 16.
-
Die
Linien, die die Kodes in dem Baum verbinden, identifizieren Kodes,
die in dem Baum nicht orthogonal aufeinander sind. Kodes, die durch
Linien entweder nur in einer Aufwärts- oder Abwärtsrichtung verbunden
sind, sind nicht orthogonal. Zur Veranschaulichung ist der Kode
C16(16) nicht orthogonal zu dem Kode C2(2), da das Verfolgen eines
Pfads von dem Kode C16(16) zu dem Kode C2(2) unter Verwendung von
vier aufwärts
verbindenden Linien erledigt werden kann. Umgekehrt sind die Kodes C16(16)
und C8(7) orthogonal zueinander. Das Verfolgen eines Pfads von C16(16)
zu C8(7) bedingt die Verwendung von zwei aufwärtsen Verbindungslinien und
einer abwärtsen
Verbindungslinie.
-
Um
die Interferenz zwischen Kommunikationen zu minimieren, ist es wünschenswert,
nur Kodes zuzuweisen, die orthogonal zueinander sind. Es ist auch
wünschenswert,
die Kodes in einer optimalen Weise zuzuweisen, so daß die maximale
Anzahl orthogonaler Codes für
die Verwendung verfügbar
ist. Wenn in einem betriebenen drahtlosen Kommunikationssystem Kodes
zugewiesen und freigegeben werden, können nicht optimale Kodezuweisungen auftreten,
was die Kapazität
des Systems verringert.
-
2A ist
eine Darstellung einer nicht optimalen OVSF-Kodezuweisung. Ein Problem
mit der Verwendung von OVSF-Kodes
ist die effiziente Verwendung der Kodes. Nach dem Zuweisen und Freigeben
von Kodes sind die Kodes C16(16), C16(13), C16(9) und C16(5), wie
mit gefüllten
Kreisen gezeigt, immer noch aktiv. Um die Zuweisung eines Kodes
zu verhindern, der nicht orthogonal auf diese Kodes ist, werden,
wie durch ein „X" gezeigt, all die
Kodes über diesen
Kodes für
die Zuweisung gesperrt. Folglich sperrt die Verwendung von C16(5)
C8(3), C4(2), C2(1) und C1(1). Wie in 2A gezeigt,
werden insgesamt zehn Kodes, C1(1), C2(1), C2(2), C4(2), C4(3),
C4(4), C8(3), C8(5), C8(7) und C8(8), gesperrt. Als ein Ergebnis
der Zuweisung von vier Kodes mit Spreizfaktor (SF) sechzehn sind
keine SF-2-Kodes verfügbar
und nur ein SF-4-Kode ist verfügbar.
Folglich können
Dienste, die einen SF-2-Kode oder mehrere SF-4-Kodes erfordern nicht unterstützt werden.
-
2B stellt
eine wirksame Zuweisung von vier SF-16-Kodes dar. Die Kodes C16(16) bis C16(13)
werden verwendet. Nur fünf
Kodes, die Kodes C1(1), C2(2), C4(4), C8(8) und C8(7), werden als
ein Ergebnis dieser Zuweisung gesperrt. Als ein Ergebnis ist ein
SF-2-Kode verfügbar,
und drei SF-4-Kodes sind verfügbar,
um zusätzliche
Dienste zu unterstützen.
Die Zuweisung von 2B ermöglicht eine größere Freiheit
bei der Kodezuweisung als 2A.
-
Folglich
ist es wünschenswert,
alternative Ansätze
für die
Kodezuweisung zu haben.
-
In „Code Placement
and Replacement Strategies for Wideband OVSF Code Tree Management", 25.–29. Nov.
2001, IEEE, Seiten 562–566,
offenbaren Tseng Y-C et al., die Kodeneuzuweisung in einem OVSF-Kodebaum
eines WCDMA-Systems. Wenn der Kodebaum zerlegt wird, wird ein dynamischer
Kodezuweisungsalgorithmus verwendet, um den Baum mit minimalen Kosten
zu entleeren, indem belegte Kodes einer nach dem anderen in einer
rekursiven Weise neu zugewiesen werden. Die Schritte des Algorithmus
werden durchgeführt,
falls ein neuer Ruf eine gewisse Übertragungsrate anfordert,
es aber keinen freien Kode mit einer derartigen Rate gibt. Der erste
Schritt umfaßt
die Prüfung,
ob es in dem Kodebaum genug freie Kapazität gibt.
-
US 2002/051437 offenbart
die Kodeumschaltung in einem OVSF-Kodebaum. Wenn ein neuer Ruf eine Übertragungsrate
anfordert und es keine zuweisbaren Kodes gibt, wird das Kodeumschalten durchgeführt, um
in der Lage zu sein, die Rufanforderung anzunehmen.
-
In „Dynamic
Assignment of Orthogonal Variable-Spreading-Factor Codes in W-CDMA", IEEE Journal an
Selected Areas in Communications, Bd. 18, Nr. 8, August 2000, Seiten
1429–1440,
offenbaren Minn T. et al. die Beseitigung der Kodesperrung in einem
OVSF-Kodebaum durch die Neuzuweisung von Kodes. Das Schema minimiert
die Kodes, die zugewiesen werden müssen, um einen neuen Ruf zu unterstützen. Zur
Zeit einer neuen Rufanforderung wird geprüft, ob das System die von dem
neuen Ruf geforderte Rate unterstützen kann. Wenn das System überschüssige Kapazität zur Unterstützung des neuen
Rufs hat, werden die Kodes neu zugewiesen.
-
EP 1035676 offenbart ein
Verfahren zum Übermitteln
eines ausgewählten
Kanalteilungskodes für
eine Abwärtsstrecke
an einen Benutzer.
-
Zusammenfassung
-
Die
Erfindung umfaßt
ein System und Verfahren für
die orthogonale variable Spreizfaktor-(OVSF-)Kodezuweisung, Freigabe
und Kodebaumbeschneidung. Die Erfindung umfaßt auch OVSF-Kodeidentifizierungs-
und Speicherschemata. Ausführungsformen
für die
Kodebaumbeschneidung, Kodezuweisung und Freigabe werden bereitgestellt. Diese
Ausführungsformen
gelten sowohl für
geschlitzte als auch nicht geschlitzte Kodemultiplex-Vielfachzugriffsysteme.
-
Kurze Beschreibung der Zeichnung(en)
-
1 ist
eine Darstellung eines OVSF-Kodebaums.
-
2A und 2B sind
Darstellungen von Kodezuweisungen und den sich ergebenden gesperrten
Kodes.
-
3 ist
ein vereinfachtes Blockschaltbild eines OVSF-Kodezuweisungssystems.
-
4 ist
ein bevorzugtes OVSF-Kodeidentfizierungsschema.
-
5 ist
eine Darstellung eines Kodevektors.
-
6 ist
ein Flußdiagramm
einer OVSF-Kodebaumbeschneidung über mehrere
Zeitschlitze (TS).
-
7 ist
ein Flußdiagramm
für die OVSF-Kodebaumbeschneidung.
-
8 ist
ein Flußdiagramm
für die
periodische Kodebaumbeschneidung.
-
9 ist ein Flußdiagramm der OVSF-Kodezuweisung
und von Kodebaumaktualisierungsverfahren.
-
10 ist ein Flußdiagramm der OVSF-Kodefreigabe
und von Kodebaumaktualisierungsverfahren.
-
11 ist ein Flußdiagramm, das 8 modifiziert,
für die
Verwendung mit einem Vorgabe-Midamblekode-Zuweisungsschema.
-
Detaillierte Beschreibung der bevorzugten
Ausführungsform(en)
-
Nachstehend
umfaßt
eine drahtlose Sende-/Empfangseinheit (WTRU) hier ein Benutzergerät, eine
Mobilstation, eine feste oder mobile Teilnehmereinheit, einen Funkrufempfänger oder
jede andere Art von Vorrichtung, die fähig ist, in einer drahtlosen Umgebung
zu arbeiten, ist aber nicht darauf beschränkt.
-
3 ist
ein vereinfachtes Diagramm eines drahtlosen Kommunikationssystems
unter Verwendung der OVSF-Kodezuweisung.
Eine Funknetzsteuerung (RNC) 26 hat eine Funkressourcenverwaltungs-(RRM-)Vorrichtung 46 zur
Verwendung zum Zuweisen und Freigeben von Kodes. Die RRM-Vorrichtung 46 hat
einen zugeordneten Speicher zur Verwendung für die Speicherung der Kodezuweisungen und
anderer Informationen. Ein Node B hat eine Kodezuweisungsvorrichtung 42,
die die Ressourcenzuweisung von der RRM-Vorrichtung 46 empfängt. Die Kodezuweisungsvorrichtung 42 weist
Kodes an die Aufwärtsstrecke,
die Abwärtsstrecke
oder beide Kommunikationen zu. Ein Sender (TX) 40 verwendet die
Abwärtsstrecken-Kodezuweisungen,
um Kommunikationen über
den/die Abwärtsstreckenkanal/kanäle 36 der
drahtlosen Schnittstelle 22 zu übermitteln. Ein Empfänger (RX) 38 verwendet
die Aufwärtsstrecken-Kodezuweisungen,
um Kommunikationen über
den/die Aufwärtsstreckenkanal/kanäle 34 zu
empfangen. Eine WTRU 20 hat eine Kodezuweisungsvorrichtung 32 zum
Zuweisen von Aufwärtsstrecken-
und Abwärtsstreckenkodes.
Die Kodezuweisungen können
von der RRM-Vorrichtung 46 an die WTRU 20 signalisiert
werden. Der TX 28 verwendet die Aufwärtsstre cken-Kodezuweisungen,
um Kommunikationen der Aufwärtsstrecke
zu senden, und der RX 30 verwendet die Abwärtsstrecken-Kodezuweisungen,
um Kommunikationen der Abwärtsstrecke
zu empfangen.
-
Die
folgenden sind Ausführungsformen
zum Zuweisen und/oder Neuzuweisen von OVSF-Kodes. 4 ist
eine Darstellung eines bevorzugten Verfahrens zum Identifizieren
der Kodes des Kodebaums. In dem Verfahren von 4 werden
die Codes als laufende Nummern identifiziert. Der Spreizfaktor-1-Kode C1(1) wird
als 1 identifiziert. Die Spreizfaktor-2-Kodes werden identifiziert: C2(2) als
2 und C2(1) als 3. Die Spreizfaktor-4-Kodes werden identifiziert:
C4(4) als 4, C4(3) als 5, C4(2) als 6, C4(1) als 7. Die Spreizfaktor-8-Kodes werden identifiziert: C8(8)
als 8, C8(7) als 9, C8(6) als 10, C8(5) als 11, C8(4) als 12, C8(3)
als 13, C8(2) als 14 und C8(1) als 15. Die Spreizfaktor-16-Kodes
werden identifiziert: C16(16) als 16, C16(15) als 17, C16(14) als
18, C16(13) als 19, C16(12) als 20, C16(11) als 21, C16(10) als
22, C16(9) als 23, C16(8) als 24, C16(7) als 25, C16(6) als 26,
C16(5) als 27, C16(4) als 28, C16(3) als 29, C16(2) als 30 und C16(1)
als 31. Für Systeme,
die Spreizfaktoren verwenden, die größer als 16 sind, wie etwa FDD/CDMA,
kann das Kodebaumschema entsprechend erweitert werden. Wenngleich 4 ein
Nummernschema darstellt, können andere
Versionen verwendet werden. Zur Veranschaulichung kann die laufende
Nummerierung über die
Reihen von rechts nach links oder in einer anderen Reihenfolge vorgenommen
werden.
-
Wie
in 4 unten gezeigt, können die laufenden Kodekennungen
nach Spreizfaktor gruppiert werden und in der Reihenfolge bleiben.
Zur Veranschaulichung sind die SF-16-Kodenkennungen die Kennungen 16 bis
31. Die Verwendung eines derartigen Kodezuweisungsverfahrens ermöglicht einen verringerten
Speicherplatz für
Kodezuweisungen. 5 ist eine Darstellung eines
derartigen Kodezuweisungsspeichers. Jede Kodekennung 1 bis 31 hat ein
zugeordnetes Bit oder Wort 481 bis 4831, um den aktuellen Status des Kodes, wie
etwa „ge genwärtig zugewiesen", „gesperrt" oder „verfügbar", anzuzeigen. Ein „gesperrter" Kode ist ein Kode,
der aufgrund eines anderen „gegenwärtig zugewiesenen" Kodes nicht zugewiesen
werden kann. Zur Veranschaulichung wird C8(1) gesperrt, wenn entweder
C16(1), C16(2), C4(1), C2(1) oder C1(1) gerade verwendet wird. Zusätzliche
Statusinformationen, wie etwa eine Anzeige der Anzahl von sperrenden
Kodes, können bereitgestellt
werden.
-
Dieser
Kodeidentifizierungsspeicheransatz ermöglicht im Wesentlichen, daß ein präziser Vektor die
Kodezuweisungsinformationen enthält,
anstelle eine Form von Liste oder Tabelle zu verwenden. Die folgenden
Kodezweisungsansätze
können
jedoch für die
Verwendung mit einem Vektor, einer Tabelle, einer Liste oder anderen
Speicherverfahren verwendet oder angepaßt werden.
-
Ein
bevorzugtes Kodestatuswort verwendet ein Zweibitelement. Das erste
Bit zeigt an, ob der Kode gesperrt ist. Eine „0" zeigt an, daß der Kode nicht gesperrt ist,
und eine „1" zeigt an, daß der Kode gesperrt
ist. Das zweite Bit zeigt an, ob der Kode durch einen Kode in seinem
Teilbaum oder beide Kodes in dem Teilbaum gesperrt ist. Eine „0" zeigt einen Kode
an, und eine „1" zeigt zwei Kodes
an. Wenn zum Beispiel der Kode 8 verwendet wird und der Kode 9 frei
ist, dann wird der Kode 4 nur durch einen Kode gesperrt und wird
als „10" markiert; wenn die Kodes
8 und 9 verwendet werden, dann wird der Kode 4 durch beide Kodes
in seinem Teilbaum gesperrt, und er wird als „11" markiert. Wenn ein Kode gerade verwendet
wird, wird er als „11" markiert. „01" zeigt bevorzugt
an, daß der
Kode in diesem Zeitschlitz nicht verwendet werden kann.
-
6 ist
ein bevorzugter Baumbeschneidungsansatz für die Verwendung in geschlitzten
CDMA-Kommunikationssystemen, wie etwa in TDD/CDMA. Die Baumbeschneidung
ist eine Neuzuweisung von Kodes, um mehr Flexibilität in zukünftigen
Kodezuweisungen zu ermöglichen.
Obwohl das Folgende die Kodebeschneidung in einer Weise von links
nach rechts be schreibt, können
andere Kodezuweisungsreihenfolgen, wie etwa unter anderem von rechts nach
links, verwendet werden.
-
Ein
neuer Ruf soll hinzugefügt
werden und Kodes werden dem Ruf zugewiesen, Schritt 100.
Das Beschneiden wird mit einem ersten Zeitschlitz des Zeitschlitzsatzes
für die
mögliche
Zuweisung und Neuzuweisung begonnen. Zur Veranschaulichung könnte in
einem TDD/CDMA-System, in dem die Schlitze 2, 4, 6 und 10 für Aufwärtsstreckenübertragungen
verwendet werden können,
der Schlitz 2 als der erste Schlitz, der Schlitz 4 als der zweite
und so weiter erachtet werden. Der ganz links verfügbare Kode
mit dem höchsten
Spreizfaktor (SF) in dem Zeitschlitz wird bewertet, Schritt 102.
Wenn es keine Kodes mit diesem Spreizfaktor gibt, die in dem ersten Zeitschlitz
verfügbar
sind, werden nachfolgende Zeitschlitze durchsucht, bis ein Kode
gefunden wird. Obwohl das Flußdiagramm
von 6 etwa durch Bewegen von einem höchsten zu
einem niedrigsten Spreizfaktor beschrieben wird, können die
unterschiedlichen Spreizfaktoren von dem niedrigsten zum höchsten oder
in einer anderen Reihenfolge verarbeitet werden.
-
Nachdem
ein Kode gefunden wurde, wird ein Kode mit dem höchsten SF in jedem Zeitschlitz,
der in diesem Zeitschlitz nach links bewegt werden kann, bestimmt,
Schritt 104. Dieser bestimmte Kode wird nach links umplaziert,
Schritt 110. Wenn andere Kodes nach links bewegt werden
können,
werden diese Kodes ebenfalls umplaziert, Schritt 112. Das Umplazierungsverfahren
wird für
den nächsten
Zeitschlitz wiederholt, Schritte 106 und 108.
Wenn es keine Zeitschlitze gibt, die nicht bewertet wurden, wird die
Umplazierung nach links für
den nächst
höheren Spreizfaktor
durchgeführt,
Schritte 114 und 118. Dieses Verfahren wird wiederholt,
bis der niedrigste Spreizfaktor, wie etwa SF 1, erreicht ist, Schritt 116. Kodes
mit einem SF von 1 werden bevorzugt nicht umplaziert und das Verfahren
endet.
-
Der
Algorithmus von 6 wird bevorzugt bei jedem neuen
Anruf aufgerufen. Der Algorithmus beginnt zusammengefaßt das Beschneiden
der Bäume
mit den Kodes der untersten Schicht und von dem Zeitschlitz und
Kode ganz rechts. Wenn ein Kode an eine andere Stelle links neu
zugewiesen werden kann, wird der Kode verschoben. Nachdem alle möglichen
Kodes in der untersten Schicht verschoben sind, bewegt sich der
Algorithmus eine Ebene höher und
wiederholt das gleiche Verfahren. Es wird fortgesetzt, bis eine
Schicht unter der höchsten
erreicht ist (d. h. in dem TDD-Fall brauchen Kodes mit SF1 typischerweise
nicht neu zugewiesen werden).
-
Ein
anderer Ansatz gemäß 7 begrenzt das
Baumbeschneiden auf das Beschneiden innerhalb einzelner Zeitschlitze.
Dieser Kodeansatz kann auch auf ein nicht geschlitztes System angewendet werden.
Nachdem dem neuen Ruf ein Kode zugewiesen ist, Schritt 120,
wird der Kode ganz rechts mit dem höchsten SF ausgewählt, Schritt 122.
Wenn der Kode mit dem höchsten
SF ganz rechts nach links umplaziert werden kann, Schritt 124,
wird der Kode nach links umplaziert, Schritt 130. Wenn
ein anderer Kode mit dem höchsten
SF kann links umplaziert werden kann, Schritt 132, wird
er umplaziert, Schritt 130. Die Umplazierung nach links
wird der Reihe nach für
jeden niedrigeren Spreizfaktor durchgeführt, Schritt 126.
Nachdem der niedrigste Spreizfaktor SF, wie etwa SF 1, erreicht
ist, Schritt 128, wird das Verfahren beendet.
-
Zusammengefaßt wird
nach jedem neuen Anruf der Algorithmus von 7 aufgerufen.
Der Algorithmus beginnt mit dem Beschneiden des Baums bei den Kodes
der niedrigsten Schicht und von dem Kode am weitesten rechts. Wenn
ein Kode an einer anderen Stelle links neu zugewiesen werden kann, wird
der Kode verschoben. In dem bevorzugten Ansatz wird jeder Kode so
weit wie möglich
links neu zugewiesen. Nachdem alle möglichen Kodes in der untersten
Schicht verschoben sind, bewegt sich der Algorithmus eine Ebene
nach oben und wiederholt das gleiche Verfahren. Es wird fortgesetzt,
bis eine Schicht unter der höchsten
erreicht ist.
-
8 ist
ein anderer bevorzugter Algorithmus zum Baumbeschneiden. Dieser
Algorithmus arbeitet nur periodisch und begrenzt die maximale Anzahl
von Neuzuweisungen. Ein derartiger Ansatz verringert die erforderliche
gesamte Verarbeitung. Außerdem
wird auch der mit der Neuzuweisung verbundene Overhead verringert.
Dieser Algorithmus schaut auch die Kodezerlegung des Baums an. Die Kodebaumzerlegung
ist ein Maß für die Anzahl
blockierter Kodes innerhalb dieses Baums. Wenngleich dieser Ansatz
mit seiner bevorzugten Anwendung in einem geschlitzten CDMA-System
beschrieben wird, kann er auch auf nicht geschlitzte Systeme angewendet
werden.
-
Nach
einer gewissen Anzahl von Anrufen, wie etwa „X", Schritt 134, wird der Algorithmus
aufgerufen. Der Algorithmus schaut zunächst auf die Zerlegung der
Bäume in
jedem Zeitschlitz. Wenn zumindest einer der Bäume weiter zerlegt ist als
ein gewisser Schwellwert, wie etwa T, Schritt 136, beginnt
der Algorithmus das Beschneiden der Bäume mit den Codes der untersten
Schicht und von dem Zeitschlitz und Kode ganz rechts, Schritt 138.
Wenn ein Kode an eine andere Stelle links neu zugewiesen werden kann,
Schritt 150, wird der Kode verschoben und ein Zähler, der
zum Beispiel durch eine Variable „Num_neuzu" verfolgt wird, welche die Anzahl der Neuzuweisungen
verfolgt, wird aktualisiert. Wenn die maximale Anzahl von Neuzuweisungen
erreicht ist, Schritt 152, endet der Algorithmus. Wenn
die maximale Anzahl von Neuzuweisungen nicht erreicht ist, wird
der Algorithmus fortgesetzt. Nachdem alle möglichen Kodes mit dem höchsten Spreizfaktor
verschoben sind, Schritte 154 und 142, bewegt
sich der Algorithmus nach oben zu dem nächst höchsten Spreizfaktor und wiederholt
das gleiche Verfahren, Schritte 146 und 148. Das
Verfahren wird für
jeden niedrigeren Spreizfaktor bis zum niedrigsten Spreizfaktor wiederholt,
Schritte 148, 156.
-
Variationen
dieser Kodeverwaltungsschemata können
ebenfalls verwendet werden. Kodes mit einem niedrigen SF können von
rechts nach links zugewiesen werden, während Kodes mit einem hohen SF
von links nach rechts zugewiesen werden können, wobei auf diese Weise
Kodes für ähnliche Dienste
in den gleichen Zeitschlitzen konzentriert werden. Die Kodebaumbeschneidungsalgorithmen können auch
das Kodeverwal tungsschema ausnutzen, um Anrufen Priorität zu geben,
die entweder einen hohen oder niedrigen SF anfordern.
-
9 ist ein bevorzugter Algorithmus zum Zuweisen
von OVSF-Kodes. Eine bevorzugte Verwendung dieses Algorithmus ist
bei der Aufwärtsstecken-Kodezuweisung
für das
TDD/CDMA, wenngleich der Algorithmus für andere Anwendungen verwendet
werden kann. Der bevorzugte Algorithmus verwendet einen Kodevektor
mit zwei Bit-Kodestatuselementen, wie früher beschrieben, und den Kodebaum
von 4.
-
Anfänglich wird
eine Variable, wie etwa „x", auf Q gesetzt,
wobei Q der SF des Kodes ist, der die Zuwesung benötigt, Schritt 200.
Ein Anfangsknoten mit diesem SF in dem Baum wird geprüft, um zu
sehen, ob er frei ist (v(x) = „00"), Schritt 202.
Wenn er frei ist, wird der Elternknoten (der verbundene Knoten mit
einem niedrigeren Spreizfaktor) geprüft, um zu sehen, ob er gesperrt
ist („10"), Schritt 204.
Wenn er gesperrt ist, wird der Knoten x zugewiesen, Schritt 216.
Eine Variable „S", welche die Zuweisung
darstellt, wird auf „x" gesetzt, Schritt 218,
und der Alorithmus fährt
mit Schritt 220 fort.
-
Wenn
der Elternknoten nicht gesperrt ist, kann das Zuweisen dieses Knotens
nicht optimal sein („nicht_optimal" = „x") sein, Schritt 206.
Der nächste Knoten
wird geprüft
(x = x + 1), Schritt 208. Wenn der nächste Knoten den gleichen SF
hat (x < 2·Q), Schritt 210,
geht der Algorithmus zu Schritt 202, um zu bestimmen, ob
der Knoten optimal ist oder nicht. Wenn nicht, wird der „nicht_optimal"-Knoten für die Zuweisung
ausgewählt,
Schritt 212. Die Variable „S" wird auf „nicht_optimal” gesetzt,
Schritt 214, und der Algorithmus fährt mit Schritt 220 fort.
-
Das
Element des Knotens S wird als zugewiesen markiert (v(S) = „11"), Schritt 220.
Der verbundene Knoten mit einem niedrigeren SF als dem zugewiesenen
Knoten wird aktualisiert (ObererKnoten = (s/2]), Schritt 222.
Wenn ObererKnoten = 0, zeigt dies an, daß alle Knoten aktualisiert
wurden, Schritt 224, und der Algorithmus fährt mit
Schritt 234 fort. Wenn nicht v(ObererKnoten) = „00", was anzeigt, daß der Kno ten
verfügbar
ist, Schritt 226, wird dieser Knoten gesperrt (v(ObererKnoten)
= „10"), Schritt 228.
Der nächst
höhere
Knoten (mit einem niedrigeren SF) wird geprüft (ObererKnoten = [ObererKnoten/2],
Schritt 230. Wenn v(ObererKnoten) = „11" (was anzeigt, daß der Knoten durch einen Knoten
gesperrt war und nun durch zwei gesperrt ist), Schritt 232,
wird das Verfahren, den Baum hochzugehen, beendet, Schritt 234.
-
Der
Algorithmus aktualisiert weiterhin den Baum hinunter (initialisiere
UntererKnoten = S·2), Schritt 236.
Die Anzahl von Knoten, die unterhalb des aktuellen Knotens geprüft werden
sollen, ist zwei (initialisiere Anzahl_Knoten = 2), Schritt 238.
Der Algorithmus prüft,
um zu sehen, daß das
untere Ende des Baums nicht durchlaufen wurde (UntererKnoten < 32), Schritt 240.
Wenn das untere Ende durchlaufen wurde, ist die Aktualisierung vollständig, Schritt 254. Wenn
das untere Ende nicht durchlaufen wurde, wird ein Zähler initialisiert
(initialisiere Zähler
= 0), Schritt 242. Der von dem Zähler angezeigte Knoten wird
gesperrt (v(UntererKnoten + Zähler)
= „11"), Schritt 244. Der
Algorithmus inkrementiert den Zähler
und macht mit dem nächsten
Knoten weiter (Zähler
= Zähler
+ 1), Schritt 248. Wenn Zähler < Anzahl_Knoten, Schritt 248,
prüft der
Algorithmus den Knoten und geht zu Schritt 244. Wen Zähler < Anzahl_Knoten, prüft der Algorithmus
die Ebene tiefer in dem Baum (UntererKnoten = 2·UntererKnoten), Schritt 250.
Die in der unteren Ebene geprüften
Knoten werden verdoppelt (Anzahl_Knoten = 2·Anzahl_Knoten), Schritt 252.
-
10a und 10b zeigen
einen bevorzugten Algorithmus zum Aktualisieren eines Baums, nachdem
ein Kode freigegeben wurde (Zuweisung aufgehoben). Eine Variable „S" wird auf den Wert
des Knotens gesetzt, der freigegeben wird, Schritt 256. Dieser
Knoten S wird als frei markiert (v(S) = „00"), Schritt 258. Die höheren Knoten
in dem Baum werden aktualisiert (initialisiere ObererKnoten = [s/2]), Schritt 260.
Der Algorithmus prüft,
um zu sehen, ob das obere Ende des Baums nicht durchlaufen wurde (ObererKnoten
= 0), Schritt 262. Wenn der obere Teil des Baums durchlaufen
wur de, werden tiefere Knoten in dem Baum geprüft, Schritt 272. Wenn
das obere Ende des Baums nicht durchlaufen wurde, wird der aktuelle
Knoten von einem Kode gesperrt (v(ObererKnoten) = „10"), Schritt 264,
dieser Knoten wird als verfügbar
markiert (v(ObererKnoten) = „00"), Schritt 266.
Der Algorithmus geht weiter, um den nächst höheren Knoten in dem Baum zu
prüfen
(ObererKnoten = [ObererKnoten/2]), Schritt 268, und der
Algorithmus prüft
diesen Knoten. Wenn der Knoten durch zwei Kodes gesperrt wurde,
wird er als durch einen Knoten gesperrt gesetzt (v(ObererKnoten)
= „10"), Schritt 270.
-
Um
den Baum nach unten zu aktualisieren, wird die „UntererKnoten"-Variable initialisiert
(UntererKnoten = S·2),
Schritt 274. Die Anzahl der Knoten, die unterhalb des Knoten
aktualisiert werden soll, wird initialisiert (Anzahl_Knoten = 2),
Schritt 276. Wenn das untere Ende des Baums durchlaufen
wurde (UntererKnoten >=
32), wurde der Baum aktualisiert, Schritt 292. Wenn nicht
(UntererKnoten < 32), wird
ein Zähler
initialisiert (Zähler
= 0), Schritt 280. Der von dem Zähler angezeigte Knoten wird
für die Zuweisung
frei gemacht (v(UntererKnoten + Zähler) = „00"), Schritt 282. Der Zähler wird
inkrementiert (Zähler
= Zähler
+ 1), Schritt 284. Wenn die Anzahl von aktualisierten Kodes
nicht durchlaufen ist (Zähler < Anzahl_Knoten),
wird das Aktualisieren für
den nächsten
Zähler
wiederholt, Schritt 286. Wenn sie durchlaufen ist, (Zähler >= Anzahl_Knoten), wird
die nächste
Ebene unten in dem Baum geprüft
(UntererKnoten = 2·UntererKnoten),
Schritt 288. Die Anzahl analysierter Knoten in der unteren
Ebene ist zweimal die der vorhergehenden Ebene (AnzahlKnoten = 2·Anzahl_Knoten),
Schritt 290, und das Aktualisieren wird wiederholt.
-
Eine
Ausführungsform
der Erfindung betrifft die Kodezuweisung für das Voreinstellungs-Midamble-Zuweisungsschema
der TDD-Betriebsart von 3GPP W-CDMA. Midambles sind Teil der physikalischen
Kanalkonfiguration für
TDD. Es existieren unterschiedliche Midamble-Zuweisungschemata für TDD. Eines
ist eine WTRU-spezifische Midamble-Zuweisung, die sowohl für die Aufwärtsstrecke
als auch die Abwärtsstrecke gilt.
Für die
WTRU-spezifische Midamble-Zuweisung wird eine spezifische Midamble
explizit allen physikalischen Kanälen eines spezifischen Benutzers
zugewiesen. Ein anderes Schema ist die Voreinstellungs-Midamble-Zuweisung,
die ebenfalls sowohl für
die Aufwärtsstrecke
als auch die Abwärtsstrecke
gilt. Für
dieses Schema wird die verwendete Midamble durch eine vordefinierte Zuordnung
zwischen den Midambles und den zugewiesenen Kanalteilungskodes bestimmt.
-
Ein
anderes Schema ist die gemeinsame Midamble-Zuweisung, die nur für die Abwärtsstrecke gilt. In diesem
Schema wird eine gemeinsame Midamble allen physikalischen Kanälen in einem
spezifischen Zeitschlitz zugewiesen. Für die WTRU-spezifischen und
gemeinsamen Midamble-Schemata können
die Kodes an Benutzer zugewiesen werden, ohne die Midamble-Zuordnung
zu betrachten.
-
Für die Voreinstellungs-Midamble
wird jedoch die Zuordnung zwischen den Midambles der Kanalteilungskodes
in dem Kodezuweisungsschema verwendet. Abhängig von dem Bursttyp und dem Wert
von Kzelle, wie es von den Standards definiert ist, gelten verschiedene
Zuordnungen. Der Bursttyp und der Wert von Kzelle sind in der Funknetzsteuerung
(RNC) für
jeden Zeitschlitz, zum Beispiel eine Betriebs- und Wartungs(O&M-)Funktion oder
eine Funktion in der RNC, wie etwa die dynamische Kanalzuweisung
(DCA) über
die Funkressourcenverwaltung (RRM), individuell konfigurierbar.
Die Konfiguration wird an die WTRU über RRC-Signalisierung signalisiert,
und folglich ist die Verbindung der WTRU bekannt.
-
Für die Voreinstellungs-Midamble-Zuweisung
definiert die Verbindung zwischen Midambles und Kanalteilungskodes
primäre
und sekundäre
Kanalteilungskodes. Es gelten die folgenden Regeln: jeder sekundäre Kanalteilungskode
wird mit einem einzigen primären
Kanalteilungskode verbunden; jeder sekundäre Kanalteilungskode verwendet
die gleich Midamble wie der primäre
Kanalteilungskode, dem er zugeordnet ist; sekundäre Kodes können nur zugewiesen werden,
wenn der zugeordnete primäre
Kode ebenfalls zugewiesen ist; alle der gleichen Midamble zugeordneten
Kanalteilungskodes können
nur der gleichen WTRU zugewiesen werden; und für gemeinsame und WTRU-spezifische
Midamble-Zuweisungen können
alle Kodes als primäre
Kodes betrachtet werden.
-
Um
die Kodezuweisung für
das Voreinstellungs-Midamble-Schema
durchzuführen,
wird jedem Kode bevorzugt eine zusätzliche Markierung, die anzeigt,
ob es ein primärer
oder sekundärer
Kanalteilungskode, eine Midamble-Bezeichnung (die auch eine Kodegruppenbezeichnung
genannt werden könnte)
mit einem von Kzelle verschiedenen möglichen Wert (z. B. 0 bis Kzelle-1)
und eine Markierung, die für
die WTRU-Verbindung
verwendet werden soll, gegeben.
-
11 ist ein Flußdiagramm zum Ersetzen der
Schritte 200–220 von 9 für
die Verwendung zur Zuweisung von Kodes für das Voreinstellungs-Midamble-Schema.
Die Markierung für
die WTRU-Zuordnung könnte
für jeden
Kanalteilungskode oder nur für
jede Midamble bereitgestellt werden, da jeder Kode bereits mit einer
gegebenen Midamble verbunden ist. Die Verbindung mit einer Midamble
für eine WTRU
würde die
Zuordnung zu dieser WTRU implizieren.
-
Das
Verfahren versucht, den optimalen Kode (mit „00" markierten Kode) für einen gegebenen Benutzer
(WTRU) zu finden. Die erste (wünschenswerteste)
Wahl ist ein sekundärer
Kode, der einer Midamble zugeordnet ist, die dem Benutzer bereits
zugewiesen ist. Diese Art von Kode wird als ein Klasse-1-Kode klassifiziert.
Die zweite Wahl ist ein primärer
Kode, der ein Elternteil hat, das bereits durch einen Kode gesperrt
ist (Elternteil als „10" markiert). Dieser
Kode wird als ein Klasse-2-Kode klassifiziert. Die dritte Wahl ist
ein primärerer
Kode, der ein Elternteil hat, das nicht gesperrt ist, der als ein
Klasse-3-Kode klassifiziert wird. Einer Midamble zugeordnete sekundäre Kodes,
die zu einem anderen Benutzer gehören, würden nicht für die Zuweisung
betrachtet.
-
Der
am meisten bevorzugte Algorithmus durchsucht beginnend bei dem Kode
ganz links in dem Baum auf dieser Ebene von links nach rechts, wenngleich
andere Suchrichtungen verwendet werden können. Für jeden verfügbaren Kode
bestimmen wir, sofern vorhanden, zu welcher Klasse er gehört. Wenn
eine Klasse 1 gefunden wird, wird eine sofortige Zuweisung durchgeführt. Andernfalls
werden die Kodes ganz links in den Klassen 2 und/oder 3 für die mögliche Zuweisung
in dem Fall gemerkt, daß die Suche
endet, ohne einen Klasse-1-Kode zu finden.
-
Die
folgenden Variablen werden in dem bevorzugten Algorithmus verwendet:
Optimal_primär für einen
Kode in Klasse 2 und Nicht_optimal_primär für einen Kode in Klasse 3. Eine
Variable x wird auf den Wert des Spreizfaktors initialisiert, x
= Q, Schritt 300. Q ist der SF des Kodes, der zugewiesen
werden soll. Optimal_primär
und Nicht_optimal_primär
werden auf null gesetzt. Die Variable v(x) wird geprüft, um zu
sehen, ob sie gleich „00" ist, was anzeigt,
daß sie
frei ist, Schritt 302. Wenn x ein sekundärer Kode ist,
Schritt 304, und die mit dem Kode x verbundene Midamble
dem Benutzer zugewiesen wird, Schritt 306, wird der ausgewählte Kode
S auf x gesetzt (S = x), Schritt 308. Dann springt der
Algorithmus zu Schritt 336.
-
Wenn
x kein sekundärer
oder primärer
ist, Schritt 310 und Optimal_primär = 0, Schritt 312 (ein optimaler
Kode wurde bis jetzt nicht optimal gefunden), wird der primäre Kode
am weitesten links als optimal für
die spätere
Verwendung gespeichert, wenn kein sekundärer Kode gefunden wird. Der
Elternkode wird geprüft,
um zu sehen, ob er durch einen gesperrt ist (v(x/2) = „10"), Schritt 314.
Wenn dies der Fall ist, wird Optimal_primär auf das aktuelle x gesetzt
(Optimal_primär
= 0), Schritt 320, und der nächste Kode wird geprüft (x =
x + 1), Schritt 322. Wenn das Elternteil gesperrt ist,
wird eine Prüfung durchgeführt, um
zu bestimmen, ob ein nicht optimaler primärer Kode gefunden wird (Nicht_optimal_primär = 0),
Schritt 318. Anschließend
wird der nächste
Kode geprüft
(x = x + 1), Schritt 322.
-
Wenn
der nächste
Kode innerhalb des gleichen Spreizfaktors liegt (x < 2·Q), Schritt 324,
wird das Verfahren für
den nächsten
Kode wiederholt, und der Algorithmus geht zu Schritt 302.
Wenn der nächste
Kode nicht in dem gleichen Spreizfaktor ist, wird eine Prüfung durchgeführt, um
zu sehen, ob ein optimaler primärer
Kode gefunden ist (Optimal_primär
= 0), Schritt 326. Wenn ein optimaler primärer gefunden
wurde, wird der Kode auf den optimalen primären gesetzt (S = Optimal_primär), Schritt 328.
Die Midamble des zugewiesenen Kodes S wird dem Benutzer zugewiesen,
Schritt 330.
-
Wenn
ein nicht optimaler primärer
gefunden ist (Nicht_optimal_primär
= 0), Schritt 332, wird S auf den nicht optimalen primären gesetzt
(S = Nicht_optimal_primär),
Schritt 334. Die Midamble des zugewiesenen Kodes S wird
dem Benutzer zugewiesen, Schritt 330. Nachdem die Midamble
zugewiesen ist, wird der zugewiesene Kode als zugewiesen markiert
(v(S) = „11"), Schritt 336,
und der Kodebaum wird entsprechend aktualisiert, Schritt 338. Wenn
keine sekundären
oder primären
Kodes verfügbar
sind, kann kein Kode zugewiesen werden, Schritt 340.
-
Da
das Freigabeverfahren einfach aus dem Aktualisieren des Kodebaums
besteht, kann das früher
beschriebene Verfahren für
die Kodefreigabe im Fall der Voreinstellungs-Midamble-Zuweisung mit der Hinzufügung eines
Schritts verwendet werden. Nach dem Abschluss der Freigabe eines
primären Kodes
würde die
diesem Kode zugeordnete Midamble von diesem Benutzer (WTRU) freigegeben.
-
Bevorzugt
stellt die Funktionseinheit, die das Verfahren aufruft, nachdem
entschieden wurde, welcher Kode freigegeben werden soll (z. B. eine Funkressourcenverwaltungsfunktion),
sicher, daß ein primärer Kode
nur freigegeben wird, wenn alle seine sekundären Kodes nicht zugewiesen
sind. Wahlweise könnte
ein Schritt am Anfang des Freigabeverfahrens hinzugefügt werden,
um zu verifizieren, daß ein primärer Kode
nicht freigegeben wird, wenn seine zugeordneten sekundären Kodes
immer noch zugewiesen sind. Wenn irgendein zugeordneter sekundärer immer
noch zugewiesen ist, würde
das Freigabeverfahren aussteigen und einen Kodezuweisungsfehler anzeigen.