exponenta event banner

dvbs2xWaveformGenerator

Генерировать сигнал DVB-S2X

Описание

dvbs2xWaveformGenerator Система object™ генерирует расширенную (DVB-S2X) форму сигнала во временной области, состоящую из одного или нескольких кадров физического уровня (PL). Объект реализует аспекты генерации формы сигнала стандарта ETSI EN 302 307-2 V1.1.1 (2015-11) [2].

Для генерации DVB-S2X формы сигнала:

  1. Создать dvbs2xWaveformGenerator и задайте его свойства.

  2. Вызовите объект с аргументами, как если бы это была функция.

Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.

Создание

Описание

пример

s2xWaveGen = dvbs2xWaveformGenerator создает системный объект генератора сигнала DVB-S2X по умолчанию.

пример

s2xWaveGen = dvbs2xWaveformGenerator(Name,Value) задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в кавычки. Например, dvbs2xWaveformGenerator('NumInputStreams',4,'UPL',100) определяет четыре входных потока, каждый из которых имеет длину пакета пользователя 100 бит.

Свойства

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

Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.

Если свойство настраивается, его значение можно изменить в любое время.

Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.

Формат входного потока, указанный как одно из этих значений.

  • "TS" - Для формата транспортного потока

  • "GS" - Для общего формата потока

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

Индикатор квантирования времени, заданный как логическое значение 0 (false) или 1 (true). Чтобы указать, что используется формат передачи с разделением по времени, установите это значение в 1 (true).

Если для этого свойства задано значение 1 (true), можно установить NumInputStreams свойство имеет максимальное значение, равное 8.

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

Число входных потоков, указанное как целое число в диапазоне [1, 256].

При установке HasTImeSlicing свойство для true, NumInputStreams можно задать максимальное значение свойства, равное 8.

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

Длина пакета пользователя (UP) в битах, указанная в качестве одной из этих опций.

  • Неотрицательное целое число (Nonnegative integer) - используйте эту опцию для потоков с одним и несколькими входами. Если установить NumInputStreams значение свойства больше 1, значение UP в каждом потоке должно быть равно целому значению UPL собственность.

  • Вектор неотрицательных целых чисел - используйте эту опцию только для потоков с несколькими входами. Если установить NumInputStreams свойство имеет значение больше 1, значение UP в каждом потоке должно быть размером соответствующего элемента в этом векторе. Длина этого вектора должна быть равна NumInputStreams.

    Примечание

    При указании UPL как поток с множеством входов, все UP должны быть пакетированы или в непрерывном потоке. Смешанные типы потоков не поддерживаются.

Максимальное значение UPL как целочисленный скаляр или целочисленный элемент в векторе строки должен быть меньше или равен соответствующему DFL значение свойства.

Для общего непрерывного потока установите UPL кому 0.

Зависимости

Чтобы включить это свойство, установите значение StreamFormat свойство для "GS". Если установить StreamFormat свойство для "TS"UPL фиксируется в 1504 бита.

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

Информация кода сигнализации PL в десятичном формате указана в качестве одной из этих опций (как описано в ETSI EN 302 307-1 Раздел 5.5.2.2 [1] и ETSI EN 302 307-2 Раздел 5.5.2.2 Таблица 17a [2]).

  • Целое число в диапазоне [4, 249] - используйте эту опцию для потоков с одним и несколькими входами. Если установить NumInputStreams свойство имеет значение больше 1, каждый поток имеет одинаковую схему модуляции и скорость кодирования.

  • Вектор целых чисел в диапазоне [4, 249] - используйте эту опцию только для потоков с несколькими входами. Если установить NumInputStreams свойство на значение больше 1, каждый поток имеет схему модуляции и скорость кодирования, равную соответствующему элементу в этом векторе. Длина этого вектора должна быть равна NumInputStreams.

Все нечетные целочисленные значения считаются включающими пилот-сигналы в кадрах PL.

Примечание

Немногие PLSDecimalCode недопустимые значения в указанном диапазоне значений. Недопустимые значения: {46, 47, 70, 71, 94, 95, 114, 128, 130, 176, 177, 188, 189, 192, 193, 196 и 197}.

Чтобы вычислить PLSDecimalCode значение свойства для конфигурации DVB-S2X системы, используйте эту формулу.

MODCOD* 4 + (0 - для обычногоFECFrame/ 1 - для краткостиFECFrame) * 2 + (0 - еслиHasPilots значение свойства - false/ 1 - еслиHasPilots значение свойства - true)

Например, если MODCOD = 18 (16APSK 2/3) с коротким кадром FEC и отключенными пилотами, значение PLSDecimalCode вычисляется по этой формуле следующим образом:

PLSDecimalCode = 18*4 + 1*2 + 0 = 74

Примечание

Для кадров с очень низким отношением сигнал/шум (VL-SNR) необходимо установить PLSDecimalCode свойство для любого из них 129 или 131, что указывает на набор VL-SNR 1 или 2 соответственно.

Кадры VL-SNR не должны объединяться с обычными кадрами.

Настраиваемый: Да

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

Схема канонической модуляции и имя кодовой скорости для передачи кадров VL-SNR, указанные в качестве одной из этих опций (как описано в ETSI EN 302 307-2 Раздел 5.5.2.2 Таблица 18a [2]).

  • Символьный вектор или строковый скаляр - используйте этот параметр для потоков с одним и несколькими входами. Если установить NumInputStreams свойство имеет значение больше 1, каждый поток имеет одинаковую схему модуляции и скорость кодирования.

  • Массив ячеек или строковый массив - используйте этот параметр только для потоков с несколькими входами. Если установить NumInputStreams свойство на значение больше 1, каждый входной поток имеет схему модуляции и скорость кодирования, равную соответствующему значению в этом массиве. Длина этого массива должна быть равна NumInputStreams.

Действительный CanonicalMODCODName значения включают эти опции.

  • "QPSK 2/9", "BPSK 1/5", "BPSK 11/45", "BPSK-S 1/5", "BPSK-S 11/45", и "BPSK 1/3" - Применимо для аппарата VL-SNR 1

  • "BPSK 1/5", "BPSK 4/15", и "BPSK 1/3" - Применимо для аппарата VL-SNR 2

Настраиваемый: Да

Зависимости

Чтобы включить это свойство, установите значение PLSDecimalCode свойство для любого из них 129 (для аппарата VL-SNR 1) или 131 (для аппарата 2 VL-SNR). Это свойство применяется только для передач кадров VL-SNR.

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

Длина поля данных (DF) в битах, указанная как одна из этих опций. KBCH - это некодированная длина блока BCH, как указано в ETSI EN 302 307-1 Раздел 5.3 Таблица 5a и 5b [1].

  • Целое число в диапазоне [1, (KBCH − 80)] - используйте эту опцию для потоков с одним и несколькими входами. Если установить NumInputStreams значение свойства больше 1, длина DF в кадре основной полосы частот каждого потока одинакова.

  • Вектор целых чисел в диапазоне [1, (KBCH − 80)] - используйте эту опцию только для потоков с несколькими входами. Если установить NumInputStreams значение свойства больше 1, длина поля данных в кадре основной полосы каждого потока должна быть размером соответствующего элемента в этом векторе. Длина этого вектора должна быть равна NumInputStreams.

Настраиваемый: Да

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

Метод масштабирования амплитуды созвездия, указанный как "outer radius as 1" или "unit average power".

Зависимости

Чтобы включить это свойство, установите значение PLSDecimalCode свойство к значению, соответствующему APSK модуляции, со следующим исключением: {164, 165, 158, 159, 206, 207, 212 и 213}. Другими исключениями являются значения QPSK и 8 PSK: {4-69 включительно; 129; 131; от 132 до 137 включительно; 142-147 включительно; от 216 до 235, включительно}.

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

Индекс последовательности скремблирования PL, указанный как одна из этих опций (как описано в ETSI EN 302 307-2 Раздел 5.5.4 Таблица 19e [2]).

  • Целое число в диапазоне [0, 7] - используйте этот параметр для потоков с одним и несколькими входами.

    Если установить NumInputStreams свойство имеет значение больше 1, каждый поток имеет одинаковое значение индекса скремблирования PL.

  • Вектор целых чисел в диапазоне [0, 7] - используйте эту опцию при установке HasTimeSlicing свойство для true для потоков с несколькими входами.

    Если установить NumInputStreams свойство имеет значение больше 1, значение индекса скремблирования PL каждого потока должно быть равно соответствующему элементу в этом векторе. Длина этого вектора должна быть равна NumInputStreams.

Для генерации скремблирующей последовательности PL используется фактический индекс: PLScramblingIndex*10949.

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

Коэффициент скатывания фильтра передачи для формирования импульсов основной полосы частот, указанный как 0.35, 0.05, 0.1, 0.15, 0.2, или 0.25.

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

Диапазон фильтра в символах, заданный как положительное целое число.

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

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

Число выборок на символ, указанное как положительное целое число.

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

Индикатор синхронизации входного потока (ISSY), заданный как логическое значение 0 (false) или 1 (true). Чтобы указать, что используется синхронизация входного потока, установите это значение в 1 (true).

Зависимости

Чтобы включить это свойство, установите значение NumInputStreams значение свойства больше 1 и задайте значение UPL с ненулевым значением.

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

Формат опорного синхросигнала входного потока, указанный в качестве одной из этих опций.

  • "short" - Указывает длину ISSY как 2 байта

  • "long" - Указывает длину ISSY как 3 байта

При установке StreamFormat свойство для "GS", NumInputStreams свойство имеет значение больше 1, UPL свойство имеет ненулевое значение, и ISSYI кому 1 (true), только "short" вариант этого ISCRFormat свойство применимо.

Зависимости

Чтобы включить это свойство, установите значение StreamFormat свойство для "TS", NumInputStreams для значения, большего 1, и ISSYI свойство для 1 (true).

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

Это свойство доступно только для чтения.

Минимальное количество пакетов, необходимых для создания DF, указанное в качестве одной из этих опций.

  • Целое число в диапазоне [1 58 112] - этот параметр применяется только для потоков с одним входом.

  • Вектор строки положительных целых чисел в диапазоне [1 58 112] - этот параметр применяется только для потоков с несколькими входами. Если установить NumInputStreams свойство имеет значение больше 1, минимальное количество пакетов, требуемых для каждого потока, равно соответствующему элементу в этом векторе. Длина этого вектора должна быть равна NumInputStreams.

Значение MinNumPackets вычисляется на основе значений DFL и UPL свойства.

Зависимости

Чтобы включить это свойство, установите значение UPL с ненулевым значением.

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

Использование

Описание

txWaveform = s2xWaveGen(data) генерирует DVB-S2X сигнал временной области из битов входной информации.

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

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

Входные информационные биты, указанные в качестве одной из этих опций. Каждый элемент вектора столбца или массива ячеек может иметь тип данных double, int8, или logical.

  • Вектор столбца с двоичным значением - используйте эту опцию с потоком с одним входом.

  • Массив ячеек векторов столбцов с двоичным значением - используйте этот параметр для потоков с несколькими входами. Каждый элемент массива представляет соответствующий входной поток. Длина массива ячеек должна быть равна значению NumInputStreams собственность.

dataв одной из этих форм может вводиться либо один поток, либо несколько потоков.

  • Пакетированный поток - количество пакетов в каждом потоке должно быть кратным целому числу MinNumPackets собственность.

    Для пакетированного потока 8-битовое поле синхронизации должно быть включено в начале каждого пакета. Суммарная длина пакета и его битов синхронизации должна быть равна соответствующему значению UPL собственность.

  • Непрерывный поток - количество битов для каждого потока должно быть целым кратным DFL собственность.

Примечание

При установке StreamFormat свойство для "TS", байт синхронизации фиксируется как 47 шестнадцатеричных.

Типы данных: double | int8 | logical | cell

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

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

Генерируемый сигнал DVB-S2X во временной области, возвращаемый в виде вектора столбца. Сигнал генерируется в виде комплексных синфазных квадратурных (IQ) выборок и может состоять из одного кадра физического уровня или нескольких кадров физического уровня.

При установке NumInputStreams Если значение свойства больше 1, поля данных, сгенерированные из различных входных потоков, объединяются с использованием метода циклического преобразования.

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

Функции объекта

Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:

release(obj)

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

infoИнформация о характеристиках объекта
flushFilterФильтр заподлицо
stepЗапустить алгоритм объекта System
releaseДеблокирование ресурсов и разрешение изменений значений свойств объекта системы и входных признаков
cloneСоздать повторяющийся объект System
isLockedОпределить, используется ли объект System
resetСброс внутренних состояний объекта System

Примеры

свернуть все

Генерация расширенного (DVB-S2X) во временной области сигнала цифрового видеовещания второго поколения для транспортного потока с одним входом (TS) с одним кадром физического уровня (PL) на поток.

В этом примере используются MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны по пути, загрузите и распакуйте MAT-файлы, введя этот код в командной строке MATLAB.

if ~exist('dvbs2xLDPCParityMatrices.mat','file')
    if ~exist('s2xLDPCParityMatrices.zip','file')
        url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip';
        websave('s2xLDPCParityMatrices.zip',url);
        unzip('s2xLDPCParityMatrices.zip');
    end
addpath('s2xLDPCParityMatrices');
end

Укажите количество кадров PL на поток.

numFrames = 1;

Создайте объект DVB-S2X System с pilot-aided PL.

s2xWaveGen = dvbs2xWaveformGenerator;
s2xWaveGen.PLSDecimalCode = 133;      % QPSK 13/45
                                      % All odd PLSDecimalCode values are pilot aided
disp(s2xWaveGen)
  dvbs2xWaveformGenerator with properties:

           StreamFormat: "TS"
         HasTimeSlicing: false
        NumInputStreams: 1
         PLSDecimalCode: 133
                    DFL: 18448
      PLScramblingIndex: 0
          RolloffFactor: 0.3500
    FilterSpanInSymbols: 10
       SamplesPerSymbol: 4

  Show all properties

Создайте битовый вектор информационных битов, data, конкатенированных пользовательских пакетов TS.

syncBits = [0 1 0 0 0 1 1 1]';    % Sync byte for TS packet is 47 Hex
pktLen = 1496;                    % UP length without sync bits is 1496
numPkts = s2xWaveGen.MinNumPackets*numFrames;
txRawPkts = randi([0 1],pktLen,numPkts);
txPkts = [repmat(syncBits,1,numPkts); txRawPkts];
data = txPkts(:);

Формирование DVB-S2X формы сигнала во временной области с использованием информационных битов. data.

txWaveform = s2xWaveGen(data);

Генерировать расширенную (DVB-S2X) форму сигнала во временной области цифрового видеовещания второго поколения для универсального потока (GS) с одним входом с несколькими кадрами физического уровня (PL) на поток.

Сигнал DVB-S2X, генерируемый в этом примере, состоит из кадра с очень низким отношением сигнал/шум (VL-SNR) набора 2.

В этом примере используются MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны по пути, загрузите и распакуйте MAT-файлы, введя этот код в командной строке MATLAB.

if ~exist('dvbs2xLDPCParityMatrices.mat','file')
    if ~exist('s2xLDPCParityMatrices.zip','file')
        url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip';
        websave('s2xLDPCParityMatrices.zip',url);
        unzip('s2xLDPCParityMatrices.zip');
    end
addpath('s2xLDPCParityMatrices');
end

Укажите количество кадров PL на поток.

numFrames = 2;

Создайте объект DVB-S2X System и укажите его свойства.

s2xWaveGen = dvbs2xWaveformGenerator;
s2xWaveGen.StreamFormat = "GS";
s2xWaveGen.PLSDecimalCode = 131;    % VL-SNR set 2
s2xWaveGen.CanonicalMODCODName = "BPSK 1/3";
s2xWaveGen.DFL = 5080;
s2xWaveGen.SamplesPerSymbol = 6;
disp(s2xWaveGen)
  dvbs2xWaveformGenerator with properties:

           StreamFormat: "GS"
         HasTimeSlicing: false
        NumInputStreams: 1
                    UPL: 0
         PLSDecimalCode: 131
    CanonicalMODCODName: "BPSK 1/3"
                    DFL: 5080
      PLScramblingIndex: 0
          RolloffFactor: 0.3500
    FilterSpanInSymbols: 10
       SamplesPerSymbol: 6

Создайте битовый вектор информационных битов для каждого потока.

data = randi([0 1],s2xWaveGen.DFL*numFrames,1,'int8');

Формирование DVB-S2X формы сигнала во временной области с использованием информационных битов.

txWaveform = s2xWaveGen(data);

Получение информации из dvbs2xWaveformGenerator Системный объект с помощью info функция. Затем извлеките остаточные выборки фильтра с помощью flushFilter объектная функция.

В этом примере используются MAT-файлы с матрицами четности LDPC. Если MAT-файлы недоступны по пути, загрузите и распакуйте MAT-файлы, введя этот код в командной строке MATLAB.

if ~exist('dvbs2xLDPCParityMatrices.mat','file')
    if ~exist('s2xLDPCParityMatrices.zip','file')
        url = 'https://ssd.mathworks.com/supportfiles/spc/satcom/DVB/s2xLDPCParityMatrices.zip';
        websave('s2xLDPCParityMatrices.zip',url);
        unzip('s2xLDPCParityMatrices.zip');
    end
addpath('s2xLDPCParityMatrices');
end

Укажите количество кадров физического уровня (PL) на поток.

numFrames = 2;

Создайте объект цифровой системы спутникового вещания второго поколения (DVB-S2X) и укажите его свойства. Используйте метод квантирования времени и режим конфигурации переменного кодирования и модуляции.

s2xWaveGen = dvbs2xWaveformGenerator();
s2xWaveGen.HasTimeSlicing = true;
s2xWaveGen.NumInputStreams = 2;
s2xWaveGen.PLSDecimalCode = [135 145];   % QPSK 9/20 and 8PSK 25/36
s2xWaveGen.DFL = [18048 44656];
s2xWaveGen.PLScramblingIndex = [0 1];
disp(s2xWaveGen)
  dvbs2xWaveformGenerator with properties:

           StreamFormat: "TS"
         HasTimeSlicing: true
        NumInputStreams: 2
         PLSDecimalCode: [135 145]
                    DFL: [18048 44656]
      PLScramblingIndex: [0 1]
          RolloffFactor: 0.3500
    FilterSpanInSymbols: 10
       SamplesPerSymbol: 4
                  ISSYI: false

  Show all properties

Получите характеристическую информацию о генераторе сигнала DVB-S2X.

info(s2xWaveGen)
ans = struct with fields:
              FECFrame: {'normal'  'normal'}
      ModulationScheme: {'QPSK'  '8PSK'}
    LDPCCodeIdentifier: {'9/20'  '25/36'}

Создайте битовый вектор битов входной информации, data, конкатенированных пользовательских пакетов TS для каждого входного потока.

syncBits = [0 1 0 0 0 1 1 1]';       % Sync byte for TS packet is 47 Hex
pktLen = 1496;                       % UP length without sync bits is 1496
data =  cell(1, s2xWaveGen.NumInputStreams);
for i = 1:s2xWaveGen.NumInputStreams
    numPkts = s2xWaveGen.MinNumPackets(i)*numFrames;
    txRawPkts = randi([0 1], pktLen, numPkts);
    txPkts = [repmat(syncBits, 1, numPkts); txRawPkts];
    data{i} = txPkts(:);
end

Формирование DVB-S2X формы сигнала во временной области с использованием информационных битов.

txWaveform = s2xWaveGen(data);

Проверьте выборки остаточных данных фильтра, которые остаются в задержке фильтра.

flushFilter(s2xWaveGen)
ans = 40×1 complex

  -0.2412 - 0.0143i
  -0.2619 - 0.0861i
  -0.2726 - 0.1337i
  -0.2511 - 0.1597i
  -0.1851 - 0.1680i
  -0.0780 - 0.1602i
   0.0448 - 0.1288i
   0.1598 - 0.0751i
   0.2482 - 0.0049i
   0.3026 + 0.0702i
      ⋮

Ссылки

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

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

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

.

См. также

Объекты

Функции

Представлен в R2021a