#import "@docs/bmstu:1.0.0":*
#import "@preview/tablex:0.0.8": tablex, rowspanx, colspanx, cellx
#show: student_work.with(
  caf_name: "Компьютерные системы и сети",
  faculty_name: "Информатика и системы управления",
  work_type: "лабораторной работе",
  work_num: "3",
  discipline_name: "Схемотехника",
  theme: "Преобразователи кодов",
  author: (group: "ИУ6-42Б", nwa: "<NAME>"),
  adviser: (nwa: "<NAME>"),
  city: "Москва",
  table_of_contents: true,
)
#let xb = $op("x", limits: #true)^"__"$
#let ab = $op("a", limits: #true)^"__"$
#let bb = $op("b", limits: #true)^"__"$
#let nt(a,b) = $op((#a), limits: #true)^#b$


= Задание


1. Исследование преобразователя ДДК 8421в заданный код:
  - Выполнить синтез схемы преобразователя кода. Результаты синтеза представить в базисе И-НЕ;
  - Выполнить синтез схемы двоично-десятичного счетчика на JK-триггерах по безвентильной схеме с естественным порядком изменения состояний; скоммутировать схемы счетчика и преобразователя кода; выходные сигналы счетчика использовать в качестве переменных A3, A2, A1, A0;
  - Исследовать схему преобразователя кода в статическом и динамическом режимах. В статическом режиме сигналы выходные сигналы счетчика использовать в качестве переменных A3, A2, A1, A0. В статическом режиме сигналы на вход счетчика подавать от ключа, в динамическом режиме – от генератора импульсов. 
  
  Провести анализ работы преобразователя кода по таблице истинности и временной диаграмме входных и выходных сигналов преобразователя кода.

2. Исследование преобразователя заданного ДДК в ДДК 8421:
  - выполнить синтез схемы преобразователя кода. Результаты синтеза представить в базисе И-НЕ;
  - скоммутировать схемы 4-разрядного двоичного счетчика и преобразователя кода; выходные сигналы счетчика использовать в качестве переменных В3, В2, В1, В0;
  - исследовать схему преобразователя кода в статическом и динамическом режимах. В статическом режиме выходные сигналы счетчика использовать в качестве переменных В3, В2, В1, В0. В статическом режиме сигналы на вход счетчика подавать от ключа, в динамическом режиме – от генератора импульсов. Провести анализ работы преобразователя кода по таблице истинности и временной диаграмме входных и выходных сигналов преобразователя кода.
3. Составить отчет.


= Выполнение

== Цель работы

Изучение принципов построения и методов синтеза преобразователей двоично-десятичных кодов (ДДК); моделирование электрических схем ДДК.

== Исследование преобразователя ДДК 8421 в заданный код



=== Таблица переходов

#align(center)[
#tablex(
columns: 10,
inset: 4pt,
align: center + horizon,
$space A space$,$a_3$,$a_2$,$a_1$,$a_0$,$space B space$,  $b_3$,$b_2$,$b_1$,$b_0$,
$0$,            $0$,  $0$,  $0$,  $0$,  $0$,              $0$,  $0$,  $0$,  $0$,
$1$,            $0$,  $0$,  $0$,  $1$,  $1$,              $0$,  $0$,  $0$,  $1$,
$2$,            $0$,  $0$,  $1$,  $0$,  $3$,              $0$,  $0$,  $1$,  $1$,
$3$,            $0$,  $0$,  $1$,  $1$,  $4$,              $0$,  $1$,  $0$,  $0$,
$4$,            $0$,  $1$,  $0$,  $0$,  $5$,              $0$,  $1$,  $0$,  $1$,
$5$,            $0$,  $1$,  $0$,  $1$,  $8$,              $1$,  $0$,  $0$,  $0$,
$6$,            $0$,  $1$,  $1$,  $0$,  $9$,              $1$,  $0$,  $0$,  $1$,
$7$,            $0$,  $1$,  $1$,  $1$,  $11$,             $1$,  $0$,  $1$,  $1$,
$8$,            $1$,  $0$,  $0$,  $0$,  $12$,             $1$,  $1$,  $0$,  $0$,
$9$,            $1$,  $0$,  $0$,  $1$,  $13$,             $1$,  $1$,  $0$,  $1$,
)]

=== Совершенная дизъюнктивная форма

$
b_3 = 
ab_3 a_2 ab_1 a_0 or
ab_3 a_2 a_1 ab_0 or
ab_3 a_2 a_1 a_0 or
a_3 ab_2 ab_1 ab_0 or
a_3 ab_2 ab_1 a_0
$
// 0101 0110 0111 1000 1001
// 0000 0001 0010 0011 0100
$
b_2 = 
ab_3 ab_2 a_1 a_0 or
ab_3 a_2 ab_1 ab_0 or
a_3 ab_2 ab_1 ab_0 or
a_3 ab_2 ab_1 a_0
$
//0011 0100 1000 1001
$
b_1 = 
ab_3 ab_2 a_1 ab_0 or
ab_3 a_2 a_1 a_0
$
// 0010 0111
$
b_0 = 
ab_3 ab_2 ab_1 a_0 or
ab_3 ab_2 a_1 ab_0 or
ab_3 a_2 ab_1 ab_0 or
ab_3 a_2 a_1 ab_0 or
ab_3 a_2 a_1 a_0 or\ or
a_3 ab_2 ab_1 a_0\
$
// 0001 0010 0100 0110 0111 1001

#pagebreak()
=== Карты Карно и минимизация СДНФ

Минимизируем СДНФ и приведем их к базису И-НЕ

#img(image("1.png", width: 50%), [Карта Карно для $b_3$])

$
b_3 = a_3 or a_2 a_1 or a_2 ab_1 a_0 = nt(ab_3 and nt(a_2 a_1,"___________") and nt(a_2 ab_1 a_0 ,"________________"), "_______________________________________________")
$

#img(image("2.png", width: 50%), [Карта Карно для $b_2$])

$
b_2 = a_2 ab_1 ab_0 or a_3 or ab_2 a_1 a_0 = nt(ab_3 and nt(a_2 ab_1 ab_0,"________________") and nt(ab_2 a_1 a_0,"________________"),"_____________________________________________________")
$


#img(image("3.png", width: 50%), [Карта Карно для $b_1$])

$
b_1 = a_2 a_1 a_0 or ab_2 a_1 ab_0 = nt(nt(a_2 a_1 a_0,"________________") and nt(ab_2 a_1 ab_0,"________________"),"___________________________________________")
$

#img(image("4.png", width: 50%), [Карта Карно для $b_0$])

$
b_0 = a_2 a_1 a_0 or ab_2 ab_1 a_0 or a_1 ab_0 or a_2 ab_0 =\ = nt(nt(a_2 a_1 a_0,"________________") and nt(ab_2 ab_1 a_0,"________________") and nt(a_1 ab_0,"____________")and nt(a_2 ab_0,"____________"), "____________________________________________________________________________")
$

#pagebreak()
== Исследование преобразователя заданного ДДК в ДДК 8421

=== Таблица переходов

#align(center)[
#tablex(
columns: 10,
inset: 4pt,
align: center + horizon,
$space A space$,$a_3$,$a_2$,$a_1$,$a_0$,$space B space$,  $b_3$,$b_2$,$b_1$,$b_0$,
$0$,            $0$,  $0$,  $0$,  $0$,  $0$,              $0$,  $0$,  $0$,  $0$,
$1$,            $0$,  $0$,  $0$,  $1$,  $1$,              $0$,  $0$,  $0$,  $1$,
$2$,            $0$,  $0$,  $1$,  $0$,  $3$,              $0$,  $0$,  $1$,  $1$,
$3$,            $0$,  $0$,  $1$,  $1$,  $4$,              $0$,  $1$,  $0$,  $0$,
$4$,            $0$,  $1$,  $0$,  $0$,  $5$,              $0$,  $1$,  $0$,  $1$,
$5$,            $0$,  $1$,  $0$,  $1$,  $8$,              $1$,  $0$,  $0$,  $0$,
$6$,            $0$,  $1$,  $1$,  $0$,  $9$,              $1$,  $0$,  $0$,  $1$,
$7$,            $0$,  $1$,  $1$,  $1$,  $11$,             $1$,  $0$,  $1$,  $1$,
$8$,            $1$,  $0$,  $0$,  $0$,  $12$,             $1$,  $1$,  $0$,  $0$,
$9$,            $1$,  $0$,  $0$,  $1$,  $13$,             $1$,  $1$,  $0$,  $1$,
)]

=== Совершенная дизъюнктивная форма

$
a_3 = b_3 b_2 bb_1 bb_0 or b_3 b_2 bb_1 b_0\
a_2 = bb_3 b_2 bb_1 b_0 or b_3 bb_2 bb_1 bb_0 or b_3 bb_2 bb_1 b_0 or b_3 bb_2 b_1 b_0\
a_1 = bb_3 bb_2 b_1 b_0 or bb_3 b_2 bb_1 bb_0 or b_3 bb_2 bb_1 b_0 or b_3 bb_2 b_1 b_0\
a_0 = bb_3 bb_2 bb_1 b_0 or bb_3 b_2 bb_1 bb_0 or b_3 bb_2 bb_1 bb_0 or b_3 bb_2 b_1 b_0 or b_3 b_2 bb_1 b_0
$

=== Карты Карно и минимизация СДНФ

Минимизируем СДНФ и приведем их к базису И-НЕ

#img(image("5.png", width: 47%), [Карта Карно для $a_3$])

$
a_3 = b_3 b_2 
$

#img(image("6.png", width: 50%), [Карта Карно для $a_2$])

$
a_2 = bb_3 b_2 b_0 or b_3 bb_2 = nt(nt(bb_3 b_2 b_0,"_______________") and nt(b_3 bb_2,"____________"), "_______________________________________")
$

#img(image("7.png", width: 50%), [Карта Карно для $a_1$])

$
a_1 = bb_3 b_2 bb_0 or b_3 bb_2 b_0 or b_1 = nt(nt(bb_3 b_2 bb_0,"_________________") and nt(b_3 bb_2 b_0,"_________________" ) and bb_1, "_____________________________________________________")
$

#img(image("8.png", width: 50%), [Карта Карно для $a_0$])

$
a_0 = bb_3 b_2 bb_0 or b_3 bb_2 bb_0 or b_3 b_2 b_0 or b_3 b_1 or bb_3 bb_2 bb_1 b_0 =\ = 
nt(nt(bb_3 b_2 bb_0,"_________________") and nt(b_3 bb_2 bb_0,"_________________" ) and nt(b_3 b_2 b_0,"______________" ) and nt(b_3 b_1, "___________") and nt(bb_3 bb_2 bb_1 b_0, "_____________________"), "____________________________________________________________________________________________________________")
$

= Схема

Синтезируем одну схему, левая часть которой будет преобразовывать ДДК 8421 в заданный ДДК, а правая заданный ДДК в ДДК 8421. Если коды на входе совпадут с кодами на выходе, значит все было сделано верно.

#img(image("9.png", width: 100%), [Схема])

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

= Контрольные вопросы

+ Как определяются избыточные наборы переменных?

  Избыточными наборами переменных являются все те наборы, которые не используются для кодирования десятичных цифр.

+ Каково правило записи функции в вид СКНФ?

  Все наборы переменных, на которых функция принимает значение 0, записываются в виде элементарных дизъюнкций, причем переменные, имеющие значение 0, записываются в прямой записи, иначе – в инверсной. Затем выполняется конъюнкция всех элементарных дизъюнкций, которая и является заданной функцией.

+ Как учитываются избыточные наборы переменных при минимизации функций алгебры логики?

  Избыточные наборы можно добавлять к записи функции для минимизации, на результат выражения они не влияют.

+ Каково правило перехода от ДНФ функции алгебры логики к функции, выраженной в базисе функции И-НЕ?

  ДНФ функции минимизируется, затем выражается в базисе И-НЕ, используя законы двойного отрицания и законы де Моргана.




