КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Программная реализация логических функций и автоматов
F1 Представление автомата схемой, состоящей из логических элементов наиболее исследованный вид структурной реализации автомата. Другой ее вид - реализация программой. Программа вычисляет (реализует) логические функции f(x1,..., xn) = y, если для любого двоичного набора d = (d1,..., dn ) при начальном состоянии элементов памяти x1 = d1, x2 = d2,..., xn = dn программа через конечное число шагов останавливается и в ячейке y лежит величина f(d1, d2,..., dn). Если под сложностью схемы, реализующей автомат, обычно понимается число элементов схемы, то под сложностью программ можно понимать:
n число команд в тексте программы; n объем промежуточной памяти; n время вычисления программы, которое характеризуется двумя величинами: 1. Средним временем 2. Максимальным временем, где сумма и максимум берутся по всем 2 наборам, а tp - время работы программы на одном наборе s. Рассмотрим 2 типа программ: операторные и бинарные. Операторная программа не содержит условных переходов, порядок ее команд в точности соответствует нумерации элементов в схеме, а система команд соответствует базису схемы. Элементы схемы нумеруются числами 1,..., n таким образом, чтобы на любом пути от входа к выходу номера элементов возрастали. При этом номер 1 получит один из входных элементов, а номер n - выходной элемент. Пусть элемент схемы ei реализует функцию ji и к его входам присоединены выходы элементов ej1, e j2,..., e jm (некоторые из них, возможно, являются входами схемы), тогда выход такого элемента можно записать: ai = ji (ej1, e j2,..., e jm) при i ¹ n, а выход схемы может быть записан: y = ji(ej1, e j2,..., e jm) при i = n. Такая программа будет реализовывать работу заданной схемы. Проблема синтеза операторных программ сводится к проблеме синтеза схем, то есть к вопросам функциональной полноты и минимизации схем. Поскольку операторная программа не содержит условных переходов, то время ее выполнения на любом наборе одно и то же, отсюда t max = t ср. Бинарные программы это программы, состоящие из команд типа y = d; d = {0, 1} и условных переходов.
Замечание. Бинарные программы обладают двумя достоинствами по сравнению с операторными: 1. Отсутствием промежуточной памяти в процессе работы программы. Это позволяет реализовать бинарную программу на постоянных элементах памяти. 2. Более высоким быстродействием. Пример. Составить для функции f = (x1 v Øx3) & (x5 & Ø x4 v x2) бинарную и операторную программы.
Решение. Воспользуемся языком С++, будем иметь код: void main() { bool f=0, x1,x2,x3,x4,x5; // описание типа переменных cout<<” Enter x1,x2,x3,x4 ”; // вывод на экран текста cin>> x1>>x2>>x3>>x4>>x5; // ввод переменных
switch (x1) // оператор выбора case 0: switch(x3) case 0: f:=1; case 1: f:=0; case 1: f:=1;
switch (f) case 1: switch (x5) case 0: switch (x2) case 0: f:= 0; case 1: f:= 1; case 1: switch (x4) case 0: f:= 1; case 1: switch (x2) case 0: f:= 0; case 1: f:= 1; case 0: f=0; default: f=0; cout>> f; }
Операторная программа пишется в базисе {&,Ø}. Для этого перепишем заданную функцию, используя формулы де Моргана. f = Ø (Øx1 & x3) & Ø(Ø (x5 & Øx4) & Øx2)
void main() {
bool f, x1,x2,x3,x4,x5; // описание типа переменных cout<<” Enter x1,x2,x3,x4 ”; // вывод на экран текста cin>> x1>>x2>>x3>>x4>>x5; // ввод переменных
a= 1-x1; { } b= a * x3; { } b= 1 - b; { } a= 1 - x4; { } c= a * x5; { } c= 1 - c; { } a= 1 - x2; { } c= c * a; { } c= 1 - c; Ø { } f= b *c;
cout<<f; }
Дата добавления: 2014-01-20; Просмотров: 474; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |