Автор работы: Пользователь скрыл имя, 18 Ноября 2011 в 17:06, курсовая работа
Главной задачей данной курсовой работы является изучение методов анализа и синтеза логических схем, способов представления булевых функций, в том числе и их минимизированных форм.
Во время выполнения данной курсовой работы будет осуществлено преобразования ФАЛ из одной формы записи в другую, выполнена минимизация различными методами и представлены заданные функции в различных базисах. Также необходимо выполнить синтез логических схем различных функций и смоделировать работу неполного дешифратора по заданным наборам.
Содержание
Введение 4
1 Расчетная часть 5
Задание №1 5
Задание №2 6
Задание №3 7
Задание №4 11
Задание №5 13
Задание №6 16
Задание №7 18
Задание №8 20
Задание №9 21
2 Метод факторизации 25
2.1 Теоретическая часть 25
2.2 Описание алгоритма программы 25
2.3 Кодирование программы 26
2.4 Анализ полученных результатов 27
Заключение 29
Список литературы 30
Приложение А 31
Приложение Б 32
Приложение В 35
Рисунок 8 – Неполный
дешифратор
Составляем систему
функций для неполного
Рисунок
9 – Логическая схема неполного дешифратора
2 Метод
факторизации
2.1 Теоретическая
часть
Для упрощения структурной реализации булевых функций ставится задача поиска абсолютной минимальной формы функции. Эта задача заключается в отыскании формы, содержащая минимальное число операции заданной функционально полной функции. В общем случае эта задача не решена. Поэтому рассматривают боле простую задачу – задачу факторизации.
Задача
факторизации заключается в упрощении
дизъюнктивно-конъюнктивных
2.2 Описание
алгоритма программы
Блок-схема
алгоритма представлена в приложении
А.
Программа
состоит из одной главной подпрограммы,
в которой выполняются все
основные операции метода факторизации
для скобочной минимизации
Выполнение
программы начинается с инициализации
глобальных переменных и ввода исходных
данных (блок 1). Далее выполняется
сохранение всех исходных данных в
массив (блок 2) и вывод результата
ввода на экран (блок 3) для подтверждения
правильности введенных пользователем
данных. Затем выполняется установка переменной
km в положение «-1» (блок 4) для обозначения
того, что далее будет выполнена первая
итерация цикла минимизации. После этого,
начинает свое выполнение цикл с предусловием
(блок 5), внутри которого содержатся операция
присвоения значению km максимального
числа пересеченных переменных (блок 6)
рассматриваемых минтермов, причем если
пересечения отсутствуют, то переменная
km приравнивается к «0». Затем выполняется
проверка условия наличия пересечений
(блок 7). В случае выполнения данного условия,
реализуются операции сохранения пересеченных
переменных (блок 8), сохранение непересеченных
элементов (блок 9) и удаления лишней строки
основного массива (блок 10), так как выбранная
пара пересеченных минтермов в совокупности
образует конъюнкцию пересеченных переменных
и скобки, содержащей неперсеченные переменные,
которые записываются в одну строку. Также
внутри условия содержится операция вывода
формы функции, полученной на данной итерации
(блок 11). По окончанию выполнения цикла,
на экран выводится конечный результат
(блок 12) в виде минимизированной функции.
2.3 Кодирование
программы
Текст программы на языке программирования Pascal представлен в приложении Б.
Для очистки экрана при запуске программы используется процедура CLRSCR при подключенном модуле CRT. Ввод данных осуществляется путем записи булевой функции в переменную строкового типа. В последующем выполняется анализ введенных данных и их последующее сохранение в двумерный строковый массив. Пересеченные элементы записываются в одномерный строковый массив, а непересеченные элементы – в переменную строкового типа. Для добавления данных к существующей строке используется функция CONCAT. Для определения длины строки используется функция LENGTH.
2.4 Анализ
полученных результатов
Для проверки
работоспособности программы
Функцию f можно представить множеством f={ABCD}.
A=;
B=;
C=;
D=.
На первом этапе ищутся все парные пересечения множества функции.
A×B= | A×C= | A×D= |
B×C= | B×D= | C×D= |
Выбирается
пара {A,C} и записывается функция f ,вынося
общий элемент
по отношению к A
и C.
Функцию f можно представить множеством f={A1B1C1}.
A1=;
B1=;
C1=.
Находятся все парные пересечения множества функции.
A1×B1= | A1×C1= | B1×C1= |
Выбирается
пара {A1,C1} и записывается функция
f ,вынося общий элемент
по отношению к A1
и C1.
Функцию f можно представить множеством f={A2B2}.
A2=;
B2=.
Находится парное пересечение множества функции.
A2×B2= |
Тогда окончательный
вид функция имеет:
Результат выполнения
программы находится в
Так как
форма функции, полученная минимизацией
методом факторизации вручную, и форма
функции, полученная минимизацией методом
факторизации программой, совпадают, следовательно,
программа работает исправно.
Заключение
В данной курсовой работе были изучены основные методы представления ФАЛ, минимизации ФАЛ, а также синтеза логических схем различных функций и элементов.
Во время выполнения курсовой работы были изучены основные формы записи булевых функций, способы их представления в виде СДНФ и СКНФ, методы минимизации, в частности методы Квайна, Квайна – Мак-Класски и метод минимизирующих карт. Также было осуществлено представление функций в базисах Пирса и Шеффера.
Помимо
этого, был подробно изучен один из
методов минимизации – метод
факторизации, основной целью которого
является скобочное преобразование
функции путем вынесения общих
элементов за скобки. Для реализации
данного метода была составлена программа,
которая позволяет
Список
литературы
1) Конспект лекций по предмету «Математическая логика и теория алгоритмов»
2) Конспект лекций по предмету «Теория автоматов»
3) Угрюмов Е.П.
Проектирование элементов и
4) Фаронов В.В. Турбо
Паскаль 7.0. Практика программирования.
Учебное пособие. Изд. 7-е, перепаб. – М.:
«Нолидж», 2000.- 416 с.,ил.
Приложение А
(обязательное)
Приложение Б
(обязательное)
Текст программы
на языке программирования Pascal
program AAA;
uses CRT;
var n,i,ii,j,k,l,m,mm,km,per:
a:string[1];
b:string;
tabl:array [1..64,1..6] of string[100];
obshee:array [1..6] of string[100];
otl1, otl2:string;
begin
clrscr;
{vvod dannyh}
writeln ('vvedite funkciyu');
readln(b);
{zapis' v massiv}
b:=concat(b,'+');
n:=1;
l:=1;
for i:=1 to length(b) do begin
if (b[i]='+') then begin
while (l<=6) do begin
n:=n+1;
l:=1;
end;
if (b[i]='x') then begin
tabl[n,l]:=b[i];
tabl[n,l]:=concat(tabl[n,l],b[
l:=l+1;
end;
end;
{vyvod ishodnoy funkcii}
n:=n-1;
writeln;
writeln ('ishodnaya funkciya:');
write('y=');
for i:=1 to n do begin
j:=1;
while (tabl[i,j]<>'0') do begin
write(tabl[i,j]);j:=j+1;
end;
if i<>n then write('+');
end;
writeln;
{metod faktorizacii}
writeln;
writeln('Vychisleniya');
km:=-1;
while (km<>0) do begin
km:=0;
{poisk maksimalnogo peresecheniya}
{nahoghdenie maksimalnogo kolichestva peresechennyh peremennyh}
for i:=1 to (n-1) do begin
for m:=i+1 to n do begin
while (tabl[i,j]<>'0') do begin
end;
if (k>km) then begin km:=k;
end;
end;
if km<>0 then begin
{zapis obshih peremennyh v otdelnyy massiv}
for i:=1 to 6 do obshee[i]:='0';
i:=0;
for j:=1 to 6 do begin
for l:=1 to 6 do begin
if ((tabl[ii,j]=tabl[mm,l])and(
then begin i:=i+1; obshee[i]:=tabl[mm,l];
tabl[ii,j]:='0';tabl[mm,l]:='
end;
end;
end;
{zapis ne peresechennyh peremennyh v otdelnuyu stroku}
otl1:='0';
otl2:='0';
for j:=1 to 6 do begin
if tabl[ii,j]<>'0' then if otl1='0' then otl1:=tabl[ii,j] else otl1:=concat(otl1,tabl[ii,j]);
if tabl[mm,j]<>'0' then if otl2='0' then otl2:=tabl[mm,j] else otl2:=concat(otl2,tabl[mm,j]);
end;
{zapolnenie ishodnogo massiva poluchennymi dannymi}
Информация о работе Исследование методов анализа и синтеза логических схем