2. Реализация логических и арифметических операций
2.1. Подготовка к работе
По указанной литературе изучить:
- понятие прямого, обратного и дополнительного кодов;
- правила выполнения арифметических операций сложения, вычитания, умножения;
- объекты подбиблиотеки Logic and Bit Operations, Sinks, Sources, Signal Routing библиотеки Simulink.
2.2. Цель работы
Научиться выполнять арифметические операции с несколькими операндами и моделировать их.
2.3. Задание и порядок выполнения работы
1. Задания. Создать модель трехвходового (a, b, d) цифрового устройства, для реализации арифметических и логических операций с многоразрядными числами, заданными по варианту в табл. 2.1, с учетом и без учета их знака:
- представить числа +d и –d двоичными эквивалентами;
- выполнить над числами (a, b, d) и (a, b, –d) логические операции: И (AND), И-НЕ (NAND), ИЛИ (OR), ИЛИ-НЕ (NOR), исключающее ИЛИ (XOR);
- полученные результаты свести в таблицы, созданные в текстовом редакторе: первая для чисел a, b, d, вторая для чисел a, b, –d;
- выполнить над числами a, b, d арифметические операции: a + b, a – d, d – b;
- выполнить над числами арифметико-логическую операцию, заданную по варианту в табл. 2.1;
- проверить результаты выполненных логических и арифметических операций путем моделирования этих операций с использованием блоков Simulink;
- сравнить результаты моделирования с прогнозируемыми значениями;
- скопировать в отчет полученные модели и результаты проверки решения;
- сделать выводы по проделанной работе.
Таблица 2.1. Варианты и арифметико-логических операций.
Задания
|
№
|
a
|
b
|
d
|
Операции
|
логические
|
арифметические
|
арифметико-
логические
|
1
|
115
|
70
|
54
|
AND,
OR,
NAND, NOR,
XOR
|
a+b
a-d
d-b
|
|
2
|
120
|
69
|
48
|
|
3
|
73
|
125
|
53
|
|
4
|
82
|
118
|
59
|
|
5
|
112
|
110
|
39
|
|
6
|
99
|
113
|
45
|
|
7
|
117
|
76
|
41
|
|
8
|
125
|
83
|
55
|
|
9
|
79
|
116
|
43
|
|
10
|
81
|
113
|
37
|
|
11
|
114
|
98
|
46
|
|
12
|
86
|
111
|
52
|
|
13
|
109
|
73
|
56
|
|
14
|
95
|
121
|
47
|
|
15
|
103
|
84
|
59
|
|
16
|
89
|
125
|
44
|
|
2.4. Технология выполнения задания
1. С помощью встроенных функций MATLAB представьте взятые по варианту из табл. 2.1 три числа a, b и d двоичным эквивалентом. Для этого в режиме прямых вычислений в командной строке MATLAB введите числа, например, a=105, b=120, d=45:
>> dec2bin([105, 120, 45]) % преобразование десятичных
% чисел в двоичные эквиваленты
ans =
1101001
1111000
0101101
>> a=[0 1 1 0 1 0 0 1]; % двоичное число в виде вектора
>> b=[0 1 1 1 1 0 0 0];
>> d=[0 0 1 0 1 1 0 1];
2. В текстовом редакторе создайте таблицу, в которую внесите десятичные числа a, b и d их двоичные эквиваленты. Все числа должны быть одинаковой разрядности. У положительных чисел знак «+» кодируется 0, и он добавляется в качестве старшего разряда в двоичный эквивалент числа.
Число – d представить дополнительным кодом. Для этого:
- знак «–» кодируется 1 и добавляется в качестве старшего разряда в двоичный эквивалент числа,
- значащие разряды инвертируются по отношению к прямому коду,
- добавляется 1 в младший разряд двоичного эквивалента.
a10
|
b10
|
d10
|
a2
|
b2
|
+d2
|
–d2
|
105
|
120
|
45
|
01101001
|
01111000
|
00101101
|
11010011
|
3. С помощью встроенные функции MATLAB (not(), and(), or(), xor()) произведите в режиме прямых вычислений логические операции в соответствии с вариантом над числами a2, b2 и d2 . Ожидаемые результаты:
>> or(a,or(b,d))
ans =
0 1 1 1 1 1 0 1
>> bin2dec(' 0 1 1 1 1 1 0 1 ')
ans =
125
>> not(or(a,or(b,d)))
ans =
1 0 0 0 0 0 1 0
>> bin2dec(' 1 0 0 0 0 0 1 0 ')
ans =
130
>> and(a,and(b,d))
ans =
0 0 1 0 1 0 0 0
>> bin2dec(' 0 0 1 0 1 0 0 0 ')
ans =
40
>> not(and(a,and(b,d)))
ans =
1 1 0 1 0 1 1 1
>> bin2dec(' 1 1 0 1 0 1 1 1 ')
ans =
215
>> xor(a,xor(b,d))
ans =
0 0 1 1 1 1 0 0
>> bin2dec(' 0 0 1 1 1 1 0 0 ')
ans =
60
>> a10=105;
>> b10=120;
>> d10=45;
>> a10+d10
ans =
150
>> dec2bin(150)
ans =
10010110
4. Результаты расчета над числами a, b, d без учета знака поместите в отчет в новую таблицу:
Таблица результатов расчета и моделирования чисел a, b, d
Операции с a, b, d 105, 120, 45
|
Ожидаемый результат
|
Результат моделирования
|
в двоичном коде
|
в десятичном коде
|
AND
|
00101000
|
40
|
|
NAND
|
11010111
|
215
|
|
OR
|
01111101
|
125
|
|
NOR
|
10000010
|
130
|
|
XOR
|
00111110
|
60
|
|
ADD(A,D)
|
10010110
|
150
|
|
5. Аналогично пп.3 и 4 выполнить расчет с числами a, b, –d (с учетом знака) и результат поместить в таблицу.
>> a=[0 1 1 0 1 0 0 1]; % двоичное число в виде вектора
>> b=[0 1 1 1 1 0 0 0];
>> d=[0 0 1 0 1 1 0 1]; % число +45
>> not(d)
ans =
1 1 0 1 0 0 1 0
>> dm=[1 1 0 1 0 0 1 1]; % число -45 в дополнительном коде
>> or(a,or(b,dm)) % ожидаемый результат дизъюнкции
% в дополнительном коде
ans =
1 1 1 1 1 0 1 1
% перевод из дополнительного кода в прямой
>> not([ 1 1 1 1 0 1 1]) % без учета знака
ans =
0 0 0 0 1 0 0
>> d=[1 0 0 0 0 1 0 0]+[0 0 0 0 0 0 0 1]
d =
1 0 0 0 0 1 0 1 % число -5
bin2dec(' 0 0 0 0 1 0 1') % без учета знака
ans =
5
Аналогичные вычисления и с другими операциями.
Таблица результатов расчета и моделирования чисел a, b, –d
Операции с a, b, d 105, 120, -45
|
Ожидаемый результат
|
Результат моделирования
|
в двоичном коде
|
в десятичном коде
|
AND
|
01000000
|
64
|
|
NAND
|
10111111
|
-65
|
|
OR
|
11111011
|
-5
|
|
NOR
|
00000100
|
4
|
|
XOR
|
11000010
|
-62
|
|
ADD(A,D)
|
00111100
|
60
|
|
6. В Simulink создайте модель устройства (рис. 2.1), выполняющего заданные логические и арифметические операции. В таблице 2.2 указаны названия блоков, папки в которых находятся нужные блоки для моделирования и параметры блоков, которые нужно изменить.
Рис. 2.1. Модель устройства, выполняющего арифметические и логические операции над числами без знака.
Таблица 2.2. Значения параметров блоков моделирования
Название и назначение блоков
|
Размещение в браузере
|
Параметры блоков
|
Источнки: Constant1,2,3
|
Simulink / Sources
|
Constant value //значения для a, b, d из табл. 2.1.
|
Устройство объединения: Mux
|
Simulink / Signal Routing
|
Number of inputs 3 // количество объединяемых входов
|
Блок преобразова-ния типов Data Type Conversion
|
Simulink / Commonly Used Blocs
|
Output data type значения: uint8 для чисел без знака, int8 для чисел со знаком
|
Логический блок Bitwise Operator
|
Simulink / Logic and Bit Operations
|
Operator: AND, OR, NAND, NOR, XOR //поочередно
|
Математический блок Add
|
Simulink/ Math Operations
|
По умолчанию
|
Регистраторы: Display, Display1
|
Simulink/Sinks
|
По умолчанию
|
7. Установите для каждого блока соответствующие свойства. Окна параметров блоков приведены на рис. 1.2 и 1.3.
Для решения Задания используются следующие блоки.
Блок Mux (мультиплексор) – объединяет входные сигналы в вектор. Количество входов устанавливается в окне параметры блока (рис. 2.2).
Рис. 2.2. Окно установки параметров блока Mux
Блок Bitwise Logical Operator – поразрядный логический оператор реализует одну из базовых логических операций по отношению к данным в формате uint/int. Количество входов и вид операции устанавливается в окне параметры блока (рис. 2.3).
Рис. 2.3. Окно установки параметров блока Bitwise Operator
Входными сигналами блока могут быть беззнаковые переменные типа uint8, uint16, uint32, или переменные со знаком («+» 0 и «–» 1) типа int8, int16, int32. Если оба операнда векторы, то операции выполняются поэлементно, при этом размерность операндов должны совпадать. Размерность выходного сигнала определяется размерностью вектора (или массива) входного сигнала.
Блок Data Type Conversion преобразует десятичное число типа double в 8-разрядное целое число типа uint (без знака) или int (с учетом знака). Тип преобразуемого числа устанавливается в окне параметры блока (рис. 2.4).
Рис. 2.4. Окно установки параметров блока Data Type Conversion
Блок математических операций Add служит для вычисления суммы или разности текущих значений сигналов. Вид арифметического действия и количество входов устанавливаются в списке обозначений (List of signs) окна параметры блока (рис. 2.5). Например, ++ (два входа и операция сложения) или +- (два входа и операция вычитания).
Рис. 2.5. Окно установки параметров блока ADD
8. Сохраните модель в своей папке и запустите на исполнение. Результаты вычислений отобразятся в дисплее (рис. 2.1). Скопируйте модель в отчет.
9. Внесите изменение в модель и выполните аналогичные действия (п.п. 6-8) с заданными числами a, b, -d (рис. 2.6).
Рис. 2.6. Модель устройства, выполняющего арифметические и логические операции над числами со знаком
Do'stlaringiz bilan baham: |