exponenta event banner

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

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

Описание

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

Примечание

  • Этот объект System не разрешает неоднозначности фаз, созданные алгоритмом синхронизации. Как показано в этой таблице, потенциальная фазовая неоднозначность, вносимая синхронизатором, зависит от типа модуляции:

    МодуляцияНеоднозначность фазы (градусы)
    'BPSK' или 'PAM'0, 180
    'OQPSK', 'QPSK', или 'QAM'0, 90, 180, 270
    '8PSK'0, 45, 90, 135, 180, 225, 270, 315

    Примеры демонстрируют синхронизацию несущей и разрешение фазовой неоднозначности.

  • Для получения наилучших результатов примените синхронизацию несущей к незабранным сигналам, как показано в разделе «Правильное смещение фазы и частоты для 16-QAM с использованием грубой и точной синхронизации».

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

  1. Создать comm.CarrierSynchronizer и задайте его свойства.

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

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

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

пример

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

Свойства

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

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

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

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

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

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

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

Метод фазового смещения модуляции, указанный как 'Auto' или 'Custom'.

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

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

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

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

Зависимости

Это свойство применяется в том случае, если для свойства SheedPhaseOffset установлено значение 'Custom'.

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

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

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

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

Коэффициент демпфирования контура, заданный как положительный скаляр.

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

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

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

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

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

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

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

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Корректные фазовые и частотные смещения сигнала 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)

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

Используйте carrierSync Объект системы для коррекции сдвига фазы и частоты в принятом сигнале.

syncSignal = carrierSync(rxSig);

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

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)]);

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 3 objects of type line. These objects represent Before convergence, After convergence.

Демодулируйте синхронизированный сигнал. Вычислите и отобразите суммарные битовые ошибки и 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 System и передайте сигнал через канал AWGN для добавления гауссова белого шума.

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

Используйте синхронизатор несущей для оценки фазового сдвига принятого сигнала.

[~,phError] = carrierSync(rxSig);

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

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

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

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

Figure contains an axes. The axes contains an object of type line.

Компенсация значительных фазовых и частотных сдвигов для 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

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

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);

Также создайте объект System для канала 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));

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

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

Figure Constellation Diagram contains an axes and other objects of type uiflowcontainer, uimenu, uitoolbar. The axes contains 3 objects of type line. These objects represent Before convergence, After convergence.

Демодулируйте сигнал. Учет задержки сигнала, вызванной фильтрами передачи и приема, для выравнивания принятых данных с переданными данными. Вычислите и отобразите суммарные битовые ошибки и 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 восстанавливает смещение синхронизации, в то время как синхронизатор несущей восстанавливает частоту несущей и фазовые смещения.

Инициализация системных переменных с помощью сценария MATLAB configureMSKSignalRecoveryEx. Определение логической переменной управления 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]. Выход синхронизатора yn представляет собой сдвинутую по частоте версию комплексного входного сигнала xn для n-ой выборки. Выходной сигнал синхронизатора:

yn = xneiλ n,

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

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

МодуляцияФазовая ошибка
QAM или QPSK

en = sgn (Re {xn}) × Im {xn} sgn (Im {xn}) × Re {xn}

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

BPSK или PAM

en = sgn (Re {xn}) × Im {xn}

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

8-PSK

en = {sgn (Re {xn}) × Im {xn} − (2 1) sgn (Im {xn}) × Re {xn}, для |Re{xn}|≥|Im{xn}| (2 1) sgn (Re {xn}) × Im {xn} sgn (Im {xn}) × Re {xn}, для | Re

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

OQPSK

en = sgn (Re {xn-SamplePerSymbol/2}) × Im {xn-SamplePerSymbol/2} sgn (Im {xn}) × Re {xn}

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

λ n = gIen + λ n − 1,

где λ n - выходной сигнал фильтра контура при выборке n, а gI - коэффициент усиления интегратора. Коэффициент усиления интегратора определяется из уравнения

gI = 4 (start2/d) KpK0,

где start, d, K0 и Kp определяются из свойств объекта System. В частности,

θ = Миллиард (ζ + 14ζ) и d = 1+2ζθ +θ2,

где Bn - нормализованная ширина полосы пропускания контура, а start- коэффициент демпфирования. Коэффициент усиления восстановления фазы, K0, равен количеству выборок на символ. Тип модуляции определяет коэффициент усиления детектора фазовой ошибки Kp.

МодуляцияKp
BPSK, PAM, QAM, QPSK или OQPSK2
8-PSK1

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

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

где gP - пропорциональный коэффициент усиления, который выражается как

gP=4ζ (θ/d) KpK0.

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

(Δf) pull-in≈min (1, 2ā2, Bn).

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

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

TFL≈4 (Δf) pull-in2Bn3 и TPL≈1.3Bn.

Ссылки

[1] Райс, М. Цифровые коммуникации: дискретный временной подход. Река Верхнее Седло, Нью-Джерси: Прентис Холл, 2009, стр. 359-393.

[2] Чжицзе, Х., Я. Чжицян, З. Мин и У. Куан. «8PSK демодуляция для нового поколения DVB-S2». Международная конференция 2004 года по вопросам коммуникаций, схем и систем. Т. 2, 2004, с. 1447-1450.

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

.
Представлен в R2015a