Джон Ф.Уэйкерли Проектирование цифровых устройств. Том I (2002) (1095889), страница 19
Текст из файла (страница 19)
2.11. Код Грея При использовании цифровой электроники в таких электромеханических системах, как механические станки, тормозные системы автомобилей и копировальные устройства, бывают нужны датчики положения в пространстве, вырабатывающие цифровые сигналы.
Парис.2.5 схематически изображен кодирующий диске набором контактов, позволяющих ему создавать одну из восьми 3-разрядных двоичных комбинаций в зависимости от угла поворота диска. Затемненные участки диска подсоединены к источнику сигнала, соответствующего логической 1, а светлые участки ни к чему не подсоединены, и поэтому сигнал, возникающий при контакте со светлым участком, интерпретируется как логический О. Рис. 2.0. Механический кодирующий диск, вырабатывающий 3-разрядный двоичный код У кодирующего устройства, изображенного парис. 2 5, возникают определенные проблемы при снятии сигналов вблизи границ между некоторыми областями. Рассмотрим, например, границу между областями диска 001 и О! О, на этой границе изменяются два бита в коде.
Какое значение будет вырабатывать кодер, если писк повернуть так, что контакты приходятся точно на теоретическую границу между этими областями? Поскольку мы находимся на границе, оба значения 001 и 010 приемлемы. Однако из-за того, что механический узел не совершенен, два правых контакта могут одновременно касаться областей «1», порождая ошибочное значение кода 011.
Точно так же на выходе кодера возможна комбинация 000. В общем случае такого рода проблема может возникнуть на такой границе, где меняется больше, чем один бит. Худший случай наступает тогда, когда изменяются все три бита, как это происходит на стыках 000-111 и 011-100, Проблему кодирующего диска можно решить, придумав цифровой код, у которого в каждой паре последовательных кодовых слов изменяется только олин бит. Такой код называется кодаи Грек (Сгау соЫе); в табл, 2 1О приведен 3-разрядный код Грея.
С конструируем заново кодирующий диск согласно этому коду, как показано парис. 2 6. На новом диске только один бит изменяется на каждой границе, так что вырабатываемые диском кодовые слова соответствуют значениям по одну или другуюсторону границы. Табл. 2.10. Сравнение 3- разрядного двоичного кода и кода Грея Десятичное число даончныя код Код Грея Рис. 2.6. Механический кодирующий диск, выра- батывающий 3-разрядный ход Грея Существует два удобных способа строить код Грея с любым желаемым числом битов. Первый метод основан на том, что код Грея является рефлексным (ге)!есгеЫ сок!е); его можно определить (и построить) рекурсивно по следующим правилам: 1.
В однобитовом коде Грея два кодовых слова: 0 и 1. 2. Первые 2" кодовых слов (и ч-1)-разрядного кода Грея равны кодовым словам и- разрядного кода Грея, записанным по порядку и дополненным 0 в старшем разряде. 3. Последние 2" кодовых слов (и ч-1)-разрядного кода Грея равны кодовым словам и-разрядного кода Грея, но записанным в обратном порядке и дополненным 1 в старшем разряде. Если провести черту между 3 и 4 строками в табл.
2.! О, то можно видеть, что для 3-разрядного кола Грея справедливы правила 2 и 3. Чтобы построить этим методом 78 Глава 2. Числовые системы и коды 000 001 010 О!1 100 1О1 110 111 000 001 011 010 110 111 101 100 й ! 3. Коды действий, условий и состояний гм и-разрядный код Грея для произвольного значения и, необходимо, конечно, построить также коды Грея для всех длин кодовых слов, меньших и. Второй метод позволяет получать и-разрядное кодовое слово кода Грея непосредственно нз соответствующею кодового слован-разрядного двоичного кода; 1.
Биты в и-разрядном кодовом слове двоичного кода или кода Грея нумеруются справа налево от 0 до п — 1. 2, 1-й бит в кодовом слове юдаГрея равен О, если 1-й и(1+!)-й биты в соответствующем слове двоичного юда одинаковы; в противном случае 1-й бит равен 1. (Есяи г+ ! = и, то и-й бит в слове двоичного кода принимается равным 0,) Обратившись снова к табл. 2.10, мы видим, что для 3-разрядного кода Грея зти правила выполнены. "2.12. Коды символов Как следует из предыдущего параграфа, строка битов не обязательно представляет собой число; в самом деле, большая часть информации, обрабатываемой компьютерами, не имеет числовой природы, Наиболее распространенным типом нечисловых данных является текст (гех!), то есть последовательность символов, выбираемых из неюторого множества.
Каждый символ представлен в компьютере строкой битов в соответствии с принятым соглашением. Чаще всего в качестве кода символов используется код АСС!! (Аглег!сап бгапг7агг! Сос(е !о«(п)окна!!оп!пгегейапйе, Американский стандартный код для обмена информацией; аббревиатура АБС!1 произносится так: АЯЯ Аеу). В коде АБСП каждый символ представлен строкой из 7 битов, что дает в целом 128 различных символов, приведенных в табл. 2.1! . Этот код содержит строчные и прописные буквы алфавита, числа, знаки пунктуации и различные не выводимые на печать управляющие символы.
Таким образом, строка текста «тессон !» выглядит как довольно безобидный набор из 7-разрядных двоичных чисел: 101100! 1100101 1100011 1!00011 11000!1 !101000 0100001. 2.13. Коды действий, условий и состояний В общем случае коды, рассматривавшиеся до сих пор, применяются для представления чего-то таюго, что мы могли бы считать «данными», такими как числа, указатели положения в пространстве и символы. Программистам известно, что в одной компьютерной программе могут присутствовать данные многих типов.
При проектировании цифровых систем мы часто встречаемся с приложениями, когдастрокабитов не носитхарактераданных, адолжнаслужитьдляуправления действием, для сигнализации о выполнении условия или для представления текущего состояния аппаратуры. Чаще всего, по-видимому, в таких приложениях применяется простой двоичный код.
Если имеется п различных действий, условий или состояний, то их можно представить двоичным кодом с числом битов в слове, равным Ь = ! 1о8 п1 (Скобки ! 1 означают каииеньшее целое, превосходягцее величину, заключенную в скобки, или равное этой величине (еег!!п8~ипсг!ол). Таким образом, Ь-это наименьшее целое,такоечто2 >и.) 80 Глава 2.
Числовые оиотевяы и коды Табл.2.11. КодАВСО. СтандартХЗ.4-1968Амариканокогонациональногоинсти- тутастандартов Ь,Ь,Е,1 беп! 011 100 101 110 111 3 4 б а 7 Строка в Ь,Ь Ь,Ь 16-ичноы коде 000 001 010 О 1 2 р сг 5 и ч х у ! ! ВЕЬ Управляющие коды РЬЕ Раса йп1с езсаре РС1 Рет!се сон!го! ! ХПЬ Хи!! ЕОН Згап о1Ьеаб!п8 8ТХ 81агс о11ехс ЕТХ Епс! оГгсх! СОТ Епд о1 ггапипйлоп ЕХО Епцгйгу АСК Ас!спочг1ес!8е ВЕЬ Вей В$ Вас1сзрасе НТ Нопхопга! гаЬ Пустой символ Начало заголовка Начало текста Конец текста Конец передачи Смена канала данных Управление устройством 1 Управление устройством 2 Управление устройством 3 Управленисустройством 4 Отрицатеяьное квитирование Синхронизация Конец передачи блока Аннулирование Конец носителя Замена Переход Разделитель файлов Разлелнтель групп Разделитель записей Разделитель зяемапов Уничтожить, стереть ВС2 Вот!сссоппо!2 ВСЗ Рет!сесоппо13 Запрос Подтверждение Звонок РС4 Рот!се соглго! 4 ХАК Хейаг!те ас!спост!едйе 8ЧХ Еупсйгоп!ге ЕТВ Епс! ггопзгл!пес! Ыос1с САХ Сапсе1 ЕМ Епс! оГглес!!игл ЕПВ ЯиЬзйги!е ЕБС Езсаре РЗ Р!1е зсрагагог ОЗ Огоир зерагагог ЕБ йесогд зерагасог 08 Ппй зерагагог ВЕЬ Ре!его ог гиЬои! Возврат Горизонтальнаята- буляция Перевод строки Вертикальная та- буляция Переход на новую страницу Возврат каретки Сдвиг с потерей данных Сдвиг с внесением данных Пробел ЬР 1ллс Гесс! ЧТ Ъегйса! гаЬ РГ Ропп Гееб Сй Сагт!айе геппп ЯО Янй оы 81 ЗЬ!й !и ЯР Брасе 0000 0001 0010 0011 0100 0101 0110 О!11 !000 !001 !010 1011 !100 1101 1110 11!1 0 1 2 3 4 5 6 7 8 А В С Р Е Г ХЬЬ ВЬЕ КОН РС1 8 ГХ РС2 ЕТХ 0СЗ ЕОТ РС4 ЕХО ХА К АСК ЗЧХ ВЕЬ ЕТВ В8 САХ НТ ЕМ ЬР ЕПВ ЧТ ЕЗС ГГ ГБ Сй 08 ЯО ЕЯ 8! ПЕ БР $ $ ! ) / О 8 Р 1 А 2 В а 3 с я 4 0 т 5 В 0 б Р Ч 7 0 Н 8 Н Х 9 1 'г' г 8 К < ! м > и ? О а Ь с сг е 1 Я Л Ь 3 1 лс и о 2.
13. Коды действий, условий и состояний 81 Рассмотрим в качестве примера контроллер простого светофора. Сигналы светофора на пересечении улин, идущнк с севера на юг (Ы-Е) и с востока на запад (Е-%), могут образовывать любую нз шести возможных комбинаций, перечисленных в табл. 2.12. Зти состояния светофора можно закодировать тремя битами, как показано в последнем столбце таблицы.