bo fixes without images

This commit is contained in:
2026-03-05 17:22:48 +03:00
parent 0137b380d4
commit dcb9c0800f
23 changed files with 1428 additions and 758 deletions

View File

@ -43,6 +43,14 @@
</section>
<section class="col">
<h1>Проектирование блока операций</h1>
<h2>Формат данных</h2>
<p>4-х разрядное слово представлено целыми числами с фиксированной запятой в прямом коде. Старший разряд отводится
под знак числа. Результат операции умножение - двойное слово, операции установки бита - одинарное слово.
</p>
<span class="tex">
$$[A]_{\text{п}} = a_3, a_2 a_1 a_0$$
$$[R]_{\text{п}} = r_7, r_6 r_5 r_4 r_3 r_2 r_1 r_0$$
</span>
<h2>Примеры и алгоритмы выполнения операций</h2>
<h3>Алгоритм операции УМНОЖЕНИЕ</h3>
<p>
@ -51,83 +59,93 @@
представлении сомножителей в прямом коде можно выразить следующей формулой:
</p>
<div class="tex">
$$[A]_{\text{п}} = a_3, a_2 a_1 a_0$$
$$[A]_{\text{п}} \cdot [B]_{\text{п}} = (..((0 + A \cdot b_0) \cdot p^{-1} + A \cdot b_1) \cdot p^{-1} + ... + A
\cdot b_{n-1}) \cdot p^{3}$$
</div>
<div class="row">
<div class="col x-center tex" style="gap: 0; flex: 1">
<div class="tex col" style="flex: 1">
Пример 1:
$[\mathrm{A}]_\mathrm{п} = 0.111 = 7$
$[\mathrm{B}]_\mathrm{п} = 0.111 = 7$
$\mathrm{Зн} = 0 \oplus 0 = 0$
$[\mathrm{A}*\mathrm{B}]_\mathrm{п} = 0.0110001 = 49$
$[\mathrm{A} \cdot \mathrm{B}]_\mathrm{п} = 0.0110001 = 49$
</div>
<table data-tag="bo-mul-test-1" data-alt="Пример умножения 1" data-gen="
,0,1,1,1,$C,3$,RA;
b0=1,0,1,1,1,$C,3$,RB;;
$R,2$+,0,0,0,0,0,0,0,RR=0;
0,1,1,1,$C,3$,RA;;
b1=1,0,1,1,1,0,0,0,RR+=RA;
$R,2$+,0,0,1,1,1,0,0,RR>>1;
0,1,1,1,$C,3$,RA;;
b2=1,1,0,1,0,1,0,0,RR+=RA;
$R,2$+,0,1,0,1,0,1,0,RR>>1;
0,1,1,1,$C,3$,RA;;
,1,1,0,0,0,1,0,RR+=RA;
Зн=0,0,1,1,0,0,0,1,RR>>1;
" class="center" style="flex: 1"></table>
</div>
<div class="row">
<div class="col x-center tex" style="gap: 0; flex: 1">
<div class="tex col" style="flex: 1">
Пример 2:
$[\mathrm{A}]_\mathrm{п} = 0.111 = 7$
$[\mathrm{B}]_\mathrm{п} = 1.101 = -5$
$\mathrm{Зн} = 1 \oplus 0 = 1$
$[\mathrm{A}*\mathrm{B}]_\mathrm{п} = 1.0100011 = -35$
$[\mathrm{A} \cdot \mathrm{B}]_\mathrm{п} = 1.0100011 = -35$
</div>
</div>
<div class="row">
<table data-tag="bo-mul-test-1" data-alt="Пример умножения 1" data-gen="
,RR$C,4$,RB$C,4$,;;
,0,1,1,1,$C,4$,RA;
b0=1,0,1,1,1,$C,4$,RB;;
$R,2$+,0,0,0,0,0,0,0,0,RR=0;
0,1,1,1,$C,4$,RA;;
b1=1,0,1,1,1,0,0,0,0,RR+=RA;
$R,2$+,0,0,1,1,1,0,0,0,RR>>1;
0,1,1,1,$C,4$,RA;;
b2=1,1,0,1,0,1,0,0,0,RR+=RA;
$R,2$+,0,1,0,1,0,1,0,0,RR>>1;
0,1,1,1,$C,4$,RA;;
,1,1,0,0,0,1,0,0,RR+=RA;
,0,1,1,0,0,0,1,0,RR>>1;;
Зн=0,0$c,b$,0,1,1,0,0,0,1,Зн>>RR;
" class="center" style="flex: 1"></table>
<table data-tag="bo-mul-test-2" data-alt="Пример умножения 2" data-gen="
,0,1,1,1,$C,3$,RA;
b0=1,1,1,0,1,$C,3$,RB;;
$R,2$+,0,0,0,0,0,0,0,RR=0;
0,1,1,1,$C,3$,RA;;
b1=0,0,1,1,1,0,0,0,RR+=RA;
$R,2$,0,0,1,1,1,0,0,RR>>1;
$C,9$пропуск такта суммирования;;
b2=1,0,0,1,1,1,0,0,RR;
$R,2$+,0,0,0,1,1,1,0,RR>>1;
0,1,1,1,$C,3$,RA;;
,1,0,0,0,1,1,0,RR+=RA;
Зн=1,0,1,0,0,0,1,1,RR>>1;
,RR$C,4$,RB$C,4$,;;
,0,1,1,1,$C,4$,RA;
b0=1,1,1,0,1,$C,4$,RB;;
$R,2$+,0,0,0,0,0,0,0,0,RR=0;
0,1,1,1,$C,4$,RA;;
b1=0,0,1,1,1,0,0,0,0,RR+=RA;
$R,2$,0,0,1,1,1,0,0,0,RR>>1;
$C,10$пропуск такта суммирования;;
b2=1,0,0,1,1,1,0,0,0,RR;
$R,2$+,0,0,0,1,1,1,0,0,RR>>1;
0,1,1,1,$C,4$,RA;;
,1,0,0,0,1,1,0,0,RR+=RA;
,0,1,0,0,0,1,1,0,RR>>1;;
Зн=1,1$c,b$,0,1,0,0,0,1,1,Зн>>RR;
" class="center" style="flex: 1"></table>
</div>
</section>
<section class="col">
<p>Представим рассмотренный метод умножения в виде схемы алгоритма на рисунке <span data-ref="bo-mul"></span>.</p>
<p>TODO Рассмотренный алгоритм умножения представлен на рисунке <span data-ref="bo-mul"></span>.</p>
<div class="col y-center">
<img alt="Блок схема умножения" data-tag="bo-mul" src="img/bo-mul.png" style="width: 50%">
</div>
<h3>Проверка бита с установкой его в единицу</h3>
<p>Операция проверяет бит в RB по адресу из RA, устанавливает флаг CF, если значение бита в операнде 1, значение
<p>Операция проверяет бит в RB на позиции RA, устанавливает флаг CF, если значение бита в операнде 1, значение
бита в операнде устанавливается в 1.</p>
<div class="row y-center">
<div style="flex: 1"></div>
<div style="flex: 2" class="col x-center tex">
<div class="col" style="gap: 0">
<div style="flex: 2" class="col x-center">
<div class="tex col">
Пример 1:
$RA = 0000$
$RB = 0001$
$CF = 1$
$A = 0000$
$B = 0001$
$-$
$i = 0$
$CF = RB_0 = 0$
$RB_0 = 1$
$RB = 0001$
</div>
<div class="col" style="gap: 0">
<div class="tex col">
Пример 2:
$RA = 0001$
$RB = 0001$
$CF = 0$
$A = 0001$
$B = 0001$
$-$
$i = 1$
$CF = RB_1 = 0$
$RB_1 = 1$
$RB = 0011$
</div>
</div>
TODO
<img style="flex: 2" src="img/bo-set.png" data-tag="bo-set" alt="Блок схема проверки бита с установкой в единицу">
<div style="flex: 1"></div>
</div>
@ -135,7 +153,7 @@
<section class="col">
<h2>Функциональная схема блока операций</h2>
<div class="col y-center">
<img style="width: 75%" src="img/bo-func.svg" alt="Функциональная схема блока операций" data-tag="bo-func">
<img style="width: 75%" src="img/bo-func.drawio.svg" alt="Функциональная схема блока операций" data-tag="bo-func">
</div>
<p>Функциональная схема блока операций представлена на рисунке <span data-ref="bo-func"></span>, в таблице <span
data-ref="bo-func-table"></span> приведены все элементы функциональной схемы блока операций с их функциями и
@ -151,18 +169,13 @@
</tr>
<tr>
<td class="center">RB</td>
<td>Регистр второго операнда, 4 разряда, хранение, параллельная загрузка B, логический сдвиг вправо,
формирование сигнала F0</td>
<td>Регистр второго операнда / младшей части результата, 4 разряда, хранение, параллельная загрузка B,
логический сдвиг вправо, формирование сигнала F0</td>
</tr>
<tr>
<td class="center">RLO</td>
<td>Регистр младшей части результата, 4 разряда, хранение, параллельная загрузка, логический сдвиг вправо,
синхронный сброс в 0</td>
</tr>
<tr>
<td class="center">RHI</td>
<td class="center">RR</td>
<td>Регистр старшей части результата, 4 разряда, хранение, параллельная загрузка, логический сдвиг вправо с
переносом в RLO, синхронный сброс в 0</td>
переносом в RB, синхронный сброс в 0</td>
</tr>
<tr>
<td class="center">CS1</td>
@ -170,23 +183,23 @@
</tr>
<tr>
<td class="center">CS2</td>
<td>Формирование нового значения B с установленным битом по индексу A</td>
<td>Формирование флага CF (значения бита из B на позиции A)</td>
</tr>
<tr>
<td class="center">CS3</td>
<td>Формирование флага CF (значения бита из B по индексу A)</td>
<td>Формирование нового значения B с установленным битом на позиции A</td>
</tr>
<tr>
<td class="center">CS4</td>
<td>Выбор данных для загрузки в RB: B или CS3</td>
</tr>
<tr>
<td class="center">SM</td>
<td>Сумматор, 4 разряда</td>
</tr>
<tr>
<td class="center">TS</td>
<td>Регистр знака произведения, 1 разряд, хранение, загрузка</td>
</tr>
<tr>
<td class="center">TCF</td>
<td>Регистр флага CF (значения бита из B по индексу A), 1 разряд, хранение, загрузка</td>
<td>Регистр флага CF (значения бита из B на позиции A), 1 разряд, хранение, загрузка</td>
</tr>
</table>
</section>
@ -202,7 +215,7 @@
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y0</td>
<td>Y1</td>
</tr>
<tr>
<td>0</td>
@ -213,12 +226,13 @@
<td>Параллельная загрузка</td>
</tr>
</table>
TODO
<img style="flex: 1" src="img/bo-ra.png" alt="Логическая схема RA">
</div>
<h3>Регистр второго операнда RB</h3>
<p>Данный регистр должен выполнять микрооперации хранения, параллельной загрузки и логического сдвига вправо. Для
реализации выбран универсальный регистр со сдвигом влево SR4CLE, для получения сдвига вправо входы и выходы
подключены в обратном порядке. Младший бит выхода Q0 формирует сигнал F0.</p>
<h3>Регистр второго операнда / младшей части результата RB</h3>
<p>Данный регистр должен выполнять микрооперации хранения, параллельной загрузки и логического сдвига вправо (с
заполнением старшего бита младшим разрядом из RR). Для
реализации выбран универсальный сдвиговый регистр SR4CLE. Младший бит выхода RB_Q0 формирует сигнал F0.</p>
<div class="row y-center">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов RB">
<tr>
@ -226,8 +240,8 @@
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y1</td>
<td>Y2</td>
<td>Y3</td>
</tr>
<tr>
<td>0</td>
@ -245,55 +259,14 @@
<td>Логический сдвиг вправо</td>
</tr>
</table>
TODO
<img style="flex: 1" src="img/bo-rb.png" alt="Логическая схема RB">
</div>
</section>
<section class="col">
<h3>Регистр младшей части результата RLO</h3>
<p>Данный регистр должен выполнять микрооперации хранения, параллельной загрузки, логического сдвига вправо (с
заполнением старшего бита младшим разрядом из RHI) и синхронного сброса в 0. Для реализации выбран универсальный
сдвиговый регистр SR4RLE.</p>
<div class="row y-center">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов RLO">
<tr>
<th colspan="3">Обозначение</th>
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y5</td>
<td>Y6</td>
<td>Y8</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>0</td>
<td>Хранение</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>Параллельная загрузка</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>1</td>
<td>Логический сдвиг вправо</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>0</td>
<td>Сброс в 0</td>
</tr>
</table>
<img style="flex: 1" src="img/bo-rlo.png" alt="Логическая схема RLO">
</div>
<h3>Регистр старшей части результата RHI</h3>
<h3>Регистр старшей части результата RR</h3>
<p>Данный регистр должен выполнять микрооперации хранения, параллельной загрузки, логического сдвига вправо (c
коммутацией младшего бита в старший разряд RLO) и синхронного сброса в 0. Для реализации выбран универсальный
коммутацией младшего бита в старший разряд RB) и синхронного сброса в 0. Для реализации выбран универсальный
сдвиговый регистр SR4RLE.</p>
<div class="row y-center">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов RHI">
@ -302,9 +275,9 @@
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y4</td>
<td>Y5</td>
<td>Y7</td>
<td>Y8</td>
<td>Y6</td>
</tr>
<tr>
<td>0</td>
@ -313,76 +286,29 @@
<td>Хранение</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>Параллельная загрузка</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>Логический сдвиг вправо</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>1</td>
<td>0</td>
<td>0</td>
<td>Сброс в 0</td>
<td>Синхронный сброс в 0</td>
</tr>
</table>
TODO
<img style="flex: 1" src="img/bo-rhi.png" alt="Логическая схема RHI">
</div>
</section>
<section class="col">
<div class="row">
<div class="col" style="flex: 1">
<h3>Комбинационная схема CS1</h3>
<p>Отвечает за формирование знака произведения.</p>
<img data-style="width: 50%" src="img/bo-cs1.png" alt="Логическая схема CS1">
</div>
<div class="col" style="flex: 1">
<h3>Комбинационная схема CS2</h3>
<p>Отвечает за формирование нового значения B с установленным битом по индексу A.</p>
<img src="img/bo-cs2.png" alt="Логическая схема CS2">
</div>
</div>
<div class="row">
<div class="col" style="flex: 1">
<h3>Комбинационная схема CS3</h3>
<p>Отвечает за формирование флага CF (бита из B по индексу A).</p>
<img src="img/bo-cs3.png" alt="Логическая схема CS3">
</div>
<div class="col" style="flex: 1">
<h3>Сумматор SM</h3>
<p>4-х битный сумматор ADD4.</p>
<img src="img/bo-sm.png" alt="Логическая схема SM">
</div>
</div>
</section>
<section class="col">
<h3>Регистр знака TS</h3>
<div class="row y-start">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов TS">
<tr>
<th>Обозначение</th>
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y3</td>
</tr>
<tr>
<td>0</td>
<td>Хранение</td>
</tr>
<tr>
<td>1</td>
<td>Загрузка</td>
</tr>
</table>
<img style="flex: 1" data-style="width: 50%" src="img/bo-ts.png" alt="Логическая схема TS">
</div>
<h3>Регистр флага TCF</h3>
<p>Отвечает за хранение значения бита операнда B на позиции A.</p>
<div class="row y-start">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов TCF">
<tr>
@ -390,7 +316,7 @@
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y4</td>
<td>Y8</td>
</tr>
<tr>
<td>0</td>
@ -401,106 +327,127 @@
<td>Загрузка</td>
</tr>
</table>
TODO
<img style="flex: 1" data-style="width: 50%" src="img/bo-tcf.png" alt="Логическая схема TCF">
</div>
<div class="col" style="flex: 1">
<h3>Комбинационная схема CS1</h3>
<p>Отвечает за формирование знака произведения.</p>
<img data-style="width: 30%" src="img/bo-cs1.png" alt="Логическая схема CS1">
</div>
</section>
<section class="col">
<div class="row">
<div class="col" style="flex: 1">
<h3>Сумматор SM</h3>
<p>4-х битный сумматор ADD4.</p>
TODO
<img src="img/bo-sm.png" alt="Логическая схема SM">
</div>
<div class="col" style="flex: 1">
<h3>Комбинационная схема CS2</h3>
<p>Отвечает за формирование флага CF (бита из B на позиции A).</p>
TODO
<img src="img/bo-cs2.png" alt="Логическая схема CS3">
</div>
</div>
<div class="row">
<div class="col" style="flex: 1">
<h3>Комбинационная схема CS3</h3>
<p>Отвечает за формирование нового значения B с установленным битом на позиции A.</p>
TODO
<img src="img/bo-cs3.png" alt="Логическая схема CS2">
</div>
<div class="col" style="flex: 1">
<h3>Комбинационная схема CS4</h3>
<p>Отвечает за выбор данных для загрузки в RB: B или CS3.</p>
TODO
<img src="img/bo-cs4.png" alt="Логическая схема CS2">
</div>
</div>
</section>
<section class="col">
<h2>Логическая схема блока операций</h2>
TODO
<img src="img/bo-logic.png" alt="Логическая схема блока операций">
</section>
<section class="col">
<h2>Микропрограммы выполнения операций</h2>
<h3>Определение сигналов блока операций</h3>
<div class="row y-start">
<table data-alt="Таблица управляющих сигналов">
<table data-alt="Таблица управляющих сигналов" style="flex: 2">
<tr>
<th>Сигнал</th>
<th>Операция</th>
</tr>
<tr>
<td class="center">Y0</Type>
<td class="center">Y1</Type>
<td>Загрузка A в RA</td>
</tr>
<tr>
<td class="center">Y1</td>
<td>Загрузка B в RB</td>
</tr>
<tr>
<td class="center">Y2</td>
<td>Логический сдвиг вправо RB</td>
<td>Загрузка CS4 в RB</td>
</tr>
<tr>
<td class="center">Y3</td>
<td>Загрузка значения на выходе CS1 в TS</td>
<td>Логический сдвиг вправо RB</td>
</tr>
<tr>
<td class="center">Y4</td>
<td>Загрузка значения на выходе CS3 в TCF</td>
<td>Загрузка значения на выходе SM в RR</td>
</tr>
<tr>
<td class="center">Y5</td>
<td>Синхронный сброс RLO и RHI</td>
<td>Логический сдвиг вправо RR</td>
</tr>
<tr>
<td class="center">Y6</td>
<td>Загрузка значения на выходе CS2 в RLO</td>
<td>Синхронный сброс RR</td>
</tr>
<tr>
<td class="center">Y7</td>
<td>Загрузка значения на выходе SM в RHI</td>
<td>Вход EN для CS1</td>
</tr>
<tr>
<td class="center">Y8</td>
<td>Логический сдвиг вправо группы регистров RHI и RLO</td>
<td>Загрузка признака на выходе CS2 в TCF</td>
</tr>
<tr>
<td class="center">Y9</td>
<td>Выбор данных для загрузки в RB: B или CS3</td>
</tr>
</table>
<table data-alt="Таблица сигналов-признаков БО">
<table data-alt="Таблица сигналов-признаков БО" style="flex: 1">
<tr>
<th>Сигнал</th>
<th>Операция</th>
</tr>
<tr>
<td class="center">F0</Type>
<td class="center">F1</td>
<td>Младший разряд B</td>
</tr>
</table>
</div>
<h3>Алгоритм микропрограммы УМНОЖЕНИЕ</h3>
<p>В блок-схеме на рисунке <span data-ref="bo-signal-mul"></span> под процедурой RR = 0 понимается RLO = 0; RHI = 0,
под процедурой RR >> 1 понимается RLO >> 1; RLO[3] = RHI[0]; RHI >> 1.</p>
<img data-style="width: 50%" src="img/bo-signal-mul.svg" alt="Микропрограмма операции УМНОЖЕНИЕ"
<img data-style="width: 65%" src="img/bo-signal-mul.drawio.svg" alt="Микропрограмма операции УМНОЖЕНИЕ"
data-tag="bo-signal-mul">
</section>
<section class="col">
<h3>Примеры микропрограммы УМНОЖЕНИЕ</h3>
<p>Пример 1 микрооперации УМНОЖЕНИЕ приведен в таблице <a data-ref="bo-mul-test-1"></a>.</p>
TODO
<img src="img/bo-mul-test-1.png" alt="Временная диаграмма примера 1 УМНОЖЕНИЕ">
</section>
<section class="col">
<p>Пример 2 микрооперации УМНОЖЕНИЕ приведен в таблице <a data-ref="bo-mul-test-2"></a>.</p>
TODO
<img src="img/bo-mul-test-2.png" alt="Временная диаграмма примера 2 УМНОЖЕНИЕ">
</section>
<section class="col">
<h3>Алгоритм микрооперации УСТАНОВКА БИТА</h3>
<img data-style="width: 20%" src="img/bo-signal-set.svg" alt="Микропрограмма операции УСТАНОВКА БИТА">
<img data-style="width: 20%" src="img/bo-signal-set.drawio.svg" alt="Микропрограмма операции УСТАНОВКА БИТА">
<h3>Примеры микрооперации УСТАНОВКА БИТА</h3>
<div class="row">
<div style="flex: 0.75"></div>
<div class="tex col" style="gap: 0; flex: 1">
Пример 1:
$RA = 0000$
$RB = 0001$
$CF = 1$
$RB = 0001$
</div>
<div class="tex col" style="flex: 1">
Пример 2:
$RA = 0001$
$RB = 0001$
$CF = 0$
$RB = 0011$
</div>
</div>
TODO
<img src="img/bo-set-test.png" alt="Примеры 1,2 микрооперации установка бита">
</section>
<section class="col">
@ -549,6 +496,12 @@
</div>
</div>
</section>
<section class="col">
<h1>Проектирование местного устройства управления</h1>
<p>Для реализации местного устройства управления MUU с "жёсткой" логикой разработана функциональная схема,
представленная на рисунке <a data-ref="muu-func"></a>.</p>
<img src="img/muu-func.drawio.svg" data-tag="muu-func" alt="Функциональная схема МУУ">
</section>
<script src="index.js" type="module"></script>
</body>