Как создать логическую схему, которая умножает два 4-битных числа, используя только 16 2-входных логических элементов И и 3 4-битных сумматора?

3

«Нарисуйте комбинационную схему, которая принимает в качестве входных данных два 4-битных двоичных числа, A3A2A1A0 и B3B2B1B0 и который выводит 8-битное произведение P7P6P5P4P3P2P1P0. Предположим, у вас есть шестнадцать 2-входных логических элементов И и три 4-битных сумматора. Пожалуйста, объясните причину вашего дизайна. "

После недолгой разминки я подошел к финальной схеме, но обнаружил, что трех 4-битных сумматоров будет недостаточно. Чтобы сэкономить время (и мое полное отсутствие возможности объяснить что-либо) я нашел этот Это почти то, что мне нужно, за исключением того, что используются два 4-битных сумматора и один 6-битный сумматор. Я хочу знать, возможно ли вообще построить схему, которая может умножать два 4-битных числа, используя вентили, указанные выше, и если да, как вы можете это сделать?

Заранее спасибо.

sa2016
источник
Есть довольно много 0 входов, которые можно оптимизировать.
ratchet freak

Ответы:

0

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

Назовем эти результаты $ S_ {00} $ $ S_ {01} $ $ S_ {02} $ $ S_ {03} $ $ S_ {10} $ и т. Д.

Мы организуем их в том, как мы должны добавить их, мы получаем:

$$ \ Начать {матрица} & Амп; & Амп; & Амп; S_ {03} & амп; S_ {02} & амп; S_ {01} & amp; S_ {00} \\ & Амп; & Амп; S_ {13} & амп; S_ {12} & амп; S_ {11} & amp; S_ {10} & amp; \\ & Амп; S_ {23} & амп; S_ {22} & амп; S_ {21} & amp; S_ {20} & amp; & Амп; \\ S_ {33} & амп; S_ {32} & амп; S_ {31} & amp; S_ {30} & amp; & Амп; \\ \ Конец {матрица} $$

$ S_ {00} $ - младший бит вывода.

Затем вы используете 1 4-битный сумматор для добавления {0, $ S_ {03} $, $ S_ {02} $, $ S_ {01} $} и {$ S_ {13} $, $ S_ {12} $, $ S_ {11} $, $ S_ {10} $} Выходные данные: {$ A_c $, $ A_3 $, $ A_2 $, $ A_1 $, $ A_0 $}

Если мы заменим этот результат в исходной таблице, мы увидим, что это сворачивает две верхние строки:

$$ \ Начать {матрица} & Амп; Лагерь; A_3 & amp; A_2 & amp; A_1 & amp; A_0 & amp; S_ {00} \\ & Амп; S_ {23} & амп; S_ {22} & амп; S_ {21} & amp; S_ {20} & amp; & Амп; \\ S_ {33} & амп; S_ {32} & амп; S_ {31} & amp; S_ {30} & amp; & Амп; \\ \ Конец {матрица} $$

$ A_0 $ - это бит 1 вывода

Затем вы используете второй 4-битный сумматор для добавления {$ A_c $, $ A_3 $, $ A_2 $, $ A_1 $} и {$ S_ {23} $, $ S_ {22} $, $ S_ {21} $. , $ S_ {20} $} - это {$ B_c $, $ B_3 $, $ B_2 $, $ B_1 $, $ B_0 $}

$$ \ Начать {матрица} B_c & amp; B_3 & amp; B_2 & amp; B_1 & amp; B_0 & amp; A_0 & amp; S_ {00} \\ S_ {33} & амп; S_ {32} & амп; S_ {31} & amp; S_ {30} & amp; & Амп; \\ \ Конец {матрица} $$

$ B_0 $ - это бит 2 вывода

Затем вы используете третий 4-битный сумматор для добавления {$ B_c $, $ B_3 $, $ B_2 $, $ B_1 $} и {$ S_ {33} $, $ S_ {32} $, $ S_ {31} $. , $ S_ {30} $} - это {$ C_c $, $ C_3 $, $ C_2 $, $ C_1 $, $ C_0 $}

Входной сигнал переноса на всех 4-битных сумматорах равен 0.

Таким образом, общий результат будет: {$ C_c $, $ C_3 $, $ C_2 $, $ C_1 $, $ C_0 $, $ B_0 $, $ A_0 $, $ S_ {00} $}

ratchet freak
источник
Ах, спасибо вам большое, я был так зациклен на использовании третьего сумматора, чтобы добавить результаты двух других, что я даже не думал делать это так Имеет смысл. Еще раз спасибо. :)
sa2016