ACPR и измерения CCDF с системными объектами MATLAB

Измерения ACPR

Этот пример показывает, как измерить смежное отношение степени канала (ACPR) от основной полосы, сигнала QPSK на 50 Кбит/с. ACPR является отношением степени сигнала, измеренной в смежном диапазоне частот к степени от того же сигнала, измеренного в его основной полосе. Номер выборок на символ определяется к четыре.

Установите выборки на символ (sps) и пропускная способность канала (bw) параметры.

sps = 4;
bw = 50e3;

Сгенерируйте 10 000 4-ary символов для модуляции QSPK.

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

Создайте модулятор QPSK и затем модулируйте входные данные.

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

Примените формирование меандра к модулируемому сигналу. Этот тип импульсного формирования обычно не делается в практической системе, но используется здесь в иллюстративных целях.

y = rectpulse(x,sps);

Создайте Системный объект ACPR. Частота дискретизации является пропускной способностью, умноженной на количество выборок на символ. Основной канал принят, чтобы быть в 0, в то время как смежное смещение канала установлено в 50 кГц (идентичный пропускной способности основного канала). Аналогично, пропускная способность измерения смежного канала собирается совпасть с основным каналом. В последнее время включите основные и смежные порты выходной мощности канала.

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

Измерьте ACPR, основную степень канала и смежную степень канала сигнала y.

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

Измените смещение частоты на 75 кГц и определите ACPR. Поскольку свойство AdjacentChannelOffset является ненастраиваемым, необходимо сначала выпустить acpr. Заметьте, что ACPR улучшается, когда смещение канала увеличено.

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

Выпустите acpr и задайте смежное смещение канала на 50 кГц.

release(acpr)
acpr.AdjacentChannelOffset = 50e3;

Создайте повышенный фильтр косинуса и отфильтруйте модулируемый сигнал.

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

Измерьте ACPR для отфильтрованного сигнала, z. Вы видите, что ACPR улучшается с-9.5 дБ до-17.7 дБ, когда повышенные импульсы косинуса используются.

ACPRout = acpr(z)
ACPRout = -17.2245

Постройте смежные отношения степени канала для области значений смежных смещений канала. Установите смещения канала колебаться от 30 кГц до 70 кГц на шагах на 10 кГц. Вспомните, что необходимо сначала выпустить hACPR, чтобы изменить смещение.

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

Определите значения ACPR для сигналов с прямоугольными и повышенными формами импульса косинуса.

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

Постройте смежные отношения степени канала.

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

Измерения CCDF

Этот пример показывает, как использовать Системный объект Дополнительной кумулятивной функции распределения (CCDF), чтобы измерить вероятность мгновенной степени сигнала, являющейся больше, чем заданный уровень по его средней степени. Создайте объект comm.CCDF, включите выходной порт PAPR и установите максимальный предел степени сигнала к 50 dBm.

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

Создайте модулятор OFDM, имеющий длину БПФ 256 и циклическую длину префикса 32.

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

Определите размеры ввода и вывода объекта модулятора OFDM использование функции info объекта comm.OFDMModulator.

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

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

Определите номер кадров OFDM.

numFrames = 20;

Выделите память для массивов сигнала.

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

Сгенерируйте 64-QAM и сигналы OFDM для оценки.

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

Определите среднюю степень сигнала, пиковую степень сигнала и отношения PAPR для двух сигналов. Два оцениваемые сигнала должны быть той же длиной, таким образом, первые 4 000 символов оценены.

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

Отобразите данные CCDF на графике. Заметьте, что вероятность степени OFDM модулируемый сигнал, являющийся на больше чем 3 дБ выше его среднего уровня мощности, намного выше, чем для QAM модулируемый сигнал.

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

Сравните значения PAPR для модулируемого QAM, и OFDM модулировал сигналы.

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

Вы видите, что путем применения модуляции OFDM к 64-QAM модулируемому сигналу, PAPR увеличивается на 5,8 дБ. Это означает, что, если 30 степеней передачи dBm необходимы, чтобы закрыть 64-QAM ссылку, усилитель мощности должен иметь максимальную власть 33.7 dBm гарантировать линейную операцию. Если тем же сигналом был затем модулируемый OFDM, 39,5 dBm усилителей мощности требуются.