comm.CPMCarrierPhaseSynchronizer

(Удаленный) Восстанавливают фазу поставщика услуг основополосного сигнала CPM

comm.CPMCarrierPhaseSynchronizer был удален. Используйте comm.CarrierSynchronizer вместо этого.

Описание

CPMCarrierPhaseSynchronizer объект восстанавливает фазу поставщика услуг входного сигнала с помощью метода 2P-степени. Этот метод feedforward является часами, которым помогают, но не данные, которым помогают. Метод подходит для систем, которые используют определенные типы полосовой модуляции. Эти типы включают: непрерывная фазовая модуляция (CPM), минимальное манипулирование сдвига (MSK), непрерывное манипулирование сдвига частоты фазы (CPFSK) и Гауссово минимальное манипулирование сдвига (GMSK).

Восстановить фазу поставщика услуг входного сигнала:

  1. Задайте и настройте свой объект синхронизатора фазы поставщика услуг CPM. Смотрите Конструкцию.

  2. Вызовите step восстановить фазу поставщика услуг входного сигнала с помощью метода 2P-степени согласно свойствам comm.CPMCarrierPhaseSynchronizer. Поведение step характерно для каждого объекта в тулбоксе.

Примечание

Запуск в R2016b, вместо того, чтобы использовать step метод, чтобы выполнить операцию, заданную Системой object™, можно вызвать объект с аргументами, как будто это была функция. Например, y = step(obj,x) и y = obj(x) выполните эквивалентные операции.

Конструкция

H = comm.CPMCarrierPhaseSynchronizer создает Системный объект синхронизатора фазы поставщика услуг CPM, H. Этот объект восстанавливает фазу поставщика услуг основополосной непрерывной фазовой модуляции (CPM), минимального манипулирования сдвига (MSK), непрерывного манипулирования сдвига частоты фазы (CPFSK) или Гауссова минимального манипулирования сдвига (GMSK) модулируемый сигнал с помощью метода 2P-степени.

H = comm.CPMCarrierPhaseSynchronizer(Name,Value) создает объект синхронизатора фазы поставщика услуг CPM, H Этот объект каждый задал набор свойств к заданному значению. Можно задать дополнительные аргументы пары "имя-значение" в любом порядке как (Name1, Value1..., NameN, ValueN).

H = comm.CPMCarrierPhaseSynchronizer(HALFPOW,Name,Value) создает объект синхронизатора фазы поставщика услуг CPM, H. Этот объект имеет P набор свойств к HALFPOW, и другой заданный набор свойств к заданным значениям.

Свойства

P

Знаменатель индекса модуляции CPM

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

ObservationInterval

Количество символов, где фаза поставщика услуг принятая константа

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

Методы

сбросСбросьте состояния объекта синхронизатора фазы поставщика услуг CPM
шаг(Удаленный) Восстанавливают фазу поставщика услуг основополосного сигнала CPM
Характерный для всех системных объектов
release

Позвольте изменения значения свойства Системного объекта

Примеры

Восстановите фазу поставщика услуг сигнала GMSK.

% Initialize random seed for repeatability
rng(123)

% Create a GMSK modulator, an AWGN channel, and a GMSK demodulator. 
% Use a phase offset of pi/4.
samplesPerSymbol = 4;
modulator = comm.GMSKModulator('BitInput',true,'InitialPhaseOffset',pi/4, ...
    'SamplesPerSymbol',samplesPerSymbol);
awgnChannel = comm.AWGNChannel('NoiseMethod','Signal to noise ratio (SNR)', ...
    'SNR',40);
demodulator = comm.GMSKDemodulator('BitOutput',true, ...
    'InitialPhaseOffset',pi/4,'SamplesPerSymbol',samplesPerSymbol);

% Create a System object for frequency offset
frequencyOffset = 1e4;
sampleRate = 1e6;
pfo = comm.PhaseFrequencyOffset('FrequencyOffset',frequencyOffset, ...
    'SampleRate',sampleRate);

% Create a carrier synchronizer
carrierSync = comm.CarrierSynchronizer('SamplesPerSymbol', samplesPerSymbol, ...
    'Modulation','OQPSK');

% Create a preamble for resolving phase ambiguity
preambleLength = 13;
barker = comm.BarkerCode('Length',preambleLength,'SamplesPerFrame', ...
    preambleLength); % For preamble
preamble = (1+barker())/2; % Length 13, unipolar

% Create an error rate calculator, account for the delay caused by 
% the Viterbi algorithm used by the GMSK demodulator.
errorCalculator = comm.ErrorRate('ReceiveDelay',demodulator.TracebackDepth);

numFrames = 4000;
symbolsPerFrame = 300;
estimatedPhaseOffset = zeros(symbolsPerFrame*samplesPerSymbol,numFrames);
errorHistory = zeros(numFrames,1);

for counter = 1:numFrames
    % Transmit 300 bits
    payload = randi([0 1],symbolsPerFrame - preambleLength,1);
    data = [preamble; payload];
    modulatedSignal = modulator(data);
    noisySignal = awgnChannel(modulatedSignal);
    rxSignal = pfo(noisySignal); % with carrier frequency offset

    [syncSignal, phOffset] = carrierSync(rxSignal);
    estimatedPhaseOffset(:, counter) = phOffset;

    phaseCorrection = round((2/pi)*angle(...
        modulatedSignal(1:preambleLength*samplesPerSymbol).* ...
        conj(syncSignal(1:preambleLength*samplesPerSymbol))));
    phaseCorrection(phaseCorrection==-2)=2;
    phaseCorrection = mode(phaseCorrection)*pi/2;

    receivedData = demodulator(exp(1j*phaseCorrection)*syncSignal);
    errorStats = errorCalculator(data,receivedData);
    errorHistory(counter) = errorStats(2);
end

estimatedFreqOffset = estimatedPhaseOffset(:);
% plot((estimatedFreqOffset(2:end)-estimatedFreqOffset(1:end-1))*sampleRate/(2*pi))
% xlabel('Sample')
% ylabel('Estimated Frequency Offset (Hz)');

% Number of bit errors (ignoring those in the first half of the simulation,
% before frequency and phase offset are corrected)
numErrors = errorHistory(end) - errorHistory(0.5*end)
numErrors =

     0

Алгоритмы

Этот объект реализует алгоритм, входные параметры и выходные параметры, описанные на странице с описанием блока CPM Phase Recovery. Свойства объектов соответствуют параметрам блоков.

Вопросы совместимости

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

Ошибки, запускающиеся в R2020a

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

Смотрите также

|

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