Преобразователи кодов. Использование ПЗУ в качестве преобразователя кодов, преобразователи двоично-десятичных кодов.
По определению преобразователем кодов является любое КЦУ. Поэтому синтез преобразователя кодов предусматривает выполнение всей последовательности действий характерный для КЦУ. Частным случаем преобразователей кодов являются шифраторы и дешифраторы, выполняющие преобразование десятичного кода в двоичный и обратно. Другим примером преобразователей кодов являются последовательно-параллельные регистры, осуществляющие преобразование последовательного кода в параллельный, и наоборот. Эти регистры нашли широкое применение в устройствах сопряжения (интерфейсах) различных элементов цифровых устройств.
В случае, когда выходные переменные определяются приблизительно состояниями входных переменных, где – число входных переменных (т.е. выходные переменные являются полностью определенными), а также если минимизация ФАЛ не обеспечивает получения требуемой длины МДНФ или МКНФ, то в качестве элементной базы КЦУ может быть использовано постоянное запоминающее устройство. Использование ПЗУ в качестве КЦУ позволяет сократить процесс проектирования, поскольку в этом случае достаточно знать только таблицу истинности комбинационного устройства, которую рассматривают как таблицу программирования ПЗУ.
Входным переменным КЦУ соответствуют входные адреса ПЗУ, а выходным переменным КЦУ – выходные данные ПЗУ. Поскольку осуществляется программирование ПЗУ сразу на основании таблицы истинности, то нет необходимости нахождения структуры КЦУ и ее минимального вида. Кроме того, поскольку реальная структура из базовых логических элементов при использовании ПЗУ отсутствует вовсе, то повышается быстродействие КЦУ на базе ПЗУ, которое сводится к времени выборки данных из микросхемы постоянной памяти.
По причине большого количества разновидностей кодов существует множество различных типов преобразователей кодов. Рассмотрим примеры некоторых типовых преобразователей кодов. Преобразование чисел, представленных в двоично-десятичной системе счисления, в двоичные числа и обратно выполняют преобразователи двоично-десятичных кодов.
Промышленностью выпускаются масочные ПЗУ для преобразователей двоично-десятичных кодов. Примером таких преобразователей могут служить микросхемы К155ПР6 и К155ПР7. Первая является преобразователем двоично-десятичного кода в двоичный (рисунок 20.1 а), а вторая – двоичного кода в двоично-десятичный (рисунок 20.1 б).
Микросхемы представляют собой постоянные запоминающие устройства, программирование которых произведено на заводе-изготовителе. Одна микросхема К155ПР6 позволяет преобразовать двоично-десятичный код чисел от 0 до 39 (входы 2,4,8,10,20) в двоичный выходы (2,4,8,16,32), а другая микросхема К155ПР7 – двоичный код чисел от 0 до 63 (входы 2,4,8,16,32) в двоично-десятичный (выходы 2,4,8,10,20,40).
Рассмотрим схемы включения микросхем ПР6 и ПР7 при увеличении разрядности преобразователей двоично-десятичных кодов. Поскольку младшие разряды двоично-десятичного и двоичного кодов соответствующих десятичных эквивалентов совпадают, то младший разряд передается мимо микросхем ПР6 и ПР7. Преобразование начинается со второго разряда. Возможно и дальнейшее наращивание разрядности путем каскадного соединения данных микросхем. Однако целесообразнее выполнить программирование прожигаемой ПЗУ согласно таблицы соответствия двоичных и двоично-десятичных чисел необходимой разрядности. Емкость прожигаемого ПЗУ и разрядность адресных входов и выходных слов должны быть достаточными для реализации системы ФАЛ необходимого преобразователя.
а
б
Рисунок 20.1 – Каскадное включение микросхем К155ПР6 и К155ПР7 при увеличении разрядности двоично-десятичных преобразователей: а – преобразователь двоично-десятичного кода чисел от 0 до 99 в двоичный; б – преобразователь двоичного кода чисел от 0 до 255 в двоично-десятичный; D1, D2 – К155ПР6; D3, D4, D5 – К155ПР7
Микросхема К155ПР6 позволяет также преобразовать двоично-десятичный код чисел от 0 до 9 в код дополнения до 9 (рисунок 20.2 а) и до 10 (рисунок 20.2 б). В качестве выходов кода дополнения используются выводы А, В и С микросхемы. В качестве входов двоично-десятичного кода используются выводы 2, 4, 8, 16. Сумма десятичных чисел, соответствующих входному и выходному кодамсхемы на рисунке 20.2 а, равна 9 (например, числу 6 дополнением до 9 является число 3), а схемы на рисунке 20.2 б – 10.
а б
Рисунок 20.2 – Преобразователь двоично-десятичного кода в код дополнения до 9 (а) и до 10 (б) D1, D2 – К155ПР6
Использование кодов дополнения позволяет осуществлять проверку правильности передачи данных по каналам связи (интерфейсам). В процессе пересылки данных на передающей стороне осуществляется передача самого кода числа, а затем кода его дополнения до некоторого значения (в нашем случае до 9 или до 10). На принимающей стороне осуществляется прием кодов как самого числа, так и его дополнения. Далее оба этих кода суммируются сумматором и проверяется, получилась ли сумма, равная значению числа, дополнение до которого осуществлялось на передающей стороне. Если полученная сумма равна значению этого числа, то передача данных прошла без ошибок. Если же сумма отличается от значения этого числа, то в процессе передачи произошел сбой и передачу необходимо повторить.