Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

отчет лаба 2 схемота

.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
1.31 Mб
Скачать

ФЕДЕРАЛЬНОЕ АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА

(РОСАВИАЦИЯ)

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)

Кафедра вычислительных машин, комплексов, сетей и систем.

Лабораторная работа защищена с оценкой ____________________

____________________

(подпись преподавателя, дата)

ЛАБОРАТОРНАЯ РАБОТА №2

по дисциплине «Схемотехническое моделирование».

Тема: «Построение схем реализации пороговых схем мажоритарных элементов.»

Выполнила студентка группы ИС2-1

Магальник Екатерина Борисовна

Руководитель: Затучный Дмитрий Александрович

МОСКВА – 2024

Теоретическая часть.

Схема реализации функции — основа для построения различных вычислительных устройств и компьютеров. Обычно их строят из логических элементов, каждый из которых реализует определённую переключательную функцию.

Мажоритарный элемент — это логический элемент из класса пороговых с чётным или нечётным числом входов и одним выходным сигналом, значение которого совпадает со значением на большинстве входов.

Элемент работает по принципу большинства: если на большинстве входов будет сигнал «1», то и на выходе схемы установится сигнал «1»; и наоборот, если на большинстве входов будет сигнал «0», то и на выходе установится «0».

Пороговая схема k из N элементов называется комбинационная схема, имеющая N входов и 1 выход и формирующая на выходе единичное значение, если на k и более входах установлена единица и значение логического нуля если количество единиц меньше k или если количество нулей больше k. При значении k=1 пороговая схема превращается в ИЛИ, а при k=N в И.

Задание 1.

Построить схему реализации пороговой схемы 2 из 5. Записать таблицу истинности.

Получившаяся функция:

Блок-схемы алгоритмов:

Рисунок 1. Алгоритм функции addcomb()

Рисунок 2. Алгоритм функции main()

Схема реализации функции:

Y

ИЛИ

И

И

И

И

И

И

И

И

И

И

X2

X3

X4

X5

X1

Результат работы программы:

x1, x2, x3, x4, x5, y

0 0 0 0 0 0

0 0 0 0 1 0

0 0 0 1 0 0

0 0 0 1 1 1

0 0 1 0 0 0

0 0 1 0 1 1

0 0 1 1 0 1

0 0 1 1 1 1

0 1 0 0 0 0

0 1 0 0 1 1

0 1 0 1 0 1

0 1 0 1 1 1

0 1 1 0 0 1

0 1 1 0 1 1

0 1 1 1 0 1

0 1 1 1 1 1

1 0 0 0 0 0

1 0 0 0 1 1

1 0 0 1 0 1

1 0 0 1 1 1

1 0 1 0 0 1

1 0 1 0 1 1

1 0 1 1 0 1

1 0 1 1 1 1

1 1 0 0 0 1

1 1 0 0 1 1

1 1 0 1 0 1

1 1 0 1 1 1

1 1 1 0 0 1

1 1 1 0 1 1

1 1 1 1 0 1

1 1 1 1 1 1

Полная функция:

['x4x5', 'x3x5', 'x3x4', 'x3x4x5', 'x2x5', 'x2x4', 'x2x4x5', 'x2x3', 'x2x3x5', 'x2x3x4', 'x2x3x4x5', 'x1x5', 'x1x4', 'x1x4x5', 'x1x3', 'x1x3x5', 'x1x3x4', 'x1x3x4x5', 'x1x2', 'x1x2x5', 'x1x2x4', 'x1x2x4x5', 'x1x2x3', 'x1x2x3x5', 'x1x2x3x4', 'x1x2x3x4x5']

Функция с поглощениями вручную:

['x4x5', 'x3x5', 'x3x4', 'x2x5', 'x2x4', 'x2x3', 'x1x5', 'x1x4', 'x1x3', 'x1x2']

Листинг:

def addcomb(x): fin = "" for i in range(5): if x[i] == 1: fin = fin + "x" + str(i + 1) combs.append(fin) print("x1, x2, x3, x4, x5, y") ls = [] combs = [] for x1 in range(2): c1 = 0 if x1 == 1: c1+=1 for x2 in range(2): c2 = 0 if x2 == 1: c2 += 1 for x3 in range(2): c3 = 0 if x3 == 1: c3 += 1 for x4 in range(2): c4 = 0 if x4 == 1: c4 += 1 for x5 in range(2): c5 = 0 if x5 == 1: c5 += 1 if c1 + c2 + c3 + c4 + c5 >= 2: print (x1, " ", x2, " ", x3, " ", x4, " ", x5, " ", 1) ls.append(x1) ls.append(x2) ls.append(x3) ls.append(x4) ls.append(x5) if ls.count(1) >= 2: addcomb(ls) ls.clear() else: ls.clear() else: print (x1, " ", x2, " ", x3, " ", x4, " ", x5, " ", 0) print("Полная функция: ") print (combs) indexes = [] for i in range(len(combs)): for j in range(i+1, len(combs)): if combs[i] in combs[j]: if j in indexes: continue else: indexes.append(j) continue new = [] for i in range(len(combs)): if i in indexes: continue else: new.append(combs[i]) print("Функция с поглощениями вручную: ") print(new)

Задание 2.

Построить схему реализации пороговой схемы 1 из 4. Записать таблицу истинности. Сравнить с таблицей истинности элемента ИЛИ. Сделать выводы.

Получившаяся функция:

Блок-схемы алгоритмов:

Рисунок 3. Алгоритм функции addcomb()

Рисунок 4. Алгоритм функции main()

Y

ИЛИ

X4

X3

X2

X1

Схема реализации функции:

Результат работы программы:

x1, x2, x3, x4, y

0 0 0 0 0

0 0 0 1 1

0 0 1 0 1

0 0 1 1 1

0 1 0 0 1

0 1 0 1 1

0 1 1 0 1

0 1 1 1 1

1 0 0 0 1

1 0 0 1 1

1 0 1 0 1

1 0 1 1 1

1 1 0 0 1

1 1 0 1 1

1 1 1 0 1

1 1 1 1 1

Полная функция:

['x4', 'x3', 'x3x4', 'x2', 'x2x4', 'x2x3', 'x2x3x4', 'x1', 'x1x4', 'x1x3', 'x1x3x4', 'x1x2', 'x1x2x4', 'x1x2x3', 'x1x2x3x4']

Функция с поглощениями вручную:

['x4', 'x3', 'x2', 'x1']

Таблица истинности элемента ИЛИ:

x1, x2, y

0 0 0

0 1 1

1 0 1

1 1 1

Листинг:

def addcomb(x): fin = "" for i in range(4): if x[i] == 1: fin = fin + "x" + str(i + 1) combs.append(fin) print("x1, x2, x3, x4, y") ls = [] combs = [] for x1 in range(2): c1 = 0 if x1 == 1: c1+=1 for x2 in range(2): c2 = 0 if x2 == 1: c2 += 1 for x3 in range(2): c3 = 0 if x3 == 1: c3 += 1 for x4 in range(2): c4 = 0 if x4 == 1: c4 += 1 if c1 + c2 + c3 + c4 >= 1: print (x1, " ", x2, " ", x3, " ", x4, " ", 1) ls.append(x1) ls.append(x2) ls.append(x3) ls.append(x4) if ls.count(1) >= 1: addcomb(ls) ls.clear() else: s.clear() else: print (x1, " ", x2, " ", x3, " ", x4, " ", 0) print("Полная функция: ") print (combs) indexes = [] for i in range(len(combs)): for j in range(i+1, len(combs)): if combs[i] in combs[j]: if j in indexes: continue else: indexes.append(j) continue new = [] for i in range(len(combs)): if i in indexes: continue else: new.append(combs[i]) print("Функция с поглощениями вручную: ") print(new)

Вывод: сравнивая таблицы истинности элемента ИЛИ и полученной функции можно сделать вывод, что логическое сложение любого количества элементов даст на выходе элемент ИЛИ.

Задание 3.

Построить схему реализации пороговой схемы 4 из 4. Записать таблицу истинности. Сравнить с таблицей истинности элемента И. Сделать выводы.

Получившаяся функция:

Блок-схемы алгоритмов:

Рисунок 5. Алгоритм функции addcomb()

Рисунок 6. Алгоритм функции main()

Y

И

X4

X3

X2

X1

Схема реализации функции:

Результат работы программы:

x1, x2, x3, x4, y

0 0 0 0 0

0 0 0 1 0

0 0 1 0 0

0 0 1 1 0

0 1 0 0 0

0 1 0 1 0

0 1 1 0 0

0 1 1 1 0

1 0 0 0 0

1 0 0 1 0

1 0 1 0 0

1 0 1 1 0

1 1 0 0 0

1 1 0 1 0

1 1 1 0 0

1 1 1 1 1

Полная функция:

['x1x2x3x4']

Функция с поглощениями вручную:

['x1x2x3x4']

Таблица истинности элемента И:

x1, x2, y

0 0 0

0 1 0

1 0 0

1 1 1

Листинг:

def addcomb(x): fin = "" for i in range(4): if x[i] == 1: fin = fin + "x" + str(i + 1) combs.append(fin) print("x1, x2, x3, x4, y") ls = [] combs = [] for x1 in range(2): c1 = 0 if x1 == 1: c1+=1 for x2 in range(2): c2 = 0 if x2 == 1: c2 += 1 for x3 in range(2): c3 = 0 if x3 == 1: c3 += 1 for x4 in range(2): c4 = 0 if x4 == 1: c4 += 1 if c1 + c2 + c3 + c4 >=4: print (x1, " ", x2, " ", x3, " ", x4, " ", 1) ls.append(x1) ls.append(x2) ls.append(x3) ls.append(x4) if ls.count(1) >= 4: addcomb(ls) ls.clear() else: ls.clear() else: print (x1, " ", x2, " ", x3, " ", x4, " ", 0) print("Полная функция: ") print (combs) indexes = [] for i in range(len(combs)): for j in range(i+1, len(combs)): if combs[i] in combs[j]: if j in indexes: continue else: indexes.append(j) continue new = [] for i in range(len(combs)): if i in indexes: continue else: new.append(combs[i]) print("Функция с поглощениями вручную: ") print(new)

Вывод: сравнивая таблицы истинности элемента И и полученной функции можно сделать вывод, что логическое умножение любого количества элементов даст на выходе элемент И.

Задание 4.

Построить схему реализации мажоритарного элемента 2 из 4. Записать таблицу истинности функции с учетом функции многоразрядного кода, указывающего номер отказавшего канала. Встроить схему реализации этого кода в схему реализации мажоритарного элемента.

Получившаяся функция:

Функция A1:

Функция A0:

Блок-схемы алгоритмов:

Рисунок 7. Алгоритм функции addcomb()

Рисунок 8. Алгоритм функции main()

Схема реализации функции:

И

1

A1

ИЛИ

И

1

X1

И

И

X2

Y

ИЛИ

И

X3

И

X4

И

1

A0

ИЛИ

И

1

Результат работы программы:

x1, x2, x3, x4, y, A1, A0

0 0 0 0 0 0 0

0 0 0 1 0 0 1

0 0 1 0 0 0 1

0 0 1 1 0 0 0

0 1 0 0 0 1 0

0 1 0 1 0 1 1

0 1 1 0 0 1 1

0 1 1 1 1 1 0

1 0 0 0 0 1 0

1 0 0 1 0 1 1

1 0 1 0 0 1 1

1 0 1 1 1 1 0

1 1 0 0 0 0 0

1 1 0 1 1 0 1

1 1 1 0 1 0 1

1 1 1 1 1 0 0

Полная функция:

['x2x3x4', 'x1x3x4', 'x1x2x4', 'x1x2x3', 'x1x2x3x4']

Функция с поглощениями вручную:

['x2x3x4', 'x1x3x4', 'x1x2x4', 'x1x2x3']

Листинг:

def addcomb(x): fin = "" for i in range(4): if x[i] == 1: fin = fin + "x" + str(i + 1) combs.append(fin) print("x1, x2, x3, x4, y, A1, A0") ls = [] combs = [] for x1 in range(2): c1 = 0 if x1 == 1: c1+=1 for x2 in range(2): c2 = 0 if x2 == 1: c2 += 1 for x3 in range(2): c3 = 0 if x3 == 1: c3 += 1 for x4 in range(2): a1 = (x1 + x2) % 2 a6 = (x3 + x4) % 2 c4 = 0 if x4 == 1: c4 += 1 if c1 + c2 + c3 + c4 > 2: print (x1, " ", x2, " ", x3, " ", x4, " ", 1, " ", a1, " ", a6) ls.append(x1) ls.append(x2) ls.append(x3) ls.append(x4) if ls.count(1) >= 1: addcomb(ls) ls.clear() else: ls.clear() else: print (x1, " ", x2, " ", x3, " ", x4, " ", 0, " ", a1, " ", a6) print("Полная функция: ") print (combs) indexes = [] for i in range(len(combs)): for j in range(i+1, len(combs)): if combs[i] in combs[j]: if j in indexes: continue else: indexes.append(j) continue new = [] for i in range(len(combs)): if i in indexes: continue else: new.append(combs[i]) print("Функция с поглощениями вручную: ") print(new)

Вывод: в ходе данной лабораторной работы были изучены пороговые схемы, мажоритарные элементы и схемы их построения. Так же была изучена реализация таблиц истинности мажоритарных элементов на алгоритмическом языке Python и построение пороговых схем и схем реализации функций с помощью встроенного инструментария Word.