exponenta event banner

dvbs2WaveformGenerator

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

Описание

dvbs2WaveformGenerator Система object™ генерирует сигнал цифрового видеовещания второго поколения (DVB-S2) во временной области, состоящий из одного или нескольких кадров физического уровня. Объект реализует аспекты генерации формы сигнала стандарта ETSI EN 302 307-1 V1.4.1 (2014-11) [1].

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

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

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

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

Создание

Описание

пример

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

пример

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

Свойства

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

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

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

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

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

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

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

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

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

Типы данных: 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

Формат кадра прямого исправления ошибок (FEC), указанный как одна из этих двух опций.

  • "normal" - устанавливает длину кодового слова низкой плотности (LDPC) в 64 800 бит;

  • "short" - устанавливает длину кодового слова LDPC равной 16 200 битам;

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

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

Схема модуляции и скорость FEC для входной передачи, указанные в качестве одной из этих опций, как определено в ETSI EN 302 307-1 Раздел 5.5.2.2 Таблица 12 [1].

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

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

Примечание

MODCOD ценности 11, 17, 23, и 28 недопустимы при установке FECFrame свойство для "short" (как указано в ETSI EN 302 307-1 Раздел 5.3 Таблица 5b [1]).

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

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

Длина поля данных (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".

Зависимости

Чтобы включить это свойство, установите значение MODCOD свойство для значения в диапазоне [18, 28], которое указывает только 16APSK и 32APSK схемы модуляции.

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

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

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

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

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

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

Типы данных: 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 = s2waveGen(data) генерирует DVB-S2 сигнал временной области из битов входной информации.

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Формирование сигнала второго поколения цифрового видеовещания (DVB-S2) во временной области для транспортного потока с одним входом (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-S2 System. Укажите схему модуляции и скорость FEC (MODCOD) и длину поля данных (DFL).

 s2WaveGen = dvbs2WaveformGenerator;
 s2WaveGen.MODCOD = 21;              % 16APSK 5/6
 s2WaveGen.DFL = 39690;
 s2WaveGen.HasPilots = true;         % Pilot insertion indication
 disp(s2WaveGen)
  dvbs2WaveformGenerator with properties:

           StreamFormat: "TS"
        NumInputStreams: 1
               FECFrame: "normal"
                 MODCOD: 21
                    DFL: 39690
          ScalingMethod: "outer radius as 1"
              HasPilots: 1
          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 = s2WaveGen.MinNumPackets*numFrames;
txRawPkts = randi([0 1],pktLen,numPkts);
txPkts = [repmat(syncBits,1,numPkts); txRawPkts];
data = txPkts(:);

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

txWaveform = s2WaveGen(data);

Визуализируйте график созвездия для сгенерированной формы сигнала DVB-S2 во временной области, создав объект comm.ConstedDiign System.

sps = s2WaveGen.SamplesPerSymbol;
constel = comm.ConstellationDiagram('ColorFading',true, ...
    'ShowTrajectory',0, ...
    'SamplesPerSymbol',sps, ...
    'ShowReferenceConstellation',false, ...
    'XLimits',[-0.5 0.5], 'YLimits',[-0.5 0.5]);
plHeaderLen = 90*sps;           % PL header length
constel(txWaveform(plHeaderLen+1:end));
release(constel);

Отображение частотного спектра генерируемого сигнала DVB-S2 во временной области путем создания dsp.SpectrumAnalyzer Системный объект.

BW = 36e6;                 % Typical satellite channel bandwidth
Fsym = BW/(1+s2WaveGen.RolloffFactor);
Fsamp = Fsym*sps;
scope = dsp.SpectrumAnalyzer('SampleRate',Fsamp);
scope(txWaveform)

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

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

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 = 3;

Создайте объект DVB-S2 System с переменным кодированием и конфигурацией модуляции для многовходовой GS. Укажите схему модуляции и скорость FEC (MODCOD) и длину поля данных (DFL).

s2WaveGen = dvbs2WaveformGenerator;
s2WaveGen.StreamFormat = "GS";
s2WaveGen.NumInputStreams = 2;
s2WaveGen.MODCOD = [6 24];          % QPSK 2/3 and 32APSK 3/4
s2WaveGen.DFL = [42960 48328];
s2WaveGen.HasPilots = true;
s2WaveGen.SamplesPerSymbol = 10;
disp(s2WaveGen)
  dvbs2WaveformGenerator with properties:

           StreamFormat: "GS"
        NumInputStreams: 2
                    UPL: 0
               FECFrame: "normal"
                 MODCOD: [6 24]
                    DFL: [42960 48328]
          ScalingMethod: "outer radius as 1"
              HasPilots: 1
          RolloffFactor: 0.3500
    FilterSpanInSymbols: 10
       SamplesPerSymbol: 10

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

data = cell(s2WaveGen.NumInputStreams,1);
   for i = 1:s2WaveGen.NumInputStreams
           data{i} = randi([0 1],s2WaveGen.DFL(i)*numFrames,1,'int8');
   end

Формирование DVB-S2 формы сигнала во временной области с входными информационными битами.

txWaveform = s2WaveGen(data);

Ссылки

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

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

.

См. также

Функции

Объекты

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