Научная статья на тему 'Алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код и его реализация аппаратными средствами комбинационного типа'

Алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код и его реализация аппаратными средствами комбинационного типа Текст научной статьи по специальности «Математика»

CC BY
336
13
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
АЛГОРИТМ / ПРЕОБРАЗОВАТЕЛЬ / КОД ДВОИЧНЫЙ / КОД ДВОИЧНО-ДЕСЯТИЧНЫЙ / ДРОБЬ ПРАВИЛЬНАЯ / СДВИГ / КОРРЕКЦИЯ ТЕТРАДЫ / СХЕМА КАСКАДНАЯ КОМБИНАЦИОННАЯ

Аннотация научной статьи по математике, автор научной работы — Жирков Владимир Филиппович, Ходин Владимир Викторович

Рассмотрен алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код на основе универсального правила перевода чисел из одной позиционной системы счисления в другую и его реализация аппаратными средствами комбинационного типа, допускающими наращивание разрядности. Показано, что преобразование двоичнодесятичного кода правильных дробей в двоичный код и двоичного кода целых чисел в двоично-десятичный код можно выполнять с помощью одних и тех же элементарных преобразователей и применять для преобразования интегральные схемы SN54185A, SN74185A фирмы Texas Instruments и К155ПР7 отечественной серии К155.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по математике , автор научной работы — Жирков Владимир Филиппович, Ходин Владимир Викторович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «Алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код и его реализация аппаратными средствами комбинационного типа»

УДК 004.312.26

В . Ф. Жирков, В . В . Ходин

АЛГОРИТМ ПРЕОБРАЗОВАНИЯ ДВОИЧНО-ДЕСЯТИЧНОГО КОДА ПРАВИЛЬНЫХ ДРОБЕЙ В ДВОИЧНЫЙ КОД И ЕГО РЕАЛИЗАЦИЯ АППАРАТНЫМИ СРЕДСТВАМИ КОМБИНАЦИОННОГО ТИПА

Рассмотрен алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код на основе универсального правила перевода чисел из одной позиционной системы счисления в другую и его реализация аппаратными средствами комбинационного типа, допускающими наращивание разрядности. Показано, что преобразование двоично-десятичного кода правильных дробей в двоичный код и двоичного кода целых чисел в двоично-десятичный код можно выполнять с помощью одних и тех же элементарных преобразователей и применять для преобразования интегральные схемы SN54185A, SN74185A фирмы Texas Instruments и К155ПР7 отечественной серии К155.

E-mail: jirkovvf@bmstu.ru; x1vova@gmail.com

Ключевые слова: преобразователь, алгоритм, код двоичный, код двоично-десятичный, дробь правильная, сдвиг, коррекция тетрады, схема каскадная комбинационная.

Для изображения в цифровых устройствах десятичных цифр и чисел используется их двоичное кодирование. В двоично-десятичном коде (ДДК) прямого замещения, называемом также ДДК 8421, десятичные цифры 0, 1, ..., 9 заменяются соответственно эквивалентными двоичными числами 0000, 0001, ..., 1001 - двоичными тетрадами. Шесть двоичных тетрад от 1010 до 1111 не используются и называются псевдотетрадами. Цифры 8, 4, 2, 1 в обозначении ДДК 8421 являются весами разрядов двоичной тетрады. Кодирование десятичных чисел в ДДК 8421 состоит в замене каждой десятичной цифры числа соответствующей двоичной тетрадой. Обратный переход от ДДК 8421 к десятичному числу состоит в замене каждой двоичной тетрады соответствующей десятичной цифрой. Десятичное число в ДДК имеет вид

A2-10 = an-1an - 2 .

a

_1a-2 ... a.

- m

= an-1 • 10n-1 + an_2 • 10n_2 + ... + a1 • 101 + a0 • 10° +

0

0

(1)

+a_j • 10-1 + a-2 • 10-2 ... a_m • 10-m,

где А2_10 - запись числа А в ДДК; ап-1,ап-2,...,а1,а0,а_1,а-2,...,а_т -

цифры десятичного числа, изображаемые соответствующими двоичными тетрадами; п, т - количество разрядов целой и дробной частей числа соответственно.

Преобразования ДДК чисел в двоичный код (ДК) и обратно - более сложные операции и выполняются отдельно для целой и дробной частей числа. Преобразования целых чисел аппаратными средствами достаточно полно рассмотрены в литературе [1-5], а преобразования правильных дробей - недостаточно [6]. Рассмотрим преобразование ДДК 8421 правильных дробей в ДК аппаратными средствами комбинационного типа, допускающими наращивание разрядности чисел и обладающими более высоким быстродействием по сравнению с по-следовательностными устройствами.

Один из способов преобразования (перевода) ДДК правильной дроби

А = а а 2 ... а т = а ,-10-1 + а 2-10_2 + ... + а т • 10_т (2)

др2-10 -1 -2 -т -1 -2 _т 4 '

основан на представлении этой дроби в новой (т. е. в двоичной) системе счисления по схеме Горнера [7].

В двоичной системе счисления дробь вида (2) имеет изображение

А2 = Ъ_1Ь_2 ... Ь_ 1 = Ь_1 • 2-1 + Ь_2 • 2-2 + ... + Ь_ 1 • 2-1, (3)

где Ь_1Ь_2... Ь_1 - цифры двоичной системы счисления 0, 1; I - количество разрядов двоичной дроби.

Переписав выражение (3) по схеме Горнера, получим:

А2 = (... ((Ь_1 • 2"1 + Ь_( _1))^2"1 + ... + Ь_2) • 2"1 + Ь_) • 2"1 (4)

Согласно формуле (4) преобразование ДДК правильной дроби в ДК сводится к алгоритму последовательного умножения на 2 исходной дроби и дробных частей получающихся произведений. Умножив правую часть выражения (4) на 2, получим неправильную дробь, целой частью которой будет Ь_1, дробной -

(...((ь_/ • 2_1 + Ь_(_1))^2_1 + ... + Ь_2)• 2_1. Повторяя процесс умножения

I раз, получим коэффициенты Ь_1,Ь_2, ..., Ь_1, т. е. все I цифр дроби в

двоичной системе счисления. Все действия выполняются в исходной десятичной системе счисления над ДДК чисел.

Таким образом, для преобразования правильной двоично-десятичной дроби в двоичную систему счисления необходимо выполнять умножение на 2 и выделение очередной цифры дроби в новой системе счисления. Умножение на 2 реализуется сдвигом ДДК

дроби влево (в сторону старших разрядов) на один двоичный разряд. При сдвиге цифры в тетрадах с весами 4, 2, 1 приобретают веса 8, 4, 2, т. е. происходит умножение этих цифр на 2. Однако после сдвига результат необходимо скорректировать поскольку:

1) при сдвиге дроби влево в двоично-десятичной разрядной сетке, т. е. при умножении на 2, выдвигающаяся из тетрады единица, имеющая вес 8, должна приобрести вес 16, а приобретает в следующей тетраде вес 10. Поэтому тетрады, из которых выдвигается единица, должны быть увеличены на +6^ = 01102;

2) после сдвига дроби в двоично-десятичной разрядной сетке могут возникнуть псевдотетрады, т. е. двоичные тетрады, которые не используются для изображения десятичных цифр 0, 1, ., 9. Получающиеся после сдвига псевдотетрады 1010, 1011, 1100, 1101, 1110, 1111 должны корректироваться увеличением на +6^ = 01102 с передачей единицы переноса в следующую старшую тетраду.

Для коррекции тетрады при передаче из нее единицы и предупреждения возникновения псевдотетрад тетрада корректируется не после сдвига на +6Ю, а до сдвига на +3Ю = 00112. Необходимость коррекции можно определить до сдвига. Если значение тетрады меньше или равно +4ю = 01002, то коррекция не требуется, так как после сдвига не произойдет перехода единицы из одной тетрады в другую и не возникнут псевдотетрады. Если же значение тетрады перед сдвигом равно 5, 6 или 7, то перехода единицы между тетрадами также не произойдет. Однако при этом после сдвига возникнут псевдотетрады 10, 12, 14 или 11, 13, 15 в зависимости от того, будет ли при сдвиге в младший разряд данной тетрады введен нуль или единица. Следовательно, в этом случае тетрады 5, 6, 7 корректируются перед сдвигом увеличением их на +3ю = 00112. Коррекция требуется также, если значение тетрады перед сдвигом равно 8 или 9, поскольку при их сдвиге возникнет переход единицы между тетрадами. Поэтому тетрады 8 и 9 корректируются перед сдвигом увеличением их на +3ю = 00112. После сдвига скорректированных тетрад 8 и 9 появятся правильные тетрады 6 или 7 либо 8 или 9.

Таким образом, в обоих случаях коррекцию можно выполнить на +3Ю, если значение тетрады превышает 01002, т. е. корректируются тетрады 5, 6, 7, 8, 9.

Элементарный преобразователь (рис. 1) одного двоично-десятичного разряда должен выполнять функцию

X + 3 при 5 < X < 9.

(5)

Рис. 1. Элементарный преобразователь одного двоично-десятичного разряда

Числа 10.. .15 не могут возникнуть на входе преобразователя.

Функции (5) соответствует таблица истинности элементарного преобразователя.

Преобразование многоразрядного ДДК правильной дроби может выполняться в каскадной комбинационной схеме. В каждом каскаде выполняют умножение на 2, коррекцию тетрад и формирование цифры одного разряда дроби в двоичной системе

счисления. Вместо сдвига числа влево на один двоичный разряд вправо (в сторону младших разрядов) сдвигается двоично-десятичная разрядная сетка данного каскада относительно разрядной сетки предыдущего каскада.

На рис. 2 показана схема преобразователя трехразрядного ДДК правильных дробей в ДК. В качестве примера рассмотрено преобразование ДДК дроби 0,999 в ДК:

0,99910 = 0,1001100110012_10 = 0,Ш11Ш1012.

Цифры 0 и 1 на входах и выходах элементарных преобразователей поясняют преобразование разрядов дроби в каждом каскаде и образование выходного ДК.

Рис. 2. Схема преобразователя трехразрядного двоично-десятичного кода правильной дроби в двоичный код

Преобразование ДДК дроби в ДК в общем случае выполняется неточно. Поэтому количество разрядов выходного ДК определяется заданной погрешностью преобразования. Для преобразования трехразрядной десятичной дроби с погрешностью, не превышающей половины единицы младшего разряда, т. е. 0,0005, количество разрядов

ДК должно быть равно 11, так как 2"11 « 0,00049.

Некоторые элементарные преобразователи, не влияющие на формирование 11-разрядного ДК дроби, можно исключить. Такие преобразователи отмечены на рис. 2 знаком «х» в основном поле условного графического обозначения (УГО).

Для уменьшения числа каскадов преобразователя можно объединять попарно (или большее число) элементарные преобразователи, расположенные в соседних каскадах. Штриховым контуром на рис. 2 показан пример объединения такой пары элементарных преобразователей. УГО преобразователя с пятью входами и пятью выходами, заменяющего два элементарных преобразователя с четырьмя входами и четырьмя выходами (рис. 3, а), представлено на рис. 3, б.

а б

Рис. 3. Преобразователь с пятью входами и пятью выходами:

а - объединение двух элементарных преобразователей; б - УГО преобразователя

Преобразователь с пятью входами и пятью выходами выполняет преобразование в соответствии с соотношением

Y =

X при 0 < X < 4; X + 3 при 5 < X < 9; X + 6 при 10 < X < 14; X + 9 при 15 < X < 19.

(6)

Объединение элементарных преобразователей позволит уменьшить их задержку распространения, если эта задержка увеличивается не пропорционально числу объединяемых элементарных преобразователей.

В сериях интегральных схем (ИС) транзисторно-транзисторной логики (ТТЛ) имеются ИС SN54185A, SN74185A фирмы Texas

Instruments и К155ПР7 отечественной серии К155, которые в справочных данных и литературе представлены как преобразователи ДК целых чисел в ДДК [1-3].

Алгоритм преобразования ДК целых чисел в ДДК следует из записи целого числа А по схеме Горнера:

4 = Ък-1 • 2к-1 + Ък-2 • 2к-2 + ... + ¿1 • 2 + bo =

(7)

= (... ((0 + Ък-1 )2 + Ък - 2 )• 2 + ... + ¿1 )• 2 + Ъо,

где Ък-1, Ък-2,. ., Ъо - цифры разрядов двоичного числа, равные 0 или 1.

Согласно схеме Горнера (7) преобразование сводится к к-кратному выполнению операции суммирования и (к - 1)-кратному умножению на 2.

Для реализации последовательных операций суммирования и умножения на 2 двоичное число, начиная со старших разрядов, последовательно вводится («вдвигается») в двоично-десятичную разрядную сетку со стороны младших разрядов. Таким образом, умножение выполняется сдвигом числа влево на один двоичный разряд в двоично-десятичной разрядной сетке. Одновременно со сдвигом в освобождающийся младший двоичный разряд двоично-десятичной сетки вводится очередной разряд двоичного числа, т. е. выполняется суммирование удвоенного числа с цифрой очередного введенного разряда двоичного числа. Все действия выполняются в десятичной системе счисления над ДДК чисел.

После выполнения первого шага (сдвига) в двоично-десятичной разрядной сетке получим Ък _ 1, после второго - (Ък_1 • 2 + Ък_2), после третьего - ((Ък-1 -2 + Ък-2)• 2 + Ък-3), ..., после к-го шага -

((... (Ък-1 -2 + Ък - 2 )• 2 +... + Ъ )• 2 + Ъо).

Однако возможны два случая, когда после очередного сдвига результат преобразования требует коррекции вследствие тех же причин, что и для преобразования правильных дробей из ДДК в ДК.

Операции, которые выполняются в каждом двоично-десятичном разряде двоично-десятичной разрядной сетки при преобразовании ДК целых чисел в ДДК и правильной двоично-десятичной дроби в ДК, аналогичны. Поэтому коррекция тетрад для указанных преобразований одинакова. Следовательно, элементарный преобразователь одного двоично-десятичного разряда должен выполнять функцию (5) в обоих видах преобразований.

Преобразование целого многоразрядного двоичного числа выполняется в каскадной комбинационной схеме. Каждый каскад реа-

лизует один шаг преобразования, который заключается в умножении на 2 (посредством сдвига числа влево), сложении с очередной цифрой вдвигаемого двоичного числа и коррекции числа в двоично-десятичной разрядной сетке. Вместо сдвига числа влево-вправо на один двоичный разряд сдвигаются границы двоично-десятичных разрядов одного каскада относительно разрядной сетки предыдущего каскада.

На рис. 4 приведена схема преобразования 9-разрядного двоичного кода целых чисел в ДДК 8421 на элементарных преобразователях (см. рис. 1) с четырьмя входами и четырьмя выходами.

Рис. 4. Схема преобразования ДК целого числа в ДДК на элементарных преобразователях

На элементарные преобразователи нельзя подавать двоичные числа, превышающие сумму весов выходных сигналов.

ИС БШ4185А, БШ4185А, К 155ПР7 выполняют преобразование в соответствии с функцией (8):

Y =

X при 0 < X < 4; X + 3 при 5 < X < 9; X + 6 при 10 < X < 14; X + 9 при 15 < X < 19; X +12 при 20 < X < 24; X +15 при 25 < X < 29; X +18 при 30 < X < 31.

(8)

Каждая ИС содержит три элементарных преобразователя (рис. 5, а), имеющих пять входов и шесть выходов. УГО такого преобразователя показано на рис. 5, б.

а б

Рис. 5. Преобразователь с пятью входами и шестью выходами:

а - три объединенных элементарных преобразователя; б - УГО преобразователя

На рис. 6 приведена схема преобразования ДК целых чисел в ДДК 8421 на преобразователях с пятью входами и шестью выходами.

Рис. 6. Схема преобразователя ДК целого числа в ДДК на преобразователях с пятью входами и шестью выходами

Схема преобразователя трехразрядного ДДК правильных дробей в ДК на преобразователях с пятью входами и шестью выходами показана на рис. 7. Поскольку для данного преобразования функции преобразователя с пятью входами и шестью выходами избыточны (см. функции (6) и (8)), то выход преобразователя с весом 20 не используется. В качестве примера преобразуется дробь 0,99910 = = 0,1001100110012_10.

Рис. 7. Схема преобразования трехразрядного ДДК правильной дроби в ДК на преобразователях с пятью входами и шестью выходами

Таким образом, предложено построение схемы преобразования ДДК правильных дробей в ДК и применение для данного преобразования ИС БШ4185А, БШ4185А, К155ПР7. Поэтому следует дополнить область применения этих ИС и называть их преобразователями ДК целых чисел в ДДК и ДДК правильных дробей в ДК.

СПИСОК ЛИТЕРАТУРЫ

1. Проектирование импульсных и цифровых устройств радиотехнических систем / Под. ред. Ю. М. Казаринова. - М.: Высшая школа, 1985. - 319 с.

2. Титце У., Шенк К. Полупроводниковая схемотехника: Справочное руководство: Пер. с нем. - М.: Мир, 1983. - 512 с.

3. Пухальский Г. И., Новосельцева Т. Я. Проектирование дискретных устройств на интегральных микросхемах: Справочник. - М.: Радио и связь, 1990. - 304 с.

4. Алексенко А. Г. Основы микросхемотехники. Элементы морфологии микроэлектронной аппаратуры. - М.: Сов. радио, 1977. - 408 с.

5. Couleur J. F. Trans IRE, 1958, EC - 7. №. 4. - Р. 313.

6. Карцев М. А. Арифметика цифровых машин. - М.: Наука. Гл. ред. физ.-мат. лит, 1969. - 576 с.

7. Савельев А. Я. Арифметические и логические основы цифровых автоматов. - М.: Высшая школа, 1980. - 255 с.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Статья поступила в редакцию 14.05.2012

i Надоели баннеры? Вы всегда можете отключить рекламу.