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