Сгенерируйте форму волны 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 — Индикатор квантования времени или false (значение по умолчанию) | 1 или trueИндикатор квантования времени в виде логического значения 0 ложь) или 1 TRUE). Чтобы указать, что формат передачи квантования времени используется, устанавливает это значение к 1 TRUE).
Если вы устанавливаете это свойство на 1 TRUE), можно установить NumInputStreams свойство к максимальному значению 8.
Типы данных: логический
NumInputStreams — Количество входных потоков (значение по умолчанию) | целое число в области значений [1, 256]Количество входных потоков в виде целого числа в области значений [1, 256].
Когда вы устанавливаете HasTImeSlicing свойство к true, NumInputStreams свойство может быть задано к максимальному значению 8.
Типы данных: double
UPL — Пользовательская пакетная длина (значение по умолчанию) | неотрицательное целое число | вектор из неотрицательных целых чисел Длина пользовательского пакета (UP) в битах в виде одной из этих опций.
Неотрицательное целое число — Использование эта опция с одно входом и мультивходными потоками. Если вы устанавливаете NumInputStreams свойство к значению, больше, чем 1, UP в каждом потоке должен быть равен целочисленному значению UPL свойство.
Вектор из неотрицательных целых чисел — Использование эта опция с мультивходными потоками только. Если вы устанавливаете NumInputStreams свойство к значению, больше, чем 1, UP в каждом потоке должен быть размером соответствующего элемента в этом векторе. Длина этого вектора должна быть равна NumInputStreams.
Примечание
Когда вы задаете UPL как мультивходной поток, все ВЗЛЕТЫ должны быть или packetized или в непрерывном потоке. Смешивание потоковых типов не поддерживается.
Максимальное значение UPL когда целочисленный скаляр или целочисленный элемент в векторе-строке должны быть меньше чем или равны соответствующему DFL значение свойства.
Для типового непрерывного потока, набор UPL к 0.
Чтобы включить это свойство, установите StreamFormat свойство к "GS". Если вы устанавливаете StreamFormat свойство к "TS", UPL фиксируется к 1 504 битам.
Типы данных: double
PLSDecimalCode — PL сигнальная информация о коде (значение по умолчанию) | целое число в области значений [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 (поскольку VL-SNR установил 2). Это свойство запрашивает только передачи системы координат VL-SNR.
Типы данных: char | string
DFL — Длина поля данных (значение по умолчанию) | целое число в области значений [1, (K BCH−80)] | вектор из целых чисел в области значений [1, (K BCH−80)]Длина поля данных (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.05| 0.1 | 0.15 | 0.2 | 0.25 Передайте фактор спада фильтра для формирования видеоимпульса в виде 0.35, 0.05, 0.1, 0.15, 0.2, или 0.25.
Типы данных: double
FilterSpanInSymbols — Отфильтруйте промежуток в символах (значение по умолчанию) | положительное целое числоОтфильтруйте промежуток в символах в виде положительного целого числа.
Идеальная импульсная характеристика фильтра приподнятого косинуса является усеченной к длине, которая охватывает количество символов, заданных в этом свойстве.
Типы данных: double
SamplesPerSymbol — Количество отсчетов на символ (значение по умолчанию) | положительное целое числоКоличество отсчетов на символ в виде положительного целого числа.
Типы данных: double
ISSYI — Введите потоковый индикатор синхронизации или false (значение по умолчанию) | 1 или trueВведите потоковый индикатор (ISSY) синхронизации в виде логического значения 0 ложь) или 1 TRUE). Указать, которые вводят потоковую синхронизацию, используется, установите это значение к 1 TRUE).
Чтобы включить это свойство, установите NumInputStreams свойство к значению, больше, чем 1 и набор UPL свойство к ненулевому значению.
Типы данных: логический
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 — Введите информационные битыВведите информационные биты в виде одной из этих опций. Каждый элемент вектор-столбца или массива ячеек может иметь тип данных doubleint8, или logical.
Вектор-столбец с бинарным знаком – Использование эта опция с потоком одно входа.
Массив ячеек вектор-столбцов с бинарным знаком – Использование эта опция с мультивходными потоками. Каждый элемент массива представляет соответствующий входной поток. Длина массива ячеек должна быть равна значению NumInputStreams свойство.
data, или единый поток или мультипоток, может быть введен в одной из следующих форм.
Поток Packetized – Количество пакетов в каждом потоке должно быть целочисленным кратным MinNumPackets свойство.
Для packetized потока 8-битное синхронизирующее поле должно быть включено в начале каждого пакета. Объединенная длина пакета и его синхронизирующие биты должны быть равны соответствующему значению UPL свойство.
Непрерывный Поток – количество битов для каждого потока должно быть целочисленным кратным DFL свойство.
Примечание
Когда вы устанавливаете StreamFormat свойство к "TS", синхронизирующий байт фиксируется как 47 шестнадцатеричных чисел.
Типы данных: double | int8 | logical | cell
txWaveform — Сгенерированный временной интервал форма волны DVB-S2XСгенерированный временной интервал форма волны DVB-S2X, возвращенная как вектор-столбец. Форма волны сгенерирована в форме комплексных выборок синфазной квадратуры (IQ) и может состоять из одной системы координат физического уровня или нескольких систем координат физического уровня.
Когда вы устанавливаете NumInputStreams свойство к значению, больше, чем 1, поля данных, сгенерированные от различных входных потоков, объединено с помощью циклического метода.
Типы данных: double
Поддержка комплексного числа: Да
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj, используйте этот синтаксис:
release(obj)
dvbs2xWaveformGeneratorinfo | Характеристическая информация об объекте |
flushFilter | Сбросьте фильтр передачи |
step | Запустите алгоритм Системного объекта |
release | Высвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики |
clone | Создайте объект дублированной системы |
isLocked | Определите, используется ли Системный объект |
reset | Сбросьте внутренние состояния Системного объекта |
Сгенерируйте Второе поколение Спутника Цифрового телевидения, расширенное (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 с помогшим пилотами 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 и задайте его свойства.
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] EN 302 307-1 V1.4.1 Стандарта ETSI (2014-11). Цифровое телевидение (DVB); Структура Структурирования Второго поколения, Кодирование Канала и Системы Модуляции для Широковещательной передачи, Interactive Services, Сбора Новостей и других Широкополосных Спутниковых Приложений (DVB-S2).
[2] EN 302 307-2 V1.1.1 Стандарта ETSI (2015-11). Цифровое телевидение (DVB); Структура Структурирования Второго поколения, Кодирование Канала и Системы Модуляции для Широковещательной передачи, Interactive Services, Сбора Новостей и других Широкополосных Спутниковых Приложений; Часть 2: Расширения DVB-S2 (DVB-S2X).
Указания и ограничения по применению:
Для всех свойств, которые поддерживают вход массива строк и массива ячеек, генерация кода только поддерживается с входом массива ячеек.
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.