Документация Engee

DQPSK Modulator Baseband

Дифференциальная квадратурная фазовая модуляция.

dqpsk modulator baseband

Системный объект: DQPSK_ModulatorBaseband()

Описание

Блок DQPSK Modulator Baseband осуществляет модуляцию методом дифференциальной квадратурной фазовой манипуляции. На выходе получается широкополосное представление модулированного сигнала.

На вход подается сигнал, дискретный по времени.

Сигналы с целочисленным значением

Если для параметра Input type установлено значение Integer, допустимыми входными значениями являются 0, 1, 2 и 3. В этом случае блок принимает входной сигнал в виде скаляра или вектора-столбца.

Если первым входным сигналом является m, то модулированный символ на выходе будет иметь вид: ,

где – фазовый сдвиг.

Если последующий входной сигнал тоже равен m, то модулированный символ на выходе равен предыдущему модулированному символу, умноженному на .

Сигналы с двоичным значением

Если для параметра Input type установлено значение Bit, вход содержит пары двоичных значений. В этом случае блок принимает вектор-столбец, длина которого является четным целым числом.

На данной квадратурной векторной диаграмме показаны комплексные числа, на которые блок умножает предыдущий символ для вычисления текущего символа в зависимости от того, какое значение параметра Constellation ordering установлено: Binary или Gray.

На следующей диаграмме переходов состояний сигналов DQPSK для параметра Phase rotation установлено значение .

В более общем случае, если для параметра Phase rotation установлено значение для некоторого целого числа k, то созвездие сигналов имеет 2k точек.

Параметры

Input type — тип входного сигнала
Integer(по умолчанию) | Bit

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

Constellation ordering — упорядочение созвездия
Gray (по умолчанию) | Binary

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

Phase rotation (rad) — фазовое вращение

Разность фаз между предыдущим и текущим модулированными символами, когда на входе ноль.

Output Data type — тип выходных данных
double (по умолчанию) | single

Тип выходных данных. По умолчанию установлено значение double.

Поддерживаемые типы данных
Порт Поддерживаемые типы данных

Вход

  • С плавающей запятой двойной точности

  • С плавающей запятой одинарной точности

  • Логическое значение при вводе типа Bit

  • 8-, 16- и 32-разрядные целые числа со знаком

  • 8-, 16- и 32-разрядные целые числа без знака

Выход

  • С плавающей запятой двойной точности

  • С плавающей запятой одинарной точности

Системный объект DQPSK_ModulatorBaseband()

Системный объект DQPSK_ModulatorBaseband() дублирует работу блока DQPSK Modulator Baseband и осуществляет модуляцию входного сигнала методом дифференциальной квадратурной фазовой манипуляции.

Параметры системного объекта DQPSK_ModulatorBaseband(InputType, ConstellationOrdering, PhaseRotation) соответствуют параметрам блока DQPSK Modulator Baseband.

Конструктор
import CausalDSP: step!, setup!, reset!, release!
import CausalDSP.PassbandModulator: DQPSK_ModulatorBaseband
obj = DQPSK_ModulatorBaseband(InputType, ConstellationOrdering, PhaseRotation)
Пример использования системного объекта

Для вызова DQPSK_ModulatorBaseband() и получения выходного сигнала выполните в командной строке Engee построчно следующий код:

import CausalDSP: step!, setup!, reset!, release! # Вызов методов интерфейса
import CausalDSP.PassbandModulator: DQPSK_ModulatorBaseband # Вызов системного объекта из библиотеки
obj = DQPSK_ModulatorBaseband("Integer", "Binary", pi/4) # Задание параметров системного объекта
indata = 2 # Входящий сигнал
setup!(obj, indata) # Задание входного размера и инициализация функции
step!(obj, indata) # Выполнение первого шага симуляции
step!(obj, indata) # Выполнение второго шага симуляции
reset!(obj) # Сброс внутреннего состояния функции
step!(obj, indata) # Выполнение первого шага симуляции
release!(obj)
obj.InputType = "Bit" # Изменение значения аргумента InputType
obj.ConstellationOrdering = "Gray" # Изменение значения аргумента ConstellationOrdering
indata = [1; 0] # Изменение входящего сигнала
setup!(obj, indata) # Задание входного размера и инициализация функции
obj # Просмотр текущих значений аргументов
step!(obj, indata) # Задание входного размера и инициализация функции (применение измененных параметров)
indata =  [true; false] # Изменение входящего сигнала
step!(obj, indata) # Выполнение третьего шага симуляции

Результат выполнения:

import CausalDSP: step!, setup!, reset!, release!
import CausalDSP.PassbandModulator: DQPSK_ModulatorBaseband
obj = DQPSK_ModulatorBaseband("Integer", "Binary", pi/4)
DQPSK_ModulatorBaseband:
InputType=Integer
ConstellationOrdering=Binary
PhaseRotation=0.7853981633974483
indata = 2
2
setup!(obj, 2)
step!(obj, 2)
-0.7071067811865477 - 0.7071067811865477im
step!(obj, 2)
3.061616997868383e-16 + 1.0im
reset!(obj)
step!(obj, 2)
-0.7071067811865477 - 0.7071067811865477im
release!(obj)
obj.InputType = "Bit"
"Bit"
obj.ConstellationOrdering = "Gray"
"Gray"
indata = [1; 0]
2-element Vector{Int64}:
1
0
setup!(obj, indata)
step!(obj, indata)
-0.7071067811865477 - 0.7071067811865477im
indata =  [true; false]
2-element Vector{Bool}:
1
0
step!(obj, indata)
-4.286263797015736e-16 - 1.0im