exponenta event banner

dvbsapskdemod

DVB-S2/S2X/SH демодуляция со стандартной амплитудной фазовой манипуляцией (APSK)

Описание

пример

z = dvbsapskdemod(y,M,stdSuffix) демодулирует входной сигнал APSK, y, который был модулирован в соответствии со стандартом цифрового видеотрансляции (DVB), идентифицированным stdSuffix и порядок модуляции, M. Описание APSK-демодуляции, совместимой с DVB, см. в разделах Аппаратная демодуляция APSK, совместимая с DVB, и Программная демодуляция APSK, совместимая с DVB.

z = dvbsapskdemod(y,M,stdSuffix,codeIDF) указывает идентификатор кода codeIDF, для использования при выборе параметров демодуляции.

z = dvbsapskdemod(y,M,stdSuffix,codeIDF,frameLength) определяет codeIDF и frameLength используется при выборе параметров демодуляции.

пример

z = dvbsapskdemod(___,Name,Value) задает параметры, использующие один или несколько аргументов пары имя-значение, используя любой из предыдущих синтаксисов. Например, 'OutputDataType','double' задает требуемый тип выходных данных. Укажите аргументы пары имя-значение после всех других входных аргументов.

Примеры

свернуть все

Демодуляция 64-APSK сигнала, который был модулирован, как указано в DVB-S2X. Вычислите целочисленные выходные данные жесткого решения и убедитесь, что выходные данные соответствуют входным данным.

Установите порядок модуляции и стандартный суффикс. Создание случайных данных.

M = 64;
std = 's2x';
x = randi([0 M-1],1000,1);

Модулировать данные.

y = dvbsapskmod(x,M,std);

Демодулируйте принятый сигнал. Сравните демодулированные данные с исходными данными.

z = dvbsapskdemod(y,M,std);
isequal(z,x)
ans = logical
   1

Демодуляция 32-APSK сигнала, который был модулирован, как указано в DVB-S2. Вычислите выходной бит жесткого решения и убедитесь, что выходной сигнал соответствует входному сигналу.

Установите порядок модуляции, стандартный суффикс и идентификатор кода. Генерировать случайные битовые данные.

M = 32;
std = 's2';
codeIDF = '4/5';
numBitsPerSym = log2(M);
x = randi([0 1],100*numBitsPerSym,1,'uint32');

Модулировать данные. Используйте пару имя-значение для указания входных данных битов.

y = dvbsapskmod(x,M,std,codeIDF,'InputType','bit');

Демодулируйте принятый сигнал. Сравните демодулированные данные с исходными данными.

z = dvbsapskdemod(y,M,std,'4/5','OutputType','bit', ...
    'OutputDataType','uint32');
isequal(z,x)
ans = logical
   1

Демодулировать сигнал 16-APSK, совместимый с DVB-SH, и вычислять мягкие биты.

Установите порядок модуляции и создайте случайную битовую последовательность.

M = 16;
std = 'sh';
numSym = 20000;
numBitsPerSym = log2(M);
x = randi([0 1],numSym*numBitsPerSym,1);

Модулировать данные. Используйте пару имя-значение для указания входных данных битов.

txSig = dvbsapskmod(x,M,std,'InputType','bit');

Пропускают модулированный сигнал через шумный канал.

rxSig = awgn(txSig,10,'measured');

Просмотр совокупности принятого сигнала с использованием графика рассеяния.

scatterplot(rxSig) 

Figure Scatter Plot contains an axes. The axes with title Scatter plot contains an object of type line. This object represents Channel 1.

Созвездия, совместимые с DVB-SH, имеют единичную среднюю мощность. Демодулируйте сигнал, вычисляя мягкие биты с помощью алгоритма аппроксимации LLR.

z = dvbsapskdemod(rxSig,M,std,'OutputType','approxllr', ...
     'NoiseVariance',0.1);

Входные аргументы

свернуть все

АПСК-модулированный сигнал, заданный как комплексный скаляр, вектор или матрица. Когда y является матрицей, каждый столбец обрабатывается как независимый канал.

y должна быть модулирована в соответствии со стандартом цифрового видеовещания (DVB) - спутниковой связи DVB-S2, DVB-S2X или DVB-SH. Для получения дополнительной информации см. [1], [2] и [3].

Типы данных: single | double
Поддержка комплексного номера: Да

Порядок модуляции, заданный как степень два. Порядок модуляции определяет общее количество точек в совокупности сигналов.

Типы данных: double

Стандартный суффикс для варианта модуляции DVBS, указанный как 's2', 's2x', или 's2h'.

Типы данных: char | string

Идентификатор кода, указанный как символьный вектор или строка. В этой таблице перечислены допустимые codeIDF значения.

Порядок созвездия (M)Применимый стандарт (stdSuffix)Допустимый идентификатор кода (CodeIDF) Значения
16

's2' или 's2x'

'2/3', '3/4', '4/5', '5/6', '8/9', '9/10'

16

's2x'

'26/45', '3/5', '28/45', '23/36', '25/36', '13/18', '7/9', '77/90', '100/180', '96/180', '90/180', '18/30', '20/30'

32

's2' или 's2x'

'3/4', '4/5', '5/6', '8/9', '9/10'

32

's2x'

'32/45', '11/15', '7/9', '2/3'

64

's2x'

'11/15', '7/9', '4/5', '5/6', '128/180'

128

's2x'

'3/4', '7/9'

256

's2x'

'32/45', '3/4', '116/180', '20/30', '124/180', '22/30'

Для получения дополнительной информации см. таблицы 9 и 10 в стандарте DVB-S2 [1] и таблицу 17a в стандарте DVB-S2X [2].

Зависимости

Этот входной аргумент применяется только в том случае, если stdSuffix имеет значение 's2' или 's2x'.

Типы данных: char | string

Длина кадра, указанная как 'normal' или 'short'. Функция используетframeLength и codeIDF для выбора параметров модуляции.

Зависимости

Этот входной аргумент применяется только в том случае, если stdSuffix имеет значение 's2' или 's2x'.

Типы данных: char | string

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: y = dvbsapskdemod(x,M,stdSuffix,'InputType','bit','OutputDataType','single');

Тип вывода, указанный как разделенная запятыми пара, состоящая из OutputType и 'integer', 'bit', 'llr', или 'approxllr'. Описание возвращенных выходных данных см. в разделе z.

Типы данных: char | string

Тип выходных данных, указанный как разделенная запятыми пара, состоящая из OutputDataType и один из указанных типов данных. Допустимые значения для OutputDataType зависят от OutputType значение.

OutputType СтоимостьПриемлемый OutputDataType Ценности
'integer''double', 'single', 'int8', 'int16', 'int32', 'uint8', 'uint16', или 'uint32'
'bit''double', 'single', 'int8', 'int16', 'int32', 'uint8', 'uint16', 'uint32', или 'logical'

Зависимости

Этот аргумент пары имя-значение применяется только в том случае, если OutputType имеет значение 'integer' или 'bit'.

Типы данных: char | string

Флаг средней мощности блока, определяемый как разделенная запятыми пара, состоящая из UnitAveragePower и логический скаляр. Когда этот флаг trueфункция масштабирует созвездие до средней мощности 1 Вт, относящейся к 1 Ом. Когда этот флаг false, функция масштабирует совокупность на основе спецификаций в соответствующем стандарте, как описано в [1] и [2].

Примечание

Когда stdSuffix имеет значение 'sh', созвездие всегда имеет единичную среднюю мощность.

Зависимости

Этот аргумент пары имя-значение применяется только в том случае, если stdSuffix имеет значение 's2' или 's2x'.

Типы данных: logical

Дисперсия шума, указанная как разделенная запятыми пара, состоящая из NoiseVariance и положительный скаляр или вектор положительных значений.

  • Если задано как скаляр, то одно и то же значение дисперсии шума используется для всех входных элементов.

  • Если указан как вектор, длина вектора должна быть равна количеству столбцов во входном сигнале.

Когда дисперсия шума или мощность сигнала приводят к вычислениям, включающим экстремальные положительные или отрицательные величины, см. гибкую демодуляцию APSK, совместимую с DVB, для рассмотрения выбора алгоритма.

Зависимости

Этот аргумент пары имя-значение применяется только в том случае, если OutputType имеет значение 'llr' или 'approxllr'.

Типы данных: double

Опция для печати совокупности, заданной как разделенная запятыми пара, состоящая из 'PlotConstellation' и логический скаляр. Для построения графика созвездия установите PlotConstellation кому true.

Типы данных: logical

Выходные аргументы

свернуть все

Демодулированный сигнал, возвращаемый как скаляр, вектор или матрица. Размеры выходного сигнала изменяются в зависимости от заданного OutputType значение.

OutputType СтоимостьВозвращаемое значение dvbsapskdemodРазмеры z
'integer'Демодулированные целочисленные значения от 0 до (M – 1)z имеет те же размеры, что и входные y.
'bit'Демодулированные битыКоличество строк в z является log2 (сумма (M)) умножить количество строк в y. Каждый демодулированный символ отображается в группу log2 (сумма (M)) элементы в столбце, где первый элемент представляет MSB, а последний элемент представляет LSB.
'llr'Логарифмическое отношение правдоподобия для каждого бита
'approxllr'Приблизительное значение логарифмического отношения правдоподобия для каждого бита

Подробнее

свернуть все

DVB-S2/S2X/SH

Стандарты цифрового видеовещания (DVB) определяют модуляцию S2, S2X и SH со стандартной амплитудной фазовой манипуляцией (APSK). Дополнительную информацию о стандартах DVB-S2/S2X/SH см. в разделах [1], [2] и [3] соответственно.

Жесткая демодуляция APSK, совместимая с DVB

Алгоритм жесткой демодуляции применяет амплитудное фазовое декодирование, как описано в [4].

Программная демодуляция APSK, совместимая с DVB

Для мягкой демодуляции доступны два алгоритма отношения логарифмического правдоподобия (LLR) с мягким решением: точное LLR и приблизительное LLR. В этой таблице сравниваются эти алгоритмы.

АлгоритмТочностьСкорость выполнения
Точное LLRболее точнаяболее медленное выполнение
Приблизительный LLRменее точнаяболее быстрое выполнение

Дальнейшее описание этих алгоритмов см. в разделах Точный алгоритм LLR и Приблизительный алгоритм LLR.

Примечание

Алгоритм точного LLR вычисляет экспоненты, используя арифметику конечной точности. Вычисление экспонентов с очень большими положительными или отрицательными величинами может дать:

  • Inf или -Inf если дисперсия шума очень велика

  • NaN если дисперсия шума и мощность сигнала очень малы

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

Ссылки

[1] Стандарт ETSI EN 302 307 V1.4.1: цифровое видеовещание (DVB); Структура кадров второго поколения, системы кодирования и модуляции каналов для вещания, интерактивных услуг, сбора новостей и других широкополосных спутниковых приложений (DVB-S2), Европейский институт телекоммуникационных стандартов, Вальбонн, Франция, 2005-03.

[2] Стандарт ETSI EN 302 307-2 V1.1.1: цифровое видеовещание (DVB); Структура кадров второго поколения, системы кодирования и модуляции каналов для вещания, интерактивных услуг, сбора новостей и других широкополосных спутниковых приложений (DVB-S2X), Европейский институт телекоммуникационных стандартов, Вальбонн, Франция, 2015-02.

[3] Стандарт ETSI EN 302 583 V1.1.1: цифровое видеовещание (DVB); Структура кадров, канальное кодирование и модуляция для спутниковых услуг портативным устройствам (SH), Европейский институт телекоммуникационных стандартов, Вальбонна, Франция, 2008-03.

[4] Sebesta, J. «Эффективный способ для демодуляции APSK». Избранные темы по прикладной математике, схемам, системам и сигналам (П. Пардалос, Н. Масторакис, В. Младенов, и З. Бойкович, ред.). Vouliagmeni, Афины, Греция: WSEAS Press, 2009.

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

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

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