Main Content

La traduction de cette page n'est pas à jour. Cliquez ici pour voir la dernière version en anglais.

Mesures ACPR et CCDF avec MATLAB System objects

Mesures ACPR

Cet exemple montre comment mesurer le rapport de puissance du canal adjacent (ACPR, Adjacent Channel Power Ratio) d’une bande de base, de signal QPSK 50 kbps. L’ACPR est le rapport de la puissance du signal mesuré dans une bande de fréquence adjacente sur la puissance du même signal mesuré dans sa bande principale. Le nombre d’échantillons par symbole est défini à quatre.

Configurez les échantillons par symbole (sps) et les paramètres de la bande passante (bw) du canal.

sps = 4;
bw = 50e3;

Générez 10 000 symboles 4-aire pour la modulation QSPK.

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

Construisez un modulateur QPSK, puis modulez les données en entrée.

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

Appliquez des formes d’impulsions rectangulaires au signal modulé. Ce type de forme d’impulsion n’est généralement pas employé dans un système pratique, mais est utilisé ici à des fins d’illustration.

y = rectpulse(x,sps);

Construisez un System object ACPR. Le taux d'échantillonnage est la bande passante multipliée par le nombre d’échantillons par symbole. Le canal principal est présumé être à 0 tandis que le décalage du canal adjacent est réglé à 50 kHz (identique à la bande passante du canal principal). De la même manière, la mesure de la bande passante du canal adjacent est réglée pour être la même que le canal principal. Pour finir, activez les ports de sortie de puissance des canaux principal et adjacent.

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

Mesurez l’ACPR, la puissance du canal principal et la puissance du canal adjacent du signal y.

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

Changez le décalage de fréquence à 75 kHz et déterminez l’ACPR. La propriété AdjacentChannelOffset n’étant pas ajustable, il faut d’abord valider acpr. Observez que l’ACPR augmente quand le décalage de canal est augmenté.

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

Validez acpr et spécifiez un décalage de canal adjacent de 50 kHz.

release(acpr)
acpr.AdjacentChannelOffset = 50e3;

Créez un filtre en cosinus surélevé et filtrez le signal modulé.

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

Mesurez l’ACPR pour le signal filtré, z. Vous pouvez voir que l’ACPR augmente entre -9,5 dB et -17,7 dB lorsque les impulsions en cosinus surélevé sont utilisées.

ACPRout = acpr(z)
ACPRout = -17.2245

Tracez les rapports de puissances du canal adjacent sur la plage de valeur des décalages des canaux adjacents. Configurez les plages de décalages du canal pour qu’ils varient de 30 kHz à 70 kHz par palier de 10 kHz. Ici encore, il faut d’abord valider hACPR pour modifier le décalage.

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

Déterminez les valeurs ACPR pour les signaux avec des formes d'impulsion rectangulaires et en cosinus surélevé.

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

Tracez les rapports de puissance du canal adjacent.

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.

Mesures CCDF

Cet exemple montre comment utiliser le System object™ FCCD (Complementary Cumulative Distribution Function) pour mesurer la probabilité que la puissance instantanée d'un signal soit supérieure à un niveau spécifié sur sa puissance moyenne. Construisez l’objet comm.CCDF, activez le port de sortie PAPR (Peak-to-Average Power Ratio) et réglez la limite de puissance maximum à 50 dBm.

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

Créez un modulateur OFDM avec une longueur FFT de 256 et une longueur de préfixe cyclique de 32.

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

Déterminez les tailles d’entrée et de sortie de l’objet modulateur OFDM en utilisant la fonction info de l’objet comm.OFDMModulator.

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

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

Définissez le nombre de trames OFDM.

numFrames = 20;

Attribuez la mémoire pour les tableaux de signaux.

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

Générez les signaux 64-QAM et OFDM pour l'évaluation.

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

Déterminez la puissance moyenne du signal, la puissance maximal du signal et les rapports PAPR pour les deux signaux. Les deux signaux évalués doivent avoir la même longueur pour que les 4 000 premiers symboles soient évalués.

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

Tracez les données CCDF. Prenez en compte que la probabilité que la puissance du signal modulé OFDM soit plus de 3 dB au dessus de sa puissance moyenne est beaucoup plus importante que pour le signal modulé QAM.

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.

Comparez les valeurs PAPR pour les signaux modulés QAM et AFDM.

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

Il est possible de voir qu’en appliquant la modulation AFDM à un signal modulé 64-QAM, le PAPR augmente de 5,8 dB. Cela signifie que si une puissance d'émission de 30 dBm est nécessaire pour fermer un lien 64-QAM, l’amplificateur de puissance doit avoir une puissance maximale de 33,7 dBm afin d’assurer une opération linéaire. Si le même signal était alors modulé OFDM, un amplificateur de puissance de 39,5 dBm serait requis.

Voir aussi

|

Sujets associés