Генерировать сигнал DVB-S2
dvbs2WaveformGenerator Система object™ генерирует сигнал цифрового видеовещания второго поколения (DVB-S2) во временной области, состоящий из одного или нескольких кадров физического уровня. Объект реализует аспекты генерации формы сигнала стандарта ETSI EN 302 307-1 V1.4.1 (2014-11) [1].
Для генерации DVB-S2 формы сигнала:
Создать dvbs2WaveformGenerator и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает системный объект генератора сигнала DVB-S2 по умолчанию.s2waveGen = dvbs2WaveformGenerator
задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в кавычки. Например, s2waveGen = dvbs2WaveformGenerator(Name,Value)dvbs2WaveformGenerator('NumInputStreams',4,'UPL',100) определяет четыре входных потока, каждый из которых имеет длину пакета пользователя 100 бит.
Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.
Если свойство настраивается, его значение можно изменить в любое время.
Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.
StreamFormat - Формат входного потока"TS" (по умолчанию) | "GS"Формат входного потока, указанный как одно из этих значений.
"TS" - Для формата транспортного потока
"GS" - Для общего формата потока
Типы данных: char | string
NumInputStreams - Количество входных потоков1 (по умолчанию) | целое число в диапазоне [1, 256]Число входных потоков, указанное как целое число в диапазоне [1, 256].
Типы данных: double
UPL - Длина пользовательского пакета0 (по умолчанию) | неотрицательное целое | вектор неотрицательных целых чисел Длина пакета пользователя (UP) в битах, указанная в качестве одной из этих опций.
Неотрицательное целое число (Nonnegative integer) - используйте эту опцию для потоков с одним и несколькими входами. Если установить NumInputStreams значение свойства больше 1, значение UP в каждом потоке должно быть равно целому значению UPL собственность.
Вектор неотрицательных целых чисел - используйте эту опцию только для потоков с несколькими входами. Если установить NumInputStreams свойство имеет значение больше 1, значение UP в каждом потоке должно быть размером соответствующего элемента в этом векторе. Длина этого вектора должна быть равна NumInputStreams.
Примечание
При указании UPL как поток с множеством входов, все UP должны быть пакетированы или в непрерывном потоке. Смешанные типы потоков не поддерживаются.
Максимальное значение UPL как целочисленный скаляр или целочисленный элемент в векторе строки должен быть меньше или равен соответствующему DFL значение свойства.
Для общего непрерывного потока установите UPL кому 0.
Чтобы включить это свойство, установите значение StreamFormat свойство для "GS". Если установить StreamFormat свойство для "TS"UPL фиксируется в 1504 бита.
Типы данных: double
FECFrame - формат кадра FEC"normal" (по умолчанию) | "short"Формат кадра прямого исправления ошибок (FEC), указанный как одна из этих двух опций.
"normal" - устанавливает длину кодового слова низкой плотности (LDPC) в 64 800 бит;
"short" - устанавливает длину кодового слова LDPC равной 16 200 битам;
Настраиваемый: Да
Типы данных: char | string
MODCOD - Схема модуляции и скорость FEC1 (по умолчанию) | целое число в диапазоне [1, 28] | вектор целых чисел в диапазоне [1, 28]Схема модуляции и скорость 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
DFL - Длина поля данных15,928 (по умолчанию) | целое число в диапазоне [1, (KBCH − 80)] | вектор целых чисел в диапазоне [1, (KBCH −Длина поля данных (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
ScalingMethod - Метод масштабирования амплитуды созвездия"outer radius as 1" (по умолчанию) | "unit average power"Метод масштабирования амплитуды созвездия, указанный как "outer radius as 1" или "unit average power".
Чтобы включить это свойство, установите значение MODCOD свойство для значения в диапазоне [18, 28], которое указывает только 16APSK и 32APSK схемы модуляции.
Типы данных: char | string
HasPilots - Индикация блока летчика0 или false (по умолчанию) | 1 или true | вектор logical ценностиИндикация блока пилот-сигнала, заданная как логическое значение 0 (false), 1 (true) или вектор logical значения. Задайте для этого значения значение 1 (true) для указания того, что пилот-сигналы вставляются в кадр физического уровня.
Если установить NumInputStreams значение свойства больше 1, можно настроить пилот-сигналы для каждого потока, указав это свойство в качестве вектора. Длина этого вектора должна быть равна NumInputStreams.
Настраиваемый: Да
Типы данных: logical
RolloffFactor - Коэффициент скручивания фильтра передачи0.35 (по умолчанию) | 0.25 | 0.2Коэффициент скатывания фильтра передачи для формирования импульсов основной полосы частот, указанный как 0.35, 0.25, или 0.2.
Типы данных: double
FilterSpanInSymbols - Диапазон фильтра в символах10 (по умолчанию) | положительное целое числоДиапазон фильтра в символах, заданный как положительное целое число.
Идеальная импульсная характеристика фильтра передачи усекается до длины, которая охватывает количество символов, указанных в этом свойстве.
Типы данных: double
SamplesPerSymbol - Количество образцов на символ4 (по умолчанию) | положительное целое числоЧисло выборок на символ, указанное как положительное целое число.
Типы данных: double
ISSYI - Индикатор синхронизации входного потока0 или false (по умолчанию) | 1 или trueИндикатор синхронизации входного потока (ISSY), заданный как логическое значение 0 (false) или 1 (true). Чтобы указать, что используется синхронизация входного потока, установите это значение в 1 (true).
Чтобы включить это свойство, установите значение NumInputStreams значение свойства больше 1 и задайте значение UPL с ненулевым значением.
Типы данных: logical
ISCRFormat - Формат опорного синхросигнала входного потока"short" (по умолчанию) | "long"Формат опорного синхросигнала входного потока, указанный в качестве одной из этих опций.
"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
MinNumPackets - Минимальное количество пакетов, необходимых для создания DFЭто свойство доступно только для чтения.
Минимальное количество пакетов, необходимых для создания DF, указанное в качестве одной из этих опций.
Целое число в диапазоне [1 58 112] - этот параметр применяется только для потоков с одним входом.
Вектор строк целых чисел в диапазоне [1 58 112] - этот параметр применяется только для потоков с несколькими входами. Если установить NumInputStreams свойство имеет значение больше 1, минимальное количество пакетов, требуемых для каждого потока, равно соответствующему элементу в этом векторе. Длина этого вектора должна быть равна NumInputStreams.
Значение MinNumPackets вычисляется на основе значений DFL и UPL свойства.
Чтобы включить это свойство, установите значение UPL с ненулевым значением.
Типы данных: double
генерирует DVB-S2 сигнал временной области из битов входной информации.txWaveform = s2waveGen(data)
data - Входные информационные битыВходные информационные биты, указанные в качестве одной из этих опций. Каждый элемент вектора столбца или массива ячеек может иметь тип данных double, int8, или logical.
Вектор столбца с двоичным значением - используйте эту опцию для потоков с одним входом.
Массив ячеек векторов столбцов с двоичным значением - используйте этот параметр для потоков с несколькими входами. Каждый элемент массива представляет соответствующий входной поток. Длина массива ячеек должна быть равна значению NumInputStreams собственность.
Вход data, либо как поток с одним входом, либо как поток с несколькими входами, должен быть введен в одной из этих форм.
Пакетированный поток - количество пакетов в каждом потоке должно быть кратным целому числу MinNumPackets собственность.
Для пакетированного потока 8-битовое поле синхронизации должно быть включено в начале каждого пакета. Суммарная длина пакета и его битов синхронизации должна быть равна соответствующему значению UPL собственность.
Непрерывный поток - количество битов для каждого потока должно быть целым кратным DFL собственность.
Примечание
При установке StreamFormat свойство для "TS", байт синхронизации фиксируется как 47 шестнадцатеричных.
Типы данных: double | int8 | logical | cell
txWaveform - Генерируемый сигнал временной области DVB-S2Генерируемый сигнал DVB-S2 во временной области, возвращаемый в виде вектора столбца. Сигнал генерируется в виде комплексных синфазных квадратурных (IQ) выборок и может состоять из одного кадра физического уровня или нескольких кадров физического уровня.
При установке NumInputStreams Если значение свойства больше 1, поля данных, сгенерированные из различных входных потоков, объединяются с использованием метода циклического преобразования.
Типы данных: double
Поддержка комплексного номера: Да
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
dvbs2WaveformGeneratorinfo | Информация о характеристиках объекта |
flushFilter | Фильтр заподлицо |
Формирование сигнала второго поколения цифрового видеовещания (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).
Примечания и ограничения по использованию:
Для всех свойств, поддерживающих ввод строки и массива ячеек, генерация кода поддерживается только при вводе массива ячеек.
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.