Преобразователь двоичного кода в двоично-десятично- шестидесятиричный код
Ф \ и)в-т и;ф - и,н л,, «сна»,, Éá йфйВн,а M fa й
О С И Е
ИЗОБРЕТЕН ИЯ
К АВТОРСКОМУ СВИДЕТЕЛЬСТВУ
Союз Советских
Социапистических
Республик ()767749
Ф с; (61) Дополнительное к авт. свид-ву —.. (22) Заявлено 04.12.78 (21) 2690979/18-24 с присоединением заявки №вЂ” (23) Приоритет— (51) М. Кл.
G 06 F 5/02
Государственный комитет
СССР (53) УДК 681.325 (088.8) Опубликовано 30.09.80. Бюллетень № 36
Дата опубликования описания 05.10.80 ло делам изобретений и открытий (72) Авторы изобретения
В. Г. Бердышев и Е. П. Козьмина (71) Заявитель (54) ПРЕОБРАЗОВАТЕ,ЛЬ ДВОИЧНОГО КОДА
В ДВОИЧНО-ДЕСЯТИЧНО-ШЕСТИДЕСЯТИРИЧНЫЙ КОД
Изобретение относится к области автоматики и цифровой вычислительной техники и может быть использовано при построении двоично-десятичных преобразователей.
Известен двоично-десятичный преобразователь, содержащий входной регистр, информационные входы которого подключены к входным шинам, генератор импульсов, выходной сумматор, выходы которого соединены с выходными шинами, дешифратор, переключатель эквивалентов, один из выходов которого соединен с управляющим 1О входом выходного сумматора, элемент И, соединенный входами с генератором тактовых импульсов и дешифратором, дешифратор нуля; связанный с выходами входного ре= гистра, последовательно соединенные блок анализа, формирователь адреса и накопи15 тель, дешифратор, подключенный входами к накопителю, а выходами — к блоку анализа и формирователю адреса, переключатель эквивалентов, связанный с выходным регистром и формирователем адреса, соединенным 20 с выходом элемента И, причем входы блока анализа соединены с выходами входного регистра, а выходы накопителя — со входами выходного сумматора (1).
Недостаток этого преобразователя состоит в большом количестве и неполной загрузке оборудования, так как в накопителе необходимо хранить весовые коэффициенты для каждого типа преобразования. Например, для преобразования двоичного кода в двоично-десятичный требуются одни весовые коэффициенты, а для преобразования двоичного кода в двоично-десятично-шестидесятиричный — другие, а одновременно может осуществляться только один тип преобразования.
Таким образом, в данном преобразователе расширение функциональных возможностей достигается за счет увеличения емкости накопителя.
Наиболее близким к изобретению по технической сущности и схемному решению является преобразователь двоичного кода в двоично-десятично-шестидесятиричный код, содержащий регистр сдвига, информационные входы которого и его выходы соединены соответственно с входными и выходными шинами преобразователя, корректируемую тетраду, дешифратор коррекции и блок коррекции (2).
767749
Недостаток этого преобразователя заключается в возможности преобразования двоичного кода в двоично-десятично-шестидесятиричный код времени или угла только в том случае, когда вес младшего разряда двоичного кода равен весу младшего разряда выходного кода.
Цель изобретения — расширение класса решаемых задач, заключающееся в обеспечении преобразования с масштабированием.
Поставленная цель достигается за счет того, что в преобразователь двоичного кода в двоично-десятично-шестидесятиричный код, содержащий регистр сдвига, информационные входы которого и его выходы соединены соответственно с входными и выходными шинами преобразователя, корректируемую тетраду, дешифратор коррекции и блок коррекции, введены блок сумматоров, реверсивный регистр сдвига и коммутатор, информационные входы которого соединены с выходами дешифратора коррекции и блока коррекции, а выход коммутатора соединен с информационным входом корректируемой тетрады, вход которой связан с выходом реверсивного регистра сдвига. Информационный выход корректируемой тетрады соединен со входами дешифратора коррекции и блока коррекции, а выход старшего разряда корректируемой тетрады — со входом регистра сдвига и с первым входом реверсивного регистра сдвига, второй вход которого соединен с выходом блока сумматоров, входами связанного с соответствующими выходами регистра сдвига. Управляющие входы коммутатора, регистра сдвига и реверсивного регистрз сдвига подключены соответственно к шинам вида преобразования, разрешения сдвига вправо и разрешения сдвига влево.
ЗЗ
Кроме того, блок сумматоров состоит из первого, второго, третьего и четвертого сумматоров, первого, второго, третьего и четвертого элементов памяти, входы которых соединены с выходами переноса соответст- 4 вующих сумматоров, входы переноса которых соединены с выходами соответствующих элементов памяти, первый, второй и третий элементы НЕ, пятый элемент памяти и пятый сумматор, входы которого связаны соответственно с выходами второго сумматора, первого и третьего элементов НЕ. Первый выход пятого сумматора является выходом блока сумматоров, а выход переноса через второй элемент НЕ соединен с входом пятого элемента памяти, выход которого подключен к входу третьего элемента НЕ. Первые входы второго и четвертого сумматоров соединены с выходами первого и третьего сумматоров, первые и вторые входы первого и третьего сумматоров, а также вторые входы второго и четвертого сумматоров являются входами блока су м м аторо в.
Блок-схема предлагаемого преобразователя приведена на фиг. 1; блок-схема одного из вариантов построения блока сумматоров — на фиг. 2.
Преобразователь кодов содержит регистр 1 сдвига, блок 2 сумматоров, реверсивный регистр 3 сдвига, корректируемую тетраду 4, дешифратор 5 коррекции, блок 6 коррекции, коммутатор 7, входные шины 8, выходные шины 9, шины 10 вида преобразования, шину 11 разрешения сдвига вправо, шину 12 разрешения сдвига влево.
Блок сум м а торов соде рж ит (с м. фи г. 2) сумматоры 13 — 17, элементы 18 — 22 памяти (например, триггеры), элементы НЕ 23 — -25.
Соответствующие выходы регистра 1 сдвига подключены к первым входам сумматоров 14, 16 и к входам сумматоров 13, 15 выходы суммы которых соединены со вторыми входами сумматоров 14, 16 соответственно, причем между выходами и входами переноса сумматоров 13 — 16 включены элементы 18 — 21 памяти соответственно, а выход. переноса сумматора 17, связанного входами с выходом суммы сумматора 14 и через элемент НЕ 23 с выходом сумматора 16, подключен к входу элемента НЕ 24, соединенного через элемент 22 памяти и элемент
НЕ 25 с входом переноса сумматора 17, выход которого связан с входом реверсивного регистра 3 сдвига.
Предлагаемый преобразователь работает следуюшим образом.
Сначала производится установка в исходное состояние, затем входной двоичный код по шине 8 поступает в регистр 1 сдвига.
Для выполнения преобразования методом сдвига и коррекции записанный в регистр 1 сдвига двоичный код умножается на угловой вес единицы младшего разряда, который определяется по формуле
К 360оОГООз
Ф3 где К вЂ” угловой вес единицы младшего разряда входного двоичного кода; к — количество разрядов во входном двоичном коде.
Например, если входной двоичный код имеет двадцать разрядов, т. е. и- = 20, то угловой вес единицы его младшего разряда равен о = 1 2359619140625
Тогда двоичный код количества секунд измеренного угла определяется следующим образом: А = К.В, где А — двоичный код количества секунд измеренного угла;  — входной двоичный код.
Угловой вес единицы младшего разряда представляется в следующем виде:
К = 1 + 0,2359619140625 = 1 1- — — — 0,01403808509375 = 1 + gz — (0,015625—
767749
5 — 0,0015869140625) - 1 + Д- — (- — — 0,0015869140625) = 1 + + — а +
+ (0,001953125 — 0,0003662109375) = 1 +
10000001111000!)!000 !0
+ 1 0000001 1 1 1 000 1 1 )< "
1000000!!!! .
1010001010011101010100 + — 0,0003662109375 = 1 + ——
- — (0,000244 140625 +
1220703125) = 1 -11 12.
+ 0,000
Тогда двоичный код количества секунд измеряемого угла определяется по формуле
А = (1 + + )  — В(— +, + ) .
10000001111000111000
100000011110001110
10000001111
10100010100111010101
10000001111000
+ 10000001
1000000
10000100111001
10100010100111010101
10000100111001
10100000100010011100
Получившееся количество секунд А =
= 657564 " на 3 " больше истинного значения.
Причиной ошибки является отбрасывание при суммировании младших разрядов сдвинутых двоичных кодов. Для уменьшения ошибки отбрасывания, которая при наихудшем сочетании нулей и единиц во входном двоичном коде не превышает 3", необходимо производить суммирование с учетом старших отбрасываемых разрядов. Например, при суммировании с двумя старшими отбрасываемыми разрядами величина ошибки не превышает 1 ".
Умножение двоичного кода числа на коэффициент эквивалентно сдвигу кода числа на ь разрядов вправо, т. е. в сторону младших разрядов, поэтому умножение для 2е получения значения величины А заменяется алгебраическим суммированием входного кода с кодами, сдвинутыми на ьразрядов.
Пусть, например, число В =
= 10000001111000111000 в двоичном коде, что соответствует углу 182 39 21" = 657561".
В результате алгебраического суммирования двоичного кода числа В со сдвинутыми на 2, 6, 9, 12. 13 разрядов вправо кодами этого же числа получается число А.
1000000111100011
1000000111
100000011
1000010011101101
1000010011101111
1010000010001001100111
После записи входного двоичного кода в регистре 1 сдвига управляющим сигналом, поступающим по шине 11, разрешается сдвиг содержимого регистра вправо, а на выходе блока 2 сумматоров, входы которого связаны с выходами нулевого, второго, шестого, девятого, двенадцатого и тринадцатого разрядов регистра сдвига, формируется младший разряд суммы. Коды положительных и отрицательных чисел суммируются отдельно на сумматорах 13, 14 и 15, 16 соответственно.
Получившиеся в результате сложения переносы запоминаются на элементах 18 — 21 памяти. Операция вычитания заменяется сложением уменьшаемого с дополнительным кодом вычитаемого. Дополнительный код двоичного числа равен обратному коду, увеличенному на единицу. На входы сумматора 17 поступает прямой код уменьшаемого с выхода сумматора 14 и обратный код вычитаемого с выхода элемента НЕ 23, на вход которого он подается с выхода сумматора 16. Добавление единицы к обратному коду вычитаемого осуществляется подачей единичного потенциала на вход переноса сумматора 17 с выхода элемента НЕ 25, инвертирующего выходной сигнал элемента
22 памяти, перенос на вход которого поступает с выхода сумматора 17 через элемент
НЕ 24. Через время, необходимое для формирования младшего разряда алгебраической суммы, производится сдвиг содержимого регистра 1 сдвига и реверсивного регистра 3 сдвига на 1 разряд вправо. При этом младший разряд суммы переписывается в реверсивный регистр 3 сдвига, а в блоке 2 сумматоров производится формирование следующего разряда суммы сложением 1, 3, 7, 10, 13, 14 разрядов входного кода.
При сложении учитываются сигналы переноса, поступающие с выходов элементов 18 — 21 памяти на входы переноса сумматоров 13 — 16. Элемент 22 памяти подключен через элементы НЕ 24, 25 к сумматору 17, на вход переноса которого поступает дважды проинвертированный сигнал переноса от предыдущего суммирования.
При сдвиге содержимого регистров 1 и 3 второй разряд суммы записывается в ревер767749
ФО
1» сивный регистр 3 сдвига, а на выходе блока 2 сумматоров формируется следующий разряд.
Процесс суммирования заканчивается за й+т.тактов, где и.— количество разрядов входного двоичного кода, тн. — количество дополнительных разрядов регистра 1 сдвига, необходимых для уменьшения ошибки, возникающей при отбрасывании млчдших разрядов сдвинутых кодов.
После окончания суммирования сигналом, поступающим по шине 12, разрешается сдвиг содержимого реверсивного регистра 3 сдвига влево, т. е. информация из него выводится старшими разрядами вперед в корректируемую тетраду 4 для осуществления преобразования двоичного кода количества секунд в двоично-десятично-шестидесятиричный код градусов, минут и секунд методом сдвига и коррекции.
Метод сдвига и коррекции для преоб""разования двоичного кода в двоично-десятичный заключается в том, что исходное двоичное число последовательно умножается на 2 (путем сдвига на 1 разряд в сторону старших разрядов), т. е. выводится из реверсивного регистра 3 сдвига в корректируемую тетраду 4 старшими разрядами вперед. Содержимое корректируемой тетрады 4
"после каждого сдвига сравнивается с опре- деленными числами в дешифраторе 5 коррекции и блока 6 коррекции, которые формируют скорректированные коды, записываемые вновь в корректируемую тетраду 4 через коммутатор 7, если содержимое тетрады превышает некоторое фиксированНое число.
Для получения двоично-десятичного кода десятков минут и секунд в блоке 6 коррекции производится сравнение записанного в корректируемой тетраде кода с числом два.
Если содержимое тетрады больше этого числа, то производится коррекция путем добавления числа 5 к корректируемому коду.
В дешифраторе 5 коррекции содержимое корректируемой тетрады 4 сравнивается с числом 4 и в случае превышения осуществляется коррекция путем добавления числа 3 к корректируемому коду, т. е. происходит преобразование двоичного кода в двоично-десятичный.
В таблице приведен пример преобразования двоичного кода, количества секунд
101011000110, которому соответствует угол
45 58" в двоично-десятично-шестидесятиричном коде.
В течение первых трех тактов производится сдвиг из реверсивного регистра 3 сдви "га в корректируемую тетраду 4, при этом в освобождающиеся при сдвиге разряды. переписывается содержимое корректируемой
8 тетрады 4. После третьего такта осуществляется коррекция и содержимое корректируемой тетрады 4 увеличивается на 3. В первом цикле преобразования получается двоично-десятичный код единиц секунд, поэтому под действием управляющего сигнала, поступающего по шине 10, коммутатор 7 пропускает информацию только с выхода дешифратора 5 коррекции.
После двенадцатого такта, когда из реверсивного регистра 3 сдвига переписался последний разряд двоичного кода количества секунд, управляющими сигналами, поступающими по шинам 10, 12, закрывается коммутатор 7 и запрещается сдвиг в реверсивном регистре 3, а содержимое тетрады 4 последовательным кодом переписывается в регистр 1.
После этого начинается следующий цикл преобразования; в котором формируется двоично-десятичный код десятков секунд. рр Этот цикл также состоит из 12 тактов, только коммутатор 7 открыт для информации, поступающей с выхода блока 6 коррекции. Преобразование заканчивается за 4 цикла, в регистре 1 сдвига сформировалось число
0100 0101 0101 1000, соответствующее углу 45 58", записанное в двоично-десятичном коде.
Число циклов преобразования определяется разрядностью входного двоичного кода. Для двадцатиразрядного двоичного зе входного кода требуется, например, 7 циклов.
Преобразование двоичного кода в двоично-десятичный в предлагаемом устройстве осуществляется поступающим по шине 10 управляющим сигналом, который открывает коммутатор 7 только для сигналов с выхода дешифратора 5 коррекции, при этом последовательный двоичный код может поступать на вход корректируемой тетрады 4, а параллельный — записываться в реверсивный регистр 3 сдвига.
Преобразование -двоичного кода коли- . чества секунд времени выполняется аналогично преобразованию двоичных кодов количества секунд угла, Предлагаемый преобразователь кодов позволяет осуществить преобразование двоичного кода в двоично-десятичный и двоичного кода времени или угла в двоичнодесятично-шестидесятиричный код, но по сравнению с преобразователем (2) его функции расширены за счет возможности преоб разования двоичного кода угла или времени в тех случаях, когда «вес» единицы младшего разряда входного двоичного кода не равен «весу» единицы младшего разряда двоична-десятично-шестидесятиричного кода.
767749
ОООО .101011000110
0001
0010
3 0101 кор+3 1000
4 0000
0001
000110000100 3 7 0001 1011010000000
1 б
0011
0110 кор.+3 1001
0010
0100
1001 кор+3 1100
11 1001 кор+3 1100
12 1000
000100010011Запись 0000 в регистр сдвига
0000 000000000100
Запись в регистр сдвига
110001100001
100011000010
00110000100 0
011000010001
000010001001
000010001001
000100010011
0000 00000010110
1 0000 000001011010
2 0000 000010110100
3 0000 000101101000
4 0000 001011010000
5 0000 010110100000 б 0000 101101000000
8 0010 110100000000
9 0101 101000000000 кор+3 1000 101000000000
10 0001 010000000001
11 0010 100000000010
12 0101 000000000100
767749
010011000000 4
100110000001
011000000101
011000000101
110000001011
000000101101 0000
0000
0000
0001
0010
0100
2 кор+5
1001
0010
0101 кор+5
1010
0100 кор+5
1001
0010
0101
1010 кор+5
0101
За- 0000 пись в регистр сдвига
000000000000
000000101101
0000
Запись в регистр сдвига сумматоров, реверсивный регистр сдвига и коммутатор, информационные входы которого соединены с выходами дешифратора коррекции и блока коррекции, а выход коммутатора соединен с информационным входом корректируемой тетрады, вход которой соединен с выходом реверсивного регистра сдвига, информационный выход корректив руемой тетрады соединен со входами дешифратора коррекции и блока коррекции, а выход старшего разряда корректируемой тетрады соединен со входом регистра сдвига и с первым входом реверсивного регистра
Формула изобретения
1. Преобразователь двоичного кода в двоично-десятично-шестидесятиричный код, содержащий регистр сдвига, информационные входы которого и его выходы соединены "соответственно с входными и выходными шинами преобразователя, корректируемую тетраду, дешифратор коррекции и блок коррекции, отличающийся тем, что, с целью расширения класса решаемых задач, заключающееся в обеспечении преобразования с масштабированием, в него введены блок
Продолжение таблицы
0000 000000000100
1 0000 000000001000
2 0000 000000010000
3 . 0000 000000100000
4 0000 000001000000
5 0000 000010000000
6 0000 000100000000
7 0000 001000000000
8 0000 010000000000
9 0000 100000000000
10 0001 000000000000
11 0010 000000000000
12 0100 000000000000
767749
14 сдвига, второй вход которого соединен с выходом блока сумматоров, входы которого соединены с соответствующими выходами регистра сдвига, управляющие входы коммутатора, регистра сдвига и реверсивного регистра сдвига соединены соответственно с шинами вида преобразования, разрешения сдвига вправо и разрешения сдвига влево.
2. Преобразователь по п. 1, отличающийся тем, что в нем блок сумматоров состоит из первого, второго, третьего и четвертого сумматоров, первого, второго, третьего и <о четвертого элементов памяти, входы которых соединены с выходами переноса соответствующих сумматоров, входы переноса которых соединены с выходами соответствующих элементов памяти, первый, второй и третий элементы НЕ, пятый элемент памяти и пятый сумматор, входы которого соединены соответствс:.:::э . ыходами второго сумматора, первог и третьего элементов НЕ, первый выход пятого сумматора является выходом блока сумматоров, а выход переноса через второй элемент НЕ соединен с входом пятого элемента памяти, выход которого соединен с входом третьего элемента НЕ, первые входы второго и четвертого сумматоров соединены с выходами первого и третьего сумматоров, первые и вторые входы первого и третьего сумматоров, а также вторые входы второго и четвертого сумматоров являются входами блока сумматоров.
Источники информации, принятые во внимание при экспертизе
1. Авторское свидетельство СССР № 548857, кл. G 06 F 5/02, 1975.
2. Авторское свидетельство СССР № 561957, кл. G 06 F 5/02, 1976 (прототип).
Редактор И. Грузова
Заказ 7195/44
Составитель М. Аршавский
Техред К. Шуфрич Корректор М. Вигула
Тираж 751 Подписное
ВНИИ ПИ Государственного комитета СССР по делам изобретений и открытий
113035, Москва, )К вЂ” 35, Раушская наб., д. 4/5
Филиал ППП сПатент>, r. Ужгород, ул. Проектная, 4