SNT Übung 1

Werbung
ZHW, NTM, 2005/06, Rur
1
Übung 11: Simulation CDMA-System
1. Einleitung
User 1
d1[n]
x1[n]
N
d1e[n]
ones(1,N)
s1[n]
Korrelationsempfänger 1
User 2
d2[n]
∑
Δ2
N
r[n]
ones(1,N)
s2[n]
r1[n]
Tb y1[n]
s1[n]
User K
dK[n]
ΔK
N
xK[n]
ones(1,N)
sK[n]
· dk[0]
xk[n]
· dk[1]
· dk[2]
sk[0] … sk[N-1] sk[N] … sk[2N-1] sk[2N] … sk[3N-1] sk[3N] …
Abbildung 1: Diskretes Modell eines CDMA-Systems im Basisband.
In dieser Übung soll mit Matlab die Bitfehlerrate auf einem CDMA-Kanal simuliert werden.
Dazu soll Folgendes angenommen werden:
Die K Benutzer senden Nbit bipolare, gleichverteilte und unabhängige Datenbits dk[n].
Für die Spreizung und das Scrambling werden wie im Mobilfunk üblich lange, bipolare
Zufallsfolgen sk[n] eingesetzt, (Matlab-Funktion randint(.)).
Für die Spreizung werden fortlaufend N neue Chip von sk[n] verwendet, siehe Abbildung 1.
Die Spreizsequenzen sind also zeitvariant bzw. ändern von Bit zu Bit. Die Bitdauer Tb = N·Tc,
wobei Tc die Chipdauer darstellt.
Die Benutzer senden chip-asynchron (im Uplink). Der zeitliche Versatz Δk, k=2,...,K, sei
gleichverteilt im Bereich [0, Tc, ..., (N-1)Tc].
Das thermische Rauschen sei Null.
Die Signale von allen Benutzern werden gleich stark empfangen (perfekte Power Control).
ZHW, NTM, 2005/06, Rur
2
2. Aufgabenstellung
1. Erstellen Sie mit Hilfe der Vorlage ntmueb11.m ein Programm, mit dem Sie die BER1
für Benutzer 1 in Funktion der Anzahl Benutzer K im CDMA-System simulieren können.
Wählen Sie K=2, N=5 und Nbit=3 und verifizieren Sie die Signale r[n], r1[n], y1[n] und
d1e[n].
2. Simulieren Sie für die Parameter K = 2,...,10, N = 31 und Nbit = 10’000 die Bitfehlerrate
BER1 in Funktion der Anzahl Benutzer.
Wie hängt BER1 vom zeitlichen Versatz Δk der Benutzer ab?
Bestimmen Sie das Carrier-to-Interference-Ratio C/I = Eb/I0 für K =2,...,10 und
verfizieren Sie die Performance an Hand der Figur 5.46 im Skript (Datenübertragung
über einen AWGN-Kanal im Basisband).
Achtung: Bitte initialisieren Sie alle Matrizen und Vektoren vor der Verarbeitung, damit
die Simulationszeit < 5s bleibt.
3. Benutzen Sie für die Spreizung statt zufälliger Folgen Ausschnitte aus einer sehr langen
PN-Folge (z.B. Schieberegister mit Feedback-Polynom X28+X3+1). Geben Sie jedem Benutzer einen zufälligen Startwert (seed).
Benutzen Sie für Testzwecke zuerst ein kurze PN-Sequenz (z.B. Schieberegister mit
Feedback-Polynom X3+X1+1).
ZHW, NTM, 2005/06, Rur
3
Musterlösung
Aufgabe 1
Verifikation der Signale (Code siehe unten):
d1 = [ 1 -1 -1]
d2 = [-1 1 1]
s1=[ 1 1 -1 1 -1
s2=[-1 1 -1 1 1
1 -1 1 -1 -1
-1 -1 -1 1 1
-1 -1 -1 -1 -1]
-1 -1 -1 1 1]
x1=[ 1 1 -1 1 -1
x2=[ 1 -1 1 -1 -1
-1 1 -1 1 1
-1 -1 -1 1 1
1 1 1 1 1]
-1 -1 -1 1 1]
r = [ 2 0 0 0 -2
-2 0 -2 2 2
0 0 0 2 2]
r1= [ 2 0 0 0 2
-2 0 -2 -2 -2
0 0 0 -2 -2]
-8
-1
-4
-1
y1= [
d1e= [
4
1
]
]
Aufgabe 2
Der zeitliche Versatz zwischen den Aussendungen der einzelnen Benutzer hat dank
dem Scrambling keinen Einfluss auf die BER-Performance eines einzelnen Benutzers.
Wenn 2 Benutzer einmal eine „schlechte“ Kreuzkorrelation haben, haben sie kurze Zeit
später vielleicht wieder eine „gute“ Kreuzkorrelation.
Simulationsresultate für N=31 und Nbit=10000:
Die mit * bezeichneten BER-Werte sind statistisch zu wenig signifikant
(zu wenig Bits übertragen bzw. zu wenig Fehler detektiert).
**: Für wenige „Interferer“ ist die AWGN-Approximation, die der SNR- bzw. C/I-Formel
zu Grund liegt, nicht mehr gerechtfertigt.
K
2
3
4
5
6
7
8
9
10
BER1
0*
0*
0.0004*
0.0023*
0.0063
0.0127
0.0175
0.0216
0.0326
C/I = N / (K-1)
**
11.9 dB
10.1 dB
8.9 dB
7.9 dB
7.1 dB
6.5 dB
5.9 dB
5.4 dB
Je grösser die Anzahl Benutzer K in der CDMA-Zelle in Abbildung 1 ist, desto grösser ist
die Interferenz und damit die Bitfehlerrate BER. Die Interferenz wirkt sich genau gleich
aus wie das thermische Rauschen auf einem AWGN-Kanal. Die BER-Werte liegen exakt
auf der BER-Performance-Kurve für bipolare Datenübertragung über einen AWGN-Kanal
(siehe Figur 5.46 im Skript).
ZHW, NTM, 2005/06, Rur
Aufgabe 3
Es gibt keinen Performance-Unterschied, wenn statt der Zufallsfolgen sk[n] sehr lange
PN-Folgen eingesetzt werden, solange nur kurze, N Chip lange Ausschnitte für die
Spreizung verwendet werden (im Code unten nicht implementiert).
Matlab-Code:
% Parameter
% =====================================================
K=10;
% Anzahl Benutzer
N=31;
% Spreizfaktor
Nbit=10000;
% Anzahl übertragene Bit pro Teilnehmer
% Generierung Datenfolge
% =====================================================
d=(-1).^randint(K,Nbit);
% Generierung Chipfolge
% =====================================================
s=(-1).^randint(K,Nbit*N);
x=zeros(K,N*Nbit);
for k=1:K,
for n=1:Nbit,
x(k,(n-1)*N+1:n*N)=d(k,n)*s(k,(n-1)*N+1:n*N);
end
end
% Generierung Empfangsvektor
% =====================================================
delta=randint(1,K,N);
delta(1)=0; % Benutzer 1 hat Versatz 0 Chip (Referenz)
r=x(1,:);
for k=2:K,
r=r+[zeros(1,delta(k)) x(k,1:Nbit*N-delta(k))];
end
% Korrelationsempfänger 1
% =====================================================
r1=s(1,:).*r;
% Entspreizung
y1=zeros(1,Nbit);
% Integrate and Dump
for n=1:Nbit,
y1(n)=sum(r1((n-1)*N+1:n*N));
end
d1=zeros(1,Nbit);
% Entscheider = BPSK-Demodulator
for n=1:Nbit,
d1(n)=sign(y1(n));
if d1(n)==0,
d1(n)=1;
end
end
% Bestimmung BER
BER=sum(abs(d(1,:)-d1)/2)/Nbit
4
Herunterladen