1lytics

Создание 1-битного полного сумматора с использованием Lua

Что такое сумматор

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

Неполный сумматор производит сложение двух однобитных чисел, A и B. Он имеет два выхода, S и C (перенос в старший разряд); результирующая сумма равна 2*C + S.

Полный сумматор производит сложение чисел и признака переноса из младшего разряда. Однобитный полный сумматор складывает три однобитных числа A, B и Cin; A и B - операнды, и Cin признак переноса из младшего разряда. Данная схема выдает на выход двухразрядную сумму, обычно представляемую сигналами Cout и S, где sum = 2*Cout + S.

Версии Gorgeous Karnaugh с поддержкой Lua

Замечание: Не все версии программного обеспечения Gorgeous Karnaugh поддерживают Lua. Проверьте возможности вашей версии тут.

Написание Lua-скрипта для задания таблицы истинности

Let write the Lua script to define outputs for 1-bit full adder:

gkAddInputVarList('A','B','Ci')
gkAddFunctionList('Co','Y')
MaxInput = gkGetMaxInputVector()
for InputVec = 0, MaxInput do
    A  = gkGetInputValue( InputVec, 'A' )
    B  = gkGetInputValue( InputVec, 'B' )
    Ci = gkGetInputValue( InputVec, 'Ci' )
    gkSetOutput(InputVec, A+B+Ci)
end


Также можно написать другой скрипт, формирующий такую же таблицу истинности, с использованием функции gkGetOnesCount:

gkAddInputVarList('A','B','Ci')
gkAddFunctionList('Co','Y')
MaxInput = gkGetMaxInputVector()
for InputVec = 0, MaxInput do
    gkSetOutput(InputVec, gkGetOnesCount(InputVec))
end

Запустите программу Gorgeous Karnaugh и выберите пункт меню “File” — “New” — “Empty set for scripting”. После ввода скрипта нажмите “Alt-Enter” (или выберите пункт меню “Edit” — “Execute Lua script”).

Таблица истинности

Скрипт Lua, приведенный выше, формирует следующую таблицу истинности:

#TABLE: A,B,Ci => Co,Y
000 => 00
001 => 01
010 => 01
011 => 10
100 => 01
101 => 10
110 => 10
111 => 11

Карты Карно для минимизации

Lua-скрипт для однобитного полного сумматора формирует следующие карты Карно для минимизации:

Карта Карно для выхода Y однобитного полного сумматора Карта Карно для выхода Co однобитного полного сумматора

Минимизация карт Карно

Минимизируем карты Карно по 0 для получения КНФ:

Минимизированная по 0 карта Карно для выхода Y однобитного полного сумматора Минимизированная по 0 карта Карно для выхода Co однобитного полного сумматора

получим минимальную форму для выходных функций:

Co = (B|Ci) (A|Ci) (A|B);
Y = (!A|!B|Ci) (!A|B|!Ci) (A|!B|!Ci) (A|B|Ci);

Минимизируем карты Карно по 1 для получения ДНФ:

Минимизированная по 1 карта Карно для выхода Y однобитного полного сумматора Минимизированная по 1 карта Карно для выхода Co однобитного полного сумматора

получим минимальную форму для выходных функций:

Co = B Ci | A Ci | A B;
Y = A !B !Ci | !A B !Ci | !A !B Ci | A B Ci;

Построение схемы на логических вентилях

В панели “Coverage sets” выберите необходимый набор покрытий. Затем, выберите пункт меню: “Coverages” — “Open Schematic”. В появившемся диалоговом окне выберите нужные параметры генерации схемы, и нажмите кнопку “Ok”. После этого откроется окно со схемой.

Схемы по результатам минимизации по 0 и 1:

Схема однобитного полного сумматора на логических вентилях - минимизация по 0 Схема однобитного полного сумматора на логических вентилях - минимизация по 1

Проверка работоспособности схемы на логических вентилях в симуляторе

Вы можете использовать программу “CEDAR Logic Simulator” для проверки работоспособности вашей схемы. Для этого, выберите пункт меню “File” — “Save for CedarLogic” в программе Gorgeous Schematic, сохраните файл “.CDL” и откройте его в программе “CEDAR Logic Simulator”.

Замечание: Не все версии программного обеспечения Gorgeous Karnaugh поддерживают экспорт схем на логических вентилях в формат программы CedarLogic. Проверьте возможности вашей версии тут.

Версии Gorgeous Karnaugh

Вы можете узнать о возможностях программы Gorgeous Karnaugh и сравнить различия между различными версиями Gorgeous Karnaugh на странице сравнения версий.