Сгенерируйте 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)
dvbs2xWaveformGenerator
info | Характеристическая информация об объекте |
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.