Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практич_Архитектура230115.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.63 Mб
Скачать

Многоразрядный сумматор

Многоразрядные комбинационные сумматоры строят на основе одноразрядных комбинационных сумматоров. Схема многоразрядного комбинационного суммато­ра параллельного действия с последовательным переносом состоит из последова­тельно соединенных одноразрядных комбинационных сумматоров. Модель такого сумматора представлена на рис. 13.

Ячейки D8:K8 отведены для ввода соответствующих разрядов 8-разрядного первого слагаемого (а), а ячейки D9:K9 — для ввода соответствующих разрядов 8-разрядного второго слагаемого (Ь).

В ячейки С8 и С9 введены 0, которые скрыты за счет цвета шрифта,

Установлена поразрядная проверка слагаемых на корректность (ввод только О и 1) (рис. 14).

В ячейках С7: J7 получены значения переносов из младших разрядов, для чего:

в ячейку J6 введена формула

=И(К8;К9);

Рис. 13

в ячейку B6 введена формула

=ИЛИ(И(J8;J9);И(J8;J7);И(J9;J7)),

которая скопирована в ячейки С6:Н6;

в ячейку J7 введена формула

=ЕСЛИ(J6=ИСТИНА; 1; 0),

которая скопирована в ячейки С7:17.

Рис. 14

В ячейках С10: К10 получены значения суммы поразрядно, для чего: в ячейку К11 введена формула

=ИЛИ(И(К8;НЕ(К9));И(НЕ(К8);К9));

в ячейку J11 введена формула

=HJDI(H(J8;J9;J7);H(J8;HE(J9);HE(J7));H(HE(J8);J9;HE(J7));H(HE(J8);HE(J9);J7)),

которая скопирована в ячейки С11:И1;

в ячейку К 10 введена формула

=ЕСЛИ(К11=ИСТИНА;1;0), которая скопирована в ячейки С10:K10.

Произведена защита листа, кроме тех ячеек, в которые вводятся слагаемые.

На схеме можно цветом скрыть все вспомогательные ячейки и снять сетку (рис. 15).

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

Можно пойти дальше — хотя бы упрощенно смоделировать процесс вычисле­ний в компьютере. Это выполнено в следующей схеме с использованием языка программирования VBA (Visual Basic for Applications).

Как известно, все арифметические операции в компьютере выполняются через сложение и в двоичной системе счисления. Поступающие в компьютер десятичные числа процессор преобразует в их двоичные эквиваленты. Таким образом происхо­дит перевод исходных данных задачи на язык, понятный машине.

Рис. 15

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

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

На схеме, моделирующей работу сумматора (рис. 16), микрооперации выпол­няются при нажатии соответствующих кнопок.

На рис. 16 представлен вид схемы после нажатия кнопки Обнуление сумматора.

Рис. 16

При нажатии кнопки Ввод 1-го слагаемого появляется окно КЛАВИАТУРА Ввод 1-го слагаемого (рис. 17). В окне вводится десятичное число в диапазоне от О до 255, учитывая разрядность сумматора. Предусмотрена защита от неверного ввода (рис. 18). Введенное число записывается во вспомогательную ячейку Н20. В ячейке Н21 представлено восьмиразрядное двоичное число — эквивалент деся­тичного (демонстрируется перевод числа из десятичной системы счисления в дво­ичную). Это число поразрядно записывается в сумматор. В окне Экран компьюте­ра это число представлено в десятичной системе счисления (рис. 19).

Рис. 17 Рис. 18

Рис. 19

Листинг программы на VBA, реализующий процесс сложения в компьютере:

Обнуление сумматора

Private Sub Nul_Click()

Range("B14:J14").Select

Selection. Clear-Contents

Range("B17:J17").Select

Selection.ClearContents

Range("C15").Select

ActiveCell.FormulaRlCl = "0"

Range("C15").Select

Selection.AutoFill Destination:=Range("C15:J15"), Type:=xlFillDefault

Range("C15:J15").Select

Selection.AutoFill Destination:=Range("C15:Jl6"), Type:=xlFillDefault

Range("C15:J16").Select

Range("H20").Value = ""

Range("H2I").Value = ""

Range("H24").Value = ""

Range("H25").Value = ""

Range("M15:Ml 7м).Value = ""

Range("ClI").Select

End Sub

Private Sub FirstSlag_Click ()

Range("H21").NumberFormat = "@"

flag = False

While flag = False

N = InputBox("Введите 1-е слагаемое" & Chr(13) & "учитывая,что это десятичное число и максимально равно 255", "КЛАВИАТУРА. Ввод 1-го слагаемого")

If N > 255 Or N < 0 Then

MsgBox "Ошибка при вводе!" S Chr(13) & "Минимальное число-0, максимальное число-255", vbExclamation, "КЛАВИАТУРА. Ввод 1-го слагаемого"

Else

flag = True

Range("M15").Value = N

Range("H20").Value = N 'Ввод десятичного числа с клавиатуры в ячейку h20

'Преобразование десятичного числа в двоичное

nd$ = ""

While N <> 0

а = N Mod 2

If a = 1 Then nd$ = "1" + nd$ Else nd$ = "0" + nd$

N = Int(M / 2)

Wend

End If

Wend

'Дополнение двоичного числа нулями до 8 разрядов в ячейке H21

р = Len(nd$)

For i = 1 To (8 - р)

nd$ = "0" + nd$

Next i

Range ("H21")'.Value = nd$

'Поразрядная запись 1-го слагаемого в сумматор

k = О

For i = 3 То 10

k = k + 1

Cells(15, i).Value = Val(Mid(nd$, k, 1))

Next i

End Sub

Private Sub SecondSlag_Click()

'Ввод формул

Range ("H25") .NumberFormat = "@"

flag = False

While flag = False

N = InputBox("Введите 2-е слагаемое" & Chr(13) & "учитывая,что это десятичное число и максимально равно 255", "КЛАВИАТУРА. Ввод 2-го слагаемого")

If N > 255 Or N < 0 Then

MsgBox "Ошибка при вводе!" & Chr(13) & "Минимальное число-0, максимальное число-255",

vbExclamation, "КЛАВИАТУРА. Ввод 2-го слагаемого"

Else

flag = True

Range("Ml6").Value = N

Range("H24").Value = N 'Ввод десятичного числа с клавиатуры в ячейку h24

'Преобразование десятичного числа в двоичное

nd$ = ""

While N <> 0

а = N Mod 2

If a = 1 Then nd$ = "1" + nd$ Else nd$ = "0" + nd$

N = Int(N / 2)

Wend

End If Wend

'Дополнение двоичного числа нулями до 8 разрядов в ячейке H25

р = Len(nd$)

For i = 1 То (8 - р)

nd$ = "0" + nd$

Next i

Range("H25") .Value = nd$

'Поразрядная запись 2-го слагаемого в сумматор

k = 0

For i = 3 То 10

k = k + 1

Cells(16, i).Value = Val(Mid(nd$, k, 1))

Next i

End Sub

Private Sub Summa Click ()

"Ввод формул

Range("I14").Formula = "=IF(AND(J15,J16)=TROE,1,0)"

Range("HI 4").Formula =

"=IF(OR(AND(115,116).AND(115,114),AMD(116,114))=TRUE,1,0) "

Range("H14").Select

Selection.AutoFill Destination:=Range("B14:H14"), Type:=xlFillDefault

Range("J17").Formula =

"=IF(OR(AND(J15,NOT(J16)),AND(NOT(J15),J16))=TRUE,1,0)"

Range("I17").Formula =

"=IF (OR (AND (115, II 6,114),AND(115.NOT(116),NOT(114)),AND(NOT(115),1

16,NOT(114)),AND(NOT (115),NOT(II6),114))=TRUE,1,0) "

Range("I17").Select

Selection.AutoFill Destination:=Range("B17:I17"), Type:=xlFillDefault

'Снимаем выделение формул и выставляем курсор на СИ Range ("СИ") .Select

'Экран компьютера

Range("M17").Formula = "=sum(ml5:ml6) "

End Sub

Рис. 22

Все созданные схемы объединены в альбом логических схем «Узлы компьюте­ра». Схемы расположены на отдельных листах рабочей книги Excel. Один лист отведен для описания основных положений по синтезу логических схем. Сделан титульный лист, на котором расположены кнопки для перехода к требуемой схеме (рис. 22). На листах книги имеются кнопки для возврата на титульный лист.

Таким образом, без паяльника и электронных элементов выполнены модели реальных узлов компьютера. Это еще одна возможность продемонстрировать ис­пользование компьютера для моделирования различных процессов.