Восстановите биты для систем координат DVB-S2 PL
[ восстанавливает пользовательские пакеты (ВЗЛЕТЫ) или поток текущих данных, BITS,NUMFRAMESLOST] = dvbs2BitRecover(RXFRAME,NVAR)BITS, и количество потерянных основополосных систем координат, NUMFRAMESLOST. Введите RXFRAME полученные комплексные символы синфазной квадратуры (IQ) в форме систем координат физического уровня (PL) Второго поколения Спутника Цифрового телевидения (DVB-S2) передача. Введите NVAR шумовая оценка отклонения, используемая, чтобы вычислить мягкие биты.
[ также возвращает состояние контроля циклическим избыточным кодом (CRC) UP.BITS,NUMFRAMESLOST,PKTCRCSTATUS] = dvbs2BitRecover(RXFRAME,NVAR)
Восстановите пользовательские пакеты (ВЗЛЕТЫ) для нескольких систем координат физического уровня (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.
nFrames = 2; s2WaveGen = dvbs2WaveformGenerator;
Создайте битовый вектор информационных битов, 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*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);
Восстановите ВЗЛЕТЫ. Отобразите количество потерянных систем координат и состояние контроля циклическим избыточным кодом (CRC) UP.
[bits,FramesLost,pktCRCStat] = dvbs2BitRecover(rxFrame,10^(-EsNodB/10)); disp(FramesLost)
0
disp(pktCRCStat)
{20×1 logical}
Восстановите пользовательские биты в мультивходном Втором поколении Спутника Цифрового телевидения типового потока (GS) (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) на поток.
nFrames = 1;
Создайте Системный объект DVB-S2 с переменной настройкой кодирования и модуляции для мультивхода 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
Восстановите пользовательские пакеты (ВЗЛЕТЫ) в мультивходном Втором поколении Спутника Цифрового телевидения транспортного потока (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 с постоянной настройкой кодирования и модуляции для мультивхода TS. Задайте короткий формат системы координат прямого исправления ошибок (FEC) и включите входную потоковую синхронизацию (ISSY).
s2WaveGen = dvbs2WaveformGenerator; s2WaveGen.NumInputStreams = 3; s2WaveGen.FECFrame = "short"; s2WaveGen.MODCOD = 10; % QPSK 8/9 s2WaveGen.DFL = 13920; s2WaveGen.ISSYI = true;
Создайте немного вектора информационных битов конкатенированных ВЗЛЕТОВ 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,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);
Восстановите ВЗЛЕТЫ. Отобразите количество потерянных систем координат и количество битовых ошибок в каждом потоке.
[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 — Отметьте для раннего завершения декодера LDPC или false (значение по умолчанию) | 1 или trueОтметьте для раннего завершения декодера LDPC, когда всем проверкам четности удовлетворят в виде набора логический 1 TRUE) или 0 ложь). Когда установлено в 1 TRUE), декодер LDPC отключен, когда всем проверкам четности удовлетворяют.
Когда вы устанавливаете это значение к 0 ложь), максимальный предел итерации декодирования равняется 50.
Типы данных: логический
BITS — Восстановленные биты данныхВосстановленные биты данных, возвращенные как массив ячеек вектор-столбцов. Каждый элемент массива ячеек имеет тип данных int8. Этим выходом могут быть или ВЗЛЕТЫ или типовой поток данных, в зависимости от StreamFormat свойство dvbs2WaveformGenerator Системный объект.
Для мультивходной потоковой передачи каждый элемент массива ячеек соответствует отдельному входному потоку.
Типы данных: cell
NUMFRAMESLOST — Количество потерянных основополосных систем координатКоличество потерянных основополосных систем координат, возвращенных как неотрицательное целое число. Если основополосный CRC заголовка перестал работать, система координат рассматривается потерянной.
Типы данных: double
PKTCRCSTATUS — Состояние UP CRCСостояние UP CRC, возвращенное как массив ячеек вектор-столбцов. Каждый элемент массива ячеек имеет тип данных logical. Для мультивходной потоковой передачи каждый элемент массива ячеек соответствует отдельному входному потоку.
PKTCRCSTATUS запрашивает только входные потоки где значение UPL свойство dvbs2WaveformGenerator Системный объект является ненулевым.
Типы данных: cell
[1] EN 302 307-1 V1.4.1 Стандарта ETSI (2014-11). Цифровое телевидение (DVB); Структура Структурирования Второго поколения, Кодирование Канала и Системы Модуляции для Широковещательной передачи, Interactive Services, Сбора Новостей и других Широкополосных Спутниковых Приложений (DVB-S2).
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.