Это устройство в такте 14 первого этапа полностью заполнилось, а на втором этапе его работы начался циклический сдвиг записанной информации (таблица 2.3). Так в такте 1 единица из ячейки X8 информационных символов переместилась в ячейку X0 контрольных символов m. В такте 2 эта единица передвинулась в ячейку X1, а ее место в ячейке занял следующий нуль и т. д.
Таблица 2.3. Работа ЗУ декодера
Номер такта | Символы m | Символы k | ||||||||||||
X0 | X1 | X2 | X3 | X4 | X0 | X1 | X2 | X3 | X4 | X5 | X6 | X7 | X8 | |
141234567891011121314 | 110010000010011 | 111001000001001 | 011100100000100 | 001110010000010 | 100111001000001 | 010011100000000 | 001001110000000 | 000100111000000 | 000010011100000 | 000001001110000 | 100000100111000 | 010000010011100 | 001000001001110 | 100100000100111 |
Первые четыре нуля синдрома, поступающие на сумматор, не влияют на работу запоминающего устройства. Лишь в такте 9 единица синдрома, складываясь по модулю 2 с ошибочной единицей символов k (обозначена подчеркиванием), «уничтожают» её, т. е. исправляют ошибку. Регистр запоминающего устройства продолжает переключаться до окончания второго цикла (этапа) его работы. После такта 14 ключи К2 и К3 размыкаются, а ключи К1 и К4 замыкаются: начинается считывание исправленной комбинации и одновременная запись новой.
Таким образом, декодирование состоит их двух этапов. На первом этапе осуществляются нахождение остатка и запись кодовой комбинации, на втором — ее исправление и расстановка символов k и m на свои места.
Решатель кодера должен выполнять следующие задачи: обеспечить связь с передающим устройством, передачу сигналов задержек при исправлении ошибок и повторных передачах информации. Также должен выполнять свою основную функцию – приём сигнала продолжения. Структурная схема решателя приведена на рисунке 2.3.
Рис. 2.3. Сруктурная схема решателя кодера.
Рассмотрим все случаи более подробно.
1. Сообщение проходит без ошибок. Решатель принимает сигнал продолжения (F_NXT). Ключ Кр открывается и начинает поступать следующее сообщение. Так как длина сообщения составляет 9 символов, то в конце такта 9 ключ Кр размыкается, и на передающее устройство поступает сигнал ожидания посылки сообщения (WAIT14). Далее решатель начинает ожидать сигнал продолжения.
2. Сообщение прошло с ошибкой. Пусть искажение произошло только в одном символе. Тогда решатель на 14 такте не получает сигнал продолжения. Ключ Кр размыкается. Решатель посылает сигнал ожидания на передатчик в течение 14 тактов (этап 2). За это время искаженная комбинация исправляется, и с решателя декодера приходит сигнал продолжения, Кр замыкается.
3. Сообщение содержит более одной ошибки. Всё происходит аналогично пункту 2, за исключением того, что и после 14 такта второго этапа ожидания он не получает сигнал продолжения и ключ Кр остается разомкнутым. Тогда ещё в течение 14 тактов (этап 3) решатель посылает на передатчик сигнал ожидания (WAIT14), но на кодер посылается сигнал повтора сообщения из буфера (RPT_CODE).
Решатель декодера должен выполнять следующие функции: он должен после принятия сообщения декодером определить, есть ли ошибки в сообщении, если их нет, то отправить сигнал продолжения (F_NXT), в противном случае попытаться исправить ошибку и если ошибка не будет исправлена, то «отправить» сигнал повтора, вернее не отправить сигнал продолжения.
Структурная схема решателя декодера приведена на рисунке 2.4.
Определение ошибки заключается в нахождении остатка от деления R(X). Если остаток равен 0, в случае данной работы (00000), то сообщение было принято без ошибок, и посылается сигнал продолжения (F_NXT).
Если остаток будет иметь вес равный 1, то есть это следующие комбинации: 10000, 01000, 00100, 00010, 00001, тогда ошибка исправима, а значит не потребуется повтора передачи. После исправления ошибки будет послан сигнал продолжения.
Рис. 2.4. Сруктурная схема решателя декодера.
Если вес остатка будет больше 1, то исправление ошибки невозможно и решатель отправляет сигнал повтора (сигнал F_NXT = 0).
Входы R1…R5 подключаются к регистру делителя, а выходы (NXT, ERCOR) на блок коррекции ошибок.
Согласно технического задания кодер, декодер и решатели выполняются на ПЛИС (программируемые логические интегральные схемы). ПЛИС являются наиболее перспективными элементами, так как они вполне могут заменить десятки и сотни микросхем старых типов. Они может немного и уступают им по скорости, но в современных микросхемах этот недостаток практически устранен. Однако ПЛИС обладают огромным преимуществом перед обычными логическими схемами, что отражено в их названии «программируемые». Это означает, что теперь, легко производить модернизацию схем, так как при незначительной переработке какого-либо устройства, достаточно с помощью специального оборудования (программаторов) перезаписать ПЛИС. А при сборке на обычных элементах, может потребоваться полная переработка схемы, вплоть до изменения печатной платы и т.п., что значительно повысит расходы на перепроектирование схемы. Или легко будет в кодере/декодере использовать более сложные или наоборот более простые алгоритмы кодирования, в зависимости от помех, возникающих в линии связи.
Поэтому использование ПЛИС очень удобно в подобных системах передачи данных.
Ещё одним плюсом ПЛИС является компактность устройств, а также меньшее количество соединений на плате, что в свою очередь повышает надёжность устройства.
Важным достоинством ПЛИС является также создание собственных логических элементов на языках AHDL, VHDL и на уровне временных диаграмм. Например, решатель декодера был реализован именно на языке VHDL, текст программы которого приведен в приложении.
В данной работе были выбраны ПЛИС фирмы Altera. Кодер, декодер и решатели были смоделированы на ЭВМ с помощью специальной программы MAX+plusII фирмы Altera. Использование программы моделирования MAX+plusIIпозволило очень быстро спроектировать рабочие варианты кодера, декодера и решателей, а также смоделировать их работу.
Были выбраны следующие микросхемы: серии MAX 7000: EPM7032LC44-6 – на них реализован кодер и решатель, и серии MAX 9000: EPM9320LC84-15 – на ней реализован декодер и решатель. Для декодера была выбрана более «емкая» микросхема, так как, схема декодера гораздо сложнее схемы кодера, это также позволит в будущем реализовывать на ней и более сложные декодирующие устройства, например для кода с кодовым расстоянием более 5 (коды БЧХ), которые широко применяются в настоящее время, а кодер реализуется намного проще, что позволило применить менее «емкую» микросхему.
Выбор моделей микросхем.
Для реализации кодера, декодера и решателей нам понадобятся следующие элементы: ИЛИ (2, 3, 4, 6, 8, 12 входовые), И (2, 6 входовые), НЕ, 4-х разрядный счетчик типа 7493, двоично-десятичный дешифратор, D, RS и T – триггеры, 2-х входовое исключающее ИЛИ (XOR), решатель декодера, мультиплексор на 2 канала.
Опишем кратко каждый элемент.
1. ИЛИ. Выход равен 0, только когда все входы нулевые.
X1X2Y
000
011
101
111
2. И. Выход равен единице, только когда все входы равны 1.
X1X2Y
000
010
100
111
3. НЕ. Отрицание
X1Y
01
10
4. Счетчик.
Представляет собой двоичный четырехразрядный счетчик. Выход QA должен быть соединен со входом CLKB. CLKA подключается к генератору тактовых импульсов (ГТИ).
Счет Выходы
QAQBQCQD
00000
10001
20010
30011
40100
50101
60110
70111
81000
91001
101010
111011
121100
131101
141110
151111
Если RO1 и RO2 одновременно равны 1, то происходит сброс счетчика в 0, при любых других комбинациях RO1 и RO2 счетчик будет считать.
5. Двоично-десятичный дешифратор 4 входа – 16 выходов.
Входы A, B, C, D, выходы Q0-Q15. Преобразует двоичный код в десятичный.
ВходыВыходы
D C B A Q15 Q14 Q13 Q12 Q11 Q10 Q9 Q8 Q7 Q6 Q5 Q4 Q3 Q2 Q1 Q0
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0
0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0
0 1 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0
0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0
0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0
1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0