508 lines
21 KiB
HTML
508 lines
21 KiB
HTML
<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 УМНОЖЕНИЕ">
|
||
<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>
|