Ипатов В. Широкополосные системы и кодовое разделение сигналов (2007) (1151883), страница 75
Текст из файла (страница 75)
Выход каждой ячейки регистра, как н вход кодера, соединен либо нет (поэтому соединения обозначены пунктиром) с каждым нз сумматоров, причем схема соединений конкретизирует зависимость выходных кодовых символов от о битов источника, т. е. правило кодирования. Прн поступлении на вход текущсто бита источника 6; на выходах сумматоров параллельно появляются и кодовых символов и1, иг, ..., и,". С каждым тактом битовый профиль в регистре сдвигается на одну ячейку вправо, подготавливая цепь к формированию следующих и кодовых символов.
Выходной ключ, пробегая поочередно выходы п сумматоров в течение одного бита, преобразует параллельное представление кодовых символов в последовательное, создавая выходной кодовый поток ие, ие, ..., ие, им и» ..., и1, ... Как видно, в установившемся режиме кодер рнс. 9.3 на каждый новый бнт источника откликается и кодовыми символами (см. также рнс. 9.2), так что скорость кода Вс в битах на кодовый символ равна 1/и. Рассмотрим пример, помогающий лучше понять идею сверточного кодирования, ~~( 368 Глава 9. Канальное кодирование в широкополосных системах Пример 9.5. На рис.
9.4 приведен сверточный кодер с длиной кодового ограничения рс = 3 и скоростью Л, = 1/2. Входные биты Ьо, Ь1,... преобразуются в два потока кодовых символов ио, и„... к ио, и„..., которые затем мультнплекси- 1 1 2 2 руются так, чтобы и1 и и2 занимали соответственно четные н нечетные позиции в общем кодовом потоке. Например, битовый поток 1Ь1) = 10100100... порождает последовательности 1и1-) = 11011111...я 1и,") = 10001101..., которые после мультиплексирования образуют кодовый поток ((и), и2)) = 1110001011111011... Биты и кода ОО О1 й~ Рис.
9.4. Сверточный кодер со скоростью 1/2 Можно задаться естественным вопросом: достижима ли при сверточком кодировании скорость В, отличная от 1/и, т.е. равная к/и, где 1 < й ( и". 'Существуют два классических подхода к решению этой задачи. Первый из них сводится к прямому обобщению ранее описанной идеи: на каждом шаге йы„вместо р„битов линейно преобразуются в и кодовых символов, после чего Й старейших битов (вместо одного) заменяются й новыми и кодер переходит к следующему шагу. Второй вариант, называемый выкалыванием, использует код со скоростью 1/и как подсобный материал, удаляя в нем отдельные кодовые символы в соответствии с заранее назначенным профилем.
При грамотном выборе профиля выкалывание сокращает число кодовых символов на бит данных, доводя значение скорости до к/и. В реализационном отношении выкалывание нередко признается предпочтительным, акцентируя доминантную роль кодов со скоростями вида 1/и. Принимая эту точку зрения, сосредоточим дальнейшее внимание только на сверточных кодах со скоростью 1/и. Очевидно, схема, содержащая регистр сдвига и индивидуальный сумматор по модулю два со всеми его связями, есть не что иное, как фильтр с конечной импульсной характеристикой (КИХ) (см. рис.
6.19), реакцией которого на входной битовый поток является свертка последнего с импульсным откликом фильтра. Этот факт объясняет происхождение названия исследуемых кодов, а также лежит в основе удобного способа формального описания сверточного кодера. Свертка, связывающая кодовый символ и; (т. е. появляющийся на выходе 1-го сумматора при поступлении бита источника Ь;) с входным битовым потоком, р.р.
с р р 369) и — 1 и1 = ~~ Ь; 1д~1, г =0,1,...; 1=1,2,...,п, (9.6) н=а где 911 = 1, если 1-й сумматор соединен с 1-й ячейкой памяти (1 = 0 соответствует входу кодера) и д11 = 0 в противном случае, а Ь, = 0 при г < О. Подходящим инструментом анализа дискретных систем в частотной области является г-преобразование, уже встречавшееся в предыдущем разделе. В г-области свертке соответствует произведение я-преобразований, так что равенство (9.6) имеет эквивалентну1о форму и (я) = ~ и;г' = Ь(я)91(я), 1 = 1,2,...,п, рр в (9.7) гДе Ь(г) = 2"р е Ьрл1 — г-пРеобРазование вхоДного потока битов, а д1(я) = до+91я+'''+д,— 1я ' 1 =1 2" и (98) — передаточная функция 1-го КИХ-фильтра (т.
е. формирующего 1-й кодовый символ), называемая также 1-м порождающим полииомом сверточного кода. Набор и порождающих полиномов полностью определяет сверточный код, поскольку их ненулевые коэффициенты задают схему соединений сумматоров с регистром сдвига. Пример 9.6.
Порождающие полиномы для кодера рис. 9.4 д1(г) = 1+ я+ я~ и д2(г) = 1 + г~. Убедитесь, что последовательности кодовых символов в приме- ре 9.1 можно получить из (9.7). 9.3.2. Решетчатая диаграмма, свободное расстояние и асимптотический выигрыш от кодирования Число возможных состояний регистра сдвига сверточного кодера равно 2" 1, и есть только два состояния, в которые он может перейти из текущего по окончании каждого очередного такта: Выбор одного из двух возможных переходов определяется текущим битом источника Ьь Если на 1-м такте регистр находится в состоянии (Ь; 1,Ь; з,...
Ь1,,+1), сле- При д1(я) = 1 сверточный код становится систематическим, в котором биты источника явно присутствуют на определенных позициях. Дело, однако, обстоит так, что в рамках фиксированной структуры рис. 9.3 систематические коды, как правило, оказываются не лучшими в отношении корректирующей способности (см. задачу 9.15). Поэтому в обстоятельствах, когда систематичность кода критически важна, сверточный кодер на КИХ-основе модифицируется в структуру с обратной связью.
Мы вернемся к деталям этого вопроса при ознакомлении с турбо-кодами в подпараграфе 9.4.1. ~ЗТО Г Р.к Ир г Пример 9.7. Имеются четыре состояния двухразрядного регистра сдвига, начиная с левой ячейки: (00), (10), (01) и (11). На рис. 9.5 приведена решетка, построенная, как сказано выше. Например, ребро из (10) в (01) обозначено сплошной линией, а в (11) — пунктирной, кодовые символы 01 являются меткой ребра, ведущего из (11) в (01), так как прн единицах в обеих ячейках и нулевом входном бите верхний сумматор рис. 9.4 выдает на выход нуль, а нижний— единицу„н т.
д. В течение каждого такта кодер со- (00) (00) вершает переход вдоль какого-то ре- --31 бра решетки, одновременно выдавая на выход кодовые символы, которыми по- 'Ф (10) мечено данное ребро. Отслеживая этот 00 процесс по диаграмме, подобной представленной на рис. 9.5, пришлось бы пе- 1О (01) (0') рескакивать из правого столбца в тот же узел левого на каждом очередном шаге. Для избежания этого можно про- (11) ----------- — ------ — ---Ь(11! сто повторить решетку стсн1ько рзз, сколько требуется, используя правый столбец Рис.
9.0. Решетка кодера на рис. 9.4 текущего шага как левый для последующего. Тогда кодирование отождествляется с движением по полученной реиьетчатой диаграмме, контролируемым текущим входным битом, который — в зависимости от того, равен он нулю или единице направляет кодер по сплошному или пунктир- (1О) 10 дующим состоянием будет либо (О, 6( 1,...
Ь; „, ).з) при поступлении бита Ь; = О, либо (1, Ь; ы... Ь;,) з) при Ь; = 1. Точно так же регистр придет в состояние (Ь,, Ь; 1,..., Ь; „,( а), если перед этим он бьлл в состоянии либо (Ъ; 1,Ь( з,...,6.,.(з,О), либо (Ь; 1,Ь( з,...,Ь, ~,(.з,1). Схематически все детали поведения регистра адекватно отображаются решеткой. Она содержит два столбца из 2 ' 1 узлов, левый для текущего состояния регистра, а правый — для последующего. Ребра (стрелки) ведут из каждого узла левого столбца в некоторые два узла правого, причем сплошные либо пунктирные ребра обозначают пути, которые выбираются входным битом нуль либо единица соответственно.
Подобно этому в каждый узел правого столбца входят два ребра, маркированные одинаково: либо сплошными (нулевой входной бит), либо пунктирными (входной бит единица) линиями. Каждое ребро помечено и-злементной строкой, являющейся не чем иным, как группой и кодовых символов, выдаваемых кодером, когда входной бит переводит его из одного состояния в другое.
Следующий пример поясняет построение решетки сверточного кодера рис. 9.4. О.З.СР д Ъф ному ребру. Иллюстрируя сказанное, обратимся к рис. 9.6, на котором показана решетчатая диаграмма кода примера 9.5. Каждая из возможных последовательностей входных битов данных выбирает определенный путь на решетчатой диаграмме, который можно проследить, например, для последовательности (Ь1) = 10100100.... Первый ее бит, равный единице, направляет кодер из узла (00) в узел (10), выдавая выходные кодовые символы 11. Второй бит, равный нулю, переводит кодер из узла (10) в (01), генерируя кодовые символы 10.
Третий бит меняет состояние кодера с (01) на (10), выдавая кодовые символы 00 и т. д. 2Кирной чертой выделен итоговый путь, отвечающий кодовому слову 1110001011111011. <оо> <191 <оц 00 Рис. 9.6. Решетчатая диаграмма кодера иа рис. 9.4 Как уже отмечалось, сверточный код можно интерпретировать как достаточно длинный блоковый. Слова такого блокового кода есть просто различные пути на решетчатой диаграмме, так что минимальное расстояние Хэмминга между парами этих путей является кодовым расстоянием. В свою очередь, линейность кода упрощает задачу нахождения кодового расстояния: в силу утверждения 9.3 минимум расстояния между путями совпадает с наименьшим весом Хэмминга среди всех ненулевых слов.