Разрядность регистра результата должна быть на единицу больше, чем разрядность исходных слагаемых, чтобы предусмотреть возможность возникновения при суммировании переноса.
· Одноразрядный четверичный умножитель - сумматор (ОЧУС)
P2 Р1
F1 F2 | РЕЗУЛЬТАТ НА ВЫХОДАХ ФДК |
0 0 | доп. код множимого |
0 1 | доп. код слагаемого |
1 0 | двойной доп. код множимого (меняет знак Мн) |
1 1 | доп. код слагаемого |
Задачей ПМ является исключить из множителя диады 11, заменив их на триады. Регистр множителя является сдвиговым, после каждого такта умножение его содержимое сдвигается на 2 двоичных разряда, и в конце умножения регистр обнуляется. Выход 3 ПМ переходит в единичное состояние, если текущая диада содержит отрицание ( 01 ). В этом случае инициализируется управляющий вход F1 формирователя дополнительного кода (ФДК), и на выходах ФДК формируется двойной дополнительный код множимого (умножение на -1).
На выходах 1,2 ПМ формируются диады преобразованного множителя, которые поступают на входы ОЧУС вместе с диадами множимого. На трех выходах ОЧУС формируется результат умножения диад Мн * Мт + перенос из предыдущего ОЧУС. Максимальной цифрой в диаде преобразованного множителя является двойка, поэтому перенос, формируемый ОЧУС ,может быть только двоичным:
3 * 2 = 1 2
max maх max
Мн Мт перенос
Табл.4. Таблица истинности преобразователя множителя.
D1 | D2 | D3 | P1 | P2 | F |
0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 0 | 1 | 0 |
0 | 1 | 0 | 0 | 1 | 0 |
0 | 1 | 1 | 1 | 0 | 0 |
1 | 0 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 0 | 1 | 1 |
1 | 1 | 0 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 | 0 |
Исходя из выше изложенной таблицы синтезируется схема.
_ _ _ _ _ _ _ _ |
F=x1x2x3+x1x2x3+x1x2x3=x1x2+x1x3=x1(x2+x3) |
_ _ _ |
P1=x1x2x3+x1x2x3 |
_ _ _ _ _ _ _ _ |
P2=x1x2x3+x1x2x3+x1x2x3+x1x2x3=x2x3+x2x3=x2Åx3 |
Преобразователь множителя.
Структурная схема устройства приведена на рисунке в приложении. Она содержит регистры: множимого (Рг Мн), множителя (Рг Мт), результата (Рг Рез), формирователи дополнительного кода (ФДК) , 16 блоков ОЧС, 15 блоков ОЧУС и преобразователь множителя (ПМ).
Устройство умножения работает следующим образом:
Исходные сомножители записываются в регистры ( Рг Мн, Рг Мт) Рг Рез обнуляется.
С выходов ФДК на входы ОЧУС поступают по 2 двоичные цифры. Результат операции поступает в ОЧС, где суммируется с содержимым Рг Рез и записывается снова в Рг Рез.
После проведения этих операций происходит сдвиг Рг Мн , Рг Мт .
Если на вход “h” подаётся “1” то ОЧУС становятся “прозрачными” и устройство работает как сумматор благодаря ОЧС. Слогаемые последовательно (за 2 такта) заносятся в регистр множимого.
Временные затраты на умножение сомножителей определяются в основном затратами на образование частичных произведений, получаемых на выходах ОЧУС, и примерно равны:
Ту = 8(tсдв + tПМ + tФДК + 15tОЧУС + 16tОЧС), где:
tОЧС- время формирования единицы переноса в ОЧС
tОЧУС – время умножения на одном ОЧУС
tсдв -время сдвига множимого (множителя)
tПМ – время задержки в преобразователе множителя
tФДК – время задержки на ФДК
На самом деле, операции выполняются параллельно в нескольких узлах, и время задержки будет определятся наибольшей составляющей (либо 15tОЧУС, либо 15tОЧУС, в зависимости от конкретной реализации).
Логический синтез одноразрядного четверичного умножителя-сумматора
ОЧУС - это комбинационное устройство, имеющее 6 входов (2 разряда из регистра МН, 2 разряда из регистра Мт, вход переноса и управляющий вход h) и 3 выхода. Принцип работы ОЧУС описывается с помощью таблицы истинности (табл.5).
Разряды множителя закодированы : 0 - 00; 1 - 01; 2 - 10; 3 - 11.
Разряды множимого закодированы : 0 - 00; 1 - 11; 2 - 01; 3 - 10.
Управляющий вход h определяет тип операции: 0 - умножение закодированных цифр, поступивших на информационные входы, и добавление переноса; 1 - вывод на выходы без изменения значения разрядов, поступивших из регистра множимого.
Табл. 5
пер. | Мн | Мт | упр. | Перенос | Результат | Результат операции | ||||
Р1 | Х1 | Х2 | У1 | У2 | h | Р | Q1 | Q2 | В четверичной с/с | |
0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0*0+0=00 | |
0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Выход – код «00» | |
0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0*1+0=00 | |
0 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | Выход – код «00» | |
0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0*2+0=00 | |
0 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | Выход - код «00» | |
0 | 0 | 0 | 1 | 1 | 0 | Х | Х | Х | 0*3+0=00 | * |
0 | 0 | 0 | 1 | 1 | 1 | Х | Х | Х | Выход – код «00» | * |
0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 2*0+0=00 | |
0 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | Выход – код «02» | |
0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 2*1+0=02 | |
0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | Выход – код «02» | |
0 | 0 | 1 | 1 | 0 | 0 | 1 | 0 | 0 | 2*2+0=10 | |
0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | Выход – код «02» | |
0 | 0 | 1 | 1 | 1 | 0 | Х | Х | Х | 2*3+0=12 | * |
0 | 0 | 1 | 1 | 1 | 1 | Х | Х | Х | Выход – код «02» | * |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 3*0+0=00 | |
0 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | Выход – код «03» | |
0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 3*1+0=03 | |
0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | Выход – код «03» | |
0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 3*2+0=12 | |
0 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | Выход – код «03» | |
0 | 1 | 0 | 1 | 1 | 0 | Х | Х | Х | 3*3+0=21 | * |
0 | 1 | 0 | 1 | 1 | 1 | Х | Х | Х | Выход – код «03» | * |
0 | 1 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1*0+0=00 | |
0 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | Выход – код «01» | |
0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 1*1+0=01 | |
0 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | Выход – код «01» | |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1*2+0=02 | |
0 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | Выход – код «01» | |
0 | 1 | 1 | 1 | 1 | 0 | Х | Х | Х | 1*3+0=03 | * |
0 | 1 | 1 | 1 | 1 | 1 | Х | Х | Х | Выход – код «01» | * |
1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0*0+1=01 | |
1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Выход – код «00» | |
1 | 0 | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0*1+1=01 | |
1 | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | Выход – код «00» | |
1 | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0*2+1=01 | |
1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | Выход – код «00» | |
1 | 0 | 0 | 1 | 1 | 0 | Х | Х | Х | 0*3+1=01 | * |
1 | 0 | 0 | 1 | 1 | 1 | Х | Х | Х | Выход – код «00» | * |
1 | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 2*0+1=01 | |
1 | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 1 | Выход – код «02» | |
1 | 0 | 1 | 0 | 1 | 0 | 0 | 1 | 0 | 2*1+1=03 | |
1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 1 | Выход – код «02» | |
1 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 2*2+1=11 | |
1 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 1 | Выход – код «02» | |
1 | 0 | 1 | 1 | 1 | 0 | Х | Х | Х | 2*3+1=13 | * |
1 | 0 | 1 | 1 | 1 | 1 | Х | Х | Х | Выход – код «02» | * |
1 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 3*0+1=01 | |
1 | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0 | Выход – код «03» | |
1 | 1 | 0 | 0 | 1 | 0 | 1 | 0 | 0 | 3*1+1=10 | |
1 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | Выход – код «03» | |
1 | 1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 3*2+1=13 | |
1 | 1 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | Выход – код «03» | |
1 | 1 | 0 | 1 | 1 | 0 | Х | Х | Х | 3*3+1=12 | * |
1 | 1 | 0 | 1 | 1 | 1 | Х | Х | Х | Выход – код «03» | * |
1 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 1*0+1=01 | |
1 | 1 | 1 | 0 | 0 | 1 | 0 | 1 | 1 | Выход – код «01» | |
1 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 1 | 1*1+1=02 | |
1 | 1 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | Выход – код «01» | |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 1 | 0 | 1*2+1=03 | |
1 | 1 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | Выход – код «01» | |
1 | 1 | 1 | 1 | 1 | 0 | Х | Х | Х | 1*3+1=10 | * |
1 | 1 | 1 | 1 | 1 | 1 | Х | Х | Х | Выход – код «01» | * |
В таблице выделено 16 безразличных наборов, т.к. на входы ОЧУС из разрядов множителя не может поступить код 11.