dvbs2WaveformGenerator

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

Описание

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

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

Зависимости

Чтобы включить это свойство, установите 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 hex.

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

свернуть все

Сгенерируйте сигнал второй генерации (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.ConstellationDiachm.

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 Системного объекта с переменными строениями кодирования и модуляции для мультивхода 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
Для просмотра документации необходимо авторизоваться на сайте