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