Перед тем как попасть непосредственно на шифратор информация проходит через счётчик битов СТ2, (показан на рисунке 3), который сравнивает код на входах С0 – С4 с числом тактов, в течение которого принимается слово, причёмподсчет битов ведется по модулю п+4 (n – число битов), так как слово включает синхроимпульс и бит четности. Также перед шифратором находятся счетчики/делители, организованные по обычной схеме и реализуемые на основе одного (Т6) и трех (T7—T9) триггеров (соответственно DIV2 и DIV6 – показан только на рисунке 3).
Схема шифратора (построена на триггерах Т10—Т16) подстраивает фазу передаваемых сигналов к частоте 2f, принимаемой по входу FI, и синхрочастотой СI стробирует ввод данных с входа DI; код «Манчестер-2» выдается на выходы DO0, DO1. Сигнал STзаведен на выходные элементы, стробирующие выдачу информации. Триггер Т10 включен по схеме счетчика и накапливает сумму передаваемого кода по четности или нечетности в зависимости от полярности сигнала PS.
Несложно заметить, что данная схема, как и другие найденные аналоги, избыточна и чрезмерно сложна, по сравнению с устройством, которое необходимо разработать по техническому заданию.
Рисунок 1.3 – Функциональная схема кодирующей части К588ВГ3
Это объясняется тем, что эти БИС являются не просто кодерами Манчестера-2, полноценными блоками бита/слова входящими в состав любого терминала САУ выполняя функции шифрации/дешифрации информации в формате слов определенных стандартом, формирует синхроимпульсы, генерирует бит четности, обнаруживает при приеме ошибки кода и четности слова. Поэтому эффективней самостоятельно создать кодирующую схему, чем вычленять необходимые компоненты из блока CDM БИС КДК К588ВГ3.
Для этого подробней рассмотрим суть Манчестерского кодирования. В Манчестерском коде для кодирования единиц и нулей используется перепад сигнала, то есть фронт импульса. Каждый такт делится на две части. Информация кодируется перепадами потенциала, происходящими в середине каждого такта. Единица кодируется перепадом от низкого уровня сигнала к высокому, а ноль – обратным перепадом (хотя существует стандарт Манчестера-2, где наоборот единица кодируется переходом от высокого к низкому уровню, а ноль - соответственно от низкого к высокому). В начале каждого такта может происходить служебный перепад сигнала, если нужно представить несколько единиц или нулей подряд. Графически это представлено на рисунке 1.4.
Рисунок 1.4 – Представление сигнала в коде Манчестер-2
Так как сигнал изменяется по большей мере один раз за такт передачи одного бита данных, то манчестерский код обладает хорошими самосинхронизирующими свойствами. У него нет постоянной составляющей, а основная гармоника в худшем случае (при передаче последовательностей нулей и единиц) имеет частоту N Гц, а в лучшем (при передаче чередующихся единиц и нулей) – N/2 Гц. Поскольку отсутствие высокого или низкого уровня в течение всего интервала бита недопустимо, появление таких ситуаций может свидетельствовать об ошибке. Ложное декодирование («1» →«0» или «0» → «1») в манчестерском коде может произойти только тогда, когда из-за помехи инверсия логических уровней будет иметь место в каждой половине интервала одного бита, однако вероятность одновременной инверсии фазы в пределах одного бита невелика.
Из всего вышесказанного можно прийти к следующим выводам:
1. Чтобы преобразовать последовательный двоичный код (он представляет собой потенциальный код, где единица кодируется высоким уровнем сигнала, а ноль низким уровнем сигнала, причём состояния меняются на границе тактов) в Манчестер-2 кодер должен выполнять 4 типа операций:
а) При низком уровне в такте входящего кода (кодирование логического нуля), создать в исходящем коде перепад с высокого уровня на низкий в середине такта;
б) При высоком уровне в такте входящего кода (кодирование логического единицы), создать в исходящем коде перепад с низкого уровня на высокий в середине такта;
в) При кодировании двух и более подряд идущих логических нулей, обеспечить подъём сигнала с нижнего на верхний уровень на границе тактов (чтобы на следующем такте можно было выполнить операцию а));
г) При кодировании двух и более подряд идущих логических единиц, обеспечить переход сигнала с верхнего на нижний уровень на границе тактов (чтобы на следующем такте можно было выполнить операцию б));
2. Кроме сигнала последовательного двоичного кода для кодирования Манчестера-2 необходимо два вида синхросигнала:
а) Синхросигнал, синхроимпульсы в котором приходятся на начало каждого такта. Обозначим его как SYNCB (от англ. сокращения SYNC – synchronizingsignal(синхронизирующий сигнал) и B – boundary (граница));
б) Синхросигнал, синхроимпульсы в котором приходятся на середину каждого такта. Обозначим его как SYNCM (от англ. M – middle (середина)).
Согласно техническому заданию синхросигналы внешние, что существенно упрощает разработку устройства, в виду избавления от необходимости проектировать генератор синхросигнала и решать проблему с подстройкой синхрочастоты.
Итак, определив конкретный круг задач, приступим непосредственно к созданию функциональной схемы проектируемого устройства. Начнём проектировать «с конца», т.е. с конечных элементов устройства. Очевидно, что внутри устройства логические элементы будут работать на кратковременных импульсах, однако сигнал выходящий из устройства в коде Манчестер-2, должен обладать высоким уровнем в течении необходимого по протоколу кода времени (такт или полтакта). Следовательно, надо использовать цифровое устройство способное при получении кратковременного импульса на вход подавать длительный сигнал на выход. В качестве такого устройства используем асинхронный RS-триггер.
Асинхронного RS-триггер обладает двумя информационными входами: S – По которому производится установка триггера в состояние логической «1» и R - по которому производится установка триггера в состояние логического «0». Следовательно, на вход S мы будем подавать сигналы, соответствующие подъему сигнала в Манчестерском коде с низкого уровня на высокий. А так как такой подъём происходит в Манчестерском коде либо при кодировании логической единицы (тогда он происходит в середине такта), либо при кодировании двух и более нолей расположенных непосредственно друг за другом (тогда в начале такта), то на вход S будет работать блок элементов, формирующий именно эти сигналы. И соответственно для информационного входа R мы создадим структуры формирующие сигналы, соответствующие переходу Манчестерского кода с высокого уровня на низкий (случай кодирования логического ноля – в середине такта или последовательности единиц – в начале такта).
Для того чтобы сформировать импульс для входа S, который будет приходиться на границу тактов и обозначать служебный переход с низкого уровня на высокий, используем двухвходовый логический элемент «И». На один из его входов подадим синхросигнал SYNCB (потому что его синхроимпульсы как раз приходятся на границу тактов), а на другой вход - инвертированный последовательный двоичный код. На выходе из логического элемента «И» получим импульсы равные по длительности синхроимпульсам и располагающиеся только в тех тактах, в которых входящий в устройство последовательный двоичный код имеет низкий уровень, то есть кодирует логический ноль. Работа этого узла изображена на рисунке 1.5, где - это инвертированный последовательный двоичный код, SYNC B – синхросигнал, а нижняя кривая показывает результат логического умножения этих двух сигналов.Рисунок 1.5 –
Для получения на вход S импульса, устанавливающего триггер в состояния логической единицы и соответствующего моменту кодирования единицы в Манчестере-2, т.е. располагающегося в середине такта, используем элемент «И», к входам которого подключаем последовательный двоичный код, на этот раз не инвертированный, и синхросигнал SYNC M. На выходе получаем в середине каждого такта, в котором последовательный двоичный код обладает высоким уровнем сигнал по длительности равный синхросигналу. Этот процесс визуализирован на рисунке 1.6.
Рисунок 1.6 –
Чтобы оба полученных на элементах «И» сигнала попали на информационный вход триггера S, складываем их посредством логического элемента «ИЛИ».
Практически такой же блок элементов необходимо подключить к входу R. В него также включены 2 элемента «И» и один «ИЛИ», а также элемент «НЕ» для инвертирования ПДК. Отличие заключается в том, что инвертированный ПДК логически перемножается с синхросигналом SYNCM, а не с SYNCB, как в предыдущем случае. Таким образом, мы получаем сигнал, вызывающий переключение триггера в состояния логического ноля в середине такта, в результате на выходе Q триггера в манчестерском коде происходит переход с высокого уровня на низкий в середине такта.