DQPSK Modulator Baseband
Описание
Блок 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
.
Порт | Поддерживаемые типы данных |
---|---|
Вход |
|
Выход |
|
Системный объект 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