Исследование помехоустойчивых кодов (1151931), страница 3
Текст из файла (страница 3)
В результате в регистре записывается остаток, представляющий собойпроверочные символы. Ключи K1 и K2 перебрасываются в положение 2, и в течение трехпоследующих тактов содержащиеся в регистре символы поступают в канал.Циклический код может быть задан проверочным многочленом h(x): кодоваякомбинация В принадлежит данному циклическому коду, если b(x)h(x) = 0 mod (xn 1).Проверочный многочлен связан с порождающим соотношениемh(x) = (xn 1)/p(x).Заданиекодапроверочныммногочленомэквивалентнозаданиюкодасистемойпроверочныхуравнений (9.13).ХарактернойособенностьюциклическогоРис.
4. Схемы умножения (а) и деления (б) многочленов (частный случай)кода является то,чтовсепроверочныеуравнения можно получить из одного путем циклического сдвига индексов символов,входящих в исходное уравнение. Например, для кода (7, 4) с порождающим многочленомp(x) = x3 x2 1 проверочный многочлен имеет вид h(x) = x4 x3 x2 1. Проверочныеуравнения получаются из условияb(x)h(x) = 0 mod (x7 1) .Осуществив умножение и приравняв коэффициенты при х4, х5 и х6 нулю, получимследующие уравнения, разрешенные относительно проверочных символов:b2 = b6 b4 b3,b1 = b5 b3 b2,b0 = b4 b2 b1.(9.16)В качестве примера нарис. 9.26показанасхемакодерациклического1 T1T2T3T4В ы хо дкода(7,4),задаваемогопроверочным2432многочленом h(x) = x x x 1, или, что тожесамое,проверочнымисоотношениямиm2m2(9.16). В исходном состоянииключ находится вположении 1.
В течениечетырех тактовимпульсы поступают в регистр,после чего ключРис. 5. Структурная схема кодерапереводится в положение 2. циклического кода, задаваемогоПриэтом43обратная связь замыкается. проверочным многочленом h(x) = x x Начиная с пятоготакта,формируются x2 1проверочныесимволы в соответствии ссоотношениями(9.16). После седьмого такта все проверочные символы оказываются сформированными,ключ вновь переключается в положение 1. Кодер готов к приему очередного сообщения.Символы кодовой комбинации поступают в канал, начиная с пятого такта.Корректирующая способность кода зависит от порождающего многочлена р(х).Поэтому его выбор очень важен при построении циклического кода.
Необходимо помнить,что степень порождающего многочлена должна быть равна числу проверочных символов.Кроме того, многочлен р(х) должен делить двучлен xn 1.Обнаружение ошибок при использовании таких кодов заключается в делениимногочлена b'(х) = b(x) + e(x), соответствующего принятой комбинации B% B e, на р(х).Если остаток s(x) оказывается равным нулю, то считается, что ошибки нет, в противномслучае фиксируется ошибка.Пусть необходимо построить код, обнаруживающий все одиночные ошибки. В этомгдеi=0,случаемногочленошибокимеетвиде(х)=хi,1, …, n – 1.
Решение задачи заключается в нахождении такого многочлена р(х), чтобымногочлен е(х) не делился на р(х). Наиболее простым, удовлетворяющим этомутребованию, является многочлен р(х) = х 1.Аналогично можно построить код, обнаруживающий ошибки большей кратности.Многочлен s(x) = (b(x) e(x)) mod (p(x)) = e(x) mod (p(x)) зависит только отмногочлена ошибок е(х) и играет ту же роль, что и вектор-синдром. Поэтому в принципеошибки можно исправлять на основе таблицы соответствий между е(х) и s(x), хранящейсяв памяти декодера, как при линейных нециклических кодах. Однако свойство цикличностипозволяет существенно упростить процедуру декодирования.Один из алгоритмов исправления ошибок основан на следующих свойствах синдромациклического кода. Пусть имеется циклический код с кодовым расстоянием d, исправляющийвсе ошибки до кратности l = [(d – 1)/2] включительно, где [(d – 1)/2] — целая часть числа (d– 1)/2.
Тогда можно показать [133], что:— если исправляемый вектор ошибок искажает только проверочные символы, то вессиндрома будет меньше или равен l, а сам синдром будет совпадать с вектором ошибок;— если вектор ошибки искажает хотя бы один информационный символ, то вессиндрома будет больше l;— если s(x) — остаток от деления многочлена b(х) на р(х), то остатком от делениямногочлена b(x)xi на р(х) является многочлен s(х)xi mod [p(x)], другими словами, синдромнекоторого циклического сдвига многочлена b(х) является соответствующим циклическимсдвигом синдрома исходного многочлена, взятого по модулю р(х).В качестве примера на рис. 9.27 представлена схема декодера для кода (7, 4) спорождающим многочленом p(x) = x3 x2 1.
Код имеет кодовое расстояние d = 3, чтопозволяет ему исправлять все однократные ошибки.Принятая кодовая комбинация одновременно поступает в буферный регистр сдвига,служащий для запоминания кодовой комбинации и ее циклического сдвига, и на устройстводеления на многочлен р(х) для вычисления синдрома. В исходном состоянии ключнаходится в положении 1. После семи тактов буферный регистр оказывается загруженным,а в регистре устройства деления будет вычислен синдром. Если вес синдрома большеединицы, то декодер начинает проводить циклические сдвиги комбинации в буферномрегистре при отсутствии новой комбинации на входе и одновременно вычислять ихсиндромы s(x)xi mod (p(x)) в устройстве деления. Если на некотором i-м шаге вес синдромаокажется меньше двух, то ключ переходит в положение 2, обратные связи в регистределения разрываются.
При последующих тактах ошибки исправляются путем подачисодержимого регистра деления на вход сумматора по модулю 2, включенного в буферныйрегистр. После семи тактов работы декодера в автономном режиме исправленнаякомбинация в буферном регистре возвращается в исходное положение (информационныесимволы будут занимать старшие разряды).Существуют и другие, более универсальные, алгоритмы декодирования.К циклическим кодам относятся коды Хэмминга, которые являются примераминемногих известных совершенных кодов. Они имеют кодовое расстояние d = 3 иисправляют все одиночные ошибки. Длина кода выбирается из условия 2n–k – 1 = n, котороеимеет простой смысл: число различных ненулевых синдромов равно числу символов вкодовой последовательности. Так, существуют коды Хэмминга (2r – 1, 2r – r – 1), вчастности коды (7, 4), (15, 11), (31, 26), (63, 57) и т.
д.Заметим, что ранее использованный многочлен p(x) = x3 x2 1 являетсяпорождающим для кода Хэмминга (7, 4).Рис. 6. Структурная схема декодера циклического кода спорождающим многочленом p(x) = x3 x2 1ПРАКТИЧЕСКАЯ ЧАСТЬ4. Описание программного обеспечения, используемого в работеЛабораторный стенд состоит из персонального компьютера с установленной на немсистемой компьютерной математики (СКМ) MATLAB версии не ниже R2009b.СКМ MATLAB R2009b имеет средства для анализа характеристик систем передачиинформации. Эти средства сведены в пакет Communications System Toolbox.
В частности,в этот пакет входит мастер построения характеристик помехоустойчивости системпередачи информации, носящий название Bit Error Rate Analysis Tool. Этот мастер можетбыть запущен командой bertool, набранной в командном окне СКМ MATLAB. Опишемосновные приемы работы с ним.На рис. 7 показан вид окна мастера Bit Error Rate Analysis Tool. Окно мастера имееттри вкладки: Teoretical, Semianalytic и Monte Carlo, в которых при моделированиивводятся исходные данные для расчета характеристик помехоустойчивости.
Лабораторнаяработа будет вестись во вкладке Teoretical.Рис. 7. Вид окна мастера построения характеристик помехоустойчивости BERToolРассмотрим назначение полей ввода исходных данных для расчета.В поле Eb/N0 range (dB) вводится диапазон изменения отношения энергии сигнала,приходящейся на один бит Eb, к спектральной плотности мощности белого гауссовскогошума N0 (в децибелах), в котором необходимо построить характеристикупомехоустойчивости.В поле Channel type выбирается вид канала, для которого необходимо построитьхарактеристику помехоустойчивости. Доступны следующие виды каналов: AWGN(Additive White Gaussian Noise) — канал, в котором действует только помеха типааддитивный белый гауссовский шум; Rayleigh — канал, в котором наряду с аддитивнымбелым гауссовским шумом действуют рэлеевские замирания; Rician — канал, в которомнаряду с аддитивным белым гауссовским шумом действуют райсовские замирания.Поле Modulation type позволяет выбрать вид модуляции сигнала (PSK (Phase ShiftKeying) — фазовая манипуляция, FSK (Frequency Shift Keying) — частотная манипуляция,QAM (Quadrature Amplitude Modulation) — квадратурная амплитудная манипуляция и т.п.).При этом в поле Modulation order указывается порядок манипуляции.
Если используетсяотносительная ФМ, необходимо отметить поле Differential encoding.При моделировании систем с частотной манипуляцией (FSK, MSK) в полеDemodulation type есть возможность выбрать вид приема (когерентный илинекогерентный).Ниже имеются поля, позволяющие моделировать системы, в которых используетсяпомехоустойчивое кодирование (Channel coding). Так, если отмечено поле None, этоозначает, что кодирование не используется, поле Convolutional означает использованиесверточного, а поле Block — блочного кодирования.Для некоторых наборов исходных данных доступны поля Synchronization,позволяющие задать настройки, учитывающие неидеальность работы системысинхронизации модема. Так, отметив поле Normalized timing error, можно задатьнормированную ошибку работы тактовой синхронизации (вводя значения от 0 до 0,5),которая представляет собой среднеквадратическое отклонение (СКО) момента началатакта, отнесенное к длительности символа.
При этом считается, что ошибка синхронизациираспределена по нормальному закону. В поле RMS phase noise (rad) задается ошибкаработы системы фазовой синхронизации в виде СКО фазы опорного генератора приемнойчасти модема, указанного в радианах. Эта ошибка также полагается нормальнораспределенной.При необходимости более подробно познакомиться с различными вариантамизадания исходных данных на моделирование, можно обратиться к описанию мастераBERTool, открыв меню Help в окне мастера.Построенные зависимости вероятности ошибки на бит (BER — bit error rate),появляются в отдельном окне, при этом в окне мастера в верхней части появляются строчкис описанием параметров построенных зависимостей. При построении каждой зависимостина графике присваивается имя по умолчанию.
Имя зависимости можно редактировать,дважды щелкнув левой кнопкой мыши в графе BER Data Set нужной строчки. Далеевведенное Вами имя зависимости будет отображаться и в легенде на графике.5. Порядок выполнения работыПоследовательность действий при выполнении практической часть работыследующая.1. Запустить MATLAB.2. В командном окне (Command Window) MATLAB набрать команду bertool инажать «Ввод». При этом откроется окно мастера построения характеристикпомехоустойчивости Bit Error Rate Analysis Tool (рис. 7).3. Руководствуясь приведенным выше описанием построить характеристикипомехоустойчивости для канала без замираний и без использования кодированиядля следующих видов манипуляции:— фазовой — ФМ-2 (с ОФМ-кодеком и без), -4, -8, -16 на одном графике;— амплитудно-фазовой — QAM-16, -32, -64, -256 на одном графике;— построить отдельный график, на котором сравнить ФМ-16 (PSK-16) и QAM16;— частотной — FSK-2 (со значением коэффициента взаимной корреляции 0), -4,-16, -32 при когерентном приеме;— построить отдельный график, на котором сравнить FSK-2 со значениямикоэффициента взаимной корреляции 0 и -0,21 при когерентном приеме и FSK2 со значением коэффициента корреляции 0 при некогерентном приеме.4.
Изучить влияние замираний на помехоустойчивость, для чего на одном графикепостроить кривые помехоустойчивости для ФМ-2 при отсутствии замираний ипри наличии рэлеевских замираний при одиночном приеме и с использованиемразнесенного приема на 2 и на 3 ветви (поле Diversity order).5. Изучитьвлияниеканальногокодированиянахарактеристикипомехоустойчивости. Для этого на одном графике построить зависимостивероятности ошибки для ФМ-2 в канале без замираний при отсутствиикодирования, при использовании кодов Хэмминга (7,4) и (31,26), прииспользовании сверточного кода с относительной скоростью ½ и длинойкодового ограничения 7 при использовании жесткого и мягкого правил принятиярешения (поля Hard и Soft соответственно).6.
Провести расчеты, аналогичные п. 5 для случая канала с рэлеевскимизамираниями при одиночном приеме.7. По графикам, построенным в п.п. 5 и 6 определить величину энергетическоговыигрыша,обеспечиваемогоиспользованиемразличныхвариантовпомехоустойчивого кодирования..