dvbs2BitRecover

Восстановите биты для DVB-S2 PL систем координат

    Описание

    пример

    [BITS,NUMFRAMESLOST] = dvbs2BitRecover(RXFRAME,NVAR) восстанавливает пользовательские пакеты (UP) или непрерывный поток данных, BITS, и количество потерянных кадров основной полосы систем координат, NUMFRAMESLOST. Входные RXFRAME - принятые комплексные синфазные квадратурные (IQ) символы в виде систем координат физического слоя (PL) передачи второй генерации цифрового видеовещания (DVB-S2). Входные NVAR - оценка отклонения шума, используемая для вычисления мягких бит.

    пример

    [BITS,NUMFRAMESLOST,PKTCRCSTATUS] = dvbs2BitRecover(RXFRAME,NVAR) также возвращает состояние проверки циклической избыточности UP (CRC).

    пример

    [BITS,NUMFRAMESLOST] = dvbs2BitRecover(RXFRAME,NVAR,EARLYTERM) использует критерий завершения декодирования с низкой плотностью проверки четности (LDPC), EARLYTERM, чтобы восстановить биты данных, BITS.

    Примеры

    свернуть все

    Восстановите пользовательские пакеты (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 UPs.

    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 Системного объекта с переменными строениями кодирования и модуляции для мультивхода 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
    

    Восстановление пользовательских пакетов (UPs) в передаче цифрового видеотрансляционного спутника второй генерации (DVB-S2) с мультивходами транспортного потока (TS) с постоянным кодированием и модуляцией.

    Этот пример использует 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 UPs.

    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
    

    Входные параметры

    свернуть все

    Получены символы IQ от PL- систем координат DVB-S2 передачи с одним входом или мультивходы, заданные как вектор-столбец. RXFRAME может содержать одну или несколько систем координат PL.

    Длина RXFRAME зависит от значения свойств FECFrame, MODCOD, и HasPilots от dvbs2WaveformGenerator Системные object™.

    Типы данных: double
    Поддержка комплексного числа: Да

    Шумовое отклонение оценивает, что функция складывается из входа символов IQ, заданных как неотрицательная скаляра. NVAR используется как масштабный коэффициент для вычисления мягких бит из символов IQ.

    Когда вы задаете NVAR как 0функция использует значение 1e-5, которое соответствует отношению сигнал/шум (ОСШ) 50 дБ.

    Типы данных: double

    Флаг для раннего завершения декодера LDPC, когда все проверки четности удовлетворены, заданный как набор логических 1 (true) или 0 (false). Когда установлено значение 1 (true), декодер LDPC завершается, когда все проверки четности удовлетворены.

    Когда вы задаете это значение 0 (false), максимальный предел итерации декодирования равен 50.

    Типы данных: logical

    Выходные аргументы

    свернуть все

    Восстановленные биты данных, возвращенные как массив ячеек векторов-столбцов. Каждый элемент массива ячеек имеет тип данных int8. Этот выход может быть либо UPs, либо общим потоком данных, в зависимости от StreamFormat свойство dvbs2WaveformGenerator Системный объект.

    Для передачи мультивхода потока каждый элемент массива ячеек соответствует индивидууму входному потоку.

    Типы данных: cell

    Количество потерянных систем координат основной полосы, возвращенных как неотрицательное целое число. Если CRC заголовка основной полосы не работает, система координат считается утерянным.

    Типы данных: double

    Статус UP CRC, возвращенный как массив ячеек векторов-столбцов. Каждый элемент массива ячеек имеет тип данных logical. Для передачи мультивхода потока каждый элемент массива ячеек соответствует индивидууму входному потоку.

    Зависимости

    PKTCRCSTATUS применяется только для потоков входа, где значение UPL свойство dvbs2WaveformGenerator Системный объект ненулевой.

    Типы данных: cell

    Ссылки

    [1] Стандарт ETSI EN 302 307-1 V1.4.1 (2014-11). Цифровое видеовещание (DVB); Структура кадрирования второй генерации, системы кодирования и модуляции канала для вещания, интерактивные услуги, сбор новостей и другие широкополосные спутниковые приложения (DVB-S2).

    Расширенные возможности

    Генерация кода C/C + +
    Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

    .

    См. также

    Введенный в R2021a
    Для просмотра документации необходимо авторизоваться на сайте