Вы находитесь на странице: 1из 78

Анализ и синтэз цифрофых

устройств
(Analiza și Sinteza Dispozitivelor
numerice)
Lector universitar Mariana Oșovschi
Departementul Informatică și Ingineria Sistemelor
mariana.osovshi@calc.utm.md
Тема 1: ЛОГИЧЕСКИЕ ОСНОВЫ ЦИФРОВЫХ
АВТОМАТОВ
Логические операции и логические элементы

В вычислительных системах (ВС) существует два


вида преобразования информации:
• преобразования определяемые правилами
выполнения арифметических операций
• логические преобразования (логические операции)
Формальные математические методы для решения
задач, связанных с логическими преобразованиями
информации, которые были описаны Булем,
является разделом математической логики и
называется алгеброй логики, или булевой
алгеброй.
В алгебре логики принято представлять истинность
высказывания символом 1, а ложность — символом
0 и рассматривать эти символы как двоичные
логические (булевы) переменные, т. е. такие
переменные, которые могут принимать только одно
из двух возможных значений.
Высказывания могут быть простыми и сложными
• Высказывание называется простым, если его
значение истинности не зависит от значений
истинности других высказываний.
• Высказывание, значение истинности которого
зависит от значения истинности других
высказываний, называется сложным.
Любое сложное высказывание можно считать
логической (булевой) функцией некоторых
двоичных аргументов — простых высказываний,
входящих в его состав.
Логическим элементом называется схема,
реализующая некоторую логическую функцию и
имеющая количество входов, равное числу
аргументов (переменным) функции, и только один
выход
Таблицы которые содержат соответствия всех
возможных комбинаций значений истинности
аргументов (входных двоичных переменных) и
логической функции (выходной двоичной
переменной) называются таблицами истинности
Логические элементы
И-НЕ ИЛИ—НЕ
Аксиомы и теоремы булевой алгебры
Формы представления булевых функций
Представление логических функций используя таблицы
истинности
содержит m+n – столбцов и 2n – рядов. Где n
количество переменных, а m количество функций. В
таблицу истинности включаются все возможные
комбинации переменных и значение функций для каждой
комбинации.
Представление логических функций аналитическим
методом
функции представляются логическими операциями
(конъюнкцией, дизъюнкцией и инверсией).
Аналитические выражения представляются 2 формами:
1. Совершенной Дизъюнктивной Нормальной Формой
СДНФ - состоит из элементарных конъюнкций,
соединенных знаками дизъюнкции . Конъюнкцию
называют элементарной, если в нее не входит по
нескольку одинаковых букв. Число элементарных
конъюнкций в СДНФ обязательно равно числу единичных
значений функции в таблице истинности.
В каждую элементарную конъюнкцию
СДНФ входят обязательно все аргументы функции, каждый
из которых может быть представлен либо в
прямой, либо в инверсной форме и представляют
собой отрицание конституент единицы (минтерм).
2. Совершенная Конъюнктивная Нормальная Форма -
это конъюнкция простых дизъюнкций, где под термином
простая дизъюнкция имеется в виду дизъюнкция
переменных или их отрицаний. В СКНФ простые
дизъюнкции содержат все переменные в своей прямой
или инверсной форме и представляют собой отрицание
конституент нуля (макстерм).
Конституент единицы (минтерм) – элементарная функция
равная 1, которая представляет собой логическое
умножение всех переменных.
Конституент нуля (макстерм) – элементарная функция
равная 0, которая представляет собой логическое
сложение всех переменных.
Представление логических функций используя
логические схемы
8 форм представления логических функций
Минимизация булевых функций
Метод диаграмм Карно Карно рассматриваются как
перестроенная соответствующим образом таблица
истинности функции. . Представляет собой операции
попарного склеивания и элементарного поглощения
Пример карт (диаграм) Карно
Метод Квайна-МакКласки
Минимизация методом Квайна-МакКласки включает
следующие шаги:
1. Составление таблицы, в которой все минтермы из
СДНФ записываются в виде их двоичных кодов. При
этом, двоичные коды разбиваются по числу единиц на
непересекающиеся группы.
2. Определение первичных импликант функции путем
попарного сравнения двоичных кодов соседних групп.
3. Расстановка меток.
4. Нахождение существенных импликант.
5. Выбор минимального покрытия и запись функции в
минимальной форме.
Рассмотрим пример. Пусть задана СДНФ (указаны
десятичные номера наборов, на которых функция
принимает единичное значение) функции f:

f (x4 x3 x2 x1 ) = v (0,1,2,3,4,7,8,11,12,13,15)
Запишем двоичные коды минтермов СДНФ в
виде табл
Вес Двоичный код Десятичный эквивалент
0 0000 0
1 0001 1
0010 2
0100 4
1000 8
2 0011 3
1100 12
3 0111 7
1011 11
1101 13
4 1111 15
Строим таблицу для определения первичных импликант
функции.
Конъюнкции соседних групп склеиваются, если
отличаются по одной переменной.
Переменную которая поглощается будем заменять
символом х. Конъюнкции соседних групп также
склеиваются, если символ х присутствует в одном и том
же разряде и имеется отличие по одной переменой.
Вместо вновь поглощаемой переменной проставляется
символ х.
Конъюнкция, которая более не склеивается с другими,
является первичной импликантой заданной функции.
Десятичные Десятичные
Первичные Первое эквиваленты Первичные Второе эквиваленты
импликанты склеивание склеиваемых импликанты склеивание склеиваемых
конъюнкций конъюнкций
000х (0,1) * v (0,1;2,3)
00х0 (0,2) * v c 00хх (0,2;1,3) -
0х00 (0,4) * v (0,4;8,12)
х000 (0,8) * v d хх00 (0,8;4,12) -
00х1 (1,3) * v
001х (2,3) * v
х100 (4,12) * v
1х00 (8,12) * v
0х11 (3,7) * v (3,7;11,15)
х011 (3,11) * v e хх11 (3,11;7,15) -
a 110х (12,13)* -
х111 (7,15) * v
1х11 (11,15)* v
b 11х1 (13,15)* -
Для расстановки меток составляется таблица, число строк
которой равно числу полученных первичных импликант, а
число столбцов совпадает с числом минтермов СДНФ.
Если в некоторый минтерм СДНФ входит какая-либо из
первичных импликант, то на пересечении
соответствующих столбца и строки ставится метка
Первичн Исходные термы
ые
импликан 0000 0001 0010 0011 0100 0111 1000 1011 1100 1101 1111
ты

110х v v
11х1 v v
00хх v v v v
хх00 v v v v
хх11 v v v v
Минимизация не полностью определенных
функций
Часто при синтезе числовых устройств функции, которые
необходимо минимизировать, определяются частично.
Это означает, что из 2n комбинаций функция определяется
для m комбинаций (m < 2n) то есть для некоторых
комбинаций функция равна нулю, для других она равна
единице, а для остальных ( 2n - m) не имеет строгого
значения. Минимизация таких функций происходит
следующим образом:
Комбинация, для которой функция не определена в таблице
истинности, обозначается отдельным знаком (*), и в процессе
минимизации их значение устанавливается равным единице, если
оно приведет к наиболее минимальной форме и равно нулю, если это
приведет к оптимальной функции.
Пример:
Дана функция y, равная - 1 în : 1,4,5,11,15, и в комбинациях: 2,6,7,13
функция неопределенна.
Системы счисления и коды
Под системой счисления понимается совокупность правил
представления чисел посредством ограниченного
количества символов.
Используемые для представления чисел символы
называются цифрами
Системы счисления могут быть позиционными и
непозиционными.
Количество цифр используемых для написания чисел в
некоторой системе счисления определяет основание
соответствующей системы.
В системе счисления с основанием q, некоторое число N
записывается посредством ряда цифр:
N(q)=bn-1bn-2...bi...b1b0 . b-1b-2...b-m
где десятичная точка разделяет целую часть от дробной
части числа N. Цифра bi представляет i-й разряд числа N.
Для вычисления значения числа N следует прибегнуть к
равенству
N(q)=bn-1qn-1+bn-2qn-2+ ... +b1q1+b0q0+b-1q-1+b-2q-2+...+b-
mq
-m

Или
Cистемы счисления используемые в области
цифровых систем
Двоичная система счисления. Эта система использует для
представления чисел только две цифры - 0 и 1, то есть
bi{0,1}
N(2)=bn-12n-1+bn-22n-2+  +b121+b020+b-12-1+b-22-2++b-
m2
-m

Восьмеричная система счисления это система счисления


с основанием q=8 и использует цифры от 0 до 7, то есть
bi{0,1,2,3,4,5,6,7}
Шестнадцатеричная система счисления
Шестнадцатеричная система использует для
представления чисел 16 символов: цифры от 0 до 9 и
первые шесть букв латинского алфавита. То есть bi0, 1,
2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Двоично-десятичные коды (BCD) 8421 и “8421”+3
Каждой десятичной цифре ставится в соответствие
двоичное слово, длина которого равна четырем битам.
Эта длина вытекает из необходимости закодировать 10
десятичных цифр посредством двоичных цифр. Так как
число 10 находится в интервале между 23 и 24, двоичное
слово должно быть по меньшей мере длиной в 4 бита.
Десятичная Код Код Десятичная Код Код
цифра 8421 “8421”+3 цифра 8421 “8421”+3

0 0000 0011 5 0101 1000

1 0001 0100 6 0110 1001

2 0010 0101 7 0111 1010

3 0011 0110 8 1000 1011

4 0100 0111 9 1001 1100


Преобразования чисел из одной системы
счисления в другую
Для преобразования десятичного числа в новую систему
счисления следует выделить целую и дробную части
десятичного числа. Затем раздельно преобразовываем
целую и дробную часть.
Алгоритм преобразования целого числа из десятичной
системы в систему счисления с основанием R:
1. Десятичное число делится число R; при этом
получается целое частное и остаток от деления;
2. Если полученное частное больше числа R,
возвращяемся к шагу 1; при этом частное используется
как делимое;
3. Если частное меньше числа R, все полученные остатки
используются для представления нового числа,
причем запись остатков в виде двоичного числа
будет производиться в обратном порядке их
получения.
Преобразование десятичной дроби в новую систему
счисления:
1. Дробное число умножается на новую основу системы
счисления;
2. Полученная в результате умножения целая часть
отделяется от дробной части;
3. Полученная на шаге 2 дробная часть рассматривается
как множимое и выполняется переход к шагу 1.
Последовательное умножение завершается когда дробная
часть оказывается нулевой либо когда получено
количество двоичных цифр удовлетворяющее требуемой
(заданой) точности. Представление числа будет состоять
из цифр целых частей полученных на шаге два, запись этих
цифр производится в том порядке в каком они были
получены.
Преобразования чисел из одной системы
счисления в другую
Любое двоичное число может быть записано в
десятичной системе счисления представив двоичное
число в виде N(2)=bn-12n-1+bn-22n-2+  +b121+b020+b-12-
1+b 2-2++b 2-m
-2 -m
и выполнив требуемые арифметические операции
получаем: 101010.11(2)=125+024+123+022+121+020+12-
1+12-2=42.75
(10)
Алгоритм преобразования целого числа из десятичной
системы в двоичную:
1. Десятичное число делится на два; при этом получается
целое частное и остаток от деления;
2. Если полученое частное отличается от нуля, вернуться
к шагу 1; при этом частное используется как делимое;
3. Если частное от деления равно нулю, все
полученные остатки используются для
представления двоичного числа, причем запись
остатков в виде двоичного числа будет производиться в
порядке обратном их получению.
Преобразование десятичной дроби в двоичную систему
счисления:
1. Дробное число умножается на два;
2. Полученная в результате умножения на два целая
часть отделяется от дробной части;
3. Полученная на шаге 2 дробная часть рассматривается
как множимое и выполняется переход к шагу 1.
Последовательное умножение на два завершается когда
дробная часть оказывается нулевой либо когда получено
количество двоичных цифр удовлетворяющее требуемой
(заданой) точности. Двоичное представление числа будет
состоять из цифр, которые представляют целые части
полученные на шаге два, запись этих цифр производится в
том порядке в каком они были получены.
2710=11011 3910=100111 4951=7138
27 2 39 2 45 9 8
26 13 2 38 19 2 40 57 8
1 12 6 2 1 18 9 2 59 56 7
1 6 3 2 1 8 4 2 56 1
0 2 1 1 4 2 2 3
1 0 2 1
0
100111=1*25+0*24+0*23+1*22+1*21+1*20
Правило преобразования двоичного числа в
восьмеричное число следующее :
1. Двоичные цифры слева и справа от десятичной точки
группируются по три, образуя триады;
2. Каждая триада заменяется восьмеричной цифрой в
соответствии со следующей таблицей
эквивалентности:
Восьмеричная цифра Двоичная триада

0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
Формы представления двоичных чисел
Двоичные числа могут быть представлены в двух формах:
в форме с фиксированной точкой и в форме с плавающей
точкой
Числа с фиксированной точкой
Представление целых чисел без знака. Формат целых
чисел без знака выглядит следующим образом:
Представление дробных (меньше единицы) чисел без
знака. В этом случае, формат чисел аналогичен формату
целых чисел без знака. Отличие состоит в том, что
десятичная точка неявно фиксирована слева
Представление двоичных чисел со знаком предполагает
использование некоторого соглашения относительно
цифры знака. Согласно принятой конвенции знак “+”
представляется цифрой 0 а знак “-” цифрой 1. Двоичные
числа со знаком могут быть представлены в прямом,
дополнительном и обратном коде.
Представление двоичных чисел в прямом коде Целые
числа со знаком имеют следующий формат:
Представление двоичных чисел в дополнительном коде
Дополнительный код положительного числа совпадает с
прямым кодом этого числа. В случае отрицательных чисел
правило получения дополнительного кода следующее:
инвертируются все разряды с последующим
прибавлением 1 в младший разряд, а в поле цифры знака
проставляется 1.
Представление двоичных чисел в обратном коде:
Обратный код положительного числа совпадает с прямым
кодом этого числа. Обратный код отрицательного числа
получается путем инвертирования цифровых разрядов и
проставляя 1 в знаковый разряд.
ПРОЕКТИРОВАНИЕ КОМБИНАЦИОННЫХ
ЛОГИЧЕСКИХ СХЕМ
Комбинационными логическими схемами (КЛС)
называются схемы, состоящие из логических элементов
того или иного функционально полного базиса, не
способные к запоминанию информации, то есть состояние
выходов зависит только от состояния входов в данный
момент времени и не зависит от состояния входов в
предидущий момент времени.
КЛС можно описать двумя способами: с помощью таблиц
истинности или с помощью логических выражений.
Этапы Проектирования КЛС :
1. Табличное или аналитическое описание
функционирования КЛС;
2. Минимизация логической функции одним из
известных способов;
3. Преобразование полученной МДНФ посредством
формул де Моргана с целью перехода к выбранному
или заданному логическому базису (И-НЕ, ИЛИ-НЕ);
4. Синтез КЛС в соответствующем базисе логических
элементов.
Если у КЛС больше одного выхода такие схемы
называются системами КЛС. Этапы синтеза систем КЛС
такие-же как и для обычных КЛС с одним исключением:
перед реализацией схемы необходимо выявить общие
части, для того чтоб реализовать их один раз в схеме.
Синтез преобразователей кода
Преобразователи кода - это комбинационные
функциональные элементы, предназначенные для
преобразования одного двоичного кода в другой: мы
можем представить его как КЛС с n входами и m
выходами. Переменные n и m могут быть разными или
равными. Число n соответствует количеству рангов кода на
входе, м- количество рангов кода на выходе.
Обычно преобразователи кода с разным количеством
входов и выходов являются те, которые выполняют
преобразование чисел из одной системы счисления в
другую или из одного типа кода в другой тип кода.
Синтез преобразователей кода происходит
следующим образом:
I) На 1-м этапе проводится разработка таблицы истинности.
Количество элементов таблицы истинности равно числу рядов
входного кода, который представляют собой переменные не
входе функции. Количество функции на выходе равно числу
рангов кода на выходе. Nr. комбинации равны 2n, но f в таблице
истинности может быть частично определено, то есть в 2n
комбинациях часть может быть неиспользованной, в этом
случае логический f будет минимизирован как частично
определенный f.
II) Минимизация функций.
III) Нахождение общих терминов минимальных форм всех ЛФ
для использования одних и тех же элементов при получении в
логической схеме различных функций.
IV) Реализация минимальных форм, полученных для доступных
логических элементов.
Дешифраторы
x3 x2 x1 y0 y1 y2 y3 y4 y5 y6 y7
0 0 0 1 0 0 0 0 0 0 0 y 0 = x 3 x 2 x1

0 0 1 0 1 0 0 0 0 0 0 y1 = x 3 x 2 x1

0 1 0 0 0 1 0 0 0 0 0 y 2 = x 3 x 2 x1
0 1 1 0 0 0 1 0 0 0 0 y 3 = x 3 x 2 x1
1 0 0 0 0 0 0 1 0 0 0 y 4 = x 3 x 2 x1
1 0 1 0 0 0 0 0 1 0 0 y 5 = x 3 x 2 x1
1 1 0 0 0 0 0 0 0 1 0 y 6 = x 3 x 2 x1
1 1 1 0 0 0 0 0 0 0 1 y 7 = x 3 x 2 x1
v
x3 x2 x1

y0
Reprezentarea grafica
y1
DC 0 x0
1 x1
y2
2 x2
x0 0 x3
3
y3
x1 1
4 x4
x2 2 x5
y4 5
6 x6
y5
7 x7

y6

y7
Шифраторы
Шифратор — это комбинационное устройство,
преобразующее десятичные числа в двоичную систему
счисления, причем каждому входу может быть
поставлено в соответствие десятичное число, а набор
выходных логических сигналов соответствует
определенному двоичному коду. Шифратор иногда
называют «кодером» (от англ. coder) и используют,
например, для перевода десятичных чисел, набранных
на клавиатуре кнопочного пульта управления, в
двоичные числа.
Если количество входов настолько велико, что в
шифраторе используются все возможные комбинации
сигналов на выходе, то такой шифратор называется
полным, если не все, то неполным. Число входов и
выходов в полном шифраторе связано соотношением n=
2m, где n— число входов, m— число выходов.
Сложение и вычитание двоичных чисел с
фиксированной точкой
Операция сложения двоичных кодовых слов является
ключевой операцией в любой цифровой системе. В
двоичной системе счисления сложение двоичных цифр
выполняется согласно следующим правилам:
0+0=0
0+1=1
1+0=1
Сумма 1+1=10. Поэтому, при сложении двух двоичных
цифр 1 имеем: 1+1=0 плюс единица переноса, которую
следует учитывать при сложении двоичных цифр в
следующем разряде.
Сложение в прямом коде
Правила сложения двоичных чисел в прямом коде не
отличаются от вышеуказанных. Если оба слагаемых
(операнда) имеют одинаковые знаки, то следует сложить
разряды цифровой части, а сумме приписать знак одного
из операндов. Если знаки операндов разные, то из
разрядов цифровой части большего по модулю числа
вычитается меньшее, а сумме приписывается знак
большего числа.
При вычитании двоичных цифр следует соблюдать следующие
правила: 0-0=0, 1-0=1, 1-1=0, 0-1=1 с учетом единицы заёма в
старшем разряде.
При сложении чисел в прямом коде характерны два
недостатка:
1) знаковый и цифровые разряды операндов
приходиться обрабатывать раздельно;
2) выполнение операции сложения затруднено тем, что
необходимо иметь в составе вычислительного
оборудования как суммирующее устройство, так и
вычитающее устройство. Из-за указанных недостатков
прямой код для выполнения операции сложения не
используется, однако этот код удобен при реализации
операции умножения.
Сложение в дополнительном коде
Сложение двоичных чисел в дополнительном коде
производится по тем же правилам как и прямом коде.
Операцию вычитания двух чисел заменяют сложением
соответствующих чисел следующим образом:
A-B=A+(-B)
При сложении двух чисел в дополнительном коде
знаковый разряд и цифровая часть обрабатываются как
единое целое. Результат сложения получается в
дополнительном коде.
Если имеет место перенос из знакового разряда, то цифра
переноса игнорируется.
Сложение в обратном коде
В обратном коде, как и в дополнительном коде, операция
вычитания заменяется операцией алгебраического сложения.
При этом знаковый разряд и цифровая часть операнда
обрабатываются как единое целое. Правильный знак суммы
получается автоматически в процессе суммирования цифр
знаковых разрядов операндов и единицы переноса из
цифровой части, если она появляется. Характерной
особенностью сложения в обратном коде является наличие
циклического переноса (если он возникает) из знакового
разряда в младший разряд цифровой части, в результате чего
получается правильная сумма.
Сдвиг двоичных чисел
При выполнении в цифровых устройствах определенных
операций, может возникнуть необходимость сдвигать
цифры двоичного кода. Операции сдвига могут быть
логического, арифметического и циклического типов.
Двоичное число может быть сдвинуто влево или вправо.
Сдвиг влево на один разряд соответствует умножению на
2, а сдвиг вправо на один разряд соответствует делению
на 2. Сдвиг двоичных чисел необходим при выполнении
таких операций, как умножение и деление, сложение
чисел с плавающей точкой.
Логический сдвиг
Каждая цифра здвигается на один разряд в право или
лево. В случае логического сдвига влево теряется цифра в
левом (старшем) разряде, а в случае логического сдвига
вправо теряется цифра в младшем разряде.
Арифметический сдвиг. В случае арифметического сдвига
цифра знака сохраняется. При сдвиге влево теряется
цифра следующая за знаковой, а в случае сдвига вправо
цифра знака дублируется и теряется цифра в младшем
разряде
Циклический сдвиг. При таком типе сдвига не теряется ни
одна цифра сдвигаемого числа. Это объясняется наличием
кольцевой связи между старшим и младшим разрядами
числа.
Умножение двоичных чисел с фиксированной
точкой
Операция умножения выполняется суммированием
сдвинутых на один или несколько разрядов частичных
произведений, каждое из которых является результатом
умножения множимого на соответствующий разряд
(разряды) множителя.
Основными способами выполнения операции умножения
являются:
1) умножение начиная с младших разрядов множителя;
2) умножение начиная со старших разрядов множителя.
Операциями сложения управляют разряды множителя:
если разряд множителя =1 к сумме частных произведений
прибавляется множимое с соответствующим сдвигом;
если разряд множителя =0, то множимое не добавляется.
При этом полную сумму (произведение) можно получить
двумя путями:
1) умножение начиная с младших разрядов множителя со
сдвигом множимого влево;
2) умножение начиная с старших разрядов множителя со
сдвигом множимого вправо;
Алгоритм умножения двоичных чисел с
фиксированной точкой :
Метод 1: умножение начиная с младших разрядов
множителя со сдвигом множимого в лево
Алгоритм состоит в: проверяем каждый разряд множителя
начиная с младших разрядов – если соответствующий
разряд = 1 то с промежуточному произведению
прибавляем множимое после чего сдвигаем множимое на
одну позицию в лево; если разряд =0 сложение не
производим, а только сдвигаем множимое в лево.
Первое промежуточное произведение =0
Метод 2: Умножение начиная с старших разрядов
множителя со сдвигом множимого в право
Алгоритм состоит в: проверяем каждый разряд множителя
начиная с старших разрядов – если соответствующий
разряд = 1 то с промежуточному произведению
прибавляем множимое после чего сдвигаем множимое на
одну позицию в право; если разряд =0 сложение не
производим, а только сдвигаем множимое в право.
Операнды обрабатываются вместе с битом знака.
Если количество разрядов операндов = n то количество
разрядов результата =2n.
Исходя из этого требуется нормализация результата –
считаем получившиеся в результате разряды если их
количество  2n – дополняем результат до требуемой
длинны добавляя нули с лева (то есть в наиболее старшие
позиции)
Деление двоичных чисел с фиксированной точкой
Частное определяется путем деления модулей исходных
чисел. При этом должно соблюдаться условие: АВ,
где А – делимое и В – делитель. В противном случае
возникнет переполнение.
Этапы деления двоичных чисел с фиксированной точкой
1. Определяем знак частного сложением по модулю 2
знаковых цифр операндов.
2. Определяем модули операндов и -В следуя
правилам составления дополнительного кода:
Алгоритм умножения двоичных чисел с фиксированной
точкой :
Метод 1: Деление с восстановлением остатков со сдвигом
остатков от деления влево
В ходе деления делитель вычитаем из делимого –
операцию вычитания заменяем