exponenta event banner

ccsdsRSDecode

CCSDS-жалобный декодер Рида-Соломона

    Описание

    пример

    [decoded,cnumerr,ccode] = ccsdsRSDecode(code,k) декодировать принятый сигнал в code используя (255, k) Декодер Рида-Соломона (RS) с генераторным полиномом, как определено Консультативным комитетом по системам космических данных (CCSDS) 131.0-B-3 раздел 4 [1]. k - количество символов в декодированном сообщении. Функция возвращает декодированное сообщение code, decoded, количество исправленных ошибок, cnumerrи исправленная версия code, ccode.

    Описание декодирования кода RS CCSDS см. в разделе Декодирование кода RS CCSDS.

    пример

    [decoded,cnumerr,ccode] = ccsdsRSDecode(code,k,i) определяет глубину перемежения, i. code состоит из i Кодовые слова RS длиной 255 байт.

    [decoded,cnumerr,ccode] = ccsdsRSDecode(code,k,i,s) определяет укороченную длину сообщения, s.

    Примеры

    свернуть все

    Создайте полноразмерное кодированное кодовое слово Рида-Соломона (RS), введите случайные ошибки и декодируйте результат с помощью RS-декодера Консультативного комитета по системам космических данных (CCSDS).

    Создание случайного сообщения длиной k.

    k = 223;
    msg = randi([0 255],k,1);

    Кодирование сообщения с помощью кодера RS CCSDS.

    code = ccsdsRSEncode(msg,k);

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

    err = randi([1 255],15,1);
    errLoc = randperm(255,15);
    errVec = zeros(255,1);
    errVec(errLoc) = err;

    Введите символы ошибок в кодированное сообщение.

    rxBytes = bitxor(code,errVec);

    Декодирование кодированных символов, введенных с ошибками, с использованием декодера RS CCSDS.

    [decoded,v,ccode] = ccsdsRSDecode(rxBytes, k);

    Отображение количества исправленных ошибок.

    disp(v)
        15
    

    Создайте полноразмерное кодированное кодовое слово Рида-Соломона (RS), введите пакет ошибок и декодируйте результат с помощью RS-декодера Консультативного комитета по системам космических данных (CCSDS).

    Укажите длину сообщения k и глубина перемежения, i.

    k = 239;
    i = 5;

    Создайте вектор столбца из битов случайного сообщения. Кодирование укороченного сообщения с помощью кодера RS CCSDS.

    msg = randi([0 255],k*i,1);
    code = ccsdsRSEncode(msg,k,i);

    Создайте 30 случайных символов ошибки.

    err = randi([1 255],30,1);
    errVec = zeros(255*i,1);

    Введите ошибки пакетов из местоположения 52 в 81.

    errVec(52:81) = err;
    rxBytes = bitxor(code,errVec);

    Декодирование кодированных символов, введенных с ошибками пакета, с использованием декодера RS CCSDS.

    [decoded,v,ccode] = ccsdsRSDecode(rxBytes,k,i);

    Отображение количества исправленных ошибок.

    disp(v)
        30
    

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

    свернуть все

    Кодированное сообщение, указанное как вектор столбца целых чисел в диапазоне [0, 255].

    Элементы и размер вектора столбца зависят от типа данных входного сообщения.

    • Для логического типа данных каждый элемент вектора равен 0 или 1.

    • Для типа данных uint8 или double каждый элемент является целым символом в GF (2m), в диапазоне [0, 255]. m - количество битов в каждом символе.

    Тип входного сообщенияРазмер code
    Тип данных code ЛогичноТип данных code uint8 или двойной
    Полноразмерное входное сообщение8*255 255
    Перемеженное входное сообщение8*255*i 255*i
    Укороченное входное сообщение8*i*(255 – k + s)i*(255 – k + s)

    Типы данных: double | uint8 | logical

    Количество символов в декодированном сообщении, указанное как 223 или 239.

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

    Глубина перемежения, указанная как 1, 2, 3, 4, 5, или 8. Значение по умолчанию, 1, соответствует отсутствию перемежения.

    code состоит из i Кодовые слова RS длиной 255 байт.

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

    Укороченная длина сообщения, заданная как целое число в диапазоне [1, k].

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

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

    свернуть все

    Декодированное сообщение, возвращаемое в виде вектора столбца. Каждый элемент представляет декодирование соответствующего элемента на входе code. Тип данных decoded является таким же, как у code.

    Размер вектора столбца зависит от типа данных code.

    Тип входного сообщенияРазмер decoded
    Тип данных code ЛогичноТип данных code uint8 или двойной
    Полноразмерное входное сообщение8*k k
    Перемеженное входное сообщение8*k*i k*i
    Укороченное входное сообщение8*s*i s*i

    Когда значение выходного сигнала cnumerr является –1, decoded равно первому k элементы code.

    Количество исправленных ошибок, возвращаемых в виде целого числа в диапазоне [-1, (n - k) ∕ 2], где n - длина кодового слова. Значение n равно 255 согласно CCSDS 131.0-B-3 раздел 4 [1].

    Значение –1 в cnumerr указывает на отказ декодера исправить ошибки.

    Исправленная версия кода, возвращенная в виде вектора столбца. Длина ccode совпадает с длиной code. Тип данных ccode является таким же, как у code.

    Когда значение выходного сигнала cnumerr является –1, ccode равно code.

    Подробнее

    свернуть все

    Декодирование кода RS CCSDS

    Коды RS CCSDS являются мощными кодами коррекции ошибок пакетов. Они чаще всего используются в качестве прямых кодов коррекции ошибок (FEC), так как они обнаруживают и исправляют ошибки на уровне символа.

    Декодирование полноразмерных RS-кодов CCSDS-сообщений

    Подобно кодированию, декодирование кодов RS CCSDS также выполняется по строкам. Длина входного вектора является произведением глубины перемежения (i) и длины кодового слова (n). n фиксируется в 255 символах согласно CCSDS 131.0-B-3 Раздел 4 [1]. Входной вектор состоит из символов сообщения и четности.

    Decoding of full-length CCSDS RS codes

    Декодирование укороченных кодов RS CCSDS сообщения

    Подобно кодированию, декодирование кодов RS CCSDS также выполняется по строкам. Длина входного вектора является произведением глубины перемежения (i) и значения, вычисленного n-k + s. Входной вектор состоит из укороченных символов сообщения и четности.

    Decoded shortened CCSDS RS codes

    Ссылки

    [1] Синхронизация TM и канальное кодирование. Рекомендация по стандартам системы космических данных. CCSDS 131.0-B-3. Синяя книга. Выпуск 3. Вашингтон, округ Колумбия: CCSDS, сентябрь 2017 года.

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

    Создание кода C/C + +
    Создайте код C и C++ с помощью MATLAB ® Coder™

    .

    См. также

    Функции

    Объекты

    Представлен в R2021a