коммуникация. CarrierSynchronizer

Компенсируйте смещение несущей частоты

Описание

Система comm.CarrierSynchronizer object™ компенсирует несущую частоту и смещения фазы в сигналах что схемы модуляции одно поставщика услуг использования. Алгоритм синхронизатора поставщика услуг совместим с BPSK, QPSK, OQPSK, 8-PSK, PAM и прямоугольными схемами модуляции QAM.

Примечание

Этот Системный объект не разрешает неоднозначности фазы, созданные алгоритмом синхронизации. Примеры демонстрируют разрешение неоднозначности фазы.

Компенсировать частоту и фазу смещает в сигналах что схемы модуляции одно поставщика услуг использования:

  1. Создайте объект comm.CarrierSynchronizer и установите его свойства.

  2. Вызовите объект, как будто это была функция.

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

carrSynch = comm.CarrierSynchronizer
carrSynch = comm.CarrierSynchronizer(Name,Value)

Описание

carrSynch = comm.CarrierSynchronizer создает Системный объект, который компенсирует смещение несущей частоты и смещение фазы в сигналах что схемы модуляции одно поставщика услуг использования.

пример

carrSynch = comm.CarrierSynchronizer(Name,Value) свойства наборов с помощью одной или нескольких пар "имя-значение". Заключите каждое имя свойства в кавычки.

Свойства

развернуть все

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

Если свойство является настраиваемым, можно изменить его значение в любое время.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (MATLAB).

Тип модуляции, заданный как 'QAM', '8PSK', 'BPSK', 'OQPSK', 'PAM' или 'QPSK'.

Этот Системный объект частично поддерживает CPM. Это было протестировано на сигнал CPM, имеющий одну выборку на символ и индекс модуляции 0,5.

Пример: comm.CarrierSynchronizer('Modulation','QPSK') создает Системный объект синхронизатора поставщика услуг, чтобы использовать с QPSK модулируемый сигнал.

Настраиваемый: нет

Фаза Modulation сместила метод, заданный как 'Auto' или 'Custom'.

  • 'auto' Примените традиционное смещение для заданного типа модуляции.

    МодуляцияСмещение фазы
    'QAM', 'BPSK' или 'PAM'0
    'OQPSK' или 'QPSK'π/4
    '8PSK'π/8
  • 'Custom' — Задайте пользовательское смещение фазы со свойством CustomPhaseOffset.

Настраиваемый: да

Пользовательское смещение фазы в радианах, заданных как скаляр.

Зависимости

Это свойство применяется, когда свойство ModulationPhaseOffset установлено в 'Custom'.

Типы данных: double

Количество выборок на символ, заданный как положительное целое число.

Настраиваемый: да

Типы данных: double

Затухание фактора цикла, заданного как положительная скалярная величина.

Настраиваемый: да

Типы данных: double

Нормированная пропускная способность цикла, заданного как скаляр в области значений (0,1]. Пропускная способность цикла нормирована частотой дискретизации синхронизатора.

Уменьшение пропускной способности цикла уменьшает время сходимости синхронизатора, но также и уменьшает получение по запросу - в области значений синхронизатора.

Настраиваемый: да

Типы данных: double

Использование

Для версий ранее, чем R2016b, используйте функцию step, чтобы запустить алгоритм Системного объекта. Аргументы к step являются объектом, который вы создали, сопровождаемый аргументами, показанными в этом разделе.

Например, y = step(obj,x) и y = obj(x) выполняют эквивалентные операции.

Синтаксис

[outSig,phErr] = carrSynch(inSig)

Описание

пример

[outSig,phErr] = carrSynch(inSig) компенсирует смещение частоты и смещение фазы во входном сигнале. Этот Системный объект возвращает компенсированный выходной сигнал и оценку ошибки фазы.

Входные параметры

развернуть все

Входной сигнал, заданный как комплексный скаляр или вектор-столбец комплексных чисел.

Типы данных: double | single
Поддержка комплексного числа: Да

Выходные аргументы

развернуть все

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

Ошибка фазы оценивает в радианах, возвращенных как скаляр или вектор-столбец с той же длиной как inSig.

Функции объекта

Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:

release(obj)

развернуть все

infoХарактеристическая информация о синхронизаторе поставщика услуг
cloneСоздайте объект дублированной системы
isLockedОпределите, используется ли Системный объект
stepЗапустите алгоритм Системного объекта
releaseВысвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики
resetСбросьте внутренние состояния Системного объекта

Примеры

развернуть все

Правильная фаза и смещения частоты сигнала QPSK прошли через канал AWGN. Используя преамбулы, неоднозначность фазы твердости.

Задайте параметры симуляции.

M = 4; % Modulation order
rng(1993) % For repeatable results
barker = comm.BarkerCode(...
    'Length',13,'SamplesPerFrame',13);  % For preamble
msgLen = 1e4;
numFrames = 10;
frameLen = msgLen/numFrames;

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

preamble = (1+barker())/2;  % Length 13, unipolar
data = zeros(msgLen,1);
for idx = 1 : numFrames
    payload = randi([0 M-1],frameLen-barker.Length,1);
    data((idx-1)*frameLen + (1:frameLen)) = [preamble; payload];
end

modSig = pskmod(data,4,pi/4);

Создайте Систему comm.PhaseFrequencyOffset object™, чтобы ввести фазу и смещения частоты к модулируемому входному сигналу. Установите смещение фазы на степени 45, смещение частоты к 1 кГц и частоту дискретизации к 10 кГц. Смещение частоты установлено в 1% частоты дискретизации.

pfo = comm.PhaseFrequencyOffset('PhaseOffset',45, ...
    'FrequencyOffset',1e4,'SampleRate',1e6);

Создайте Системный объект синхронизатора поставщика услуг, чтобы использовать для исправления фазы и смещений частоты с выборками на набор символов к 1.

carrierSync = comm.CarrierSynchronizer( ...
    'SamplesPerSymbol',1,'Modulation','QPSK');

Примените фазу и смещения частоты с помощью Системного объекта pfo, и затем передайте сигнал через канал AWGN, чтобы добавить белый Гауссов шум.

modSigOffset = pfo(modSig);
rxSig = awgn(modSigOffset,12);

Отобразите график рассеивания полученного сигнала. Данные появляются в кругу вместо того, чтобы быть сгруппированными вокруг ссылочных точек совокупности из-за смещения частоты.

scatterplot(rxSig)

Используйте Системный объект carrierSync, чтобы исправить фазу и смещение частоты в полученном сигнале.

syncSignal = carrierSync(rxSig);

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

constDiag = comm.ConstellationDiagram( ...
'SymbolsToDisplaySource','Property','SymbolsToDisplay',300, ...
'ChannelNames',{'Before convergence','After convergence'},'ShowLegend',true, ...
'Position',[400 400 400 400]);

constDiag([syncSignal(1:1000) syncSignal(9001:10000)]);

Демодулируйте синхронизируемый сигнал. Вычислите и отобразите общие битовые ошибки и BER.

syncData = pskdemod(syncSignal,4,pi/4);
[syncDataTtlErr,syncDataBER] = biterr(data(6000:end),syncData(6000:end))
syncDataTtlErr = 3990
syncDataBER = 0.4986

Неоднозначность фазы в полученной силе сигнала вызывает битовые ошибки. Используя преамбулу, определите неоднозначность фазы. Удалите эту неоднозначность фазы из синхронизируемого сигнала уменьшать битовые ошибки.

idx = 9000 + (1:barker.Length);
phOffset = angle(modSig(idx) .* conj(syncSignal(idx)));
phOffset = round((2/pi) * phOffset); % -1, 0, 1, +/-2
phOffset(phOffset==-2) = 2; % Prep for mean operation
phOffset = mean((pi/2) * phOffset); % -pi/2, 0, pi/2, or pi
disp(['Estimated mean phase offset = ',num2str(phOffset*180/pi),' degrees'])
Estimated mean phase offset = 180 degrees
resPhzSig = exp(1i*phOffset) * syncSignal;

Демодулируйте сигнал после решения неоднозначности фазы. Повторно вычислите и отобразите обновленные общие битовые ошибки и BER. Удаление неоднозначности фазы уменьшает BER существенно.

resPhzData = pskdemod(resPhzSig,4,pi/4);
[resPhzTtlErr, resPhzBER] = biterr(data(6000:end),resPhzData(6000:end))
resPhzTtlErr = 403
resPhzBER = 0.0504

Оцените смещение частоты, введенное в шумный сигнал 8-PSK использование Системы синхронизатора поставщика услуг object™.

Задайте параметры симуляции.

M = 8;                  % Modulation order
fs = 1e6;               % Sample rate (Hz)
foffset = 1000;         % Frequency offset (Hz)
phaseoffset = 15;       % Phase offset (deg)
snrdb = 20;             % Signal-to-noise ratio (dB)

Создайте Системный объект comm.PhaseFrequencyOffset, чтобы ввести фазу и смещения частоты к модулируемому сигналу.

pfo = comm.PhaseFrequencyOffset('PhaseOffset',phaseoffset, ...
    'FrequencyOffset',foffset,'SampleRate',fs);

Создайте Системный объект синхронизатора поставщика услуг, чтобы использовать для исправления смещения частоты и фаза. Установите свойство Modulation на 8PSK.

carrierSync = comm.CarrierSynchronizer('Modulation','8PSK');

Сгенерируйте случайные данные и примените модуляцию 8-PSK.

data = randi([0 M-1],5000,1);
modSig = pskmod(data,M,pi/M);

Примените фазу и смещения частоты с помощью pfo Системного объекта, и передайте сигнал через канал AWGN, чтобы добавить Гауссов белый шум.

modSigOffset = pfo(modSig);
rxSig = awgn(modSigOffset,snrdb);

Используйте синхронизатор поставщика услуг, чтобы оценить смещение фазы полученного сигнала.

[~,phError] = carrierSync(rxSig);

Определите смещение частоты при помощи функции diff, чтобы вычислить аппроксимативную производную ошибки фазы. Производная должна масштабироваться 2π потому что ошибка фазы измеряется в радианах.

estFreqOffset = diff(phError)*fs/(2*pi);

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

rmean = cumsum(estFreqOffset)./(1:length(estFreqOffset))';
plot(rmean)
xlabel('Symbols')
ylabel('Estimated Frequency Offset (Hz)')
grid

Компенсация значительной фазы и смещений частоты для 16-QAM сигнала в канале AWGN выполняется на двух шагах. Во-первых, исправьте крупное смещение частоты с помощью оценки, обеспеченной крупным компенсатором частоты, и затем подстройте исправление с помощью синхронизации поставщика услуг. Из-за крупной коррекции частоты синхронизатор поставщика услуг сходится быстро даже при том, что нормированная пропускная способность установлена в низкую стоимость. Ниже нормированные значения пропускной способности включают лучшее исправление для маленьких остаточных смещений поставщика услуг. После применения фазы и частоты смещает исправления к полученному сигналу, неоднозначность фазы твердости с помощью преамбул.

Задайте параметры симуляции.

fs = 10000;      % Sample rate (Hz)
sps = 4;         % Samples per symbol
M = 16;          % Modulation order
k = log2(M);     % Bits per symbol
rng(1996)        % Set seed for repeatable results
barker = comm.BarkerCode(...
    'Length',13,'SamplesPerFrame',13);  % For preamble
msgLen = 1e4;
numFrames = 10;
frameLen = msgLen/numFrames;    

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

preamble = (1+barker())/2;  % Length 13, unipolar
data = zeros(msgLen, 1);
for idx = 1 : numFrames
    payload = randi([0 M-1],frameLen-barker.Length,1);
    data((idx-1)*frameLen + (1:frameLen)) = [preamble; payload];
end

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

txFilter = comm.RaisedCosineTransmitFilter( ...
    'OutputSamplesPerSymbol',sps);
rxFilter = comm.RaisedCosineReceiveFilter(...
    'InputSamplesPerSymbol',sps,'DecimationFactor',sps);
coarse = comm.CoarseFrequencyCompensator('SampleRate',fs, ...
    'FrequencyResolution',10);
fine = comm.CarrierSynchronizer( ...
    'DampingFactor',0.4,'NormalizedLoopBandwidth',0.001, ...
    'SamplesPerSymbol',1,'Modulation','QAM');
axislimits = [-6 6];
constDiagram = comm.ConstellationDiagram('ReferenceConstellation',qammod(0:M-1,M), ...
    'ChannelNames',{'Before convergence','After convergence'}, ...
    'ShowLegend',true,'XLimits',axislimits,'YLimits',axislimits);

Также создайте Системный объект для канала AWGN, и фазу и смещение частоты, чтобы добавить нарушения в сигнал. Смещение фазы, больше, чем 90 градусов, добавляется, чтобы вызвать неоднозначность фазы, которая приводит к сдвигу квадранта совокупности.

ebn0 = 8;
freqoffset = 110;
phaseoffset = 110;
awgnChannel = comm.AWGNChannel('EbNo',ebn0, ...
    'BitsPerSymbol',k,'SamplesPerSymbol',sps);
pfo = comm.PhaseFrequencyOffset('FrequencyOffset',freqoffset, ...
    'PhaseOffset',phaseoffset,'SampleRate',fs);

Сгенерируйте случайные символы данных, примените 16-QAM модуляцию и передайте модулируемый сигнал через формирующий фильтр импульса передачи.

txMod = qammod(data,M);
txSig = txFilter(txMod);

Примените фазу и смещения частоты с помощью Системного объекта pfo, и затем передайте сигнал через канал AWGN, чтобы добавить белый Гауссов шум.

txSigOffset = pfo(txSig);
rxSig = awgnChannel(txSigOffset);

Крупный Системный объект компенсатора частоты обеспечивает грубое исправление для смещения частоты. Для условий в этом примере, исправляя смещение частоты полученного исправления сигнала к в 10 Гц переданного сигнала достаточно.

syncCoarse = coarse(rxSig);

Передайте сигнал через получить импульсный формирующий фильтр и примените прекрасную коррекцию частоты.

rxFiltSig = fine(rxFilter(syncCoarse));

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

constDiagram([rxFiltSig(1:1000) rxFiltSig(9001:end)])

Демодулируйте сигнал. Объясните задержку сигнала, вызванную передачей, и получите фильтры, чтобы выровнять полученные данные с передаваемыми данными. Вычислите и отобразите общие битовые ошибки и BER. При проверке битовых ошибок используйте более поздний фрагмент полученного сигнала быть уверенными, что цикл синхронизации сходился.

rxData = qamdemod(rxFiltSig,M);
delay = (txFilter.FilterSpanInSymbols + rxFilter.FilterSpanInSymbols) / 2;
idxSync = 2000; % Check BER for the received signal after the synchronization loop has converged
[syncDataTtlErr,syncDataBER] = biterr(data(idxSync:end-delay),rxData(idxSync+delay:end))
syncDataTtlErr = 16116
syncDataBER = 0.5042

В зависимости от случайных используемых данных могут быть битовые ошибки, следующие из неоднозначности фазы в полученном сигнале после того, как цикл синхронизации будет сходиться и будет блокировать. В этом случае можно использовать преамбулу, чтобы определить и затем удалить неоднозначность фазы из синхронизируемого сигнала уменьшать битовые ошибки. Если неоднозначность фазы минимальна, количество битовых ошибок может быть неизменным.

idx = 9000 + (1:barker.Length);
phOffset = angle(txMod(idx) .* conj(rxFiltSig(idx+delay)));

phOffsetEst = mean(phOffset);
disp(['Phase offset = ',num2str(rad2deg(phOffsetEst)),' degrees'])
Phase offset = -90.1401 degrees
resPhzSig = exp(1i*phOffsetEst) * rxFiltSig;

Демодулируйте сигнал после решения неоднозначности фазы. Повторно вычислите общие битовые ошибки и BER.

resPhzData = qamdemod(resPhzSig,M);
[resPhzTtlErr,resPhzBER] = biterr(data(idxSync:end-delay),resPhzData(idxSync+delay:end))
resPhzTtlErr = 5
resPhzBER = 1.5643e-04

Образцовые нарушения канала, такие как синхронизация смещения фазы, смещения несущей частоты и фазы поставщика услуг смещаются для сигнала минимального манипулирования сдвига (MSK). Используйте comm.MSKTimingSynchronizer и Системные объекты comm.CarrierSynchronizer, чтобы синхронизировать такие сигналы в получателе. Синхронизатор синхронизации MSK восстанавливает смещение синхронизации, в то время как синхронизатор поставщика услуг восстанавливает смещения фазы и несущая частота.

Инициализируйте системные переменные путем выполнения configureMSKSignalRecoveryEx скрипта MATLAB. Задайте логическую контрольную переменную recoverTimingPhase, чтобы позволить синхронизировать восстановление фазы и recoverCarrier, чтобы включить восстановление фазы и несущая частота.

configureMSKSignalRecoveryEx;
recoverTimingPhase = true;
recoverCarrier = true;

Моделирование нарушений канала

Задайте демонстрационную задержку, timingOffset, что модель канала применяется. Создайте переменный дробный объект задержки ввести задержку синхронизации с переданным сигналом.

timingOffset = 0.2;
varDelay = dsp.VariableFractionalDelay;

Создайте Системный объект comm.PhaseFrequencyOffset, чтобы ввести фазу поставщика услуг и смещения частоты к модулируемому сигналу. Поскольку модулятор MSK сверхдискретизировал переданные символы, установите свойство SampleRate на отношение samplesPerSymbol и шага расчета, Ts.

freqOffset = 50;
phaseOffset = 30;
pfo = comm.PhaseFrequencyOffset(...
    'FrequencyOffset',freqOffset, ...
    'PhaseOffset',phaseOffset, ...
    'SampleRate',samplesPerSymbol/Ts);

Создайте Системный объект comm.AWGNChannel, чтобы добавить белый Гауссов шум в модулируемый сигнал. Шумовая степень определяется свойством EbNo, которое является энергией, подведенной к долоту к шумовой степени спектральное отношение плотности. Поскольку модулятор MSK генерирует символы с 1 ваттом мощности, установите свойство степени сигнала Системного объекта канала AWGN к 1.

EbNo = 20 + 10*log10(samplesPerSymbol);
chAWGN = comm.AWGNChannel(...
    'NoiseMethod','Signal to noise ratio (Eb/No)', ...
    'EbNo',EbNo,...
    'SignalPower',1, ...
    'SamplesPerSymbol',samplesPerSymbol);

Синхронизируя фазу, несущую частоту и синхронизацию фазы поставщика услуг

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

timeSync = comm.MSKTimingSynchronizer(...
    'SamplesPerSymbol',samplesPerSymbol, ...
    'ErrorUpdateGain',0.02);

Создайте синхронизатор поставщика услуг, чтобы восстановить и несущую частоту и фазу. Поскольку совокупность MSK является QPSK со смещением фазы с 0 степенями, установите comm.CarrierSynchronizer соответственно.

phaseSync = comm.CarrierSynchronizer(...
    'Modulation','QPSK', ...
    'ModulationPhaseOffset','Custom', ...
    'CustomPhaseOffset',0, ...
    'SamplesPerSymbol',1);

Потоковый цикл обработки

Симуляция модулирует данные с помощью модуляции MSK. Модулируемые символы проходят через модель канала, которая применяет задержку синхронизации, несущую частоту и сдвиг фазы и аддитивный белый Гауссов шум. Получатель выполняет фазу синхронизации и восстановление фазы и несущую частоту. Наконец, символы сигнала демодулируются, и частота ошибок по битам вычисляется. Скрипт plotResultsMSKSignalRecoveryEx генерирует графики рассеивания в этом порядке показать эти эффекты:

  1. Нарушения канала

  2. Синхронизация синхронизации

  3. Синхронизация поставщика услуг

В конце симуляции пример отображает фазу синхронизации, частоту и оценки фазы как функция времени симуляции.

for p = 1:numFrames
    %------------------------------------------------------------------------
    % Generate and modulate data
    %------------------------------------------------------------------------
    txBits = randi([0 1],samplesPerFrame,1);
    txSym = modem(txBits);
    %------------------------------------------------------------------------
    % Transmit through channel
    %------------------------------------------------------------------------
    %
    % Add timing offset
    rxSigTimingOff = varDelay(txSym,timingOffset*samplesPerSymbol);
    %
    % Add carrier frequency and phase offset
    rxSigCFO = pfo(rxSigTimingOff);
    %
    % Pass the signal through an AWGN channel
    rxSig = chAWGN(rxSigCFO);
    %
    % Save the transmitted signal for plotting
    plot_rx = rxSig;
    %
    %------------------------------------------------------------------------
    % Timing recovery
    %------------------------------------------------------------------------
    if recoverTimingPhase
        % Recover symbol timing phase using fourth-order nonlinearity
        % method
        [rxSym,timEst] = timeSync(rxSig);
        % Calculate the timing delay estimate for each sample
        timEst = timEst(1)/samplesPerSymbol;
    else
        % Do not apply timing recovery and simply downsample the received
        % signal
        rxSym = downsample(rxSig,samplesPerSymbol);
        timEst = 0;
    end

    % Save the timing synchronized received signal for plotting
    plot_rxTimeSync = rxSym;

    %------------------------------------------------------------------------
    % Carrier frequency and phase recovery
    %------------------------------------------------------------------------
    if recoverCarrier
        % The following script applies carrier frequency and phase recovery
        % using a second order phase-locked loop (PLL), and removes phase ambiguity
        [rxSym,phEst] = phaseSync(rxSym);
        removePhaseAmbiguityMSKSignalRecoveryEx;
        freqShiftEst = mean(diff(phEst)/(Ts*2*pi));
        phEst = mod(mean(phEst),360); % in degrees
    else
        freqShiftEst = 0;
        phEst = 0;
    end

    % Save the phase synchronized received signal for plotting
    plot_rxPhSync = rxSym;
    %------------------------------------------------------------------------
    % Demodulate the received symbols
    %------------------------------------------------------------------------
    rxBits = demod(rxSym);
    %------------------------------------------------------------------------
    % Calculate the bit error rate
    %------------------------------------------------------------------------
    errorStats = BERCalc(txBits,rxBits);
    %------------------------------------------------------------------------
    % Plot results
    %------------------------------------------------------------------------
    plotResultsMSKSignalRecoveryEx;
end

Отобразите частоту ошибок по битам и общее количество символов, обработанных калькулятором коэффициента ошибок.

BitErrorRate = errorStats(1)
TotalNumberOfSymbols = errorStats(3)
BitErrorRate =

   4.0001e-06


TotalNumberOfSymbols =

      499982

Заключение и дальнейшее экспериментирование

Алгоритмы восстановления продемонстрированы при помощи графиков совокупности, взятых после синхронизации, несущей частоты и синхронизации фазы поставщика услуг.

Откройте скрипт, чтобы создать перезаписываемую копию этого примера и его вспомогательных файлов. Затем чтобы показать эффекты алгоритмов восстановления, можно включить и отключить логические контрольные переменные recoverTimingPhase и recoverCarrier и повторно выполнить симуляцию.

Приложение

Этот пример использует эти скрипты:

  • configureMSKSignalRecoveryEx

  • plotResultsMSKSignalRecoveryEx

  • removePhaseAmbiguityMSKSignalRecoveryEx

Алгоритмы

Системный объект comm.CarrierSynchronizer является компенсатором с обратной связью, который использует основанный на PLL алгоритм, описанный в [1]. Вывод синхронизатора, y n, является переключенной частотой версией комплексного входного сигнала, x n, для энной выборки. Синхронизатор вывод

yn=xneiλn,

где λ n является вывод прямого цифрового синтезатора (DDS). DDS является версией дискретного времени управляемого напряжением осциллятора и является базовым компонентом замкнутых циклов фазы дискретного времени. В контексте этого Системного объекта DDS работает фильтром интегрирования.

Чтобы исправить для смещения частоты, сначала алгоритм определяет ошибку фазы, e n. Значение ошибки фазы зависит от схемы модуляции.

МодуляцияОшибка фазы
QAM или QPSK

Для подробного описания этого уравнения см. [1].

BPSK или PAM

Для подробного описания этого уравнения см. [1].

С 8 PSK

en={sgn(Ре{xn})×\Im{xn}(21)sgn(\Im{xn})×Ре{xn}для|Ре{xn}||\Im{xn}|(21)sgn(Ре{xn})×\Im{xn}sgn(\Im{xn})×Ре{xn}для|Ре{xn}|<|\Im{xn}|

Для подробного описания этого уравнения см. [2].

OQPSK

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

ψn=gIen+ψn1,

где ψ n является вывод контурного фильтра на выборке n и g, я - усиление интегратора. Усиление интегратора определяется от уравнения

gI=4(θ2/d)KpK0,

где θ, d, K 0 и K p определяются из свойств Системного объекта. А именно,

θ=Bn(ζ+14ζ) and d= 1+2ζθ+θ2,

где B n является нормированной пропускной способностью цикла, и ζ является фактором затухания. Усиление восстановления фазы, K 0, равно количеству выборок на символ. Тип модуляции определяет усиление детектора ошибок фазы, K p.

МодуляцияK p
BPSK, PAM, QAM, QPSK или OQPSK2
С 8 PSK1

Вывод контурного фильтра затем передается DDS. DDS является другим биквадратным контурным фильтром, выражение которого основано на прямом Эйлеровом правиле интегрирования

λn=(gPen-1+ψn-1)+λn-1,

где g P является пропорциональным усилением, которое выражается как

gP=4ζ(θ/d)KpK0.

Функция объекта info этого Системного объекта возвращает оценки нормированного получения по запросу - в области значений, максимальной задержке блокировки частоты и максимальной задержке блокировки фазы. Нормированное получение по запросу - в области значений, (Δf) получение по запросу - в, выражается в радианах и оценивается как

(Δf)вытяните - вmin(1,2π2ζBn).

Выражение для (Δf) получение по запросу - в становится менее точным как 2π2ζBn подходы 1.

Максимальная задержка блокировки частоты, T FL и задержка блокировки фазы, T PL, выражается в выборках и оценивается как

TFL4(Δf)вытяните - в2Bn3 and TМН1.3Bn.

Ссылки

[1] Рис, M. Цифровая связь: Подход Дискретного времени. Верхний Сэддл-Ривер, NJ: Prentice Hall, 2009, стр 359–393.

[2] Zhijie, H., И. Чжицян, Цз. Мин и В. Куан. “8PSK Демодуляция для Нового поколения DVB-S2”. 2 004 Международных конференции по вопросам Коммуникаций, Схем и Систем. Издание 2, 2004, стр 1447–1450.

Расширенные возможности

Представленный в R2015a