Files
lab/6/схемотехника/course_project/index.html
2026-02-25 10:20:04 +03:00

510 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<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="col">
<h2>Логическая схема блока операций</h2>
<img src="img/bo-logic.png" 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: 50%" 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>