course: bo-logic, bo-table

This commit is contained in:
2025-12-28 20:15:15 +03:00
parent 1798c69564
commit d7716c6f94
21 changed files with 678 additions and 306 deletions

View File

@ -7,7 +7,8 @@
<link rel="stylesheet" type="text/css" href="index.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Tinos:ital,wght@0,400;0,700;1,400;1,700&display=swap" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Tinos:ital,wght@0,400;0,700;1,400;1,700&display=swap"
rel="stylesheet">
<script src="https://fred-wang.github.io/TeXZilla/TeXZilla-min.js"></script>
</head>
@ -51,7 +52,8 @@
</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}$$
$$[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">
@ -61,27 +63,22 @@
$\mathrm{Зн} = 0 \oplus 0 = 0$
$[\mathrm{A}*\mathrm{B}]_\mathrm{п} = 0.0110001 = 49$
</div>
<table
data-alt="Пример умножения 1"
data-gen="
<table data-alt="Пример умножения 1" data-gen="
,,0,1,1,1,,,,RA;
,,0,1,1,1,,,,RB;;
,0,$c,r$0,$c,r$0,$c,r$0,$c,r$0,0,0,0,RR=0;
b0=1,,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
b0=1,+,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
,0,0,1,1,1,0,0,0,RR;
,0,$c,r$0,$c,r$0,$c,r$1,$c,r$1,1,0,0,RR>>1;
b1=1,,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
b1=1,+,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
,0,1,0,1,0,1,0,0,RR;
,0,$c,r$0,$c,r$1,$c,r$0,$c,r$1,0,1,0,RR>>1;
b2=1,,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
b2=1,+,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
,0,1,1,0,0,0,1,0,RR;
Знак,$c,b$0,0,1,1,0,0,0,1,RR>>1;
"
class="center"
style="flex: 1"
></table>
" class="center" style="flex: 1"></table>
</div>
<div class="row x-stretch">
<div class="row">
<div class="col x-center tex" style="gap: 0; flex: 1">
Пример 2:
$[\mathrm{A}]_\mathrm{п} = 0.111 = 7$
@ -89,25 +86,20 @@
$\mathrm{Зн} = 1 \oplus 0 = 1$
$[\mathrm{A}*\mathrm{B}]_\mathrm{п} = 1.0100011 = -35$
</div>
<table
data-alt="Пример умножения 2"
data-gen="
<table data-alt="Пример умножения 2" data-gen="
,,0,1,1,1,,,,RA;
,,1,1,0,1,,,,RB;;
,0,$c,r$0,$c,r$0,$c,r$0,$c,r$0,0,0,0,RR=0;
b0=1,,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
b0=1,+,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
,0,0,1,1,1,0,0,0,RR;
,0,0,0,1,1,1,0,0,RR>>1;
b1=0,$C,9$пропуск такта суммирования;;
,0,0,0,1,1,1,0,0,RR;
,0,$c,r$0,$c,r$0,$c,r$0,$c,r$1,1,1,0,RR>>1;
b2=1,,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
b2=1,+,$c,r$0,$c,r$1,$c,r$1,$c,r$1,,,,RA;;
,0,1,0,0,0,1,1,0,RR;
Знак,$c,b$1,0,1,0,0,0,1,1,RR>>1;
"
class="center"
style="flex: 1"
></table>
" class="center" style="flex: 1"></table>
</div>
</section>
<section class="col">
@ -116,11 +108,11 @@
<img alt="Блок схема умножения" data-tag="bo-mul" src="img/bo-mul.png" style="width: 50%">
</div>
<h3>Проверка бита с установкой его в единицу</h3>
<p>Операция проверяет бит в RB по адресу из RA, устанавливает флаг CF, если значение бита в операнде 1, значение бита в операнде устанавливается в 1</p>
<p>Операция проверяет бит в RB по адресу из RA, устанавливает флаг CF, если значение бита в операнде 1, значение
бита в операнде устанавливается в 1</p>
<div class="row y-center">
<img style="flex: 0.6" src="img/bo-set.png" alt="Блок схема проверки бита с установкой в единицу">
<div style="flex: 0.4"></div>
<div style="flex: 1" class="col x-center tex">
<div style="flex: 1"></div>
<div style="flex: 2" class="col x-center tex">
<div class="col" style="gap: 0">
Пример 1:
$RA = 0000$
@ -136,12 +128,344 @@
$RB = 0011$
</div>
</div>
<img style="flex: 2" src="img/bo-set.png" alt="Блок схема проверки бита с установкой в единицу">
<div style="flex: 1"></div>
</div>
</section>
<section class="col">
<h2>Функциональная схема блока операций</h2>
<p>Функциональная схема блока операций представлена на рисунке <span data-ref="bo-func"></span></p>
<img src="img/bo-func.png" alt="Функциональная схема блока операций" data-tag="bo-func">
<div class="col y-center">
<img style="width: 75%" src="img/bo-func.svg" alt="Функциональная схема блока операций" data-tag="bo-func">
</div>
<p>Функциональная схема блока операций представлена на рисунке <span data-ref="bo-func"></span>, в таблице <span
data-ref="bo-func-table"></span> приведены все элементы функциональной схемы блока операций с их функциями и
назначением.</p>
<table data-alt="Функциональное назначение блоков" data-tag="bo-func-table">
<tr class="center">
<th>Обозначение блока</th>
<th>Назначение</th>
</tr>
<tr>
<td class="center">RA</td>
<td>Регистр первого операнда, 4 разряда, хранение, параллельная загрузка A</td>
</tr>
<tr>
<td class="center">RB</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>Регистр старшей части результата, 4 разряда, хранение, параллельная загрузка, логический сдвиг вправо с
переносом в RLO, синхронный сброс в 0</td>
</tr>
<tr>
<td class="center">CS1</td>
<td>Формирование знака произведения</td>
</tr>
<tr>
<td class="center">CS2</td>
<td>Формирование нового значения B с установленным битом по индексу A</td>
</tr>
<tr>
<td class="center">CS3</td>
<td>Формирование флага CF (значения бита из B по индексу A)</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>
</tr>
</table>
</section>
<section class="col">
<h2>Проектирование логических элементов блока операций</h2>
<h3>Регистр первого операнда RA</h3>
<p>Данный регистр является четырёхразрядным регистром хранения. Наиболее подходящим для реализации функций регистра
RA является регистр FD4CE</p>
<div class="row y-center">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов RA">
<tr>
<th>Обозначение</th>
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y0</td>
</tr>
<tr>
<td>0</td>
<td>Хранение</td>
</tr>
<tr>
<td>1</td>
<td>Параллельная загрузка</td>
</tr>
</table>
<img style="flex: 1" src="img/bo-ra.png" alt="Логическая схема RA">
</div>
<h3>Регистр второго операнда RB</h3>
<p>Данный регистр должен выполнять микрооперации хранения, параллельной загрузки и логического сдвига вправо. Для
реализации выбран универсальный регистр со сдвигом влево SR4CLE, для получения сдвига вправо входы и выходы
подключены в обратном порядке. Младший бит выхода Q0 формирует сигнал F0</p>
<div class="row y-center">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов RB">
<tr>
<th colspan="2">Обозначение</th>
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y1</td>
<td>Y2</td>
</tr>
<tr>
<td>0</td>
<td>0</td>
<td>Хранение</td>
</tr>
<tr>
<td>1</td>
<td>0</td>
<td>Параллельная загрузка</td>
</tr>
<tr>
<td>0</td>
<td>1</td>
<td>Логический сдвиг вправо</td>
</tr>
</table>
<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>
<p>Данный регистр должен выполнять микрооперации хранения, параллельной загрузки, логического сдвига вправо (c
коммутацией младшего бита в старший разряд RLO) и синхронного сброса в 0. Для реализации выбран универсальный
сдвиговый регистр SR4RLE</p>
<div class="row y-center">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов RHI">
<tr>
<th colspan="3">Обозначение</th>
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y5</td>
<td>Y7</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-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>
<div class="row y-start">
<table class="center" style="flex: 1" data-alt="Таблица управляющих сигналов TCF">
<tr>
<th>Обозначение</th>
<th rowspan="2">Назначение</th>
</tr>
<tr>
<td>Y4</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-tcf.png" alt="Логическая схема TCF">
</div>
</section>
<section class="landscape col">
<h2>Логическая схема блока операций</h2>
<img src="img/bo-logic.png" data-style="width: 80%" alt="Логическая схема блока операций">
</section>
<section class="col">
<h2>Микропрограммы выполнения операций</h2>
<h3>Определение сигналов блока операций</h3>
<div class="row y-start">
<table data-alt="Таблица управляющих сигналов">
<tr>
<th>Сигнал</th>
<th>Операция</th>
</tr>
<tr>
<td class="center">Y0</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>
</tr>
<tr>
<td class="center">Y3</td>
<td>Загрузка значения на выходе CS1 в TS</td>
</tr>
<tr>
<td class="center">Y4</td>
<td>Загрузка значения на выходе CS3 в TCF</td>
</tr>
<tr>
<td class="center">Y5</td>
<td>Синхронный сброс RLO и RHI</td>
</tr>
<tr>
<td class="center">Y6</td>
<td>Загрузка значения на выходе CS2 в RLO</td>
</tr>
<tr>
<td class="center">Y7</td>
<td>Загрузка значения на выходе SM в RHI</td>
</tr>
<tr>
<td class="center">Y8</td>
<td>Логический сдвиг вправо группы регистров RHI и RLO</td>
</tr>
</table>
<table data-alt="Таблица сигналов-признаков БО">
<tr>
<th>Сигнал</th>
<th>Операция</th>
</tr>
<tr>
<td class="center">F0</Type>
<td>Младший разряд B</td>
</tr>
</table>
</div>
<h3>Алгоритм микропрограммы УМНОЖЕНИЕ</h3>
</section>
<script src="index.js" type="module"></script>
</body>