Сгенерируйте форму волны 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, 256]Количество входных потоков в виде целого числа в области значений [1, 256].
Типы данных: 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
FECFrame
— Формат системы координат FEC"normal"
(значение по умолчанию) | "short"
Формат системы координат прямого исправления ошибок (FEC) в виде одной из этих двух опций.
"normal"
— Устанавливает длину кодовой комбинации низкой проверки четности плотности (LDPC) до 64 800 битов
"short"
— Устанавливает длину кодовой комбинации LDPC до 16 200 битов
Настраиваемый: да
Типы данных: char |
string
MODCOD
— Схема Modulation и уровень FEC
(значение по умолчанию) | целое число в области значений [1, 28] | вектор из целых чисел в области значений [1, 28]Схема Modulation и уровень 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
— Длина поля данных
(значение по умолчанию) | целое число в области значений [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"
.
Чтобы включить это свойство, установите MODCOD
свойство к значению в области значений [18, 28], который указывает только 16APSK и 32APSK схемы модуляции.
Типы данных: char |
string
HasPilots
— Экспериментальная индикация блока
или false
(значение по умолчанию) | 1
или true
| вектор из logical
значенияЭкспериментальная индикация блока в виде логического значения 0
ложь
), 1
TRUE
), или вектор из logical
значения. Установите это значение к 1
TRUE
) чтобы указать на пилотов вставляются в систему координат физического уровня.
Если вы устанавливаете NumInputStreams
свойство к значению, больше, чем 1, можно сконфигурировать пилотов для каждого потока путем определения этого свойства как вектора. Длина этого вектора должна быть равна NumInputStreams
.
Настраиваемый: да
Типы данных: логический
RolloffFactor
— Передайте фактор спада фильтра
(значение по умолчанию) | 0.25
| 0.2
Передайте фактор спада фильтра для формирования видеоимпульса в виде 0.35
, 0.25, или
0.2
.
Типы данных: 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-S2 от битов информации о входе.txWaveform
= s2waveGen(data
)
data
— Введите информационные битыВведите информационные биты в виде одной из этих опций. Каждый элемент вектор-столбца или массива ячеек может иметь тип данных double
int8
, или logical
.
Вектор-столбец с бинарным знаком — Использование эта опция с потоками одно входа.
Массив ячеек вектор-столбцов с бинарным знаком — Использование эта опция с мультивходными потоками. Каждый элемент массива представляет соответствующий входной поток. Длина массива ячеек должна быть равна значению NumInputStreams
свойство.
Введите data
, или как одно вход или как мультивходной поток, должен быть введен в одной из следующих форм.
Поток Packetized — Количество пакетов в каждом потоке должно быть целочисленным кратным MinNumPackets
свойство.
Для packetized потока 8-битное синхронизирующее поле должно быть включено в начале каждого пакета. Объединенная длина пакета и его синхронизирующие биты должны быть равны соответствующему значению UPL
свойство.
Непрерывный поток — количество битов для каждого потока должно быть целочисленным кратным DFL
свойство.
Примечание
Когда вы устанавливаете StreamFormat
свойство к "TS"
, синхронизирующий байт фиксируется как 47 шестнадцатеричных чисел.
Типы данных: double |
int8
| logical
| cell
txWaveform
— Сгенерированный временной интервал форма волны DVB-S2Сгенерированный временной интервал форма волны DVB-S2, возвращенная как вектор-столбец. Форма волны сгенерирована в форме комплексных выборок синфазной квадратуры (IQ) и может состоять из одной системы координат физического уровня или нескольких систем координат физического уровня.
Когда вы устанавливаете NumInputStreams
свойство к значению, больше, чем 1, поля данных, сгенерированные от различных входных потоков, объединено с помощью циклического метода.
Типы данных: double
Поддержка комплексного числа: Да
Чтобы использовать объектную функцию, задайте Системный объект как первый входной параметр. Например, чтобы выпустить системные ресурсы Системного объекта под названием obj
, используйте этот синтаксис:
release(obj)
dvbs2WaveformGenerator
info | Характеристическая информация об объекте |
flushFilter | Сбросьте фильтр передачи |
step | Запустите алгоритм Системного объекта |
release | Высвободите средства и позвольте изменения в значениях свойств Системного объекта и введите характеристики |
clone | Создайте объект дублированной системы |
isLocked | Определите, используется ли Системный объект |
reset | Сбросьте внутренние состояния Системного объекта |
Сгенерируйте Второе поколение Спутника Цифрового телевидения (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. Задайте схему модуляции и уровень 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.ConstellationDiagram Системного объекта.
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 с переменной настройкой кодирования и модуляции для мультивхода 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] EN 302 307-1 V1.4.1 Стандарта ETSI (2014-11). Цифровое телевидение (DVB); Структура Структурирования Второго поколения, Кодирование Канала и Системы Модуляции для Широковещательной передачи, Interactive Services, Сбора Новостей и других Широкополосных Спутниковых Приложений (DVB-S2).
Указания и ограничения по применению:
Для всех свойств, которые поддерживают вход массива строк и массива ячеек, генерация кода только поддерживается с входом массива ячеек.
Смотрите системные объекты в Генерации кода MATLAB (MATLAB Coder).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.