Генерировать сигнал DVB-S2X
dvbs2xWaveformGenerator Система object™ генерирует расширенную (DVB-S2X) форму сигнала во временной области, состоящую из одного или нескольких кадров физического уровня (PL). Объект реализует аспекты генерации формы сигнала стандарта ETSI EN 302 307-2 V1.1.1 (2015-11) [2].
Для генерации DVB-S2X формы сигнала:
Создать dvbs2xWaveformGenerator и задайте его свойства.
Вызовите объект с аргументами, как если бы это была функция.
Дополнительные сведения о работе системных объектов см. в разделе Что такое системные объекты?.
создает системный объект генератора сигнала DVB-S2X по умолчанию.s2xWaveGen = dvbs2xWaveformGenerator
задает свойства, используя одну или несколько пар имя-значение. Заключите каждое имя свойства в кавычки. Например, s2xWaveGen = dvbs2xWaveformGenerator(Name,Value)dvbs2xWaveformGenerator('NumInputStreams',4,'UPL',100) определяет четыре входных потока, каждый из которых имеет длину пакета пользователя 100 бит.
Если не указано иное, свойства не настраиваются, что означает невозможность изменения их значений после вызова объекта. Объекты блокируются при их вызове, и release функция разблокирует их.
Если свойство настраивается, его значение можно изменить в любое время.
Дополнительные сведения об изменении значений свойств см. в разделе Проектирование системы в MATLAB с использованием системных объектов.
StreamFormat - Формат входного потока"TS" (по умолчанию) | "GS"Формат входного потока, указанный как одно из этих значений.
"TS" - Для формата транспортного потока
"GS" - Для общего формата потока
Типы данных: char | string
HasTimeSlicing - Индикатор квантов времени0 или false (по умолчанию) | 1 или trueИндикатор квантирования времени, заданный как логическое значение 0 (false) или 1 (true). Чтобы указать, что используется формат передачи с разделением по времени, установите это значение в 1 (true).
Если для этого свойства задано значение 1 (true), можно установить NumInputStreams свойство имеет максимальное значение, равное 8.
Типы данных: logical
NumInputStreams - Количество входных потоков1 (по умолчанию) | целое число в диапазоне [1, 256]Число входных потоков, указанное как целое число в диапазоне [1, 256].
При установке HasTImeSlicing свойство для true, NumInputStreams можно задать максимальное значение свойства, равное 8.
Типы данных: 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
PLSDecimalCode - Информация о коде сигнализации PL132 (по умолчанию) | целое число в диапазоне [4, 249] | вектор целых чисел в диапазоне [4, 249]Информация кода сигнализации 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
CanonicalMODCODName - Название схемы канонической модуляции и кодовой скорости"QPSK 2/9" (по умолчанию) | символьный вектор | строковый скаляр | массив ячеек | строковый массивСхема канонической модуляции и имя кодовой скорости для передачи кадров 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 (для аппарата 2 VL-SNR). Это свойство применяется только для передач кадров VL-SNR.
Типы данных: char | string
DFL - Длина поля данных18,448 (по умолчанию) | целое число в диапазоне [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".
Чтобы включить это свойство, установите значение 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
PLScramblingIndex - Индекс скремблирующей последовательности PLИндекс последовательности скремблирования 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
RolloffFactor - Коэффициент скручивания фильтра передачи0.35 (по умолчанию) | 0.05 | 0.1 | 0.15 | 0.2 | 0.25Коэффициент скатывания фильтра передачи для формирования импульсов основной полосы частот, указанный как 0.35, 0.05, 0.1, 0.15, 0.2, или 0.25.
Типы данных: 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-S2X сигнал временной области из битов входной информации.txWaveform = s2xWaveGen(data)
data - Входные информационные битыВходные информационные биты, указанные в качестве одной из этих опций. Каждый элемент вектора столбца или массива ячеек может иметь тип данных double, int8, или logical.
Вектор столбца с двоичным значением - используйте эту опцию с потоком с одним входом.
Массив ячеек векторов столбцов с двоичным значением - используйте этот параметр для потоков с несколькими входами. Каждый элемент массива представляет соответствующий входной поток. Длина массива ячеек должна быть равна значению NumInputStreams собственность.
dataв одной из этих форм может вводиться либо один поток, либо несколько потоков.
Пакетированный поток - количество пакетов в каждом потоке должно быть кратным целому числу MinNumPackets собственность.
Для пакетированного потока 8-битовое поле синхронизации должно быть включено в начале каждого пакета. Суммарная длина пакета и его битов синхронизации должна быть равна соответствующему значению UPL собственность.
Непрерывный поток - количество битов для каждого потока должно быть целым кратным DFL собственность.
Примечание
При установке StreamFormat свойство для "TS", байт синхронизации фиксируется как 47 шестнадцатеричных.
Типы данных: double | int8 | logical | cell
txWaveform - Генерируемый сигнал временной области DVB-S2XГенерируемый сигнал DVB-S2X во временной области, возвращаемый в виде вектора столбца. Сигнал генерируется в виде комплексных синфазных квадратурных (IQ) выборок и может состоять из одного кадра физического уровня или нескольких кадров физического уровня.
При установке NumInputStreams Если значение свойства больше 1, поля данных, сгенерированные из различных входных потоков, объединяются с использованием метода циклического преобразования.
Типы данных: double
Поддержка комплексного номера: Да
Чтобы использовать функцию объекта, укажите объект System в качестве первого входного аргумента. Например, для освобождения системных ресурсов объекта System с именем obj, используйте следующий синтаксис:
release(obj)
dvbs2xWaveformGeneratorinfo | Информация о характеристиках объекта |
flushFilter | Фильтр заподлицо |
Генерация расширенного (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 System с pilot-aided 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 System и укажите его свойства.
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] Стандарт ETSI EN 302 307-1 V1.4.1 (2014-11). цифровое видеовещание (DVB); Структура кадров второго поколения, системы кодирования и модуляции каналов для вещания, интерактивные услуги, сбор новостей и другие широкополосные спутниковые приложения (DVB-S2).
[2] Стандарт ETSI EN 302 307-2 V1.1.1 (2015-11). цифровое видеовещание (DVB); структура кадров второго поколения, системы канального кодирования и модуляции для вещания, интерактивных услуг, сбора новостей и других широкополосных спутниковых приложений; Часть 2: DVB-S2 Расширения (DVB-S2X).
Примечания и ограничения по использованию:
Для всех свойств, поддерживающих ввод строки и массива ячеек, генерация кода поддерживается только при вводе массива ячеек.
См. Системные объекты в создании кода MATLAB (кодер MATLAB).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.