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

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

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

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

Рассмотрен алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код. Приведена реализация преобразователя многоразрядной дроби последовательностного типа. Преобразователь такого типа, в отличие от комбинационного, характеризуется однородностью построения схемы и, следовательно, простотой наращивания разрядности преобразуемых чисел. Показано, что реализация преобразователя последовательностного типа на программируемых логических интегральных схемах, например, фирмы Xilinx, позволяет выполнить преобразование 16-разрядной дроби за ~200 нс, 32-разрядной за 400 нс при тактовой частоте 100 МГц.

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Жирков Владимир Филиппович, Калинин Андрей Павлович

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

Binary-coded decimal code (BCD) converter of proper fractions in the binary code of sequential type

The purpose of the research was to examine the algorithm of converting BCD of proper fractions in the binary code and to implement the converter of multi-bit fraction of sequential type. The converter of sequential type, unlike Raman converter is characterized by homogeneous circuit constructing and, consequently, by simplicity of increasing the bit of convertible digits. We showed that sequential type converter implementation on programmable logic integrated circuits, for example, the company Xilinx, allows to convert 16-bit fraction for ~ 200 ns, 32-bit 400 ns at 100 MHz clock.

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

УДК 004.312.26

Преобразователь двоично-десятичного кода правильных дробей в двоичный код последовательностного типа

© В.Ф. Жирков, А.П. Калинин МГТУ им. Н.Э. Баумана, Москва, 105005, Россия

Рассмотрен алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код. Приведена реализация преобразователя многоразрядной дроби последовательностного типа. Преобразователь такого типа, в отличие от комбинационного, характеризуется однородностью построения схемы и, следовательно, простотой наращивания разрядности преобразуемых чисел. Показано, что реализация преобразователя последовательностного типа на программируемых логических интегральных схемах, например, фирмы Xilinx, позволяет выполнить преобразование 16-разрядной дроби за ~200 нс, 32-разрядной - за 400 нс при тактовой частоте 100 МГц.

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

Преобразование чисел из одной позиционной системы счисления в другую выполняется в вычислительных устройствах и ЭВМ при вводе и выводе данных отдельно для целой и дробной частей чисел. Правильная десятичная дробь Адр записывается в виде

или в сокращенном виде при известном основании системы счисления

где a-i, ü-2,..., a_(m-1), a_т - цифры десятичной дроби (0, 1, ..., 9); 1, 2, ..., т - номера разрядов; т - число разрядов десятичной дроби, знак «-» перед номерами разрядов указывает на то, что это разряды дроби; 10 - основание десятичной системы счисления.

В двоично-десятичном коде (ДДК) 8421 дробь Адр имеет следующее изображение:

где а_1, а_2,..., а_(т_1), а_т - двоичные тетрады, равные 0000, 0001,., 1001, изображающие десятичные цифры 0, 1,., 9 соответственно.

Тетрады 1010, 1011, 1100, 1101, 1110 и 1111 не используют и называют псевдотетрадами. Цифры 8, 4, 2, 1 в обозначении кода - это веса разрядов двоичной тетрады.

В двоичной системе счисления дробь Адр записывается в виде

где Ъ_1, Ъ_2,..., Ъ(1 -1), Ъ_ / _ цифры двоичной дроби, равные 0 или 1; / _ число разрядов двоичной дроби Ад.

Алгоритм преобразования правильной двоично-десятичной дроби А2р10 можно определить из записи выражения (3) по схеме Горнера:

Адр

(4)

Из выражения (4) следует, что для преобразования ДДК дроби в двоичный код (ДК) необходимо последовательно умножать на 2 исходную дробь и дробные части получающихся произведений. При каждом умножении получаются целые части, которые исключаются из последующих операций умножения и представляют собой цифры дроби в двоичной системе счисления. Значение первой целой части является старшей цифрой Ъ-1 дроби. Умножив правую часть выражения (4) на 2, получим неправильную дробь с целой частью Ъ_х, дробной -

(...(Ъ_ / • 2-1 + Ъ_(_1)) • 2-1 +... + • 2-1. Умножив полученную дробную

часть на 2, найдем новую неправильную дробь, целой частью которой

будет Ъ_2, дробной _ (... (ъ_ / • 2_1 + Ъ_(( _1)) • 2 _1 +... + Ъ_3) • 2 _1.

Повторяя процесс умножения / раз, определим все цифры Ъ_1, Ъ_2, ..., Ъ_/ дроби в новой, т. е. двоичной, системе счисления. При этом все действия выполняются в десятичной (исходной) системе счисления над двоично-десятичными кодами дробей.

Умножение на 2 реализуется сдвигом ДДК дроби влево, т. е. в сторону старших разрядов, на один двоичный разряд. Поэтому при сдвиге цифры в тетрадах с весами 4, 2, 1 приобретают веса 8, 4, 2, иными словами, происходит умножение этих цифр на 2.

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

В первом случае при значениях тетрад 5, 6 или 7 возникающие после сдвига псевдотетрады 1010, 1011,., 1111 должны корректироваться увеличением их на 610 = 01102 с передачей единицы переноса в следующую старшую тетраду. Во втором случае, если значение тетрады до сдвига равно 8 или 9, единица при переходе в данный двоично-де-

сятичный разряд должна увеличивать свое разрядное значение с 8 до 16. В двоично-десятичном разряде ее вес возрастает только с 8 до 10, т. е. двоично-десятичная дробь уменьшается на 6 единиц того двоично-десятичного разряда, из которого произошел этот переход. Поэтому для коррекции дроби необходимо прибавить 610 = 01102 к тетрадам, из которых при сдвиге произошел переход единицы в соседние тетрады.

В обоих случаях коррекцию целесообразно проводить не после сдвига, а до сдвига путем прибавления к соответствующей тетраде 310 = 00112. Необходимость коррекции определяется до сдвига. Если значение тетрады меньше или равно 410 = 01002, то коррекция не требуется, так как после сдвига не возникнут псевдотетрады и не произойдет переход единицы из этого двоично-десятичного разряда в другой. Коррекция необходима, если значение тетрады перед сдвигом равно 5, 6 или 7, поскольку после сдвига возникнут псевдотетрады 10, 12, 14 или 11, 13, 15 в зависимости от того, вводится ли при сдвиге в младший разряд тетрады нуль или единица. Коррекция требуется и в случае, если значение тетрады равно 8 или 9. После сдвига скорректированных тетрад 8 или 9 появляются правильные тетрады 6 или 7 либо 8 или 9.

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

где X = (х4х3х2х1), У = (у4у3у2у1) - двоичные тетрады; х4, у4 - старшие разряды тетрады.

Функции (5) соответствуют значения таблицы истинности ЭП.

Таблица истинности элементарного преобразователя

Входы Выходы

Х4 х3 х2 х1 У4 Уэ У2 У!

0 0 0 0 0 0 0 0

0 0 0 1 0 0 0 1

0 0 1 0 0 0 1 0

0 0 1 1 0 0 1 1

0 1 0 0 0 1 0 0

0 1 0 1 1 0 0 0

0 1 1 0 1 0 0 1

0 1 1 1 1 0 1 0

1 0 0 0 1 0 1 1

1 0 0 1 1 1 0 0

Условное графическое обозначение (УГО) ЭП одного двоично-десятичного разряда показано на рис. 1.

Преобразование многоразрядной двоично-десятичной дроби можно выполнять в каскадной комбинационной [1-5] и в последовательностной [1, 6] схемах.

В каскадной схеме каждый каскад выполняет коррекцию тетрад и формирует цифру одного разряда двоичной дроби. Сдвиг влево реализуется смещением вправо разрядной сетки данного каскада на один двоичный разряд относительно разрядной сетки предыдущего каскада [5]. Каскадная схема характеризуется высоким быстродействием. Недостатками ее являются сложность и неоднородность построения схемы.

Рассмотрим преобразователь последовательностного типа (ППТ) многоразрядной двоично-десятичной дроби. Такой ППТ должен содержать два регистра:

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

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

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

Поскольку, согласно алгоритму преобразования, коррекция двоично-десятичной дроби должна выполняться до сдвига, то выходы каждого двоично-десятичного разряда десятичного регистра соединены со входами ЭП этого разряда. На выходах ЭП в каждом такте образуется двоично-десятичный код произведения, причем выход у4 ЭП старшего двоично-десятичного разряда (выход с весом 5) является выходом целой части, остальные разряды ЭП - выходами дробной части произ-

Рис. 1. Условное графическое обозначение ЭП одного двоично-десятичного разряда

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

Рис. 2. Функциональная схема преобразователя ДДК правильной дроби в ДК последовательностного типа

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

Прием дроби от внешнего источника разрешается одним уровнем сигнала M (например, при M = 0), а с выходов ЭП в режиме преобразования - другим уровнем М (при M = 1). Собственно загрузка десятичного регистра выполняется серией сигналов, сформированных устройством управления при поступлении сигнала преобразования С. Тактовые входы десятичного регистра и регистра сдвига SRG должны быть динамическими. Число импульсов в серии определяется разрядностью двоично-десятичной дроби и для 4-разрядной двоично-десятичной дроби равно 16.

Погрешность преобразования 4-разрядной двоично-десятичной дроби не превышает половины единицы младшего разряда, т. е. 0,00005, при разрядности двоичной дроби, равной 16, так как 2-16 = 0,000016. Тогда сумма весов 17-го и последующих разрядов не превысит 0,000016.

Сигналы цифр двоичной дроби образуются в каждом такте сдвига на выходе _у4 (выход с весом 5) ЭП старшего разряда десятичного регистра и подаются на вход DL последовательного ввода двоичного регистра сдвига SRG. В результате двоичный код дроби фиксируется в двоичном регистре.

Положительными качествами ППТ являются простота и однородность построения схемы, простота наращивания разрядности. Достаточно высокого быстродействия и малой мощности потребления можно достичь при реализации ПКП на программируемых логических интегральных схемах (ПЛИС), например, фирмы Xilinx. ПЛИС архитектуры FPGA (Field Programmable Gate Array - программируемый пользователем массив вентилей) содержит следующие основные блоки и соединения:

CLB (Configurable Logic Blocks) - конфигурируемые логические блоки (КЛБ);

IOB (Input/Output Blocks) - блоки ввода-вывода информации;

IC (Interconnection) - межсоединения.

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

Основным элементом КЛБ является логическая ячейка, состоящая из табличного преобразователя LUT (Look-Up Tables), схемы ускоренного переноса и триггера. LUT может генерировать произвольные функции алгебры логики нескольких переменных (число переменных функции определяется количеством входов LUT). Объединение нескольких LUT в соответствии с теоремой разложения Шеннона позволяет генерировать функции алгебры логики (ФАЛ) большего числа переменных.

В ППТ требуется реализация функций четырех переменных. Для ППТ можно использовать ПЛИС Spartan-II, Spartan-3, Virtex-E, Virtex-П, в которых LUT имеют четыре входа и могут реализовать ФАЛ четырех переменных.

Для поставленных в настоящей публикации задач применение ПЛИС Spartan-6, Virtex-6 нецелесообразно, так как они содержат 6-вхо-довые LUT, которые будут использоваться только на 25 %.

При реализации схемы преобразователя в первую очередь был создан 4-входовый ЭП, при тестировании которого установлено, что максимальное время задержки ЭП с учетом задержек линий связи составляет 6 нс (рис. 3).

Рис. 3. Временшя диаграмма работы ЭП

Затем для построения преобразователя многоразрядных правильных дробей из ДДК в ДК проведено описание следующих функциональных узлов:

• мультиплексора, переключающего направление загрузки информации в регистр;

• регистра с параллельным вводом и выводом информации;

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

Временная диаграмма работы регистра с параллельным вводом и выводом информации представлена на рис. 4.

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

Рис. 4. Временная диаграмма работы регистра с параллельным вводом и выводом информации

ности. В данном устройстве для всего процесса обработки генерируется 17 импульсов: один для загрузки и 16 для преобразования.

Для тестирования преобразователя и оценки его временных параметров было проведено моделирование с помощью стандартного средства Test Bench САПР Xilinx ISE 14.7. Данное средство позволяет моделировать работу любых устройств, описанных на языках VHDL или Verilog, строить временные диаграммы тестируемых устройств. Для моделирования создан специальный файл поведенческого моделирования, в котором описываются все временные изменения входных сигналов.

При моделировании получены данные, по которым установлено, что время задержки распространения сигнала в регистре сдвига не превышает 4 нс. Время задержки распространения в тракте преобразователя, состоящего из мультиплексора, десятичного регистра и ЭП, не превышает 10 нс. При тактовой частоте 100 МГц собственно время преобразования 4-разрядного ДДК целого числа составляет ~200 нс, а с учетом несинхронизированного прихода команды преобразования с тактовыми импульсами не превышает 250 нс. Время преобразования 8-разрядного ДДК дроби составляет 400 нс.

ЛИТЕРАТУРА

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

[2] Титце У., Шенк К. Полупроводниковая схемотехника. Москва, Мир, 1982, 512 с.

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

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

[5] Жирков В.Ф., Ходин В.В. Алгоритм преобразования двоично-десятичного кода правильных дробей в двоичный код и его реализация аппаратными средствами комбинационного типа. Инженерный журнал: наука и инновации, 2012, вып. 1. URL: http://engjournal.ru/articles/75/75.pdf

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

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

Ссылку на статью просим оформлять следующим образом:

Жирков В.Ф., Калинин А.П. Преобразователь двоично-десятичного кода правильных дробей в двоичный код последовательностного типа. Инженерный журнал: наука и инновации, 2014, вып. 12, URL: http://engjournal.ru/ catalog/it/hidden/1321.html

Жирков Владимир Филиппович родился в 1937 г., окончил МВТУ им. Н.Э. Баумана в 1960 г. Доцент кафедры «Компьютерные системы и сети». Имеет более 60 научных работ. Специализация - обработка сигналов в информационно-измерительных системах. e-mail: jirkovvf@bmstu.ru

Калинин Андрей Павлович родился в 1993 г. Студент кафедры «Компьютерные системы и сети» МГТУ им. Н.Э. Баумана. e-mail: kalinineandre@gmail.com

Binary-coded decimal code (BCD) converter of proper fractions in the binary code of sequential type

© V.F. Zhirkov, A.P. Kalinin Bauman Moscow State Technical University, Moscow, 105005, Russia

The purpose of the research was to examine the algorithm of converting BCD of proper fractions in the binary code and to implement the converter of multi-bit fraction of sequential type. The converter of sequential type, unlike Raman converter is characterized by homogeneous circuit constructing and, consequently, by simplicity of increasing the bit of convertible digits. We showed that sequential type converter implementation on programmable logic integrated circuits, for example, the company Xilinx, allows to convert 16-bit fraction for ~ 200 ns, 32-bit — 400 ns at 100 MHz clock.

Keywords: number system, BCD, binary code, converter, proper fraction, EPLD, sequential circuit.

REFERENCES

[1] Grishin Yu.R., Kazarinov Yu.M., Katikov V.M., et al. Proektirovanie impul'snykh i tsifrovykh ustroistv radiotekhnicheskikh sistem [Design of pulse and digital radio systems devices]. Moscow, Vysshaya shkola Publ., 1985, 319 p.

[2] Tittse U., Shenk K. Poluprovodnikovaya skhemotekhnika [Semiconductor circuitry]. Moscow, 1982, 512 p. [In Russian].

[3] Pukhal'skiy G.I., Novosel'tseva T.Ia. Proektirovanie diskretnykh ustroistv na integral'nykh mikroskhemakh [Design of discrete devices on integrated circuits]. Moscow, Radio i Svyaz' Publ., 1990, 304 p.

[4] Aleksenko A.G. Osnovy mikroskhemotekhniki. Elementy morfologii mikroelektronnoi apparatury [Basics of microcircuitiy. Elements of morphology of microelectronic devices]. 2nd ed. Moscow, Sovetskoe Radio Publ., 1977, 408 p.

[5] Zhirkov V.F. Khodin V.V. Inzhenernyi zhurnal: nauka i innovatsii — Engineering Journal: Science and Innovation, 2012, iss. 1. Available at: http://engjournal.ru/ articles/75/75.pdf

[6] Kartsev M.A. Arifmetika tsifrovykh mashin [Arithmetic of digital machines]. Nauka Publ., 1969, 576 p.

Zhirkov V.F. (b. 1937) graduated from Bauman Moscow Higher Technical School in 1960. Assoc. Professor of the Computer Systems and Nets Department at Bauman Moscow State Technical University. Author of more than 60 scientific papers. His major scientific interest is signal processing in information-measuring systems. e-mail: jirkovvf@bmstu.ru

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

Kalinin A.P. (b. 1993) is a student of the Computer Systems and Nets Department at Bauman Moscow State Technical University. e-mail: kalinineandre@gmail.com

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