dvbrcs2BitRecover

Восстановите биты для формы волны DVB-RCS2

    Описание

    пример

    [bits,framePDUErr] = dvbrcs2BitRecover(rxdata,cfgrx,nvar) восстанавливает модуль данных о протоколе (PDU) системы координат, bits, и состояние контроля циклическим избыточным кодом (CRC) PDU системы координат, framePDUErr. Введите rxdata полученные комплексные символы синфазной квадратуры (IQ) в форме пакетов Второго поколения Цифрового телевидения, Возвращают Канал по Спутнику (DVB-RCS2) передача. cfgrx объект настройки восстановления, dvbrcs2RecoveryConfig. nvar шумовая оценка отклонения что функциональное использование, чтобы вычислить мягкие биты.

    Функция поддерживает демодуляцию и декодирование турбокодов с линейной модуляцией (TC-LM), и спектр распространения и турбокоды с линейной модуляцией (SS-TC-LM) форматы передачи, со всеми тремя типами PDU (вход в систему, управление и трафик), для ссылочных и пользовательских форм волны.

    Примеры

    свернуть все

    Восстановите PDU системы координат для формы волны ссылки DVB-RCS2.

    Установите свойства Системы генератора формы волны DVB-RCS2 object™.

    wg = dvbrcs2WaveformGenerator;
    wg.TransmissionFormat = "SS-TC-LM";
    wg.WaveformID = 7;
    wg.SamplesPerSymbol = 2;

    Сгенерируйте PDU системы координат.

    framePDU = randi([0 1],wg.FramePDULength,1);

    Сгенерируйте пакетные символы DVB-RCS2-based.

    txWaveform = wg(framePDU);

    Добавьте аддитивный белый Гауссов шум (AWGN) в сгенерированную форму волны.

    sps = wg.SamplesPerSymbol; 
    EsNodB = 1;
    snrdB = EsNodB - 10*log10(sps);
    rxIn = awgn(txWaveform,snrdB,"measured");

    Создайте и затем сконфигурируйте объект настройки восстановления DVB-RCS2.

    cfg = dvbrcs2RecoveryConfig;
    cfg.TransmissionFormat = wg.TransmissionFormat;
    cfg.WaveformID = wg.WaveformID;

    Создайте повышенный фильтр приемника косинуса.

    rxFilter = comm.RaisedCosineReceiveFilter( ...
                     'RolloffFactor',0.2, ...
                     'InputSamplesPerSymbol',sps, ...
                     'DecimationFactor',sps);
    span = rxFilter.FilterSpanInSymbols;

    Примените согласованную фильтрацию и удалите задержку фильтра.

    filtOut = rxFilter([rxIn; ...
                   complex(zeros(span/2*sps,1))]);
    rxSymb = filtOut(span+1:end);

    Восстановите пользовательские пакеты. Отобразите состояние контроля циклическим избыточным кодом (CRC) PDU системы координат и количества битовых ошибок.

    [rxOut,pduErr] = dvbrcs2BitRecover(rxSymb,cfg,10^(-EsNodB/10));
    fprintf("Erroneous frame PDU = %d\n", pduErr)
    Erroneous frame PDU = 0
    
    fprintf("Number of bit errors = %d\n", sum(framePDU~=rxOut))
    Number of bit errors = 0
    

    Восстановите PDU системы координат для DVB-RCS2 пользовательская форма волны.

    Установите свойства Системы генератора формы волны DVB-RCS2 object™.

    wg = dvbrcs2WaveformGenerator;
    wg.IsCustomWaveform = true;
    wg.PayloadLengthInBytes = 115;
    wg.MappingScheme = "8PSK";
    wg.CodeRate = "2/3";
    wg.PermutationParameters = [29 6 5 0 0];
    wg.UniqueWord = "3ACF08B13076";

    Получите характеристическую информацию о генераторе формы волны DVB-RCS2.

    info(wg)
    ans = struct with fields:
                  BurstLength: 476
         PayloadLengthInBytes: 115
                MappingScheme: "8PSK"
                     CodeRate: "2/3"
               PreambleLength: 8
              PostambleLength: 8
                  PilotPeriod: 0
             PilotBlockLength: 1
        PermutationParameters: [29 6 5 0 0]
                   UniqueWord: "3ACF08B13076"
                     PilotSum: 0
    
    

    Сгенерируйте PDU системы координат.

    framePDU = randi([0 1],wg.FramePDULength,1);

    Сгенерируйте пакетные символы DVB-RCS2-based.

    txWaveform = wg(framePDU);

    Добавьте аддитивный белый Гауссов шум (AWGN) в сгенерированную форму волны.

    sps = wg.SamplesPerSymbol; 
    EsNodB = 9;
    snrdB = EsNodB - 10*log10(sps);
    rxIn = awgn(txWaveform,snrdB,'measured');

    Сконфигурируйте объект настройки восстановления DVB-RCS2.

    cfg = dvbrcs2RecoveryConfig;
    cfg.IsCustomWaveform = true;
    cfg.MappingScheme = wg.MappingScheme;
    cfg.CodeRate = wg.CodeRate;
    cfg.PermutationParameters = wg.PermutationParameters;

    Получите разорванные параметры из метода информации о генераторе формы волны.

    burstParams = info(wg);
    cfg.BurstLength = burstParams.BurstLength;

    Создайте повышенный фильтр приемника косинуса.

    rxFilter = comm.RaisedCosineReceiveFilter( ...
        'RolloffFactor',0.2, ...
        'InputSamplesPerSymbol',sps,...
        'DecimationFactor',sps);
    span = rxFilter.FilterSpanInSymbols;

    Примените согласованную фильтрацию и удалите задержку фильтра.

    filtOut = rxFilter([rxIn; ...
        complex(zeros(span/2*sps,1))]);
    rxSymb = filtOut(span+1:end);

    Восстановите пользовательские пакеты. Отобразите состояние контроля циклическим избыточным кодом (CRC) PDU системы координат и количества битовых ошибок.

    [rxOut,pduErr] = dvbrcs2BitRecover(rxSymb,cfg,10^(-EsNodB/10));
    fprintf('Erroneous frame PDU = %d\n', pduErr)
    Erroneous frame PDU = 0
    
    fprintf('Number of bit errors = %d\n', sum(framePDU~=rxOut))
    Number of bit errors = 0
    

    Восстановите PDU системы координат для формы волны DVB-RCS2 с заданными пакетными параметрами конфигурации.

    Установите пакетные параметры настройки.

    Rsym = 1e6;                   % Symbol rate (1 Msps)
    tSlot = 2.11e-3;              % Burst time slot duration (2.11 ms)
    preBurstGuardOffset = 20e-6;  % 20 microsecond
    waveId = 39;                  % Waveform ID

    Установите свойства Системы генератора формы волны DVB-RCS2 object™.

    wg = dvbrcs2WaveformGenerator;
    wg.WaveformID = waveId;        % QPSK 6/7

    Вычислите пакетные параметры в терминах символов.

    wg.PreBurstGuardLength = ceil(preBurstGuardOffset*Rsym);
    params = info(wg);
    burstPayLoadDuration = params.BurstLength/Rsym;
    burstPostGuard = ceil((tSlot-preBurstGuardOffset-burstPayLoadDuration)*Rsym);
    wg.PostBurstGuardLength = burstPostGuard;

    Сгенерируйте PDU системы координат.

    framePDU = randi([0 1],wg.FramePDULength,1);

    Сгенерируйте пакетные символы DVB-RCS2-based

    txWaveform = wg(framePDU);

    Добавьте аддитивный белый Гауссов шум (AWGN) в сгенерированную форму волны.

    sps = wg.SamplesPerSymbol;
    EsNodB = 7;
    snrdB = EsNodB - 10*log10(sps);
    rxIn = awgn(txWaveform,snrdB,'measured');

    Сконфигурируйте объект настройки восстановления DVB-RCS2.

    cfg = dvbrcs2RecoveryConfig;
    cfg.WaveformID = wg.WaveformID;

    Инициализируйте повышенный фильтр приемника косинуса.

    rxFilter = comm.RaisedCosineReceiveFilter( ...
        'RolloffFactor', 0.20, ...
        'InputSamplesPerSymbol', sps, 'DecimationFactor', sps);
    span = rxFilter.FilterSpanInSymbols;

    Примените согласованную фильтрацию и удалите задержку фильтра

    rxBurst = rxIn(wg.PreBurstGuardLength*sps+1:end-wg.PostBurstGuardLength*sps);
    filtOut = rxFilter([rxBurst; ...
        complex(zeros(span/2*sps,1))]);
    rxSymb = filtOut(span+1:end);

    Восстановите пользовательские пакеты. Отобразите состояние контроля циклическим избыточным кодом (CRC) PDU системы координат и количества битовых ошибок.

    [rxOut, pduErr] = dvbrcs2BitRecover(rxSymb, cfg, 10^(-EsNodB/10));
    fprintf('Erroneous frame PDU = %d\n', pduErr)
    Erroneous frame PDU = 0
    
    fprintf('Number of bit errors = %d\n', sum(rxOut~=framePDU))
    Number of bit errors = 0
    

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

    свернуть все

    Полученные комплексные символы IQ в виде вектор-столбца. rxdata должен содержать только один пакет.

    Тип формы волны определяет длину rxdata.

    • Ссылочная форма волны — Для установленных значений свойств TransmissionFormat и WaveformID dvbrcs2WaveformGenerator Система object™, длина входа rxdata должно быть равно пакетному параметру длины, заданному в ETSI EN 301 545-2 V1.2.1 (2014-11) Таблица a-1 и a-2 [1].

    • Пользовательская форма волны — длина должна быть равна значению свойства BurstLength dvbrcs2RecoveryConfig объект.

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

    Настройка восстановления DVB-RCS2 возражает в виде dvbrcs2RecoveryConfig объект. Свойства этого объекта задают параметры передачи принятой формы волны и параметры декодирования для восстановления данных.

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

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

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

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

    свернуть все

    Восстановленные биты данных PDU системы координат, возвращенные как вектор-столбец.

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

    Структурируйте состояние PDU CRC, возвращенное как числовой или логический 1 TRUE) или 0 ложь). Значение false указывает, что система координат ошибочна.

    Типы данных: логический

    Ссылки

    [1] EN 301 545-2 V1.2.1 стандарта ETSI (2014-11). Цифровое телевидение (DVB); второе поколение интерактивные спутниковые системы (DVB-RCS2); часть 2: нижние уровни для спутникового стандарта.

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

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

    Смотрите также

    |

    Введенный в R2021b