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) в битах в виде одной из этих опций.

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

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

    Примечание

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

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

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

Зависимости

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

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

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

  • "normal" — Устанавливает длину кодовой комбинации низкой проверки четности плотности (LDPC) до 64 800 битов

  • "short" — Устанавливает длину кодовой комбинации LDPC до 16 200 битов

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

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

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

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

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

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

Передайте фактор спада фильтра для формирования видеоимпульса в виде 0.35, 0.25, или 0.2.

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

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

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

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

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

Функции

Объекты

Введенный в R2021a