По определению и по сути преобразователем кодов является любое КЦУ. Поэтому синтез преобразователя кодов предусматривает выполнение всех последовательностей действий, рассмотренных в четвертой теме. Частным случаем преобразователей кодов являются шифраторы и дешифраторы, выполняющие преобразование десятичного кода в двоичный и обратно. Другим примером преобразователей кодов являются последовательно-параллельные регистры, осуществляющие преобразование последовательного кода в параллельный и наоборот. Эти регистры нашли широкое применение в устройствах сопряжения (интерфейсах) различных элементов цифровых устройств.
В случае, когда выходные переменные определяются приблизительно 2n состояниями входных переменных, где n – количество входных переменных (т.е. выходные переменные являются полностью определенными), а также, если минимизация ФАЛ не обеспечивает получения требуемой длины МДНФ или МКНФ, то в качестве элементной базы КЦУ может быть использовано постоянное запоминающее устройство. Использование ПЗУ в качестве КЦУ позволяет сократить процесс проектирования, поскольку в этом случае достаточно знать только таблицу истинности комбинационного устройства, которую рассматривают как таблицу программирования ПЗУ. Входным переменным X0 — Xn-1 КЦУ соответствуют входные адреса A0 — An-1 ПЗУ, а выходным переменным Y0 — Ym-1 КЦУ – выходные данные D0 – Dm-1 ПЗУ. Поскольку осуществляется программирование ПЗУ сразу на основании таблицы истинности, то нет необходимости нахождения структуры КЦУ и ее минимального вида. Кроме того, поскольку реальная структура из базовых логических элементов при использовании ПЗУ отсутствует вовсе, то повышается быстродействие КЦУ на базе ПЗУ, которое сводится к времени выборки tв данных из микросхемы постоянной памяти.
По причине большого количества разновидностей кодов, существует множество различных типов преобразователей кодов. Рассмотрим примеры некоторых типовых преобразователей кодов. Преобразование чисел, представленных в двоично-десятичной системе счисления, в двоичные числа и обратно выполняют преобразователи двоично-десятичных кодов. Соответствие двоичных и двоично-десятичных кодов для первых двадцати десятичных чисел задается таблицей 1.1 из первой темы. Очевидно, что реализация подобного преобразователя стандартным методом использования базовых логических элементов требует значительных аппаратных затрат из-за громоздкого вида описывающей его работу системы ФАЛ.
Промышленностью выпускаются масочные ПЗУ для преобразователей двоично-десятичных кодов. Примером таких преобразователей могут служить микросхемы К155ПР6 и К155ПР7. Первая является преобразователем двоично-десятичного кода в двоичный, а вторая – двоичного кода в двоично-десятичный. Микросхемы представляют собой постоянные запоминающие устройства, программирование которых произведено на заводе-изготовителе. Одна микросхема К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 при увеличении разрядности преобразователей двоично-десятичных кодов. На рис. 7.1,а показан пример преобразователя двоично-десятичного кода чисел от 0 до 99 в двоичный, а на рис. .1,б – пример преобразователя двоичного кода чисел от 0 до 255 в двоично-десятичный. Поскольку младшие разряды 20 двоично-десятичного и двоичного кодов соответствующих десятичных эквивалентов совпадают, то младший разряд передается мимо микросхем ПР6 и ПР7. Преобразование начинается со второго разряда. Возможно и дальнейшее наращивание разрядности путем каскадного соединения данных микросхем. Однако целесообразнее выполнить программирование прожигаемой ПЗУ согласно таблицы соответствия двоичных и двоично-десятичных чисел необходимой разрядности. Емкость прожигаемого ПЗУ и разрядность адресных входов и выходных слов должны быть достаточными для реализации системы ФАЛ необходимого преобразователя.
Рис. 7.1. Каскадное включение микросхем К155ПР6 и К155ПР7 при увеличении разрядности двоично-десятичных преобразователей.
Микросхема К155ПР6 позволяет также преобразовать двоично-десятичный код чисел от 0 до 9 в код дополнения до 9 (рис. 7.2,а) и до 10 (рис. 7.2,б). В качестве выходов кода дополнения используются выводы A, B и C микросхемы. В качестве входов двоичного-десятичного кода используются выводы 2, 4, 8, 16. Сумма десятичных чисел, соответствующих входному и выходному кодам схемы рис. 7.2,а, равна 9 (например, числу 6 дополнением до 9 является число 3), а схемы рис. 7.2,б – 10.
Использование кодов дополнения позволяет осуществлять проверку правильности передачи данных по каналам связи (интерфейсам). В процессе пересылки данных на передающей стороне осуществляется передача вначале самого кода числа, а затем кода его дополнения до некоторого значения (в нашем случае до 9 или до 10). На принимающей стороне осуществляется прием кодов как самого числа, так и его дополнения. Далее оба этих кода суммируются сумматором и проверяется, получилась ли сумма равной значению числа, дополнение до которого осуществлялось на передающей стороне. Если полученная сумма равна значению этого числа, то передача данных прошла без ошибок. Если же сумма отличается от значения этого числа, то в процессе передачи произошел сбой и передачу необходимо повторить.