Восстановление битов для DVB-S2 кадров PL
[ восстанавливает пользовательские пакеты (UP) или непрерывный поток данных, BITS,NUMFRAMESLOST] = dvbs2BitRecover(RXFRAME,NVAR)BITSи количество потерянных кадров основной полосы частот, NUMFRAMESLOST. Вход RXFRAME - принятые комплексные синфазные квадратурные (IQ) символы в виде кадров физического уровня (PL) передачи цифрового видеовещательного спутника второго поколения (DVB-S2). Вход NVAR - оценка дисперсии шума, используемая для вычисления мягких битов.
[ также возвращает состояние проверки циклическим избыточным кодом UP (CRC).BITS,NUMFRAMESLOST,PKTCRCSTATUS] = dvbs2BitRecover(RXFRAME,NVAR)
Восстановление пакетов пользователя (UP) для кадров нескольких физических уровней (PL) в одном транспортном потоке Передача спутникового цифрового видеовещания второго поколения (DVB-S2).
В этом примере используются 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 на поток. Создайте объект DVB-S2 System.
nFrames = 2; s2WaveGen = dvbs2WaveformGenerator;
Создайте битовый вектор информационных битов, data, конкатенированных TS UP.
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*nFrames; txRawPkts = randi([0 1],pktLen,numPkts); txPkts = [repmat(syncBits,1,numPkts); txRawPkts]; data = txPkts(:);
Формирование DVB-S2 формы сигнала во временной области с использованием входных информационных битов. Промойте фильтр передачи, чтобы обработать задержку фильтра и восстановить полный последний кадр.
txWaveform = [s2WaveGen(data); flushFilter(s2WaveGen)];
Добавление аддитивного белого гауссова шума (AWGN) к генерируемому сигналу.
sps = s2WaveGen.SamplesPerSymbol;
EsNodB = 1;
snrdB = EsNodB - 10*log10(sps);
rxIn = awgn(txWaveform,snrdB,'measured');Создайте фильтр приемника с увеличенным косинусом.
rxFilter = comm.RaisedCosineReceiveFilter( ... 'RolloffFactor',s2WaveGen.RolloffFactor, ... 'InputSamplesPerSymbol',sps,... 'DecimationFactor',sps); s = coeffs(rxFilter); rxFilter.Gain = sum(s.Numerator);
Примените согласованную фильтрацию и удалите задержку фильтра.
filtOut = rxFilter(rxIn); rxFrame = filtOut(rxFilter.FilterSpanInSymbols+1:end);
Восстановление UP. Отображение количества потерянных кадров и состояния проверки циклическим избыточным кодом UP (CRC).
[bits,FramesLost,pktCRCStat] = dvbs2BitRecover(rxFrame,10^(-EsNodB/10)); disp(FramesLost)
0
disp(pktCRCStat)
{20×1 logical}
Восстановление пользовательских битов в передаче цифрового широковещательного спутникового вещания второго поколения (DVB-S2) с множеством входных обобщенных потоков (GS) с переменной модуляцией и схемой кодирования.
В этом примере используются 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) на поток.
nFrames = 1;
Создайте объект DVB-S2 System с переменным кодированием и конфигурацией модуляции для многовходовой GS. Укажите схему модуляции и скорость прямого исправления ошибок (FEC) (MODCOD) и длину поля данных (DFL).
s2WaveGen = dvbs2WaveformGenerator; s2WaveGen.StreamFormat = "GS"; s2WaveGen.NumInputStreams = 3; s2WaveGen.MODCOD = [10 15 6]; % QPSK 8/9, 8PSK 5/6, and QPSK 2/3 s2WaveGen.DFL = [44500 51387 42960];
Создайте битовый вектор входных информационных битов для каждого входного потока.
data = cell(s2WaveGen.NumInputStreams,1); for i = 1:s2WaveGen.NumInputStreams data{i} = randi([0 1],s2WaveGen.DFL(i)*nFrames,1); end
Формирование DVB-S2 формы сигнала во временной области с входными информационными битами. Промойте фильтр передачи, чтобы обработать задержку фильтра и восстановить полный кадр.
txWaveform = [s2WaveGen(data); flushFilter(s2WaveGen)];
Добавление аддитивного белого гауссова шума (AWGN) к генерируемому сигналу. Укажите выборки на символ для фильтра основной полосы частот.
sps = s2WaveGen.SamplesPerSymbol;
EsNodB = 10;
snrdB = EsNodB - 10*log10(sps);
rxIn = awgn(txWaveform,snrdB,'measured');Создайте фильтр приемника с увеличенным косинусом.
rxFilter = comm.RaisedCosineReceiveFilter( ... 'RolloffFactor',s2WaveGen.RolloffFactor, ... 'InputSamplesPerSymbol',sps,... 'DecimationFactor',sps); s = coeffs(rxFilter); rxFilter.Gain = sum(s.Numerator);
Примените согласованную фильтрацию и удалите задержку фильтра.
filtOut = rxFilter(rxIn); rxFrame = filtOut(rxFilter.FilterSpanInSymbols+1:end);
Восстановление пользовательских битов. Разрешить раннее завершение декодера кодов четности низкой плотности (LDPC).
[bits,FramesLost] = dvbs2BitRecover(rxFrame,10^(-EsNodB/10),1);
Отображение количества потерянных кадров и количества битовых ошибок в каждом потоке.
fprintf('Number of frames lost = %d\n',FramesLost)Number of frames lost = 0
for i = 1:s2WaveGen.NumInputStreams fprintf('Number of bit errors in stream %d = %d\n',i, ... sum(data{i}~=bits{i})) end
Number of bit errors in stream 1 = 0 Number of bit errors in stream 2 = 0 Number of bit errors in stream 3 = 0
Восстановление пакетов пользователя (UP) в передаче с множеством входных транспортных потоков (TS) цифрового широковещательного спутникового вещания второго поколения (DVB-S2) с постоянным кодированием и модуляцией.
В этом примере используются 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 с постоянным кодированием и конфигурацией модуляции для многовходовой TS. Укажите формат кадра с коротким прямым исправлением ошибок (FEC) и включите синхронизацию входного потока (ISSY).
s2WaveGen = dvbs2WaveformGenerator; s2WaveGen.NumInputStreams = 3; s2WaveGen.FECFrame = "short"; s2WaveGen.MODCOD = 10; % QPSK 8/9 s2WaveGen.DFL = 13920; s2WaveGen.ISSYI = true;
Создайте битовый вектор информационных битов конкатенированных TS UP.
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,s2WaveGen.NumInputStreams); for i = 1:s2WaveGen.NumInputStreams numPkts = s2WaveGen.MinNumPackets(i)*numFrames; txRawPkts = randi([0 1],pktLen,numPkts); ISSY = randi([0 1],16,numPkts); % ISCRFormat is 'short' by default % 'short' implies the default length of ISSY as 2 bytes txPkts = [repmat(syncBits,1,numPkts); txRawPkts; ISSY]; % ISSY is appended at the end of UP data{i} = txPkts(:); end
Формирование DVB-S2 формы сигнала во временной области с использованием входных информационных битов. Промойте фильтр передачи, чтобы обработать задержку фильтра и восстановить полный кадр.
txWaveform = [s2WaveGen(data); flushFilter(s2WaveGen)];
Добавление аддитивного белого гауссова шума (AWGN) к генерируемому сигналу. Укажите выборки на символ для фильтра основной полосы частот.
sps = s2WaveGen.SamplesPerSymbol;
EsNodB = 12;
snrdB = EsNodB - 10*log10(sps);
rxIn = awgn (txWaveform,snrdB,'measured');Создайте фильтр приемника с увеличенным косинусом.
rxFilter = comm.RaisedCosineReceiveFilter( ... 'RolloffFactor',s2WaveGen.RolloffFactor, ... 'InputSamplesPerSymbol',sps,... 'DecimationFactor', sps); s = coeffs(rxFilter); rxFilter.Gain = sum(s.Numerator);
Примените согласованную фильтрацию и удалите задержку фильтра.
filtOut = rxFilter(rxIn); rxFrame = filtOut(rxFilter.FilterSpanInSymbols+1:end);
Восстановление UP. Отображение количества потерянных кадров и количества битовых ошибок в каждом потоке.
[bits,FramesLost,pktCRCStat] = dvbs2BitRecover(rxFrame,10^(-EsNodB/10));
fprintf('Number of frames lost = %d\n',FramesLost)Number of frames lost = 0
for i = 1:s2WaveGen.NumInputStreams fprintf('Number of bit errors in stream %d = %d\n',i, ... numel(pktCRCStat{i})-sum(pktCRCStat{i})) end
Number of bit errors in stream 1 = 0 Number of bit errors in stream 2 = 0 Number of bit errors in stream 3 = 0
RXFRAME - Принятые символы IQ от кадров PL DVB-S2 передачиПринятые IQ символы из кадров PL DVB-S2 передачи с одним входом или с множеством входов, заданные как вектор столбца. RXFRAME может содержать один или несколько кадров PL.
Длина RXFRAME зависит от значения свойств FECFrame, MODCOD, и HasPilots из dvbs2WaveformGenerator object™ системы.
Типы данных: double
Поддержка комплексного номера: Да
NVAR - Оценка дисперсии шумаОценка дисперсии шума, которую функция добавляет к входным IQ символам, заданным как неотрицательный скаляр. NVAR используется в качестве коэффициента масштабирования для вычисления мягких битов из IQ символов.
При указании NVAR как 0функция использует значение 1e-5, которое соответствует отношению сигнал/шум (SNR) 50 дБ.
Типы данных: double
EARLYTERM - Флаг для досрочного завершения работы декодера LDPC0 или false (по умолчанию) | 1 или trueФлаг для досрочного завершения декодера LDPC при выполнении всех проверок четности, указанный как установленный логический 1 (true) или 0 (false). Если установлено значение 1 (true), декодер LDPC завершается, когда выполняются все проверки четности.
При установке этого значения в значение 0 (false), максимальный предел итерации декодирования равен 50.
Типы данных: logical
BITS - Восстановленные биты данныхВосстановленные биты данных, возвращенные в виде массива ячеек векторов столбцов. Каждый элемент массива ячеек имеет тип данных int8. Эти выходные данные могут быть либо UP, либо универсальным потоком данных, в зависимости от StreamFormat имущества dvbs2WaveformGenerator Системный объект.
Для передачи потока с множеством входов каждый элемент матрицы ячеек соответствует индивидуальному входному потоку.
Типы данных: cell
NUMFRAMESLOST - Количество потерянных кадров основной полосы частотКоличество потерянных кадров основной полосы, возвращаемых как неотрицательное целое число. Если CRC заголовка основной полосы завершается неуспешно, кадр считается потерянным.
Типы данных: double
PKTCRCSTATUS - Состояние CRC UPСостояние UP CRC, возвращаемое в виде массива ячеек векторов столбцов. Каждый элемент массива ячеек имеет тип данных logical. Для передачи потока с множеством входов каждый элемент матрицы ячеек соответствует индивидуальному входному потоку.
PKTCRCSTATUS применяется только для входных потоков, где значение UPL имущество dvbs2WaveformGenerator Системный объект не равен нулю.
Типы данных: cell
[1] Стандарт ETSI EN 302 307-1 V1.4.1 (2014-11). цифровое видеовещание (DVB); Структура кадров второго поколения, системы кодирования и модуляции каналов для вещания, интерактивные услуги, сбор новостей и другие широкополосные спутниковые приложения (DVB-S2).
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.