dvbs2xWaveformGenerator

Сгенерируйте DVB-S2X сигнал

Описание

The dvbs2xWaveformGenerator Система object™ генерирует сигнал Digital Video Broadcasting Satellite Second Generation (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) в битах, заданная в качестве одного из следующих опций.

  • Неотрицательное целое число - Используйте эту опцию с потоками с одним и мультивходами. Если вы задаете 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.

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

Примечание

Немного 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-ОСШ 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-ОСШ 1

  • "BPSK 1/5", "BPSK 4/15", и "BPSK 1/3" - Применимо для набора VL-ОСШ 2

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

Зависимости

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

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

Длина поля данных (DF) в битах, заданная в качестве одного из следующих опций. K BCH является незакодированной длиной блока BCH, как указано в ETSI EN 302 307-1, раздел 5.3, таблицы 5a и 5b [1].

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

  • Вектор целых чисел в область значений [1, (K BCH − 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 hex.

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

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

расширить все

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

Когда вы устанавливаете NumInputStreams свойство для значения, большего 1, поля данных, сгенерированные из различных входных потоков, объединяются с помощью метода round-robin.

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

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

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

release(obj)

расширить все

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

Примеры

свернуть все

Сгенерируйте сигнал Digital Video Broadcasting Satellite Генерации расширенной (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 с управляемым 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);

Сгенерируйте сигнал Digital Video Broadcasting Satellite Second Generation (DVB-S2X) временной области для типового потока с одним входом (GS) с несколькими системами координат физического слоя (PL) на поток.

Форма волны DVB-S2X, сгенерированная в этом примере, состоит из очень низкого отношения сигнал/шум (VL-ОСШ) системы координат набора 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;

Создайте Digital Video Broadcasting Satellite Second Генерации extended (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
Для просмотра документации необходимо авторизоваться на сайте