exponenta event banner

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

Модулировать с помощью метода MSK

Описание

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

Для модуляции сигнала с использованием минимальной манипуляции сдвигом:

  1. Определите и настройте объект модулятора MSK. См. раздел Строительство.

  2. Звонить step для модуляции сигнала в соответствии со свойствами comm.MSKModulator. Поведение step относится к каждому объекту на панели инструментов.

Примечание

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

Строительство

H = comm.MSKModulator создает объект системы модулятора, H. Этот объект модулирует входной сигнал с использованием способа модуляции минимальной манипуляции сдвигом (MSK).

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

Свойства

BitInput

Предположим, что битовые входы

Укажите, являются ли входные данные битами или целыми числами. Значение по умолчанию: false.

При установке BitInput свойство для false, step ввод метода должен быть вектором-столбцом с двойной точностью или целочисленным типом данных со знаком и значениями, равными -1 или 1.

При установке BitInput свойство для true, step Для ввода метода требуется вектор столбца с двойной точностью или логический тип данных 0 и 1.

InitialPhaseOffset

Начальное фазовое смещение

Укажите начальную фазу модулированного сигнала в радианах как действительное числовое скалярное значение. Значение по умолчанию: 0.

SamplesPerSymbol

Количество выборок на выходной символ

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

OutputDataType

Тип данных вывода

Укажите тип выходных данных как один из double | single. Значение по умолчанию: double.

Методы

шагМодулировать с помощью метода MSK
Общие для всех системных объектов
release

Разрешить изменение значения свойства объекта системы

reset

Сброс внутренних состояний объекта System

Примеры

свернуть все

% Create an MSK modulator, an AWGN channel, and an MSK demodulator.  Use a
% phase offset of pi/4.
 hMod = comm.MSKModulator('BitInput', true, ...
                    'InitialPhaseOffset', pi/4);
    hAWGN = comm.AWGNChannel('NoiseMethod', ...
                    'Signal to noise ratio (SNR)','SNR',0);
    hDemod = comm.MSKDemodulator('BitOutput', true, ...
                    'InitialPhaseOffset', pi/4);
 % Create an error rate calculator, account for the delay caused by the Viterbi algorithm
    hError = comm.ErrorRate('ReceiveDelay', hDemod.TracebackDepth);
    for counter = 1:100
      % Transmit 100 3-bit words
      data = randi([0 1],300,1);
      modSignal = step(hMod, data);
      noisySignal = step(hAWGN, modSignal);
      receivedData = step(hDemod, noisySignal);
      errorStats = step(hError, data, receivedData);
    end
    fprintf('Error rate = %f\nNumber of errors = %d\n', ...
      errorStats(1), errorStats(2))
Error rate = 0.000000
Number of errors = 0

Этот пример иллюстрирует отображение двоичных последовательностей нулей и единиц на выход модулятора GMSK. Отношение также применимо для модуляции MSK.

Создайте модулятор GMSK, который принимает двоичные входы. Укажите длину импульса и отсчеты для каждого символа как 1.

gmsk = comm.GMSKModulator('BitInput',true,'PulseLength',1,'SamplesPerSymbol',1);

Создайте последовательность ввода всех нулей. Модулировать последовательность.

x = zeros(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 - 1.0000i
  -1.0000 + 0.0000i
   0.0000 + 1.0000i
   1.0000 - 0.0000i

Определите фазовый угол для каждой точки. Используйте unwrap функция, чтобы лучше показать тенденцию.

theta = unwrap(angle(y))
theta = 5×1

         0
   -1.5708
   -3.1416
   -4.7124
   -6.2832

Последовательность нулей приводит к сдвигу фазы на -δ/2 между выборками.

Сбросьте модулятор. Модулировать входную последовательность всех.

reset(gmsk)
x = ones(5,1);
y = gmsk(x)
y = 5×1 complex

   1.0000 + 0.0000i
  -0.0000 + 1.0000i
  -1.0000 - 0.0000i
   0.0000 - 1.0000i
   1.0000 + 0.0000i

Определите фазовый угол для каждой точки. Используйте unwrap функция, чтобы лучше показать тенденцию.

theta = unwrap(angle(y))
theta = 5×1

         0
    1.5708
    3.1416
    4.7124
    6.2832

Последовательность единиц заставляет фазу сдвигаться на + δ/2 между выборками.

Сравните схемы модуляции Gaussian minimum shift keying (GMSK) и minimum shift keying (MSK) путем построения диаграммы глаз для GMSK с различной длиной импульса и для MSK.

Задайте выборки для переменной символа.

sps = 8;

Создание случайных двоичных данных.

data = randi([0 1],1000,1);

Создайте модуляторы GMSK и MSK, которые принимают двоичные входы. Установите PulseLength свойство модулятора GMSK 1.

gmskMod = comm.GMSKModulator('BitInput',true,'PulseLength',1, ...
    'SamplesPerSymbol',sps);
mskMod = comm.MSKModulator('BitInput',true,'SamplesPerSymbol',sps);

Модулируйте данные с помощью модуляторов GMSK и MSK.

modSigGMSK = gmskMod(data);
modSigMSK = mskMod(data);

Пропускают модулированные сигналы через канал AWGN, имеющий SNR, равный 30 дБ.

rxSigGMSK = awgn(modSigGMSK,30);
rxSigMSK = awgn(modSigMSK,30);

Используйте eyediagram функция для построения диаграмм глаз шумных сигналов. Если для длины импульса GMSK установлено значение 1диаграммы глаз почти идентичны.

eyediagram(rxSigGMSK,sps,1,sps/2)

Figure Eye Diagram contains 2 axes. Axes 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes 2 with title Eye Diagram for Quadrature Signal contains an object of type line. This object represents Quadrature.

eyediagram(rxSigMSK,sps,1,sps/2)

Figure Eye Diagram contains 2 axes. Axes 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes 2 with title Eye Diagram for Quadrature Signal contains an object of type line. This object represents Quadrature.

Установите PulseLength свойство объекта модулятора GMSK для 3. Поскольку свойство не настраивается, объект должен быть сначала освобожден.

release(gmskMod)
gmskMod.PulseLength = 3;

Генерируют модулированный сигнал с использованием обновленного объекта модулятора GMSK и пропускают его через канал AWGN.

modSigGMSK = gmskMod(data);
rxSigGMSK = awgn(modSigGMSK,30);

При непрерывной фазовой модуляции (CPM) формы сигнала, такие как GSMK, форма сигнала зависит от значений предыдущих символов, а также текущего символа. Постройте график изображения сигнала GMSK, чтобы увидеть, что увеличенная длина импульса приводит к увеличению числа трактов на графике изображения.

eyediagram(rxSigGMSK,sps,1,sps/2)

Figure Eye Diagram contains 2 axes. Axes 1 with title Eye Diagram for In-Phase Signal contains an object of type line. This object represents In-phase. Axes 2 with title Eye Diagram for Quadrature Signal contains an object of type line. This object represents Quadrature.

Эксперимент путем изменения PulseLength параметр объекта модулятора GMSK к другим значениям. Если для свойства задано четное число, следует установить gmskMod.InitialPhaseOffset кому pi/4 и обновить аргумент смещения eyediagram функция из sps/2 кому 0 для лучшего представления модулированного сигнала. Для более четкого просмотра формы гауссова импульса необходимо использовать области, отображающие фазу сигнала, как описано в примере дерева фаз CPM.

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные на справочной странице блока основной полосы частот демодулятора MSK. Свойства объекта соответствуют параметрам блока. Для MSK фазовый сдвиг на символ равен δ/2, что является индексом модуляции 0,5.

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

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