diff --git a/6/схемотехника/course_project/dot/muu-mul.dot b/6/схемотехника/course_project/dot/muu-mul.dot new file mode 100644 index 0000000..48651ec --- /dev/null +++ b/6/схемотехника/course_project/dot/muu-mul.dot @@ -0,0 +1,14 @@ +digraph G { + nodesep=1 + rankdir="LR" + SNO,SKO[shape=none] + IDLE,P1,P2,P3[shape=circle] + IDLE[fontsize=10] + SNO->IDLE + IDLE->P1 + P1->P2 + P2->P2[label="F1 = 0\nFC = 0"] + P2->P3[label="F1 = 1\nFC = 0"] + P2->SKO[label="FC = 1"] + P3->P2 +} diff --git a/6/схемотехника/course_project/dot/muu-set.dot b/6/схемотехника/course_project/dot/muu-set.dot new file mode 100644 index 0000000..f4e9081 --- /dev/null +++ b/6/схемотехника/course_project/dot/muu-set.dot @@ -0,0 +1,11 @@ +digraph G { + nodesep=1 + rankdir="LR" + SNO,SKO[shape=none] + IDLE,P1,P2[shape=circle] + IDLE[fontsize=10] + SNO->IDLE + IDLE->P1 + P1->P2 + P2->SKO +} diff --git a/6/схемотехника/course_project/drawio/muu-func.drawio b/6/схемотехника/course_project/drawio/muu-func.drawio index 6f4fd5f..dec8192 100644 --- a/6/схемотехника/course_project/drawio/muu-func.drawio +++ b/6/схемотехника/course_project/drawio/muu-func.drawio @@ -1,55 +1,55 @@ - + - + - - + + - + - + - + - - + + - - + + - + - - + + - + - - + + - + @@ -63,17 +63,6 @@ - - - - - - - - - - - @@ -85,105 +74,146 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + + - - + + - - - - - - - - - - - - - - - - - + - - - + + - - + + - - - + + + - + + + + + + + + + + + + - - + + - - + + - + - - - + + - - + + - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/6/схемотехника/course_project/drawio/muu-mul.drawio b/6/схемотехника/course_project/drawio/muu-mul.drawio index da28b7c..4b6abc4 100644 --- a/6/схемотехника/course_project/drawio/muu-mul.drawio +++ b/6/схемотехника/course_project/drawio/muu-mul.drawio @@ -1,6 +1,6 @@ - + - + @@ -46,16 +46,16 @@ - + - + - + - + @@ -169,13 +169,13 @@ - + - + @@ -197,14 +197,11 @@ - + - + - - - @@ -220,6 +217,14 @@ + + + + + + + + diff --git a/6/схемотехника/course_project/drawio/muu-set.drawio b/6/схемотехника/course_project/drawio/muu-set.drawio index 1f4aa26..26450b8 100644 --- a/6/схемотехника/course_project/drawio/muu-set.drawio +++ b/6/схемотехника/course_project/drawio/muu-set.drawio @@ -1,6 +1,6 @@ - + - + @@ -10,8 +10,8 @@ - - + + @@ -79,22 +79,16 @@ - - - - - - - + - + - + diff --git a/6/схемотехника/course_project/img/muu-cs1-q0-mcnf.png b/6/схемотехника/course_project/img/muu-cs1-q0-mcnf.png new file mode 100644 index 0000000..1437434 Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs1-q0-mcnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs1-q1-mcnf.png b/6/схемотехника/course_project/img/muu-cs1-q1-mcnf.png new file mode 100644 index 0000000..aec7cd6 Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs1-q1-mcnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs2-sko-mcnf.png b/6/схемотехника/course_project/img/muu-cs2-sko-mcnf.png new file mode 100644 index 0000000..3ce41de Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs2-sko-mcnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs2-y2-mdnf.png b/6/схемотехника/course_project/img/muu-cs2-y2-mdnf.png new file mode 100644 index 0000000..0cb1f13 Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs2-y2-mdnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs2-y3-mcnf.png b/6/схемотехника/course_project/img/muu-cs2-y3-mcnf.png new file mode 100644 index 0000000..ca0af53 Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs2-y3-mcnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs2-y4-mdnf.png b/6/схемотехника/course_project/img/muu-cs2-y4-mdnf.png new file mode 100644 index 0000000..2d6d5b3 Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs2-y4-mdnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs2-y7-mdnf.png b/6/схемотехника/course_project/img/muu-cs2-y7-mdnf.png new file mode 100644 index 0000000..e830e64 Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs2-y7-mdnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs2-yct-mcnf.png b/6/схемотехника/course_project/img/muu-cs2-yct-mcnf.png new file mode 100644 index 0000000..c55c7ce Binary files /dev/null and b/6/схемотехника/course_project/img/muu-cs2-yct-mcnf.png differ diff --git a/6/схемотехника/course_project/img/muu-cs2.svg b/6/схемотехника/course_project/img/muu-cs2.svg new file mode 100644 index 0000000..cd02d9a --- /dev/null +++ b/6/схемотехника/course_project/img/muu-cs2.svg @@ -0,0 +1,97 @@ + + +G + + + +Y2 + +Y2 + + + +Y1 + +Y1 + + + +Y2->Y1 + + + + + +Y6 + +Y6 + + + +Y2->Y6 + + + + + +Y8 + +Y8 + + + +Y2->Y8 + + + + + +Y3 + +Y3 + + + +Y5 + +Y5 + + + +Y3->Y5 + + + + + +Y9 + +Y9 + + + +Y9->Y8 + + + + + +SKO + +SKO + + + +SKO->Y8 + + + + + +SKO->Y9 + + + + + \ No newline at end of file diff --git a/6/схемотехника/course_project/img/muu-func.drawio.svg b/6/схемотехника/course_project/img/muu-func.drawio.svg index ca6564d..78b0ae5 100644 --- a/6/схемотехника/course_project/img/muu-func.drawio.svg +++ b/6/схемотехника/course_project/img/muu-func.drawio.svg @@ -1,4 +1,4 @@ -
CT
CS1
DS
CS2
SPO
9
/
Y
Yct
SKO
2
/

2
/

FC
F1
COP
SNO
SNO
SKO
Yct
\ No newline at end of file +
SPO
CS1
DS
CS2
CT
9
/
Y
Yct
SKO
2
/

2
/

EN
FC
SNO
Yct
SKO
F1
F1
COP
COP
\ No newline at end of file diff --git a/6/схемотехника/course_project/img/muu-graph-mul.svg b/6/схемотехника/course_project/img/muu-graph-mul.svg index 30c520c..24086b4 100644 --- a/6/схемотехника/course_project/img/muu-graph-mul.svg +++ b/6/схемотехника/course_project/img/muu-graph-mul.svg @@ -1,76 +1,88 @@ - + --> + G - + SNO -SNO +SNO - + -P0 - -P0 +IDLE + +IDLE - + -SNO->P0 - - +SNO->IDLE + + SKO -SKO +SKO P1 - -P1 + +P1 - + -P0->P1 - - - - - -P1->SKO - - -FC = 1 - - - -P1->P1 - - -F1 = 0 -FC = 0 +IDLE->P1 + + P2 - -P2 + +P2 P1->P2 - - -F1 = 1 -FC = 0 + + - + -P2->P1 - - +P2->SKO + + +FC = 1 + + + +P2->P2 + + +F1 = 0 +FC = 0 + + + +P3 + +P3 + + + +P2->P3 + + +F1 = 1 +FC = 0 + + + +P3->P2 + + \ No newline at end of file diff --git a/6/схемотехника/course_project/img/muu-graph-set.svg b/6/схемотехника/course_project/img/muu-graph-set.svg index aa07512..84e1513 100644 --- a/6/схемотехника/course_project/img/muu-graph-set.svg +++ b/6/схемотехника/course_project/img/muu-graph-set.svg @@ -1,47 +1,59 @@ - + --> + G - + SNO -SNO +SNO - + -P0 - -P0 +IDLE + +IDLE - + -SNO->P0 - - +SNO->IDLE + + SKO -SKO +SKO P1 - -P1 + +P1 - + -P0->P1 - - +IDLE->P1 + + - + + +P2 + +P2 + + -P1->SKO - - +P1->P2 + + + + + +P2->SKO + + \ No newline at end of file diff --git a/6/схемотехника/course_project/img/muu-mul.drawio.svg b/6/схемотехника/course_project/img/muu-mul.drawio.svg index 1f5b581..499b17c 100644 --- a/6/схемотехника/course_project/img/muu-mul.drawio.svg +++ b/6/схемотехника/course_project/img/muu-mul.drawio.svg @@ -1,4 +1,4 @@ -
начало
A[3:0]
B[3:0]
R[7:0]
FC
F1
конец
RA = A
RB = B
RR = 0
CT = 0
Y1
Y2
Y6
F1
P0

Y7
Y5

Y2

RR.SLI = CS1
RR >> 1
RB.SLI = RR0
RB >> 1
Y4
RR = SM
0
1
1
1
2
A
B
C
D
E
F
G
Y5
Y2
F1
FC
Yct
RR >> 1
RB >> 1
RB.SLI = RR0

CT++
Y5
Y2
F1
FC
Yct
RR >> 1
RB >> 1
RB.SLI = RR0

CT++
G
3
P0
P2
\ No newline at end of file +
начало
A[3:0]
B[3:0]
R[7:0]
FC
F1
конец
RA = A
RB = B
RR = 0
CT = 0
Y1
Y2
Y6
F1
P1
Y7
Y5
Y3
SKO
RR.SLI = CS1
RR >> 1
RB >> 1
RB.SLI = RR0
Y4
RR = SM
0
1
1
1
2
A
B
C
D
E
F
G
Y5
Y3
F1
FC
Yct
RR >> 1
RB >> 1
RB.SLI = RR0

CT++
Y5
Y3
F1
FC
Yct
RR >> 1
RB >> 1
RB.SLI = RR0

CT++
G
3
P3
P2
0
\ No newline at end of file diff --git a/6/схемотехника/course_project/img/muu-set.drawio.svg b/6/схемотехника/course_project/img/muu-set.drawio.svg index 9e0f692..2fc1b01 100644 --- a/6/схемотехника/course_project/img/muu-set.drawio.svg +++ b/6/схемотехника/course_project/img/muu-set.drawio.svg @@ -1,4 +1,4 @@ -
начало
конец
Y9, Y2
Y8
RB = CS4
TCF = CS3
Y1
Y2
RA = A
RB = B
A[3:0]
B[3:0]
R[3:0]
1
A
B
C
D
E
F
P0
P1
\ No newline at end of file +
начало
конец
Y9, Y2
Y8,SKO
RB = CS4
TCF = CS3
Y1
Y2
RA = A
RB = B
A[3:0]
B[3:0]
R[3:0]
1
A
B
C
D
E
F
P1
P2
\ No newline at end of file diff --git a/6/схемотехника/course_project/index.css b/6/схемотехника/course_project/index.css index 0f7f3cc..27d429d 100644 --- a/6/схемотехника/course_project/index.css +++ b/6/схемотехника/course_project/index.css @@ -89,6 +89,10 @@ h3 { align-items: center; } +.y-end { + align-items: end; +} + .left { text-align: left; } @@ -138,7 +142,7 @@ p { background-color: white; } -.table-of-contents span + a { +.table-of-contents span+a { float: right; padding-left: 0.33em; background-color: white; @@ -148,7 +152,9 @@ img { object-fit: contain; } -table, td, th { +table, +td, +th { border-collapse: collapse; border: 1px solid black; } diff --git a/6/схемотехника/course_project/index.html b/6/схемотехника/course_project/index.html index 8f9a4da..aa10155 100644 --- a/6/схемотехника/course_project/index.html +++ b/6/схемотехника/course_project/index.html @@ -451,57 +451,139 @@
Примеры 1,2 микрооперации установка бита
-
-
- $Q_1 = \overline{COP} \cdot D_0 \cdot F_1 \cdot \overline{FC}$ - $Q_0 = \overline{D_0} + \overline{COP} \cdot \overline{F_1} \cdot \overline{FC}$ +

Проектирование местного устройства управления

+

Функциональная схема

+

Для реализации местного устройства управления MUU с "жёсткой" логикой разработана функциональная схема, + представленная на рисунке .

+ Функциональная схема МУУ +

Модифицированные алгоритмы выполнения операций

+

Для реализации местного устройства управления алгоритмы выполнения операций должны быть изменены. На рисунках + и приведены модифицированные схемы алгоритма + микропрограмм выполнения операций УМНОЖЕНИЕ и УСТАНОВКА БИТА. +

+ Модифицированный алгоритм микропрограммы выполнения операции УСТАНОВКА БИТА +
+
+ Модифицированный алгоритм микропрограммы выполнения операции УМНОЖЕНИЕ +

Проектирование датчика состояний

+

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

+

Автомат начинает свою работу с приходом сигнала SNO. В каждом состоянии + формируются определенные для этого состояния сигналы Yi и Yct для продвижения счетчика тактов CT.

+

После выполнения всех операций автомат переходит в начальное состояние, генерируя сигнал конца операции SKO, и + остается в этом состоянии до следующего запроса SNO.

+
+
+

Графы переходов автомата

+

В момент времени после сигнала SKO и до сигнала SNO граф находится в состоянии IDLE, при котором никакие сигналы + Y не установлены. Графы операций представлены на рисунках и .

+
+
+ Граф переходов операции УМНОЖЕНИЕ, COP = 0 +
+
+ Граф переходов операции УСТАНОВКА БИТА, COP = 1 +
+

Таблица переходов DS / истинности CS1

+

Состояния будут храниться в 2-х битном регистре с параллельной загрузкой, состояния P1, P2, P3 соответсвуют + своим номерам в + двоичном виде, состояние IDLE = 00 - начальное. Явно возвращаться в него после формирования SKO не нужно, тк + происходит + синхронный сброс датчика состояний по сигналу SNO.

+
+
+
+ $МКНФ: Q_1 = (D_1 + D_0)$ + Минимизация Q1 +
+
+ $МКНФ: Q_0 = (\overline{D_0}) \cdot (\overline{D_1} + F_1)$ + Минимизация Q0 +
+
+
+
+

Таблица управляющих сигналов Y / истинности CS2

+

В таблице отражены сигналы Yi и Yct, подающиеся на выход MUU в каждом + состоянии. Часть функций являются подмножествами других функций, поэтому они минимизироватся не будут.

- $Y_1 \supset Y_6$ - $Y_2 \supset Y_1,Y_6,Y_7$ - $Y_3 \supset Y_5,Y_8,FS$ - $Y_5 \supset Y_8,FS$ - $Y_9 \supset Y_7$ - $FS \supset Y_8$ + $Y_2 \supset Y_1,Y_6,Y_8$ + $Y_3 \supset Y_5$ + $Y_9 \supset Y_8$ + $SKO \supset Y_8,Y_9$
-
- $Y_1, Y_6, Y_7 := Y_2$ - $Y_5, Y_8, FS := Y_3$ +
+ Подмножества функций CS2
-
- $Y_2 = COP + \overline{Q_1} \cdot \overline{Q_0}$ - $Y_3 = Q_1 + \overline{COP} \cdot Q_0 \cdot \overline{F_1}$ - $Y_4 = F_1 \cdot Q_0$ - $Y_9 = Q_0$ +
+ $Y_1, Y_6, Y_8 := Y_2$ + $Y_5 := Y_3$ + $Y_9 := SKO$ +
+
+
+
+ $МДНФ: Y_2 = \overline{Q_1} \cdot Q_0 + COP \cdot Q_1$ + Минимизация Y2 +
+
+ $МКНФ: Y_3 = (Q_1) \cdot (Q_0 + \overline{F_1} + FC)$ + Минимизация Y3
-

Проектирование местного устройства управления

-

Для реализации местного устройства управления MUU с "жёсткой" логикой разработана функциональная схема, - представленная на рисунке .

- Функциональная схема МУУ +
+
+ $МДНФ: Y_4 = Q_1 \cdot \overline{Q_0} \cdot F_1 \cdot \overline{FC}$ + Минимизация Y2 +
+
+ $МДНФ: Y_7 = Q_0 + Q_1 \cdot FC$ + Минимизация Y3 +
+
+
+
+ $МКНФ: Y_{ct} = (Q_1) \cdot (Q_0 + \overline{F_1})$ + Минимизация Y2 +
+
+ $МКНФ: SKO = (Q_1) \cdot (\overline{Q_0}) \cdot (COP + FC)$ + Минимизация Y3 +
+
+ diff --git a/6/схемотехника/course_project/subsets.js b/6/схемотехника/course_project/subsets.js new file mode 100644 index 0000000..a024244 --- /dev/null +++ b/6/схемотехника/course_project/subsets.js @@ -0,0 +1,45 @@ +import * as fs from 'node:fs' + +const fns = JSON.parse(fs.readFileSync('subsets.json')) +const subsets = new Array(fns.length) + +for (let fn_i = 0; fn_i < fns.length; fn_i++) { + const fn = fns[fn_i].str + subsets[fn_i] = new Set + + for (let subfn_i = 0; subfn_i < fns.length; subfn_i++) { + if (fn_i == subfn_i) { + continue + } + const subfn = fns[subfn_i].str + let is_subfn = true + + for (let char_i = 0; char_i < fn.length; char_i++) { + const char = fn[char_i] + const subchar = subfn[char_i] + + if (char != subchar && subchar != 'x') { + is_subfn = false + break + } + } + if (is_subfn) { + subsets[fn_i].add(subfn_i) + } + } +} +console.log(subsets) +for (let subset_i = 0; subset_i < subsets.length; subset_i++) { + const subset = subsets[subset_i] + + if (subset.size == 0) { + continue + } + const fn_name = fns[subset_i].name + console.log(fn_name) + + for (const subfn_i of subset) { + const subfn_name = fns[subfn_i].name + console.log(fn_name + '->' + subfn_name) + } +} diff --git a/6/схемотехника/course_project/subsets.json b/6/схемотехника/course_project/subsets.json new file mode 100644 index 0000000..ca8775c --- /dev/null +++ b/6/схемотехника/course_project/subsets.json @@ -0,0 +1,46 @@ +[ + { + "str": "0100x01x", + "name": "Y1" + }, + { + "str": "01000011", + "name": "Y2" + }, + { + "str": "0x1011xx", + "name": "Y3" + }, + { + "str": "0x0100xx", + "name": "Y4" + }, + { + "str": "0x1x11xx", + "name": "Y5" + }, + { + "str": "010000xx", + "name": "Y6" + }, + { + "str": "0x0x11xx", + "name": "Y7" + }, + { + "str": "0xxxxxx1", + "name": "Y8" + }, + { + "str": "00xxxx01", + "name": "Y9" + }, + { + "str": "0010x1xx", + "name": "Yct" + }, + { + "str": "00001001", + "name": "SKO" + } +]