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 ложь) или 1 TRUE). Чтобы указать, что формат передачи квантования времени используется, устанавливает это значение к 1 TRUE).

Если вы устанавливаете это свойство на 1 TRUE), можно установить NumInputStreams свойство к максимальному значению 8.

Типы данных: логический

Количество входных потоков в виде целого числа в области значений [1, 256].

Когда вы устанавливаете HasTImeSlicing свойство к true, NumInputStreams свойство может быть задано к максимальному значению 8.

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

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

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

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

    Примечание

    Когда вы задаете UPL как мультивходной поток, все ВЗЛЕТЫ должны быть или packetized или в непрерывном потоке. Смешивание потоковых типов не поддерживается.

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

Для типового непрерывного потока, набор UPL к 0.

Зависимости

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

Типы данных: 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 (поскольку VL-SNR установил 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 ложь) или 1 TRUE). Указать, которые вводят потоковую синхронизацию, используется, установите это значение к 1 TRUE).

Зависимости

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

Типы данных: логический

Введите потоковый формат ссылки часов в виде одной из этих опций.

  • "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 от битов информации о входе.

Входные параметры

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

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

  • Вектор-столбец с бинарным знаком – Использование эта опция с потоком одно входа.

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

data, или единый поток или мультипоток, может быть введен в одной из следующих форм.

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Сгенерируйте Второе поколение Спутника Цифрового телевидения, расширенное (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 с помогшим пилотами 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 и задайте его свойства.

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] EN 302 307-1 V1.4.1 Стандарта ETSI (2014-11). Цифровое телевидение (DVB); Структура Структурирования Второго поколения, Кодирование Канала и Системы Модуляции для Широковещательной передачи, Interactive Services, Сбора Новостей и других Широкополосных Спутниковых Приложений (DVB-S2).

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

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

Смотрите также

Объекты

Функции

Введенный в R2021a