Национальный исследовательский ядерный университет «МИФИ» Институт Интеллектуальных Кибернетических Систем Кафедра «Компьютерные системы и технологии» Пояснительная записка к курсовому проекту на тему «Проектирование процессора ЭВМ» Студент гр. Б18-503 _Приходченко_ВВ_ /_______________ / Руководитель ___Ядыкин_ИМ_______ / _______________ / Руководитель ____Новиков_ГГ______ / _______________ / Москва 2021 2 Содержание Проектирование блока операций ................................................................. 5 1 1.1 Формат операндов и регистров ................................................................. 5 1.2 Алгоритм выполнения операций .............................................................. 5 1.2.1 Алгоритм операции умножение ......................................................... 5 1.2.2 Алгоритм операции сдвиг вправо....................................................... 7 1.3 Примеры ...................................................................................................... 8 1.3.1 Примеры операции умножение .......................................................... 8 1.3.1.1 Примеры без коррекции результата ................................................ 8 1.3.1.2 Примеры с коррекцией результата .................................................. 9 1.3.2 Примеры операции сдвиг вправо ..................................................... 10 1.4 Функциональная схема блока операций ................................................ 12 1.5 Синтез логических элементов блока операций ..................................... 13 1.5.1 Регистр RA первого операнда ........................................................... 13 1.5.2 Регистр RB второго операнда ........................................................... 14 1.5.3 Регистр RR результата ....................................................................... 14 1.5.4 Триггер TZF флага ............................................................................. 15 1.5.5 Триггер TCF флага ............................................................................. 15 1.5.6 Комбинационная схема КС1 ............................................................. 16 1.5.7 Комбинационная схема КС2 ............................................................. 17 1.5.8 Комбинационная схема КС3 ............................................................. 17 1.5.9 Сумматор SM ...................................................................................... 18 1.6 Управляющие сигналы и сигналы-признаки блока операций ............. 19 1.7 Микропрограммы выполнения операций .............................................. 20 1.7.1 Логическая схема блока операций ................................................... 20 1.7.2 Микропрограмма операции умножение .......................................... 21 1.7.3 Микропрограмма операции сдвиг вправо ....................................... 26 Проектирование схемного местного устройства управления ................. 31 2 2.1 Модифицированные алгоритмы выполнения операций ...................... 31 2.2 Функциональная схема МУУ .................................................................. 34 2.3 Синтез датчика состояний DS ................................................................. 34 2.3.1 Графы переходов DS .......................................................................... 34 3 2.3.2 Таблица переходов DS ....................................................................... 35 2.4 Синтез КС2 ................................................................................................ 36 2.5 Логическая схема МУУ ........................................................................... 37 2.6 Функциональное моделирование АЛУ .................................................. 38 2.7 Временные параметры ............................................................................. 47 2.8 Размещение на кристалле ........................................................................ 50 Проектирование блока управления командами........................................ 51 3 3.1 Система памяти ......................................................................................... 51 3.2 Форматы команд и способы адресации.................................................. 51 3.2.1 Форматы команд................................................................................. 53 3.3 Алгоритм работы БУК ............................................................................. 54 3.4 Функциональная схема БУК ................................................................... 55 3.5 Тестирование БУК .................................................................................... 59 3.6 Результаты моделирования БУК ............................................................. 62 Проектирование блока выработки микрокоманд ..................................... 66 4 4.1 Модифицированный алгоритм работы БУК.......................................... 67 4.2 Определение формата микрокоманд ...................................................... 68 4.3 Функциональная схема БМК ................................................................... 68 4.4 Логическая схема БМК ............................................................................ 69 4.5 Составление микропрограммы................................................................ 70 Результаты моделирования процессора .................................................... 71 5 5.1 Результаты функционального моделирования процессора ................. 71 5.2 Размещение на кристалле ........................................................................ 76 5.3 Временные параметры ............................................................................. 77 Заключение ............................................................................................................ 80 4 Проектирование блока операций Формат операндов и регистров Целые числа с фиксированной запятой представлены в дополнительном коде. Под запись числа-операнда отводится четыре разряда. Самый левый разряд используется для представления знака. Целое число Х с фиксированной запятой представляется в виде: 𝑛 𝑋 = ± ∑ 𝑥𝑖 2𝑛−𝑖 = ±(𝑥1 ∗ 2𝑛−1 + 𝑥2 ∗ 2𝑛−2 + ⋯ + 𝑥𝑛 ∗ 20 ), (1.1) 𝑖=1 где 𝑥𝑖 , 𝑖 = ̅̅̅̅̅ 1, 𝑛 – цифры записи числа. Число Х в дополнительном коде, состоящее из 4 разрядов, где первый разряд задает знак числа, может быть представлено в виде: [𝑋]д = { 0. 𝑥1 𝑥2 𝑥3 , 1. ̅̅̅ 𝑥1 𝑥 ̅̅̅2 ̅̅̅ 𝑥3 + 1, 𝑥0 = 0, 𝑥0 = 1, 𝑋≥0 , 𝑋<0 (1.2) соответственно число, состоящее из 8 разрядов, представлено в виде: [𝑋]д = { 0. 𝑥1 𝑥2 𝑥3 𝑥4 𝑥5 𝑥6 𝑥7 , 1. 𝑥 ̅̅̅1 ̅̅̅ 𝑥2 ̅̅̅ 𝑥3 𝑥 ̅̅̅4 ̅̅̅ 𝑥5 𝑥 ̅̅̅6 ̅̅̅ 𝑥7 + 1, 𝑥0 = 0, 𝑥0 = 1, 𝑋≥0 , 𝑋<0 (1.3) В регистрах операнд и результата числа представлены как показано в таблице 1.1. Таблица 1.1 – Таблица представления чисел в регистрах 𝑥0 𝑥1 RR0 RR1 Старший Старший Знаковый Значащий RA0 RA1 RB0 RB1 Старший Старший Знаковый Значащий 𝑥2 RR2 𝑥3 RR3 RA2 RB2 RA3 RB3 Младший Значащий 𝑥4 RR4 𝑥5 RR5 𝑥6 RR6 𝑥7 RR7 Младший Значащий Алгоритм выполнения операций 1.2.1 Алгоритм операции умножение Операция выполняется по алгоритму умножения чисел в дополнительном коде со старших разрядов множителя и сдвигом суммы частичных произведений влево с одним корректирующим шагом. При нулевом значении текущего разряда множителя такт суммирования не пропускается. Первый операнд – множимое, второй – множитель. Результат формируется в 8-ми разрядной сетке и помещается в пару смежных ячеек памяти с четным и нечетным адресами. 5 Запись приведенного выше алгоритма без учета коррекции в случае отрицательного множителя: [𝐴]д × [𝐵]д = ((… ((0 + [𝐴]д 𝑏𝑛 )2−1 + ⋯ + [𝐴]д 𝑏2 )2−1 + [𝐴]д 𝑏1 )2−1 (1.6) Коррекция в случае отрицательного множителя производится на первом шаге алгоритма. Данный метод умножения может быть представлен в виде схемы алгоритма на рисунке 1.2.1. Рисунок 1.2.1 – Схема алгоритма умножения 6 1.2.2 Алгоритм операции сдвиг вправо Второй операнд сдвигается вправо на число двоичных разрядов, определяемое адресом первого операнда. Адрес первого операнда не является адресом данных; два его разряда показывают на сколько разрядов нужно произвести сдвиг. В сдвиге участвуют все 4 разряда второго операнда. В освобождающиеся старшие разряды вводятся нули. Очередной выдвигаемый бит устанавливает флаг CF. Устанавливается также флаг ZF – флаг нуля (1 – результат нулевой, 0 – результат ненулевой). Алгоритм заключается в сдвиге регистра результата, в младшие разряды которого изначально заносится значение регистра второго операнда, вправо на число разрядов, указанное в первом операнде. Причем сначала проверяется, равно ли число в регистре результата нулю, а значение флага CF устанавливает седьмой разряд RR до сдвига. Алгоритм логического сдвига вправо может быть представлен в виде схемы на рисунке 1.2.2. Рисунок 1.2.2 – Схема алгоритма логического сдвига вправо 7 Примеры 1.3.1 Примеры операции умножение Примеры без коррекции результата Пример 1: A = 0.110 = + 6 B = 0.010 = + 2 0. 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0 0 0 0 0 0 0 0 0 b0 = 0 b1 = 0 b2 = 1 + + b3 = 0 0 1 x 0 0 0 0 0 0 нет коррекции 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 A=+6 B=+2 RR 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 RR * 2+1 1 0 x 0 1 0 0 0 0 нет коррекции 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 A=–8 B=+6 RR 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RR * 2+1 RA RR RR * 2+1 RA RR RR * 2+1 RR RR * 2+1 RA RR RR * 2+1 RR RR = 0.0001100 = + 12 Пример 2: A = 1.000 = – 8 B = 0.110 = + 6 0. 0 0. 1. 1. 1. 1. 1. 1. 0. 1. 0 1 1 1 1 1 1 0 1 b0 = 0 b1 = 1 b2 = 1 b3 = 0 + + RR = 1.1010000 (дк) = 1.0110000 (пк) = – 48 8 RR Примеры с коррекцией результата Пример 3: A = 1.001 = – 7 B = 1.101 = – 3 0. 0 0. 0 1 x 1 0 0 0 коррекция 0 0 0 0. 0. 1. 0. 0. 0. 0. 0. 1. 0. 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 1 0 b0 = 1 + b1 = 1 b2 = 0 b3 = 1 + + + 0 0 1 0 0 0 0 1 1 1 0 1 1 0 1 0 1 1 1 0 0 1 0 0 0 0 1 1 0 RA = – 7 RB = – 3 RR 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 ̅̅̅̅ RA +1 RR RR * 2+1 RA RR RR * 2+1 1 0 0 1 0 0 1 0 0 RA = – 1 RB = – 8 RR 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 ̅̅̅̅ RA +1 RR RR * 2+1 RR RR * 2+1 RA RR RR = 0.0010101 = + 21 Пример 4: A = 1.111 = – 1 B = 1.000 = – 8 0. 0 0. 0 1 x 1 0 0 0 коррекция 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 b0 = 1 + b1 = 0 b2 = 0 b3 = 0 + + + 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 RR = 0.0001000 = + 8 9 RR RR * 2+1 RR RR * 2+1 RR Пример 5: A = 1.000 = – 8 B = 1.000 = – 8 0. 0 0. 0 1 x 1 0 0 0 коррекция 0 0 0 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0 0 0 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 0 0 b0 = 1 + b1 = 0 b2 = 0 b3 = 0 + + + 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 RA = – 8 RB = – 8 RR 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 ̅̅̅̅ RA +1 RR RR * 2+1 RR RR * 2+1 RR RR * 2+1 RR RR = 0.1000000 = + 64 1.3.2 Примеры операции сдвиг вправо Пример 1: А = 0011 0 0 + i = RA(мл) = 3 В = 1010 0 0 0 0 0 1 0 0 1 1 1 0 RA = 3 RB = 10 0 0 0 0 0 0 0 0 0 0 0 0 TZF = 0, TCF = 0 0 1 1 0 0 0 0 1 1 0 0 0 RR RB RR 1 RR * 2-1 0 RR * 2-1 1 RR * 2-1 i=i-1=2 0 0 i=i-1=1 0 0 i=i-1=0 0 0 0 0 PHI2 = 0 TCF = RR7 = 0 0 0 0 1 0 PHI2 = 0 TCF = RR7 = 1 0 0 0 0 1 PHI2 = 0 TCF = RR7 = 0 0 0 0 0 0 PHI2 = 0 RR = 0001 10 Пример 2: А = 0000 0 0 + i = RA(мл) = 0 В = 1001 0 0 0 0 0 0 0 1 0 0 0 0 0 1 RA = 0 RB = 9 0 0 0 0 0 0 0 0 0 0 0 0 TZF = 0, TCF = 0 0 1 1 0 0 0 0 0 0 0 1 1 RR RB RR PHI2 = 0 RR = 1001 Пример 3: А = 0010 0 0 + i = RA(мл) = 2 i=i-1=1 В = 0001 0 0 0 0 0 0 1 0 0 1 RA = 2 RB = 1 0 0 0 0 0 0 0 0 0 0 0 0 TZF = 0, TCF = 0 0 0 0 0 0 0 0 0 0 0 1 1 RR RB RR 0 RR * 2-1 TZF = 1 0 0 0 0 0 0 PHI2 = 0 TCF = RR7 = 1 0 0 0 0 0 PHI2 = 1 RR = 0000 Пример 4: A = 0010 0 0 + i = RA(мл) = 2 B = 0000 0 0 0 0 0 0 0 0 0 0 1 0 0 0 RA = 2 RB = 0 0 0 0 0 0 0 0 0 0 0 0 0 TZF = 0, TCF = 0 0 0 0 0 0 0 0 0 0 0 0 0 RR RB RR PHI2 = 1 RR = 0000 11 TZF = 1 Функциональная схема блока операций На рисунке 1.4 представлена функциональная схема блока операций. Рисунок 1.4 – Функциональная схема блока операции 12 В таблице 1.4 указано функциональное назначение блоков-элементов БО. Таблица 1.4 – Таблица функционального назначения блоков-элементов Обозначение RA Назначение Регистр первого операнда (множителя/количества сдвигов), 4 разряда RB Регистр второго операнда (множимого/сдвигаемого), 4 разряда, арифметический сдвиг влево на 1 разряд RR Регистр результата, 8 разрядов, логический сдвиг вправо SRI = 0, арифметический сдвиг влево, установка в «0» TZF Триггер флага равенства нулю ZF TCF Триггер флага переноса CF KC1 Формирование 0, 𝑅𝐴, ̅̅̅̅ 𝑅𝐴, 4 разряда KC2 Формирование RB и передача RВ, RR, 4 разряда KC3 Формирование флага RR = 0, 4 разряда SM Сумматор, 8 разрядов Синтез логических элементов блока операций 1.5.1 Регистр RA первого операнда Регистр RA является четырехразрядным регистром хранения. Он выполняет функции хранения и параллельной загрузки первого операнда. Для его реализации наиболее подходящим является регистр FD4CE, представленный на рисунке 1.5.1. Выбор функции регистра происходит с помощью управляющего входа Y1, как показано в таблице 1.5.1 Таблица 1.5.1 – Таблица управляющих сигналов RA Y1 (CE) 1 0 Назначение Загрузка Хранение Рисунок 1.5.1 – Логическая схема RA 13 1.5.2 Регистр RB второго операнда Регистр RB является четырехразрядным регистром сдвига. Он выполняется функции хранения, параллельной загрузки данных и арифметического сдвига влево на 1 разряд. Для его реализации наиболее подходящим является регистр SR4CLE, представленный на рисунке 1.5.2. Выбор функции регистра происходит с помощью управляющих входов Y2 и Y3, как указано в таблице 1.5.2. Значение старшего разряда RB0 равно значению сигналапризнака PHI1, который используется в алгоритме умножения. Таблица 1.5.2 – Таблица управляющих сигналов RB Y2 (CE) 0 0 1 Y3 (L) 0 1 0 Назначение Хранение Загрузка Сдвиг влево на 1 разряд Рисунок 1.5.2 – Логическая схема RB 1.5.3 Регистр RR результата Регистр RR является восьмиразрядным регистром сдвига. Он выполняет функции хранения, параллельной загрузки данных, логического сдвига влево на 1 разряд (SLI = 0) и логического сдвига вправо на 1 разряд (SRI = 0). Для его реализации наиболее подходящим является регистр SR8RLED. Выбор функции регистра происходит с помощью управляющих входов Y4-7, как указано в таблице 1.5.3. Логическая схема RR представлена на рисунке 1.5.3. Таблица 1.5.3 – Таблица управляющих сигналов RR Y4(L) X 1 0 0 0 Y5(LEFT) X X 0 0 1 Y6(CE) X X 0 1 1 Y7(R) 1 0 0 0 0 Назначение Установка в «0» Загрузка Хранение Сдвиг влево на 1 разряд Сдвиг вправо на 1 разряд 14 Рисунок 1.5.3 – Логическая схема RR 1.5.4 Триггер TZF флага Триггер TZF выполняет функции хранения и передачи одного разряда данных – значение флага ZF (равенство результата нулю). Для его реализации наиболее подходящим является DV-триггер (элемент FDRE), представленный на рисунке 1.5.4. На вход DV-триггера подается значение, формируемое на выходе комбинационной схемы КС3. На выходе формируется значение флага ZF. На вход CE подан управляющий сигнал Y12 для изменения состояния триггера только во время выполнения операции сдвига. Сигнал Y13 сбрасывает значение флага ZF в ноль. Рисунок 1.5.4 – Логическая схема триггера TZF 1.5.5 Триггер TCF флага Триггер TCF выполняет функции хранения и передачи одного разряда данных – значение флага ZF. Для его реализации наиболее подходящим является D-триггер (элемент FDC), представленный на рисунке 1.5.5. На вход D-триггера подается значение седьмого разряда регистра результата RR. На выходе формируется значение флага CF. На вход CE подан управляющий сигнал Y14 для изменения состояния триггера только во время выполнения операции сдвига. Управляющий сигнал Y13 сбрасывает значение флага ZF в ноль. Рисунок 1.5.5 – Логическая схема триггера TCF 15 1.5.6 Комбинационная схема КС1 С помощью комбинационной схемы КС1 формируется отрицательное значение операнда 𝑅𝐴, которое необходимо для коррекции при выполнении алгоритма умножения. На вход комбинационной схемы КС1 поступает код первого операнда 𝑅𝐴, а на выходе ̅̅̅̅, в зависимости от управляющих входов Y8 и Y9, как указано в формируется 0, 𝑅𝐴 или 𝑅𝐴 таблице 1.5.6. На рисунке 1.5.6.1 представлена эталонная диаграмма Вейча, используемая для минимизации функций возбуждения на рисунке 1.5.6.2. На рисунке 1.5.6.4 представлена часть логическая схема КС1, а на рисунке 1.5.6.3 ее элемент. Таблица 1.5.6 – Таблица управляющих сигналов КС1 Входы Выход Y8 Y9 RAi Fi 0 0 0 0 0 0 1 0 0 1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 Формирование «0» ̅̅̅̅ Формирование RA 𝐹𝑖 = 𝑌1 ̅̅̅̅ 𝑌2 ̅̅̅̅̅ 𝑅𝐴𝑖 + 𝑌1 ̅̅̅̅ 𝑌2 𝑅𝐴𝑖 6 7 5 4 ̅̅̅̅ 𝑌1 2 3 1 0 𝑅𝐴𝑖 𝑌1 X X 0 1 ̅̅̅̅ 𝑌1 0 1 0 0 𝑅𝐴𝑖 𝐹𝑖 = 𝑌1 ̅̅̅̅̅ 𝑅𝐴𝑖 + 𝑌2 𝑅𝐴𝑖 ̅̅̅̅̅ 𝑅𝐴𝑖 Рисунок 1.5.6.2 – Минимизация функции возбуждения Fi Рисунок 1.5.6.3 – Логическая схема элемента КС1 Рисунок 1.5.6.2 – Логическая схема КС1 16 ̅̅̅̅̅ 𝑅𝐴𝑖 Рисунок 1.5.6.1 – Эталонная диаграмма Вейча для 3-х переменных ̅̅̅̅ 𝑌2 𝑌2 ̅̅̅̅̅ 𝑅𝐴𝑖 𝑌1 ̅̅̅̅̅ 𝑅𝐴𝑖 Формирование RA ̅̅̅̅ 𝑌2 𝑌2 Назначение Комбинационная схема КС1 представлена четырьмя мультиплексорами М2_1, на адресные входы которых поданы управляющие сигналы Y8 и Y9, а на управляющие разряды RAi соответственно. 1.5.7 Комбинационная схема КС2 Комбинационная схема КС2 формирует значение операнда RВ. На вход комбинационной схемы КС2 поступает код второго операнда RВ и код младших разрядов RR, а на выходе формируется RB или RR, в зависимости от управляющего входа Y10. Y10 = 1, тогда происходит передача RR. Y10 = 0, тогда происходит передача RB. Рисунок 1.5.7.1 – Логическая схема элемента КС2 Рисунок 1.5.7.2 – Логическая схема КС2 Комбинационная схема КС2, представленная на рисунке 1.5.7.2, состоит из 4-х мультиплексоров М2_1, представленных на рисунке 1.5.7.1, на адресные входы которых поданы разряды RB и RR соответственно, а на управляющий вход – управляющий сигнал Y10. 1.5.8 Комбинационная схема КС3 В комбинационной схеме КС3 происходит проверка результата на равенство нулю при выполнении операции сдвига. На ее входы подается код младших разрядов RR, а на выходе формируется 0 или 1 в зависимости от переданного числа. Так как в операции сдвига операнды беззнаковые, то за равенство нулю числа принято равенство нулю всех его 17 переданных разрядов. Для реализации комбинационной схемы КС1 используется логический элемент NOR4, как показано на рисунке 1.5.8, на выходе которого формируется 1 только в случае равенства всех входов нулю. С помощью комбинационной схемы КС3 формируется сигнал-признак PHI2 – признак равенства нулю результата после операции сдвига. Рисунок 1.5.8 – Логическая схема КС3 1.5.9 Сумматор SM На сумматоре SM производится сложение двух восьмиразрядных чисел. Поэтому был выбран сумматор ADD8, представленный на рисунке 1.5.9, на вход CI которого передан управляющий сигнал Y11. Сигнал Y11 служит для совершения корректирующего шага при выполнении операции умножения. В таблице 1.5.9 указано соответствие передаваемых разрядов на сумматор. Таблица 1.5.9 – Таблица соответствия передаваемых разрядов на сумматор SM Разряд Передаваемое значение Разряд Передаваемое значение X7 (ст) X6 КС1_F0 КС1_F0 Z7 (ст) Z6 RR0 RR1 Слагаемое X X5 X4 КС1_F0 КС1_F0 Слагаемое Y Z5 Z4 RR2 RR3 X3 X2 X1 X0 (мл) КС1_F0 КС1_F1 КС1_F2 КС1_F3 Z3 Z2 Z1 Z0 (мл) KC2_F0 KC2_F1 KC2_F2 KC2_F3 Рисунок 1.5.9 – Логическая схема сумматора SM 18 Управляющие сигналы и сигналы-признаки блока операций В таблице 1.6.1 представлены управляющие сигналы БО и их назначение. В таблице 1.6.2 представлены сигналы-признаки БО и их назначение. Таблица 1.6.1 – Таблица управляющих сигналов блока операций Элемент Сигнал Назначение Регистр RA Y1 Загрузка A в RA Y2 Логический сдвиг влево RB на 1 разряд Y3 Загрузка B в RB Y4 Загрузка значений на входах в RR Y5 Y7 Логический сдвиг вправо RR на 1 разряд Разрешение сдвига RR Арифметический сдвиг влево RR на 1 разряд Установка RR в «0» Y8 Формирование ̅̅̅̅ RA Y9 Формирование RA КС2 Y10 Передача RR SM Y11 Корректирующий шаг Триггер TZF Y12 Загрузка значения признака равенства нулю в TZF Y13 Установка TZF и TCF в «0» Y14 Загрузка значения сдвигаемого разряда в TCF Регистр RB Регистр RR KC1 Триггер TCF Y6 Таблица 1.6.2 – Таблица сигналов-признаков блока операций Элемент Сигнал Назначение Регистр RB PHI1 KC3 PHI2 Текущий разряд множителя RB4-i Признак равенства младших разрядов RR нулю 19 Микропрограммы выполнения операций 1.7.1 Логическая схема блока операций На рис. 1.7.1 представлена логическая схема блока операций. Рисунок 1.7.1 – Логическая схема блока операций 20 1.7.2 Микропрограмма операции умножение На рисунке 1.7.2.1 представлен алгоритм микропрограммы операции умножение с микрооперациями. В ячейках микроопераций указаны управляющие сигналы, которые во время микрооперации равны единице, а также сигналы-признаки, которые могут измениться. На рисунках 1.7.2.2–1.7.2.6 представлены результаты моделирования блока операций алгоритма умножения для примеров. функционального Рисунок 1.7.2.1 – Алгоритм микропрограммы операции умножения 21 Рисунок 1.7.2.2 – Функциональное моделирование БО алгоритма умножения (пример 1) 22 Рисунок 1.7.2.3 – Функциональное моделирование БО алгоритма умножения (пример 2) 23 Рисунок 1.7.2.4 – Функциональное моделирование БО алгоритма умножения (пример 3) 24 Рисунок 1.7.2.5 – Функциональное моделирование БО алгоритма умножения (пример 4) 25 Рисунок 1.7.2.6 – Функциональное моделирование БО алгоритма умножения (пример 5) 1.7.3 Микропрограмма операции сдвиг вправо На рисунке 1.7.3.1 представлен алгоритм микропрограммы операции сдвиг вправо с микрооперациями. В ячейках микроопераций указаны управляющие сигналы, которые во время микрооперации равны единице, а также сигналы-признаки, которые могут измениться. На рисунках 1.7.3.2–1.7.3.5 представлены результаты функционального моделирования блока операций алгоритма сдвига вправо для примеров. 26 Рисунок 1.7.3.1 – Алгоритм микропрограммы операции сдвига вправо 27 Рисунок 1.7.3.2 – Функциональное моделирование БО алгоритма сдвига вправо (пример 1) 28 Рисунок 1.7.3.3 – Функциональное моделирование БО алгоритма сдвига вправо (пример 2) 29 Рисунок 1.7.3.4 – Функциональное моделирование БО алгоритма сдвига вправо (пример 3) 30 Рисунок 1.7.3.5 – Функциональное моделирование БО алгоритма сдвига вправо (пример 4) Проектирование схемного местного устройства управления Модифицированные алгоритмы выполнения операций Для реализации местного устройства управления необходимо изменить алгоритмы операций, связав микрокоманды в состояния Pi датчика состояний и заменив индекс I счетчика на флаг FC, который равен истине при завершении счета . На рисунках 2.1.1 и 2.1.2 представлены модифицированные микропрограмм операций умножения и сдвига вправо соответственно. 31 алгоритмы Рисунок 2.1.1 – Модифицированная схема алгоритма умножение 32 Рисунок 2.1.2 – Модифицированная схема алгоритма сдвиг вправо 33 Функциональная схема МУУ На рисунке 2.2.1 представлена функциональная схема местного устройства управления с «жесткой» логикой. В таблице 2.2.1 описано назначение всех блоков-элементов МУУ. Рисунок 2.2.1 – Функциональная схема местного устройства управления Таблица 2.2.1 – Таблица функционального назначения блоков-элементов МУУ Обозначение Схема пуска и останова Счетчик циклов Датчик состояний DS КС1 КС2 КС3 Назначение Формирование сигнала EN операции Формирование сигнала FC конца сдвига / счета Формирование состояния МУУ Формирование кода перехода для DS Формирование управляющих сигналов Y1-Y14, YC, сигнала конца операции SKO Формирование количества сдвигов регистра RB Синтез датчика состояний DS 2.3.1 Графы переходов DS Датчик состояний DS синтезируется на основе D-триггеров. Каждый D-триггер представляет одно состояние DS, причем используется кодирование «1 из N». На рисунках 2.3.1 и 2.3.2 представлены графы переходов состояния DS для операций умножения и сдвига вправо соответственно. 34 Рисунок 2.3.1 – Граф переходов операции умножение Рисунок 2.3.2 – Граф переходов операции сдвиг вправо 2.3.2 Таблица переходов DS В таблице 2.3.2 представлены переходы датчика состояний DS, на основе которых формируются сигналы, подаваемые на входы D-триггеров. Таблица 2.3.2 – Таблица переходов датчика состояний DS Переход COP0 P0 -> P1 0 P1 -> P2 0 P1 -> P3 0 P2 -> P3 0 P3 -> P2 0 P0 -> P1 1 P1 -> P2 1 P2 -> P2 1 PHI1 X 1 0 X X X X X PHI2 X X X X X X X 0(x) FC X X X X 0(х) X X 0(x) P3 0 0 0 0 1 0 0 0 P2 0 0 0 1 0 0 0 1 P1 0 1 1 0 0 0 1 0 COP0 = 0 – операция умножение COP0 = 1 – операция сдвиг вправо. Логические выражения для входов D-триггеров: 𝐷0 = 0 𝐷1 = 𝑃0 ̅̅̅̅̅̅̅̅ + 𝑃1 𝐶𝑂𝑃0 + 𝑃2 𝐶𝑂𝑃0 + 𝑃3 𝐶𝑂𝑃0 ̅̅̅̅̅̅̅̅ 𝐷2 = 𝑃1 𝑃𝐻𝐼1 𝐶𝑂𝑃0 = (𝑃1 + 𝑃2) 𝐶𝑂𝑃0 + (𝑃1 𝑃𝐻𝐼1 + 𝑃3) ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 ̅̅̅̅̅̅̅̅ + 𝑃2 𝐶𝑂𝑃0 ̅̅̅̅̅̅̅̅ = 𝐶𝑂𝑃0 ̅̅̅̅̅̅̅̅(𝑃1 ̅̅̅̅̅̅̅ 𝐷3 = 𝑃1 ̅̅̅̅̅̅̅ 𝑃𝐻𝐼1 𝐶𝑂𝑃0 𝑃𝐻𝐼1 + 𝑃2) 35 P0 1 0 0 0 0 1 0 0 D3 0 0 1 1 0 0 0 0 D2 0 1 0 0 1 0 1 1 D1 1 0 0 0 0 1 0 0 D0 0 0 0 0 0 0 0 0 Синтез КС2 Комбинационная схема 2 формирует управляющие сигналы Y1-Y14 для управления блоками БО, YC для управления (декремент) счетчиком циклов и сигнал конца операции SKO в зависимости от текущего состояния Pi и кода операции COP0, что указано в таблице 2.4. Таблица 2.4 – Таблица управляющих сигналов на выходах КС2 COP0 0 (умножение) 1 (сдвиг вправо) P0 Y1, Y3, Y7 Y1, Y3, Y7 P1 Y2 & ̅̅̅̅̅̅̅ PHI1, ̅̅̅̅̅̅̅, Y6 & PHI1 YC & ̅̅̅̅̅̅̅ PHI1, Y4 & PHI1, Y10 & PHI1, Y8 & PHI1, Y11 & PHI1 Y4, Y13 P2 Y2, Y6, YC ̅̅̅, Y14 & ̅̅̅̅̅̅̅ PHI2 & ̅FC ̅̅̅̅̅̅̅ ̅ ̅ ̅ ̅ Y6 & PHI2 & FC, ̅̅̅̅̅̅̅ & FC ̅̅̅̅, Y5 & PHI2 ̅̅̅̅̅̅̅ ̅̅̅, YC & PHI2 & ̅FC Y12 & PHI2, SKO & (PHI2 + FC) P3 Y4, Y10, Y9 & PHI1, SKO & FC - Логические выражения для управляющих сигналов Y1-Y14, YC и сигнала конца операции SKO: 𝑌1 = 𝑃0 𝑌2 = ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 & ̅̅̅̅̅̅̅ 𝑃𝐻𝐼1 & 𝑃1 + 𝑃2 & ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 𝑌3 = 𝑃0 ̅̅̅̅̅̅̅̅ & 𝑃𝐻𝐼1 & 𝑃1 + 𝐶𝑂𝑃0 & 𝑃1 + 𝑃3 & 𝐶𝑂𝑃0 ̅̅̅̅̅̅̅̅ 𝑌4 = 𝐶𝑂𝑃0 𝑌5 = 𝐶𝑂𝑃0 & ̅̅̅̅̅̅̅ 𝑃𝐻𝐼2 & ̅̅̅̅ 𝐹𝐶 & 𝑃2 ̅̅̅̅̅̅̅̅ & 𝑃𝐻𝐼1 ̅̅̅̅̅̅̅ & 𝑃1 + 𝑃2 & 𝐶𝑂𝑃0 ̅̅̅̅̅̅̅̅ + 𝐶𝑂𝑃0 & 𝑃𝐻𝐼2 ̅̅̅̅̅̅̅ & 𝐹𝐶 ̅̅̅̅ & 𝑃2 𝑌6 = 𝐶𝑂𝑃0 𝑌7 = 𝑃0 ̅̅̅̅̅̅̅̅ & 𝑃𝐻𝐼1 & 𝑃1 𝑌8 = 𝐶𝑂𝑃0 𝑌9 = ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 & 𝑃𝐻𝐼1 & 𝑃3 ̅̅̅̅̅̅̅̅ & 𝑃𝐻𝐼1 & 𝑃1 + 𝑃3 & 𝐶𝑂𝑃0 ̅̅̅̅̅̅̅̅ 𝑌10 = 𝐶𝑂𝑃0 𝑌11 = ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 & 𝑃𝐻𝐼1 & 𝑃1 𝑌12 = 𝐶𝑂𝑃0 & 𝑃𝐻𝐼2 & 𝑃2 𝑌13 = 𝐶𝑂𝑃0 & 𝑃1 ̅̅̅̅̅̅̅ & 𝐹𝐶 ̅̅̅̅ & 𝑃2 𝑌14 = 𝐶𝑂𝑃0 & 𝑃𝐻𝐼2 𝑌𝐶 = ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 & ̅̅̅̅̅̅̅ 𝑃𝐻𝐼1 & 𝑃1 + 𝑃2 & ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 + 𝐶𝑂𝑃0 & ̅̅̅̅̅̅̅ 𝑃𝐻𝐼2 & ̅̅̅̅ 𝐹𝐶 & 𝑃2 𝑆𝐾𝑂 = 𝐶𝑂𝑃0 & (𝑃𝐻𝐼2 + 𝐹𝐶) & 𝑃2 + ̅̅̅̅̅̅̅̅ 𝐶𝑂𝑃0 & 𝑃3 & 𝐹𝐶 36 Логическая схема МУУ На рисунке 2.5 представлена синтезированная логическая схема местного устройства управления. Рисунок 2.5 – Логическая схема местного устройства управления 37 Функциональное моделирование АЛУ На рисунках 2.6.1–2.6.9 представлены результаты функционального моделирования АЛУ для примеров. Рисунок 2.6.1 – Функциональное моделирование АЛУ алгоритма умножения (пример 1) 38 Рисунок 2.6.2 – Функциональное моделирование АЛУ алгоритма умножения (пример 2) 39 Рисунок 2.6.3 – Функциональное моделирование АЛУ алгоритма умножения (пример 3) 40 Рисунок 2.6.4 – Функциональное моделирование АЛУ алгоритма умножения (пример 4) 41 Рисунок 2.6.5 – Функциональное моделирование АЛУ алгоритма умножения (пример 5) 42 Рисунок 2.6.6 – Функциональное моделирование АЛУ алгоритма сдвига вправо (пример 1) 43 Рисунок 2.6.7 – Функциональное моделирование АЛУ алгоритма сдвига вправо (пример 2) 44 Рисунок 2.6.8 – Функциональное моделирование АЛУ алгоритма сдвига вправо (пример 3) 45 Рисунок 2.6.9 – Функциональное моделирование АЛУ алгоритма сдвига вправо (пример 4) 46 Временные параметры Получен отчет статического анализа времени предварительной установки с помощью программы «Timing Analyzer», который представлен на рисунке 2.7.2. По полученным данным можно судить о минимальном периоде работы АЛУ, вычисленном на рисунке 2.7.1. Рисунок 2.7.1 – Оценка временных параметров АЛУ программой «Timing Analyzer» Рисунок 2.7.2 – Отчет статического анализа времени предварительной установки Программа определила критический путь на микрооперации суммирования в операции умножение: 𝑅𝑅 ∶= 𝑅𝑅 + 𝑅𝐴. Критический путь, который указан на рисунке 2.7.2: 𝐶 → 𝐷𝑆(𝑃3) → 𝑌9 → 𝐾𝐶10[0] → 𝑆𝑀[6] → 𝑅𝑅[1] При установке периода работы генератора в 35.8 нс возникает ошибка времени предустановки регистра RR, показанная на рисунке 2.7.5. На рисунке 2.7.4 показана временная диаграмма работы АЛУ при заданных на рисунке 2.7.3 параметрах. 47 Рисунок 2.7.3 – Окно настроек периода и частоты генератора 0.7ns Рисунок 2.7.4 – Временная диаграмма работы АЛУ при периоде 35.8 нс Критический путь равен: 4(𝑃3) + 10.9(𝑌9) + 4.3(𝐾𝐶1_𝐹0) + 10.1(𝑆𝑀6) + 5.8(𝑅𝑅1) = 35.1 нс Рисунок 2.7.5 – Сообщение об ошибке 48 Временная диаграмма работы АЛУ без возникновения ошибок с установленным периодом 36.0 нс показана на рисунке 2.7.6. Рисунок 2.7.6 – Временная диаграмма работы АЛУ при периоде 36.0 нс В таблице 2.7 представлены временные параметры работы АЛУ, определенные программой и вычисленные с помощью временного моделирования. Таблица 2.7 – Таблица временных параметров АЛУ Параметр Timing Analyzer Временное моделирование Минимальный период работы генератора, нс 36.2 36.0 Максимальная частота генератора, МГц 27.6 27.8 Максимальное число тактов операции умножения 8 Максимальное число тактов операции сдвига вправо 6 Максимальное время выполнения операции умножения, нс 289.6 288.0 Максимальное время выполнения операции сдвига вправо, нс 217.2 216.0 Количество операций умножения в секунду, млн 3.5 3.5 Количество операций сдвига вправо в секунду, млн 4.6 4.6 49 Размещение на кристалле На рисунке 2.8.1 представлена схема подключения АЛУ к стенду. Рисунок 2.8.1 – Схема подключения АЛУ к стенду Для подключения к стенду необходимо указанное на рисунке 2.8.2 количество элементов. Рисунок 2.8.2 – Отчет о количестве элементов На рисунке 2.8.3 представлена схема размещения элементов на кристалле ПЛИС. Рисунок 2.8.3 – Схема размещения на кристалле ПЛИС 50 Проектирование блока управления командами Система памяти Оперативная память (ОП) имеет организацию 16х8 ячеек. В каждой ячейке хранится 2 слова по 4 разряда. Соответственно, емкость ОП равна 32 словам. На рисунке 3.1.1 представлена организация оперативной памяти. Регистровая память (РП) имеет организацию 8х4 ячеек. В каждой ячейке хранится 1 слово. Соответственно, емкость РП составляет 8 слов. Физическая и логическая адресации в регистровой памяти совпадают. Адресация физической памяти 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Адресация логической памяти 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 7…0 7...4 (ст) 3…0 (мл) Рисунок 3.1.1 – Организация оперативной памяти Форматы команд и способы адресации В проектировании используются следующие типы адресаций: непосредственная, прямая, прямая регистровая, относительная и косвенная. Команды являются двухадресными. В линейных командах первый операнд в операции умножения хранится в нечетных ячейках ОП и указывается в команде с помощью прямого адреса. В операции сдвига вправо первый операнд задается непосредственной адресацией. В зависимости от признака адресации PA2 второй операнд хранится либо в РП (PA2 = 0), либо в ОП (PA2 = 1). Причем для операции умножения второй операнд размещается только в нечетных ячейках ОП или РП, а для операции сдвига вправо операнд может находиться в любой ячейке ОП и РП. В случае хранения операнда в ОП адресация является косвенной автоинкрементной (вариант 2). Результат операций записывается по адресу второго операнда. В командах перехода для передачи адреса смещения используется относительная адресация. 51 На рисунке 3.2 представлены используемые способы адресации. Рисунок 3.2 – Способы адресации Непосредственная адресация – операнд непосредственно задан в коде команды. Прямая и прямая регистровая адресации – адрес, указанный в команде, является исполнительным адресом операнда. Для операции умножения адрес, указанный в ячейке РП, должен быть четным. Косвенная автоинкрементная адресация (вариант 2) – исполнительный адрес выбирается из ячейки памяти по косвенному адресу, который определяется содержимым регистра, указанным в команде. Для операции умножения исполнительный адрес должен быть четным. Относительная адресация – исполнительный адрес вычисляется как сумма смещения со знаком, заданного в команде в дополнительном коде, и текущего значения счетчика команд. В таблице 3.2 представлен выбранный способ кодирования четырех операций. Таблица 3.2 – Таблица кодирования операций COP1 0 0 1 1 COP0 0 1 0 1 Операция Умножение Сдвиг вправо Условный переход Безусловный переход 52 3.2.1 Форматы команд В линейных командах первый операнд в операции умножения всегда задается прямой (операция умножения) или непосредственной (операция сдвига вправо) адресацией. Второй операнд в зависимости от признака PA2 указывается в команде либо с помощью прямой регистровой адресации (PA2 = 0), либо с помощью косвенной автоинкрементной адресации (вариант 2) (PA2 = 1). Для операции умножения накладываются ограничения на четность передаваемого в команде адреса второго операнда, а также на четность исполнительного адреса. В команде условного перехода если CF = 1, то адрес в счетчике команд складывается со смещением, переданным в команде. Число разрядов в регистре команд РК должно быть кратно 4-м. Необходимое количество разрядов равно 11-ти, поэтому РК состоит из 3-х четырехразрядных регистров хранения, что составляет 12 разрядов. Размещение данных в регистре команд представлено на рисунке 3.2.1.3. Рисунок 3.2.1.3 – Расположение команд в регистре команд 53 Алгоритм работы БУК На рисунке 3.3 представлен алгоритм работы блока управления командами. Так как 3–0 разряды РК необходимы только для операции умножения, то 3-я часть РК считывается только при COP0 = 0. После записи слова в регистр команд счетчик команд СК увеличивается на единицу. Каждый операнд считывается в соответствующий буферный регистр за одно обращение к памяти. В случае выполнения операции умножения при признаке PA2 = 0 в регистровую память результат записывается за 2 обращения к памяти. Рисунок 3.3 – Алгоритм работы БУК 54 Функциональная схема БУК На рисунке 3.4.1 представлена функциональная схема БУК. Рисунок 3.4.1 – Функциональная схема БУК 55 В таблице 3.4.1 описано назначение ее блоков-элементов, в таблице 3.4.2 указано назначение управляющих сигналов, задействованных в БУК. Таблица 3.4.1 – Таблица назначения блоков-элементов БУК Элемент КС1 КС2 КС3 КС4 КС5 КС6 КС7 КС8 КС9 КС10 КС11 КС12 ИЛИ SM1 SM2 СК РК1 РК2 РК3 RIA BR1 BR2 OP RP Назначение Передача признака адресации второго операнда PA2 в БМК Передача первого операнда на BR1 в зависимости от типа адресации Передача адреса A1 первого операнда, исполнительного адреса RIA, адреса со счетчика команд СК или адреса косвенной автоинкрементной адресации из RP для адресации в OP Формирование управляющего сигнала для КС5 Передача младших разрядов RR из АЛУ или нечетной ячейки OP в нечетную ячейку OP Передача младших разрядов RR из АЛУ или четной ячейки OP Передача старших разрядов RR из АЛУ или данных с КС6 в четную ячейку OP Передача второго операнда на BR2 в зависимости от типа адресации Передача адреса для второго операнда в RP Передача младших или старших разрядов RR Передача младших или старших разрядов RR или адреса косвенной автоинкрементной адресации из RP в ячейку RP Выбор ячейки OP Формирование нечетного или четного адреса Сумматор, формирующий адрес перехода Сумматор, формирующий адрес косвенной автоинкрементной адресации Счетчик команд Регистр команд 1 (11–8 разряды) Регистр команд 2 (7–4 разряды) Регистр команд 3 (3–0 разряды) Регистр исполнительного адреса Базовый регистр первого операнда Базовый регистр второго операнда Оперативная память Регистровая память 56 Таблица 3.4.2 – Таблица управляющих сигналов Элемент РК1 РК2 РК3 OP RP RIA BR1 BR2 Управляющий сигнал YC1 YC2 YC3 YC4 YC5 YC6 YC7 YC8 YC9 YC10 ИЛИ YC11 КС10 YC12 ИЛИ YC13 СК YC14 KC3 YC15 SM2 YC16 Назначение Загрузка данных в РК1 Загрузка данных в РК2 Загрузка данных в РК3 Увеличение СК на 1 Загрузка данных в СК Загрузка данных в OP Загрузка данных в RP Загрузка данных в RIA Загрузка данных в BR1 Загрузка данных в BR2 0: выбор четного адреса RIA 1: выбор нечетного адреса RIA 0: выбор старших разрядов RR 1: выбор младших разрядов RR 0: передача RM20 1: передача «1» 00: передача адреса A1 с регистра команд 01: передача адреса косвенной автоинкрементной адресации из RP 10: передача исполнительного адреса RIA 11: передача адреса со счетчика команд СК Увеличение адреса косвенной автоинкрементной адресации на 1 На рисунке 3.4.2 представлена логическая схема блока управления командами. Для синтеза счетчика команд СК были выбраны элементы CB4CLE и FTCLE, так как необходимо 5 разрядов. Элемент FTCLE отвечает за хранение старшего разряда счетчика. По этой же причине для синтеза регистра исполнительного адреса RIA были выбраны элементы FD4CE и FDCE, который отвечает за хранение старшего разряда регистра. Регистр команд RK синтезирован на основе 3-х элементов FD4CE. Регистровая и оперативная памяти синтезированы на основе памяти с произвольным синхронным доступом SYNC_RAM. 57 Рисунок 3.4.2 – Логическая схема БУК 58 Тестирование БУК Для проведения тестирования блока управления командами разработан алгоритм, представленный на рисунке 3.5.1. Цикл от G1 до B1 совершается 2 раза для проверки всех необходимых условий. Рисунок 3.5.1 – Блок-схема алгоритма тестирования работы БУК Алгоритм тестирования гарантирует: • проверку всех ветвей алгоритма работы БУК • проверку условия перехода при условном переходе (CF = 1) • проверку расположения команд разной длины в четных и нечетных ячейках ОП (A0, A2 для 12-разрядной команды; A8, A11 для 8-разрядной команды) • проверку возможного расположения операндов в четных и нечетных словах ОП и ячейках РП (Cнч, Zчт и Dнч для умножения; Zчт, Zнч и Dнч, Dчт для сдвига вправо) • запись результата в четные и нечетные слова ОП и ячейки РП (Счт,нч и Dчт,нч для умножения; Zчт, Zнч и Dчт, Dнч для сдвига вправо) • считывание для проверки записи из четных и нечетных слов ОП и ячеек РП (Счт,нч, Zчт,нч и Dчт,нч) 59 В таблице 3.5.1 представлены начальные значения операндов, загружаемые в память. В таблицах 3.5.2 и 3.5.3 приведены карты загрузки оперативной и регистровой памяти. Оперативная память используется полностью, в регистровой используется 4 ячейки. Таблица 3.5.1 – Таблица начальных значений программы тестирования Переменная Адрес в памяти Cчт(OP) Cнч(OP) Dчт(RP) Dнч(RP) Zчт(OP) Zнч(OP) N1 N2 N3 N4 i(R) j(R) k(R) A24(OP) A25(OP) R0(RP) R1(RP) A30(OP) A31(OP) R2(RP) R3(RP) R4(RP) Значение DEC +3 -7 +3 +6 -6 -3 +1 +2 0 +3 9 12 13 BIN 0011 1001 0011 0110 1010 1101 0001 0010 0000 0011 1001 1100 1101 HEX 3 9 3 6 A D 1 2 0 3 9 C D Таблица 3.5.2 – Карта загрузки ОП Физический адрес 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Адрес слова A0 A2 A4 A6 A8 A10 A12 A14 A16 A18 A20 A22 A24 A26 A28 A30 Содержимое памяти 7-4 3-0 HEX 0011 0000 30 1010 0011 A3 1100 0000 C0 0101 0000 50 1100 0010 C2 0000 0110 06 1011 1010 BA 0010 0100 24 0000 0111 07 1100 0 C0 0001 1000 18 0001 1000 18 0011 1001 39 0001 1110 1E 0001 1111 1F 1010 1101 AD Таблица 3.5.3 – Карта загрузки РП Номер регистра R0 R1 R2 R3 R4 Содержимое памяти BIN HEX 0011 3 0110 6 1001 9 1100 C 1101 D Операнд Dчт Dнч i =9 j = 12 k = 13 60 Пояснение Команда умножения Команда умножения Команда сдвига Безусловный переход Команда сдвига Условный переход Команда сдвига Команда сдвига A24 (Cчт) A24 (Cчт) Cчт,нч A30 (Zчт) A31 (Zнч) Zчт,нч В таблице 3.5.4 представлена программа тестирования. Стрелками отмечено считывание тех ячеек памяти, в которые производилась загрузка в предыдущих шагах. Таблица 3.5.4 – Таблица программы тестирования № A0 Первый операнд Cчт(OP) := A24 0.011 (+3) ОП Второй операнд Результат операции MUL i(R2) := (9 + 1) * 2 = 20 Cнч(M[i(R2)](OP))(OP) -> A20 -> A25 1.001 (-7) i(R2) = 20 Cчт,нч(M[i(R2)](OP))(OP) -> A20 -> A24, A25 1.1101011 (-21) A3 Zчт(OP) := A30 1.010 (-6) MUL Dнч(R1) := 0.110 (+6) Dчт,нч(R0, R1) := 1.1011100 (-36) A6 N1 0001 (1) SH Dчт(R0) := 1101 Dчт(R0) := 0110 Безусловный переход в A11: CK := CK + 1 = 10 + 1 = 11 j(R3) := (12 + 1) * 2 = 26 j(R3) = 26 N2 Zчт(M[j(R3)](OP))(OP) Zчт(M[j(R3)](OP))(OP) A11 SH 0010 (2) ->A26 -> A30 -> A26 -> A30 1010 0010 A13 Условный переход по CF = 1 в A0: CK := CK – 15 = 15 – 15 = 0 Флаг CF = 0 A8 MUL i(R2) := (10 + 1) * 2 = 22 Cнч(M[i(R2)](OP))(OP) := -> A22 -> A25 1.011 (-5) i(R2) = 22 Cчт,нч(M[i(R2)](OP))(OP) -> A22 -> A24, A25 0.0001010 (+10) Zчт(OP) := A30 0.010 (+2) MUL Dнч(R1) := 1.100 (-4) Dчт,нч(R0, R1) := 1.1111000 (-8) N1 0001 (1) SH Dчт(R0) := 1111 Dчт(R0) := 0111 A0 Cчт(OP) := A24 1.110 (-2) A3 A6 A8 CF = 1 CF = 1 Безусловный переход в A11: CK := CK + 1 = 10 + 1 = 11 j(R3) := (13 + 1) * 2 = 28 j(R3) = 28 N2 Zнч(M[j(R3)](OP))(OP) Zнч(M[j(R3)](OP))(OP) A11 SH 0010 (2) -> A28 -> A31 -> A28 -> A31 1101 0011 A13 Условный переход не выполняется, так как CF = 0 A15 N3 0000 (0) SH A17 N4 0011 (3) SH Dчт(R0) := 0111 k(R4) := (13 + 1) * 2 = 28 Zнч(M[k(R4)](OP))(OP) -> A28 -> A31 0011 61 Dчт(R0) 0111 k(R4) = 28 Zнч(M[k(R4)](OP))(OP) -> A28 -> A31 0000 CF = 0 CF = 0 CF = 0 Результаты моделирования БУК На рисунках 3.6.1–3.6.4 представлены результаты функционального моделирования БУК, проведенного по алгоритму тестирования. Рисунок 3.6.1 – Функциональное моделирование БУК, 1-3 команды 62 Рисунок 3.6.2 – Функциональное моделирование БУК, 4-7 команды 63 Рисунок 3.6.3 – Функциональное моделирование БУК, 8-11 команды 64 Рисунок 3.6.4 – Функциональное моделирование БУК, 12-14 команды 65 Проектирование блока выработки микрокоманд Блок выработки микрокоманд спроектирован как микропрограммное устройство управления с принудительным способом задания адреса следующей микрокоманды (МК). В каждой МК указан адрес следующей микрокоманды, необходимые признаки, формируемые в АЛУ, и управляющие сигналы. При отсутствии ветвления в алгоритме работы БУК следующей микрокомандой будет та МК, которая указана в поле следующей МК, как показано на рисунке 4.1. В случае наличия ветвления на 2 направления, представленного на рисунке 4.2, если условие не выполнилось, то происходит переход в следующую микрокоманду. В противоположном случае записывается адрес, который указан в МК. Рисунок 4.1 – Выбор адреса следующей МК при отсутствии ветвления Рисунок 4.2 – Выбор адреса следующей МК при наличии ветвления Данный способ задания адреса следующей МК был выбран для сокращения количества пустых тактов, соответственно и уменьшения количества тактов выполнения длинной операции. Недостатком принудительной адресации является больший размер используемой памяти. 66 Модифицированный алгоритм работы БУК Рисунок 4.1.1 – Модифицированный алгоритм микропрограммы выполнения команд 67 На рисунке 4.1.1 приведена блок-схема модифицированного алгоритма микропрограммы волнения команд. Слева от блока указан номер текущей микрокоманды, а слева в блоке номер следующей. Между идущими подряд условными блоками добавлены NOP-блоки пустых тактов. Одной микрокомандой считается условный блок с предшествующим действием, такие МК показаны пунктирной линией. Всего 22 микрокоманды, поэтому необходима управляющая память глубиной 32 разряда. Определение формата микрокоманд Формат микрокоманды разработан в соответствии с выбранным способом принудительного задания адреса следующей МК. В микрокоманде указываются управляющие сигналы, адрес перехода и необходимые для работы БУК признаки, формируемые в АЛУ. При отсутствии ветвления в МК не указываются проверяемые признаки, а в обратно случае должен быть указан хотя бы один. Для указания управляющих сигналов выбрано горизонтальное кодирование МК. Длина микрокоманды составляет 26 разрядов, указанных на рисунке 4.2.1: 5 разрядов А4-А0 для задания адреса следующей МК, 4 разряда для кода операции (COP1, COP0) и необходимых признаков (CF и PA2), 17 разрядов для управляющих сигналов YC16-YC1 и сигнала начала операции SNO. Рисунок 4.2.1 – Формат микрокоманд Функциональная схема БМК На рисунке 4.3.1 представлена функциональная схема БМК. Рисунок 4.3.1 – Функциональная схема БМК 68 В таблице 4.3 описано функциональное назначение каждого блока-элемента БМК. Таблица 4.3 – Таблица назначения блоков-элементов БМК Название Назначение KC1 В случае ветвления при выполнении условия формирует нечетный адрес следующей МК KC2 Формирование управляющих сигналов YC1-Y16 ИЛИ Передача младшего разряда адреса, сформированного при наличии ветвления, или выработанного управляющей памятью RAMK Регистр микрокоманд, хранит текущую МК ROM Управляющая память SPO По сигналу START, SNO или SKO запускает или останавливает выполнение тестовой программы Логическая схема БМК На рисунке 4.4.1 представлена логическая схема БМК. Регистр микрокоманд собран на регистре FD4CE и триггере FDCE, так как необходимо 5 разрядов для адресации в ROM. Управляющие сигналы и SNO экранированы сигналом EN_BMK работы БМК. Рисунок 4.4.1 – Логическая схема БМК 69 Составление микропрограммы На рисунке 4.5.1 представлена карта загрузки управляющей памяти БМК для тестирования процессора. Используется управляющая память ROM, синтезированная на основе постоянного запоминающего устройства размером 32х26 ячеек. Рисунок 4.5.1 – Карта загрузки управляющей памяти 70 Результаты моделирования процессора Результаты функционального моделирования процессора На рисунках 5.1.1–5.1.5 представлены результаты функционального моделирования процессора. Рисунок 5.1.1 – Функциональное моделирование процессора, 1-2 команды 71 Рисунок 5.1.2 – Функциональное моделирование процессора, 3-6 команды 72 Рисунок 5.1.3 – Функциональное моделирование процессора, 7-8 команды 73 Рисунок 5.1.4 – Функциональное моделирование процессора, 9-12 команды 74 Рисунок 5.1.5 – Функциональное моделирование процессора, 13-14 команды 75 Размещение на кристалле Для проведения тестирования процессора его схема была загружена на ПЛИС. На рисунке 5.2.1 приведена схема подключения процессора к стенду. Рисунок 5.2.1 – Схема подключения процессора к стенду 76 На рисунке 5.2.2 указано количество элементов для подключения процессора к стенду и загрузки его на кристалл ПЛИС. Рисунок 5.2.2 – Отчет о количестве элементов Схема размещения элементов процессора на кристалле ПЛИС представлена на рисунке 5.2.3. Рисунок 5.2.3 – Схема размещения на кристалле ПЛИС Временные параметры На рисунке 5.3.2 представлен отчет времени предварительной установки, полученный с помощью программы «Timer Analyzer». По полученным данным, представленным на рисунке 5.3.1, данным можно судить о минимальном периоде работы генератора, который равен 71.6 нс. Максимальная частота работы генератора, соответственно, равна 13.9 МГц. 77 Рисунок 5.3.1 – Оценка временных параметров процессора программой «Timer Analyzer» Рисунок 5.3.2 – Критический путь, найденный «Timing Analyzer» Программа определила критический путь на микрооперации чтения из оперативной памяти по адресу, полученному из регистровой памяти, и записи этих данных в 3-ю часть регистра команд: 𝑅𝐾3 ∶= 𝑟𝑑(𝑟𝑑(𝑅2 + 1)𝑟𝑝 + 1)𝑜𝑝 Критический путь, указанный на рисунке 5.3.2: 𝐶 → 𝑅𝐴𝑀𝐾 → 𝑅𝑂𝑀 → 𝑅𝑃 → 𝑆𝑀2 → 𝑂𝑃 → 𝑅𝐾 БМК БУК 𝐶 → 𝑅𝐴𝑀𝐾 → 𝑅𝑂𝑀(𝑌𝐶13) → 𝐾𝐶2 → ИЛИ(𝑌𝐶13) → 𝐾𝐶9 → 𝑅𝑃 → 𝑆𝑀2 → 𝐾𝐶3 → 𝑂𝑃 → 𝐾𝐶12 → 𝑅𝐾 БМК БУК 78 В таблице 5.3 приведено сравнение временных параметров работы процессора для 4-х выполняемых операций. Самой быстровыполнимой является операция условного или безусловного перехода. Самой затратной по времени является операция умножения. Таблица 5.3 – Таблица временных параметров процессора Параметр Минимальный период работы генератора, нс Максимальная частота работы генератора, МГц Максимальное число тактов операции Максимальное время выполнения операции, нс Количество операций в секунду, млн Умножение Значение Условный Сдвиг вправо переход Безусловный переход 71.6 13.9 19 15 4 4 1360.4 1074.0 286.4 286.4 0.7 0.9 3.5 3.5 79 Заключение В курсовом проекте с помощью системы проектирования «Xilinx» был спроектирован процессор, соответствующий техническому заданию, выполняющий четыре операции: 1. 2. 3. 4. Умножение Сдвиг вправо Условный переход Безусловный переход В процессе разработки спроектирована функциональная и логиеческая схемы блока операций, выполняющих умножение чисел в дополнительном коде со старших разрядов множителя и сдвига суммы частичных произведений влево с одним корректирующим шагом и логический сдвиг вправо второго операнда на число разрядов, указанное в первом. Для задания управляющих сигналов в БО спроектирована функциональная и логическая схемы местного устройства управления с «жесткой» логикой. Для тестирования арифметико-логического устройства разработаны 5 тестов операции умножения и 4 теста операции сдвига вправо, предусматривающие прохождение по всем ветвям алгоритмов выполнения операций. Выполнено функциональное моделирование АЛУ, его загрузка на кристалл ПЛИС и подключение к стенду. Временные параметры АЛУ были найдены с помощью программы «Timing Analyzer» и самостоятельно с помощью временного моделирования. Программа показала, что минимальный период работы генератора равен 36.2 нс, а временное моделирование – 36.0 нс. Максимальная частота работы равна 27.6 МГц и 27.8 МГц соответственно. АЛУ может выполнять 3.5 млн операций умножения и 4.6 млн операций логического сдвига вправо в секунду. Спроектированы функциональная и логическая схемы блока управления командами на основе алгоритма выполнения команды. Доюавлены команды безулосного и условного, срабатывающего по флагу CF после операции сдвига вправо, переходов. Для выработки управляющих сигналов для БУК были разработаны функцинальная и логическая схема блока выработки микрокоманд. Выбран принудительный способ задания адреса следующей микрокоманды. Для тестирования процессора разработана тестовая программа, содержащая 14 команд, которая проверяет прохождение всех ветвей агоритма выполнения команды, а также загрузку и чтение данных из четных и нечетных ячеек оперативной и регистровой памяти для всех операций. Выполнено функциональное моделирования БУК в частности и процессора в целом. Произведено размещение процессора на кристалле ПЛИС и его подключение к стенду, а затем временное моделирование для оценки временных параметров. С помощью программы «Timing Analyzer» найден минимальный период работы генератора, равный 71.6 нс и соответственная максимальная частота – 13.9 МГц. Самой быстровыполнимой является операция перехода, которую за 1 секунду можно сделать 3.5 млн. Самой долговыполнимой оказалась операция умножения. Их за секунду можно совершить всего 0.7 млн. Операций сдвига вправо можно сделать 0.9 млн в секунду. 80 Список литературы 1. Зуев В.И.; Ковригин Б.Н; Тышкевич В.Г.; Любенцов В.М.; Ядыкин И.М. Проектирование процессора ЭВМ : учеб. пособие, В.И. Зуев [и др.]; Под ред. Б.Н. Ковригина, М.: МИФИ, 2006 – 80с. 2. Цильке Б.Я.; Орлов С.А. Организация ЭВМ и систем : учебник для вузов, СПб.: Питер, 2001. – 668 с. 3. Гуров В.В.; Чуканов В.О. Основы теории и организации ЭВМ : ученое пособие для вузов, В.В. Гуров, В.О. Чуканов, Москва: Бином. Лаборатория знаний, 2010. – 272 с. 4. Хамахер К.; Вранешич З., Заки С. Организация ЭВМ : Хамахер К. Вранешич З. Заки С. СПб.: Питер, 2003. – 848 с. 5. Ковригин Б.Н. Введение в инструментальные средства проектирования и отладки цифровых устройств на ПЛИС : учебно-методическое пособие, Б.Н. Ковригин, М.: МИФИ, 2006. – 292 с. 6. Таненбаум Э. Архитектура компьютера : Э. Таненбаум, СПб.: Питер, 2009. – 704 с. 7. Угрюмов Е.П. Цифровая схемотехника : Учеб. пособие для вузов, Угрюмов Е.П., СПб.: БХВ-Петербург, 2015. – 816 с. 81