This commit is contained in:
2026-02-17 23:13:20 +03:00
parent 65218abfb1
commit e52dde575a
429 changed files with 875 additions and 14 deletions

View File

@ -0,0 +1,509 @@
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<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">
<script src="https://fred-wang.github.io/TeXZilla/TeXZilla-min.js"></script>
</head>
<body>
<section class="col x-between">
<div class="center">
Национальный исследовательский ядерный университет «МИФИ»<br>
Институт интеллектуальных кибернетических систем<br>
Кафедра №12 «Компьютерные системы и технологии»
</div>
<header class="center">
Курсовой проект<br>
"Проектирование процессора"
</header>
<div class="col">
<div class="row x-end">
<div class="right">
Студент:<br>
Группа:<br>
Преподаватель:
</div>
<div>
Литвинов В.А.<br>
Б23-503 <br>
Ядыкин И.М.
</div>
</div>
<div class="center">Москва — 2025/2026</div>
</div>
</section>
<section style="background-image: url('README.jpg'); background-size: cover;">
</section>
<section class="col">
<h1>Проектирование блока операций</h1>
<h2>Примеры и алгоритмы выполнения операций</h2>
<h3>Алгоритм операции УМНОЖЕНИЕ</h3>
<p>
Умножение выполняется по алгоритму умножения с младших разрядов множителя и сдвигом
суммы частичных произведений вправо с одним корректирующим шагом. Данный алгоритм при
представлении сомножителей в прямом коде можно выразить следующей формулой:
</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">
Пример 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$
</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">
Пример 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$
</div>
<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;
" class="center" style="flex: 1"></table>
</div>
</section>
<section class="col">
<p>Представим рассмотренный метод умножения в виде схемы алгоритма на рисунке <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, значение
бита в операнде устанавливается в 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">
Пример 1:
$RA = 0000$
$RB = 0001$
$CF = 1$
$RB = 0001$
</div>
<div class="col" style="gap: 0">
Пример 2:
$RA = 0001$
$RB = 0001$
$CF = 0$
$RB = 0011$
</div>
</div>
<img style="flex: 2" src="img/bo-set.png" data-tag="bo-set" alt="Блок схема проверки бита с установкой в единицу">
<div style="flex: 1"></div>
</div>
</section>
<section class="col">
<h2>Функциональная схема блока операций</h2>
<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>
<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: 60%" src="img/bo-signal-mul.svg" alt="Микропрограмма операции УМНОЖЕНИЕ"
data-tag="bo-signal-mul">
</section>
<section class="col">
<h3>Примеры микропрограммы УМНОЖЕНИЕ</h3>
<p>Пример 1 микрооперации УМНОЖЕНИЕ приведен в таблице <a data-ref="bo-mul-test-1"></a></p>
<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>
<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="Микропрограмма операции УСТАНОВКА БИТА">
<h3>Примеры микрооперации УСТАНОВКА БИТА</h3>
<div class="row tex">
<div style="flex: 0.75"></div>
<div class="col" style="gap: 0; flex: 1">
Пример 1:
$RA = 0000$
$RB = 0001$
$CF = 1$
$RB = 0001$
</div>
<div class="col" style="gap: 0; flex: 1">
Пример 2:
$RA = 0001$
$RB = 0001$
$CF = 0$
$RB = 0011$
</div>
</div>
<img src="img/bo-set-test.png" alt="Примеры 1,2 микрооперации установка бита">
</section>
<script src="index.js" type="module"></script>
</body>
</html>