Главная страница
Навигация по странице:

  • ПРОГРАММНО – АППАРАТНАЯ РЕАЛИЗАЦИЯ АДАПТИВНОГО КАСКАДНОГО КОДЕКА, ОПТИМИЗИРОВАННОГО ПОД АРХИТЕКТУРУ ПЛИС

  • BMU ACS SMS данныеSPM TBU

  • Начало Инициализация Расчет метрик ветвей Загрузка метрик путей ACS Сохранение выживших путей

  • Обратный проход решетки Выдача декодированных данных Конец

  • Адрес на Адрес

  • Принятая

  • От блока SPM Загрузка

  • Регистр

  • Инициализа

  • Сверточные коды. 4 Дисер с 15 СК и Мягкое дек с 55. Программноаппаратная реализация оптимального алгоритма декодирования каскадных кодов на базе кодов рида соломона в адаптивных системах обмена данными


    Скачать 5.5 Mb.
    НазваниеПрограммноаппаратная реализация оптимального алгоритма декодирования каскадных кодов на базе кодов рида соломона в адаптивных системах обмена данными
    АнкорСверточные коды
    Дата09.03.2020
    Размер5.5 Mb.
    Формат файлаdocx
    Имя файла4 Дисер с 15 СК и Мягкое дек с 55.docx
    ТипДиссертация
    #111324
    страница12 из 21
    1   ...   8   9   10   11   12   13   14   15   ...   21

    Коды РС в стирающем канале связи



    Все перечисленные выше подходы к упразднению процедуры поиска локаторов ошибок сводятся к необходимости знать позиции ошибочных символов, что аналогично работе декодера в стирающем канале связи.

    Наличие стираний для кода, определенного над полем GF(q), означает, что демодулятор имеет q обычных выходных символов и (q + 1)-й символ,

    соответствующий стиранию. Предполагается, что при появлении стирания нет абсолютно никакой информации о том, какой символ был фактически передан [107].

    Для исправления стираний в кодах РС необходимо ввести многочлен локаторов стираний, аналогичный многочлену локаторов ошибок:

    e

    x 1 x Xi ,

    i1

    (2.1)

    где e – максимальное количество стираний, которое способен исправить код.

    Зная позиции стираний, можно вычислить Г(x) и подставить на эти места произвольные принятые символы, вычислив после этого S(x). Ключевое уравнение для исправления стираний примет вид:

    x Sxx mod xe,

    (2.2)





    Дальнейшее исправление стираний полностью соответствует классическому алгоритму нахождения значений ошибок по алгоритму Форни.
      1. Двукратная выдача кодового блока



    Из предложенных методов этот наиболее прост в реализации. Суть его заключается в повторной выдаче каждого кодового блока РС. Для минимизации действия импульсной помехи все символы, поступающие в канал связи, перемежаются. На приемной стороне после деперемежителя кодовая последовательность восстанавливается, при этом символы, значения которых не совпадают с повторно принятыми, считаются ошибочными. Номера позиций этих символов поступают в декодер, где рассчитываются значения этих символов согласно алгоритму Форни. Таким образом, благодаря использованию двукратной выдачи кодового блока, удастся избежать процедуры вычисления позиций искаженных символов. Такие символы можно считать стертыми, а декодер, как известно, восстанавливает в два раза больше стираний, чем ошибок по классическому алгоритму [110].

    Для определения эффективности данного подхода к декодированию кодов РС необходимо построить график BER предложенного кодека и сравнить кривые

    с классическим методом декодирования. Графики будут строиться нормированными относительно энергии, приходящейся на каждый бит принятого символа. Делается это для объективности оценки эффективности того или иного метода помехоустойчивого кодирования. Рассматриваться графики будут на примере СПД с QAM-16 модуляцией. Полученные графики представлены на рисунке 2.1.

    Рисунок 2.1 – Значения BER для кодов РС(15, 9) с двукратной выдачей кодового блока и с классическим способом декодирования
    Из рисунка 2.1 видно, что предложенный подход существенно уступает в помехоустойчивости классическому методу декодирования кодов РС и в дальнейшем он рассматриваться не будет.
      1. Произведение кодов РС и БЧХ



    В качестве другого способа замещения процедуры расчета локаторов ошибок рассмотрим произведение блоковых кодов, то есть систему кодирования, при которой для каждого символа внешнего кода рассчитываются проверочные символы внутренним кодом. При этом символы, для которых проверка четности внутреннего кода не выполняется, будут стираться. Таким образом, для внешнего кода будут известны ошибочные позиции, и необходимость использования БМА отпадает.

    В качестве внутреннего кода был выбран укороченный на семь символов код БЧХ (15, 11, 3). Укороченный код имеет такое же кодовое расстояние и записывается в виде БЧХ (8, 4, 3). Он способен исправить одну ошибку в каждом принятом символе внешнего кода и детектировать две ошибки [10].

    Рисунок 2.2 – Значения BER для произведения кода РС(15, 9) и кода БЧХ(8, 4) в сравнении с классическим способом декодирования
    Для оценки эффективности этого подхода построим график BER и сравним его с классическим методом декодирования. Графики представлены на рисунке 2.2.

    Как видно из рисунка 2.2, данный подход существенно уступает классическому алгоритму декодирования и в дальнейшем рассматриваться также не будет.
      1. Мягкие подходы к декодированию кодов РС



    Алгоритм декодирования кодов РС нельзя непосредственно обобщить таким образом, чтобы использовать мягкие решения демодулятора. Существуют лишь подходы, при которых нужно несколько раз производить декодирование с жестким решением [107]. Однако в частном случае, соответствующем стираниям в демодуляторе, можно применить алгебраическое декодирование [33].

    В работе предлагаются два способа квантования принятого сигнала для двух типов сигналов: для PSK-модуляции и для QAM-модуляции. Для примера, квантование сигнала будет осуществляться на восемь уровней. При этом более высокое значение МРС будет соответствовать более надежно принятым символам [100, 127].

        1. Формирование мягких решений символов при фазовоймодуляции


    При фазовой модуляции значение символа зависит только фазы принятого сигнала. В этом случае квантование целесообразно осуществлять только по углу отклонения принятого сигнала от номинальной точки сигнального созвездия. Такое созвездие представлено на рисунке 2.3 [90]. В качестве примера приведена СПД с QPSK-модуляцией при соотношении сигнал-шум 10 дБ. Более светлые области на сигнальном созвездии соответствуют наиболее надежным символам.

    Рисунок 2.3 – Созвездие принимаемого сигнала при QPSK модуляции и SNR=10 дБ с квантованием на 8 уровней
    Гистограмма распределения индексов достоверности символов (МРС) представлена на рисунке 2.4. На ней темным цветом показано распределение МРС, которые были определенны неверно.

    Рисунок 2.4 – Гистограмма распределения МРС принятого сигнала при QPSK и SNR=10 дБ с квантованием на 8 уровней
    Графики BER для оценки эффективности работы декодера Витерби с мягкими решениями по сравнению с жесткими решениями представлены на рисунке 2.5.

    Рисунок 2.5 – Значения BER для сверточного кода (171,133), работающего с жесткими и мягкими решениями при QPSK-модуляции

    Из рисунка 2.5 видно, что использование мягких методов при декодировании сверточного кода по алгоритму Витерби повышает ЭВК системы в среднем на 1.5 - 2 дБ при фазовой модуляции.

        1. Формирование мягких решений символов при квадратурной амплитудной модуляции

    При QAM-модуляции значение символа зависит не только от фазы, но и от амплитуды принимаемого сигнала, поэтому квантование сигнала осуществляется по прямоугольным зонам, площади всех зон при этом строятся равными [90, 114]. В работе также предложено оставлять открытыми границы зон, в которых с увеличением амплитуды сигнала, конкурирующие точки будут отсутствовать. Вид сигнального созвездия, иллюстрирующего данный подход, представлен на рисунке 2.6.

    Рисунок 2.6 – Созвездие принимаемого сигнала при QAM-16 модуляции и SNR=10 дБ с квантованием на 8 уровней
    В качестве примера рассматривается СПД с QAM-16 модуляцией и квантованием каждого принимаемого символа на восемь уровней при соотношении сигнал-шум в канале связи 10 дБ. Гистограмма распределения МРС принятого сигнала представлена на рисунке 2.7.

    Рисунок 2.7 – Гистограмма распределения МРС принятого сигнала при QAM-16 и SNR=10 дБ с квантованием на 8 уровней
    Для определения надежности оценок полученных описанным выше путем,
    Н



    вводится логарифмический коэффициент правдоподобия оценки
    L


    МРС :




    Н Pпр

    LМРС  log10МРС

    Pош

    МРС

    (2.3)




    где

    пр МРС

    • вероятность правильной оценки символа,

    ош МРС

    • вероятность

    ошибочной оценки. Графики зависимости коэффициента надежности оценки принятого символа от соотношения сигнал-шум в канале представлены на рисунке 2.8.
    P

    P


    Графики BER для оценки эффективности работы декодера Витерби с мягкими решениями по сравнению с жесткими решениями при QAM-16 модуляции представлены на рисунке 2.9.

    Из рисунка 2.9 видно, что при мягком декодировании сверточного кода по алгоритму Витерби, ЭВК системы в среднем повышается на 1 – 1.5 дБ при квадратурной амплитудной модуляции.





    Рисунок 2.8 – Графики зависимости коэффициента правдоподобия надежности символа от отношения сигнал-шум в канале при QAM-16


    Рисунок 2.9 – Значения BER для сверточного кода (171,133), работающего с жесткими и мягкими решениями при QAM-16 модуляции

        1. Использование мягких оценок для определениястираний


    Суть предлагаемого подхода заключается в том, чтобы для каждого принятого из канала связи символа получать мягкие решения от детектора. Сочетание описанного выше метода определения МРС с кодами РС позволяет избежать выполнения процедуры БМА. Для этого стираются наименее надежные символы, а дальнейшее декодирование сводится к поиску значений стертых позиций.

    Для оценки эффективности данного подхода при QPSK-модуляции в сочетании с кодом РС (15, 9) сравним его график BER с графиком при классическом способе декодирования. Графики представлены на рисунке 2.10.

    Рисунок 2.10 – Значения BER для СПД с QPSK-модуляцией и кодом РС(15, 9) при мягком и классическом декодировании

    Графики BER для СПД с QAM-16 модуляцией и кодом РС (15, 9) представлены на рисунке 2.11.

    Как видно из рисунков 2.10 и 2.11, использование мягких подходов в определении стертых символов уступает в помехоустойчивости классическому алгоритму поиска локаторов ошибок. Проигрыш составляет порядка 2 - 3 дБ, что существенно для работы СПД по радиоканалу, поэтому использование такого

    подхода в разрабатываемой системе нецелесообразно. Однако для проводных каналов связи, в которых соотношение сигнал-шум много выше, данный подход может быть применен как альтернатива ресурсоемкой процедуре БМА с целью экономии вычислительных мощностей.

    Рисунок 2.11 – Значения BER для СПД с QAM-16 модуляцией и кодом РС(15, 9) при мягком и классическом декодировании
    Исходя из анализа всех рассмотренных методов замещения процедуры БМА на получение стираний, можно прийти к выводу, что ни один из этих подходов не обеспечивает в должной степени помехоустойчивость СПК и уступает классическому методу декодирования РС. Поэтому в дальнейшем проектирование каскадного кодека будет строиться с использованием БМА.
      1. Обобщенный каскадный код на базе кодов РС и сверточных кодов



    Для повышения помехозащищенности СПК эффективна система каскадного

    кодирования с использованием кода РС на внешней ступени кодирования и сверточного кода – на внутренней. В качестве внутреннего кода выбран

    сверточный код памяти шесть с порождающими полиномами x6 x3 x2 x1 1 и

    x6x5 x3 x2 1, что соответствует записи в восьмеричной системе (171, 133).

    Этот код наиболее эффективен в борьбе с одиночными ошибками и распространен во многих существующих стандартах цифровой связи [110].

    При использовании сверточного декодера, работающего по алгоритму Витерби, важно получать из канала символы с мягким решением. Это позволяет повысить энергетический выигрыш от кодирования (ЭВК) на 2 - 3 дБ [98], поэтому предложенная система формирования МРС остается актуальной.

    На рисунке 2.12 представлены графики BER для описанного каскадного кода в сравнении с другими рассмотренными способами кодирования на примере СПД с BPSK-модуляцией.

    Рисунок 2.12 – Значения BER для всех рассмотренных СПД на примере BPSK-модуляции
    Как видно из рисунка 2.12, СПД с каскадным кодом является наиболее эффективной в плане помехоустойчивости среди всех рассмотренных, поэтому дальнейшая реализация кодека будет строиться по этому принципу.

    Описание всех представленных в этой главе моделей, разработанных в системах MATLAB, Simulink [92], можно найти, обратившись к Приложению А.
      1. Выводы по главе





    1. В ходе выполнения работы были рассмотрены различные методы упразднения процедуры поиска локаторов ошибок по алгоритму Берлекэмпа - Месси. Все предложенные подходы сводятся к получению стираний из канала связи и дальнейшему поиску их значений. Однако эти алгоритмы оказались менее эффективными в помехоустойчивости по сравнению с классическим алгоритмом декодирования кодов РС. Из этого следует, что отказываться от процедуры БМА и полностью положиться на стирания, не целесообразно. Необходимо искать пути оптимизации этой процедуры.

    2. Также в работе предложены методы мягкого квантования принимаемого сигнала для фазовой и квадратурной амплитудной видов модуляции. Эти подходы доказали свою эффективность на примере декодирования сверточного кода по алгоритму Витерби. При этом средний ЭВК составил 1.5 - 2 дБ при фазовой модуляции и 1 - 1.5 дБ при квадратурной амплитудной модуляции.

    3. В ходе математического моделирования различных СПК было доказано, что наиболее эффективной из них является каскадная схема на основе кодов Рида

    - Соломона в качестве внешней ступени кодирования и сверточного кода – на внутренней ступени. При этом целесообразно использовать алгоритм Витерби с мягким входом при декодировании сверточного кода для достижения лучшей помехозащищенности системы.

    ГЛАВА 3.


    ПРОГРАММНО – АППАРАТНАЯ РЕАЛИЗАЦИЯ АДАПТИВНОГО КАСКАДНОГО КОДЕКА, ОПТИМИЗИРОВАННОГО ПОД АРХИТЕКТУРУ ПЛИС
    Реализация СПК будет осуществляться на базе ПЛИС фирмы ALTERA, что накладывает ряд ограничений, которые необходимо учесть при разработке. Устройство должно быть оптимальным с точки зрения затрачиваемых на его реализацию аппаратных ресурсов, энергопотребления и скорости его работы [57, 58, 59]. Кроме того, СПК должна иметь способность адаптироваться к изменяющимся характеристикам канала связи. Таким образом, разработка оптимального декодера каскадного кода требует решения трех основных задач:

    • аппаратной реализации алгоритма Витерби для декодирования внутреннего сверточного кода;

    • аппаратной реализации оптимального алгоритма декодирования внутреннего кода РС;

    • разработки процедуры адаптивной подстройки кодека под изменяющиеся условия в канале связи.
      1. Аппаратная реализация алгоритма Витерби



    Существует несколько различных способов декодирования сверточных кодов. Наиболее эффективным из них является алгоритм Витерби, так как он является алгоритмом декодирования по максимуму правдоподобия. Однако он также является относительно ресурсоемким алгоритмом, поэтому аппаратная реализация оптимальной структуры декодера Витерби является актуальной задачей.

    Все дальнейшие операции декодера и его устройство будут рассматриваться на примере сверточного кода (171, 133). Структурная схема такого кодера представлена на рисунке 3.1.

    Рисунок 3.1 – Структурная схема сверточного кодера (171, 133)
    Декодер, работающий согласно алгоритму Витерби, можно условно разделить на пять основных устройств:

    • BMU (Branch Metrics Unit), модуль расчета метрик ребер решетки;

    • ACS (Add-Compare-Select), модуль сложения, сравнения и выбора метрик путей;

    • SMS (State Metric Storage), регистр хранения метрик узлов;

    • SPM (Survivor Path Memory), регистр хранения траектории, выживший путей;

    • TBU (Traceback Unit), модуль обратного прохода.

    Схема включения этих устройств представлена на рисунке 3.2. Подробное описание работы каждого устройства приведено ниже [29].

    Входные BMU ACS SMS

    данные

    SPM


    TBU
    Декодированные данные


    Рисунок 3.2 – Схема декодера Витерби

    Структура работы аппаратного декодера Витерби приведена на блок-схеме (рисунок 3.3).


    Начало

    Инициализация

    Расчет метрик ветвей

    Загрузка метрик путей

    ACS

    Сохранение выживших путей

    Да
    Обработаны все Нет

    состояния?
    Да
    Нет Обработана вся решетка?


    Обратный проход решетки

    Выдача декодированных данных

    Конец

    Рисунок 3.3 – Блок-схема работы аппаратного декодера Витерби




        1. Аппаратное описание структурытреллис-диаграммы


    Для работы декодера сверточных кодов ему необходимо хранить в своей памяти решетку, описывающую разрешенные переходы из одного состояния в

    другое. Так как эта решетка статична, то ее можно хранить в ROM (Read Only Memory). В аппаратном исполнении треллис-диаграмма будет представлена в виде двух таблиц. В обеих таблицах в качестве адреса выступает узел решетки на текущем этапе декодирования [62]. Каждому адресу ячейки (текущему узлу) первой таблицы соответствует следующий узел решетки при условии, что по каналу был передан ноль. Вторая таблица содержит состояния решетки при условии, что передана была единица. В таблице 3.1 приведено состояние ROM для сверточного кода (171, 133). Здесь каждому следующему состоянию (младшие шесть бит ячейки) добавляются два бита с выхода кодера (старшие два бита). Таким образом, для перехода в следующее состояние решетки необходимо обратиться в ROM по адресу, равному текущему состоянию, при этом память возвращает следующее состояние решетки, а также состояние кодера, что удобно при расчете метрики ветви.

    Таблица 3.1. Таблица переходов по состояниям решетки


    Текущее состояние

    Следующее состояние (передан 0)

    Следующее состояние (передана 1)




    Текущее состояние

    Следующее состояние (передан 0)

    Следующее состояние (передана 1)

    000000

    00000000

    10000011

    100000

    01000010

    11000001

    000001

    00000011

    10000000

    100001

    01000001

    11000010

    000010

    00000101

    10000110

    100010

    01000111

    11000100

    000011

    00000110

    10000101

    100011

    01000100

    11000111

    000100

    00001000

    10001011

    100100

    01001010

    11001001

    000101

    00001011

    10001000

    100101

    01001001

    11001010

    000110

    00001101

    10001110

    100110

    01001111

    11001100

    000111

    00001110

    10001101

    100111

    01001100

    11001111

    001000

    00010011

    10010000

    101000

    01010001

    11010010

    001001

    00010000

    10010011

    101001

    01010010

    11010001

    001010

    00010110

    10010101

    101010

    01010100

    11010111

    001011

    00010101

    10010110

    101011

    01010111

    11010100




    001100

    00011011

    10011000




    101100

    01011001

    11011010

    001101

    00011000

    10011011

    101101

    01011010

    11011001

    001110

    00011110

    10011101

    101110

    01011100

    11011111

    001111

    00011101

    10011110

    101111

    01011111

    11011100

    010000

    00100011

    10100000

    110000

    01100001

    11100010

    010001

    00100000

    10100011

    110001

    01100010

    11100001

    010010

    00100110

    10100101

    110010

    01100100

    11100111

    010011

    00100101

    10100110

    110011

    01100111

    11100100

    010100

    00101011

    10101000

    110100

    01101001

    11101010

    010101

    00101000

    10101011

    110101

    01101010

    11101001

    010110

    00101110

    10101101

    110110

    01101100

    11101111

    010111

    00101101

    10101110

    110111

    01101111

    11101100

    011000

    00110000

    10110011

    111000

    01110010

    11110001

    011001

    00110011

    10110000

    111001

    01110001

    11110010

    011010

    00110101

    10110110

    111010

    01110111

    11110100

    011011

    00110110

    10110101

    111011

    01110100

    11110111

    011100

    00111000

    10111011

    111100

    01111010

    11111001

    011101

    00111011

    10111000

    111101

    01111001

    11111010

    011110

    00111101

    10111110

    111110

    01111111

    11111100

    011111

    00111110

    10111101

    111111

    01111100

    11111111


    Для динамически перестраиваемых решеток (при разработке адаптивных сверточных кодеков) инициализация памяти переходов состояний должна осуществляться в начале каждого сеанса связи. Тогда схема работы такого блока памяти примет следующий вид (рисунок 3.4) [43]:



    Адрес на Адрес на чтение запись
    Разрешение 0 1 Входные

    записи данные

    ROM

    состояний
    Выходные данные

    Рисунок 3.4 – Аппаратная реализация блока памяти переходов состояний решетки



        1. Аппаратная реализация блокаBMU


    Блок BMU рассчитывает метрику предполагаемой кодовой комбинации. Для этого он генерирует все возможные ветви решетки для текущих узлов решетки и сравнивает их с принятой из канала связи кодовой комбинацией. В качестве метрики в данном случае выступает хэмминговое расстояние между предполагаемой кодовой последовательностью и принятой, что в свою очередь представляет собой количество отличающихся друг от друга разрядов в этих комбинациях. Для выбранного кода из каждого текущего состояния могут выходить две ветви. Одна формируется из предположения декодера о том, что принятый символ был нулем, и вторая – из предположения о том, что передавалась единица [77]. Схема BMU-блока представлена на рисунке 3.5. На схеме сравнение производится с помощью поразрядной операции XOR, а расчет метрики осуществляется подсчетом единиц в полученном векторе.


    Принятая Метрика

    комбинация ветви

    Счетчик

    Предполагаемая комбинация

    Рисунок 3.5 – Схема BMU-блока

        1. Аппаратная реализация блокаACS


    Как и следует из названия, блок ACS выполняет три основные функции: прибавляет, сравнивает, выбирает. На вход ACS подаются все возможные метрики ветвей решетки, сгенерированные блоком BMU. Два сумматора складывают на каждом узле решетки полученную метрику ветви с метрикой пути, накопленной в данном состоянии [80]. После обработки всех состояний на текущем шаге решетки в каждое следующее состояние приходит по два конкурирующих пути. Метрики этих путей сравниваются, и сохраняется только путь с наилучшей метрикой [70]. Полученные метрики состояний записываются в блок SMS, а траектория выживших путей – в блок SPM. Схема блока ACS представлена на рисунке 3.6





    метрика узла к SPM-блоку

    +

    метрикаветви к SMS-блоку

    Компаратор

    метрика узла

    +

    метрика ветви


    Рисунок 3.6 – Схема блока ACS




        1. Блоки SMS иSPM


    Блок SMS представляет собой набор регистров, хранящих информацию о метриках путей, выживших на текущем этапе декодирования. Эта информация необходима блоку ACS для определения веса пути на следующем этапе и выбора из двух конкурирующих путей того, чей вес меньше. Регистры SMS-блока обновляются каждый такт с поступлением новых данных на декодер [81].

    Блок SPM реализуется в виде набора сдвиговых регистров, хранящих в памяти информацию о траектории выживших путей. На каждом такте декодирования, после выбора выжившего пути, в память SPM-блока записывается текущее состояние решетки, из которой этот (выживший) путь исходит. Так как в

    каждое последующее состояние приходит по два конкурирующих пути из разных узлов, отличающихся друг от друга только младшим разрядом, то в SPM-блок за один такт декодирования записывается только один бит информации. Зная структуру решетки, по этим данным можно восстановить траекторию всего пути от начала до конца, тем самым декодировав принятую информацию [64].

        1. Обратный проход решетки. МодульTBU


    После того как треллис-диаграмма заполнена, то есть число тактов декодирования достигло глубины декодирования, из всех выживших путей выбирается единственный путь по правилу максимального правдоподобия, то есть минимального веса. Из блока SPM извлекается траектория этого пути. Далее необходимо совершить обратный проход решетки по выбранной траектории с целью восстановления принятых данных.

    На рисунке 3.7 приведен алгоритм обратного прохода решетки и выдачи декодированных данных. При завершении прямого прохода решетки в регистр блока TBU записывается выбранная траектория выжившего пути. На каждом такте обратного прохода этот регистр сдвигается на один бит вправо. Младший бит регистра участвует в восстановлении предыдущего состояния решетки. Процедура повторяется вплоть до достижения начального состояния решетки.


    От блока SPM
    Загрузка регистра Да

    траектории

    Сдвиг регистра Нет

    траектории

    Восстановление Конец решетки?

    предыдущего состояния

    Выходные данные

    Рисунок 3.7 – Алгоритм работы блока TBU

    Для формирования предыдущего состояния решетки необходимо текущее состояние сдвинуть на один такт влево, а на место младшего разряда записать младший бит регистра траектории пути. При этом старший бит регистра текущего состояния решетки – есть декодированный бит принятой последовательности (рисунок 3.8) [65].

    Регистр траектории Текущее состояние

    Декодированные

    ... ... данные

    Предыдущее состояние

    Рисунок 3.8 – Схема восстановления предыдущего состояния решетки



      1. Аппаратная реализация оптимального алгоритма декодирования кода Рида – Соломона


    На заре создания первых декодеров кодов РС они строились на многоразрядных сдвиговых регистрах, умножителях, сумматорах и большом количестве других АЛУ. Развитие современной микроэлектроники позволяет реализовать эти АЛУ на одном кристалле в корпусе микросхемы – ПЛИС. Описание алгоритмов для ПЛИС требует соблюдения определенных правил, а также накладывает некоторые ограничения по скорости работы устройства, занимаемой им площади на кристалле ПЛИС и по энергопотреблению системы. Под оптимизацией алгоритма для ПЛИС будет пониматься некоторое приемлемое соотношение между этими тремя параметрами [3, 44].

    В этом параграфе будут описаны существующие высокоскоростные алгоритмы реализации кодеков РС, рассмотрены способы оптимизации этих алгоритмов, а также будут предложены различные подходы к их аппаратной реализации.

    Реализация алгоритма быстрого декодирования кодов РС, описанного в первой главе, на ПЛИС сводится, как правило, к разработке трех основных АЛУ:

    1. SC-block (Syndrome Computation block). Блок расчета синдромного многочлена. Выполняет вычисления согласно формуле (3.1):


      s Ri, i

      (3.1)







    где R(z) – полином принятых кодовых слов, α – примитивный элемент поля Галуа.

    1. KES-block (Key-Equation block). Блок, решающий ключевое уравнение:




    z Sz z mod z2t,

    (3.2)

    где Λ(z) – полином локаторов ошибки, t – корректирующая способность кода.

    1. CSEE-block (Chien Search and Error Evaluator block). Блок, выполняющий процедуру Ченя по поиску корней полинома локаторов ошибок путем последовательного перебора всех возможных значений и рассчитывающий значение ошибки согласно алгоритму Форни:

      Y z ,

      jz z j


      (3.3)







    где Y – значение ошибки,

    z


    • производная от полинома локаторов ошибки,


    j – номер позиции в принятом векторе R, на которой произошла ошибка [15, 18, 39].

    Все три блока работают в конвейерном режиме, обрабатывая поступающую информацию последовательно друг за другом [66, 69]. Оптимальная реализация каждого из этих блоков будет подробно описана в этом параграфе. Также будет рассмотрен алгоритм адаптивной подстройки декодера РС для динамически изменяемых параметров канала связи [116, 117].

        1. Оптимальная реализацияSC-блока


    Блок SC рассчитывает синдромный многочлен на основе поступающих в декодер данных из канала связи. Этот многочлен имеет степень c = n k, равную количеству проверочных символов в блоке кода РС, следовательно, синдром должен храниться в регистре памяти размером c ячеек [53]. Каждая i-я ячейка вычисляется согласно (3.1). В аппаратном виде схема вычисления синдрома примет вид:





    si-1

    0 -1 si R + Z-1 1 Z
    α i+1 ×

    Рисунок 3.9 – Схема расчета компонентов синдромного многочлена


    Блок SC состоит из набора таких элементов, их количество зависит от вносимой кодом избыточности. Эти соединяются между собой по принципу сдвигового регистра, благодаря чему через n тактов, когда декодер примет полный кодовый блок, на выходе SC-блока будет сформирован синдромный многочлен (рисунок 3.10) [76].


    0

    S3 S2 S1 S0

    R

    s0, s1, … , sc-1

    S4 S5 ... Sc-1

    Рисунок 3.10 – Схема SC-блока




        1. Оптимальная реализацияKES-блока


    После того как расчет синдромного многочлена завершен, эти данные поступают в KES-блок, задача которого определить два полинома: полином локаторов ошибок и полином значений ошибок.

    Наиболее проблемным местом в алгоритме декодирования кодов РС является реализация KES-блока. Скорость работы этого блока непосредственно влияет на пропускную способность всего декодера, в отличие от относительно простых SC- и CSEE-блоков [40, 52], поэтому особое внимание будет уделено именно оптимизации KES-блока.

    Как было оговорено выше, существуют различные алгоритмы поиска полинома локаторов ошибок, такие как алгоритм Евклида и алгоритм Гурусвами - Судана. Однако они не подходят для аппаратной реализации

    высокоэффективного декодера кодов РС. Поэтому для разрабатываемой СПК был выбран алгоритм Берлекэмпа – Месси [34, 35].

    БМА – сложный алгоритм с множеством вложенных путей и условных переходов. В явном виде он неприспособлен к архитектуре ПЛИС и требует оптимизации и доработки [106]. Его удобнее всего рассматривать как итеративный процесс построения линейного сдвигового регистра с обратной связью [115]. Позднее этот алгоритм был доработан, что позволило сократить длину сдвигового регистра до минимальной с сохранением требуемых свойств. Реализация обновленного алгоритма была описана Р. Блейхутом в работе [87] и

    получила название безынверсионного БМА (iBM) [11].

    Данный алгоритм находит скалярные произведения

      z и

      z вместо

    z и z, что требует ключевое уравнение (3.2). Однако при дальнейшем
    прохождении процедуры Ченя, эти выражения дадут одинаковые результаты, поэтому в дальнейшем описании алгоритма множитель β будет опускаться в обозначениях. Описать работу алгоритма iBM можно с помощью следующего псевдокода [2]:

    Инициализа ция:

    0 b0 1, 0 b0 0 для i 1,2,..., t. k0 0. 0 1.

    0 0 i i

    Вход:


    si, i 0, 1, ..., 2t1.

    for r  0 step 1 until

    2t-1 do

    begin
    Шаг

    1: δr   sr λ0 r sr 1 λ1 r ... sr t λt r

    Шаг

    2: r1 r λir r λi1 r , i 0, 1, ... , t

    Шаг then

    3: if δr   0 and kr   0

    begin

    bir1 ir,

    r1 r

    i  0, 1, ... , t


    end

    kr 1  kr 1

    else
    begin

    bir1 bi1 r,

    r 1 r

    kr1 kr1
    i  0, 1, ... , t



    end
    end

    end

    for

    i  0 step

    1 until t-1 do



    1   ...   8   9   10   11   12   13   14   15   ...   21


    написать администратору сайта