Сгенерируйте DVB-S2X сигнал
The dvbs2xWaveformGenerator Система object™ генерирует сигнал Digital Video Broadcasting Satellite Second Generation (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) в битах, заданная в качестве одного из следующих опций.
Неотрицательное целое число - Используйте эту опцию с потоками с одним и мультивходами. Если вы задаете 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.
Все нечетные целочисленные значения рассматриваются как включающие пилот-сигналы в системах координат.
Примечание
Немного 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-ОСШ 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-ОСШ 1
"BPSK 1/5", "BPSK 4/15", и "BPSK 1/3" - Применимо для набора VL-ОСШ 2
Настраиваемый: Да
Чтобы включить это свойство, установите PLSDecimalCode свойство любому из 129 (для набора 1 VL-ОСШ) или 131 (для набора VL-ОСШ 2). Это свойство применяется только для передач систем координат VL-SNR.
Типы данных: char | string
DFL - Длина поля данных18,448 (по умолчанию) | целое число в диапазоне [1, (K BCH − 80)] | вектор из целых чисел в диапазоне [1, (K BCHДлина поля данных (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
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 hex.
Типы данных: double | int8 | logical | cell
txWaveform - Сгенерированный сигнал DVB-S2X временной областиСгенерирован сигнал DVB-S2X временной области, возвращен как вектор-столбец. Форма волны генерируется в форме сложных синфазных квадратурных (IQ) выборок и может состоять из одной системы координат физического слоя или нескольких систем координат физического слоя.
Когда вы устанавливаете NumInputStreams свойство для значения, большего 1, поля данных, сгенерированные из различных входных потоков, объединяются с помощью метода round-robin.
Типы данных: double
Поддержка комплексного числа: Да
Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:
release(obj)
dvbs2xWaveformGeneratorinfo | Характеристическая информация об объекте |
flushFilter | Фильтр промывочной передачи |
Сгенерируйте сигнал Digital Video Broadcasting Satellite Генерации расширенной (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 с управляемым 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);
Сгенерируйте сигнал Digital Video Broadcasting Satellite Second Generation (DVB-S2X) временной области для типового потока с одним входом (GS) с несколькими системами координат физического слоя (PL) на поток.
Форма волны DVB-S2X, сгенерированная в этом примере, состоит из очень низкого отношения сигнал/шум (VL-ОСШ) системы координат набора 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;
Создайте Digital Video Broadcasting Satellite Second Генерации extended (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 Coder).
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.