Опубликован: 17.03.2025 | Доступ: свободный | Студентов: 0 / 0 | Длительность: 07:30:00
Лекция 6:

Арифметико-логическое устройство

Для составления логической функции для S можно обратиться к логическому конвертеру - функция "Исключающее ИЛИ " (XOR).

При сложении старших разрядов многоразрядных двоичных слов необходимо в схеме учесть перенос из предыдущего (младшего) разряда. Такое устройство является полным сумматором (full adder). Оно должно иметь три входа: А и В - одноименные разряды двух складываемых чисел, Сi - входной перенос из предыдущего (младшего) разряда (англ. carry in - входной перенос) и два выхода: S - сумма в данном разряде и Co - перенос в следующий (старший) разряд.

Таблица истинности для одноразрядного сумматора приведена в таблице 6.2.

Таблица 6.2.
Входные сигналы Выходные сигналы
A B Ci S Co
0 0 0 0 0
1 0 0 1 0
0 1 0 1 0
1 1 0 0 1
0 0 1 1 0
1 0 1 0 1
1 1 1 0 1
1 1 1 1 1

Сумматор удобно представить в виде двух полусумматоров, из которых первый суммирует разряды А и В, а второй к результату прибавляет бит переноса Ci (рисунок 6.4). Цепь D1_1, D1_2 обеспечивает формирование сигнала S. При возникновении лог. "1 " на одном из входов либо при наличии на всех входах лог "1 ". Элемент D2_1 обеспечивает возникновении лог. "1 " на выходе Co элемента "ИЛИ " D3_1(при наличии одного из слагаемых А или В и сигнала переноса из младших разрядов Сin). Элемент D2_2 обрабатывает возникновение переноса, когда на входах А и В присутствуют лог. "1 ".


Рис. 6.4.

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

В листинге 6.1 приведен код полного сумматора на языке Verilog HDL. На рисунке 6.5 приведен данный узел на уровне RTL.

module full_adder (
 input wire A, // бит операнда А
 input wire B, // бит операнда В
 input wire Cin, // вход переноса Cin
 output wire Sum, // S выход сумма
 output wire Co // Выход переноса Co
);
 // получаем сумму 
 assign Sum = A ^ B ^ Cin;
 // Формирование переноса
 assign Co = (A & B) | (Cin & (A ^ B));
endmodule 
Листинг 6.1.

Рис. 6.5.

В системе ЕСКД сумматоры изображаются так, как представлено на рисунке 6.6а ( вход Cin может замется на P_i, выход Co - P_{i+1}). На рисунке 6.6б приведено УГО сумматора в системе ANSI. Условное буквенное обозначение сумматоров на схемах - SM.


Рис. 6.6.

Обратной схемой сумматора является субтрактор - вычитатель. В двоичнм коде принцип субтрактора, анлогичен работе сумматора. За исключением переноса. В данном случае он занимает из старших разрядов, а выход Bo сигнализирует, что на выходе вычитания получено отрицательное число. По внтуреннему устройству субтрактор схож с сумматором. На рисунке 6.7 приведена блок - схема двооичного вычитателя с последовательным переносом (заем).


Рис. 6.7.

На рискунке 6.8 приведена схема функциональная полувычитателя. На рисунке 6.9 приведена схема функциональная полного вычитателя. Выход разности именуется D (англ. Difference).


Рис. 6.8.

Рис. 6.9.

Сравнивая схему на рисунке 6.9 со схемой на рисунке 6.4, можно наблюдать отличия только в применении инверторов, которые обеспечивают получение обратного кода. С ним и производится опять же операция сложения. В листинге 6.2 приведен код для субтрактора на языке Verilog HDL. На рисунке 6.10 приведен данный узел на уровне RTL.