Main Content

ACPR- und CCDF-Messungen mit MATLAB System objects

ACPR-Messungen

Dieses Beispiel veranschaulicht, wie das Leistungsverhältnis benachbarter Kanäle (Adjacent Channel Power Ratio, ACPR) eines 50-kb/s-QPSK-Basisband-Signals gemessen wird. ACPR ist das Verhältnis der Signalleistung, die in einem benachbarten Frequenzband gemessen wurde, zur Leistung desselben Signals, die in seinem Hauptband gemessen wurde. Die Anzahl der Abtastungen pro Symbol ist auf vier festgelegt.

Legen Sie die Abtastungen pro Symbol (sps) und die Kanalbandbreite (bw) als Parameter fest.

sps = 4;
bw = 50e3;

Generieren Sie 10.000 4-ary-Symbole für die QSPK-Modulation.

data = randi([0 3],10000,1);

Konstruieren Sie einen QPSK-Modulator und modulieren Sie dann die Eingabedaten.

qpskMod = comm.QPSKModulator;
x = qpskMod(data);

Wenden Sie die Rechteckpulsformung auf das modulierte Signal an. In praktischen Systemen wird diese Art der Pulsformung in der Regel nicht verwendet. Hier dient sie lediglich der Veranschaulichung.

y = rectpulse(x,sps);

Konstruieren Sie ein ACPR System object. Die Abtastrate ergibt sich durch Multiplikation der Bandbreite mit der Anzahl der Abtastungen pro Symbol. Angenommen wird, dass der Hauptkanal bei 0 liegt, während der Versatz des benachbarten Kanals auf 50 kHz (mit der Bandbreite des Hauptkanals identisch) festgelegt ist. Die Bandbreite der Messung des benachbarten Kanals ist ebenfalls auf denselben Wert wie beim Hauptkanal festgelegt. Aktivieren Sie die Ports für die Ausgabe der Leistung des Haupt- und des benachbarten Kanals.

acpr = comm.ACPR('SampleRate',bw*sps,...
    'MainChannelFrequency',0,...
    'MainMeasurementBandwidth',bw,...
    'AdjacentChannelOffset',50e3,...
    'AdjacentMeasurementBandwidth',bw,...
    'MainChannelPowerOutputPort', true,...
    'AdjacentChannelPowerOutputPort',true);

Messen Sie das ACPR, die Hauptkanalleistung und die Nachbarkanalleistung von Signal y.

[ACPRout,mainPower,adjPower] = acpr(y)
ACPRout = -9.3071
mainPower = 28.9389
adjPower = 19.6318

Legen Sie den Frequenzversatz auf 75 kHz fest und bestimmen Sie das ACPR. Da die Eigenschaft AdjacentChannelOffset nicht abstimmbar ist, müssen Sie zuerst acpr freigeben. Beachten Sie, wie sich das ACPR verbessert, wenn der Kanalversatz erhöht wird.

release(acpr)
acpr.AdjacentChannelOffset = 75e3;
ACPRout = acpr(y)
ACPRout = -13.1702

Geben Sie acpr frei und geben Sie einen Versatz des benachbarten Kanals von 50 kHz an.

release(acpr)
acpr.AdjacentChannelOffset = 50e3;

Erstellen Sie einen erhöhten Kosinusfilter und filtern Sie das modulierte Signal.

txfilter = comm.RaisedCosineTransmitFilter('OutputSamplesPerSymbol', sps);
z = txfilter(x);

Messen Sie das ACPR für das gefilterte Signal z. Wie Sie sehen, verbessert sich das ACPR von -9,5 dB auf -17,7 dB, wenn erhöhte Kosinuspulse verwendet werden.

ACPRout = acpr(z)
ACPRout = -17.2245

Plotten Sie die Leistungsverhältnisse benachbarter Kanäle für einen Bereich mehrerer Werte für den Versatz des benachbarten Kanals. Legen Sie für den Kanalversatz einen Wertebereich von 30 kHz bis 70 kHz in 10-kHz-Schritten fest. Beachten Sie, dass Sie zuerst hACPR freigeben müssen, um den Versatz ändern zu können.

freqOffset = 1e3*(30:5:70);
release(acpr)
acpr.AdjacentChannelOffset = freqOffset;

Bestimmen Sie die ACPR-Werte für die Signale mit der Form eines Rechteckpulses und der Form eines erhöhten Kosinuspulses.

ACPR1 = acpr(y);
ACPR2 = acpr(z);

Plotten Sie die Leistungsverhältnisse benachbarter Kanäle.

plot(freqOffset/1000,ACPR1,'*-',freqOffset/1000, ACPR2,'o-')
xlabel('Adjacent Channel Offset (kHz)')
ylabel('ACPR (dB)')
legend('Rectangular','Raised Cosine','location','best')
grid

Figure contains an axes object. The axes object contains 2 objects of type line. These objects represent Rectangular, Raised Cosine.

CCDF-Messungen

Dieses Beispiel veranschaulicht, wie das System object™ Complementary Cumulative Distribution Function (komplementäre kumulative Verteilungsfunktion, CCDF) verwendet wird, um zu messen, mit welcher Wahrscheinlichkeit die Momentanleistung eines Signals größer ist als ein angegebener Wert über dessen Durchschnittsleistung. Konstruieren Sie das comm.CCDF-Objekt, aktivieren Sie den PAPR-Ausgabeport und legen Sie das Limit für die maximale Signalleistung auf 50 dBm fest.

ccdf = comm.CCDF('PAPROutputPort',true,'MaximumPowerLimit', 50);

Erstellen Sie einen OFDM-Modulator mit einer FFT-Länge von 256 und einer zyklischen Präfixlänge von 32.

ofdmMod = comm.OFDMModulator('FFTLength',256,'CyclicPrefixLength',32);

Bestimmen Sie mithilfe der Funktion info des comm.OFDMModulator-Objekts die Eingabe- und Ausgabegrößen des OFDM-Modulator-Objekts.

ofdmDims = info(ofdmMod)
ofdmDims = struct with fields:
    DataInputSize: [245 1]
       OutputSize: [288 1]

ofdmInputSize = ofdmDims.DataInputSize;
ofdmOutputSize = ofdmDims.OutputSize;

Legen Sie die Anzahl der OFDM-Rahmen fest.

numFrames = 20;

Ordnen Sie Hauptspeicher für die Signal-Arrays zu.

qamSig = repmat(zeros(ofdmInputSize),numFrames,1);
ofdmSig = repmat(zeros(ofdmOutputSize),numFrames,1);

Generieren Sie das 64-QAM- und das OFDM-Signal für die Auswertung.

for k = 1:numFrames
    % Generate random data symbols
    data = randi([0 63],ofdmInputSize);
    % Apply 64-QAM modulation
    tmpQAM = qammod(data,64);
    % Apply OFDM modulation to the QAM-modulated signal
    tmpOFDM = ofdmMod(tmpQAM);
    % Save the signal data
    qamSig((1:ofdmInputSize)+(k-1)*ofdmInputSize(1)) = tmpQAM;
    ofdmSig((1:ofdmOutputSize)+(k-1)*ofdmOutputSize(1)) = tmpOFDM;
end

Bestimmen Sie die durchschnittliche Signalleistung, die Spitzensignalleistung und die PAPR-Verhältnisse für diese zwei Signale. Da die Länge der zwei Signale, die ausgewertet werden sollen, identisch sein muss, werden nur die ersten 4000 Symbole ausgewertet.

[Fy,Fx,PAPR] = ccdf([qamSig(1:4000),ofdmSig(1:4000)]);

Plotten Sie die CCDF-Daten. Wie Sie sehen, ist die Wahrscheinlichkeit dafür, dass die Leistung des OFDM-modulierten Signals um mehr als 3 dB über dessen Durchschnittsleistung liegt, viel höher als für das QAM-modulierte Signal.

plot(ccdf)
legend('QAM','OFDM','location','best')

Figure contains an axes object. The axes object with title CCDF Measurement contains 2 objects of type line. These objects represent QAM, OFDM.

Vergleichen Sie die PAPR-Werte für das QAM-modulierte Signal und das OFDM-modulierte Signal.

fprintf('\nPAPR for 64-QAM = %5.2f dB\nPAPR for OFDM = %5.2f dB\n',...
    PAPR(1), PAPR(2))
PAPR for 64-QAM =  3.65 dB
PAPR for OFDM =  9.44 dB

Wie Sie sehen, erhöht sich nach Anwendung der OFDM-Modulation auf ein 64-QAM-moduliertes Signal das PAPR um 5,8 dB. Das heißt: Wenn eine Sendeleistung von 30 dBm erforderlich ist, um eine 64-QAM-Verbindung zu schließen, muss der Leistungsverstärker eine maximale Leistung von 33,7 dBm haben, um den linearen Betrieb zu gewährleisten. Wenn dann auf das Signal die OFDM-Modulation angewendet wird, ist ein Leistungsverstärker mit 39,5 dBm erforderlich.

Siehe auch

|

Verwandte Themen