Міністерство освіти і науки України
Національний університет «Львівська політехніка»
Інститут комп`ютерної техніки та автоматики
Кафедра ЕОМ
Курсовий проект
з предмету
«Проектування спеціалізованих комп’ютерних систем»
на тему
«Розроблення VHDL-моделі комп`ютера»
Львів – 2005
Анотація
Роль і значення комп`ютерів у сучасному житті загальновідомі. Апаратні методи розв`язку задач також важливі і у ряді випадків є незамінними. Багато задач, такі як моделювання динамічних об`єктів, керування рухом (особливо керування рухом сукупності об`єктів), обробка сигналів та зображень у реальному часі, реалістична комп`ютерна графіка і подібні, пов`язані з багатократним виконанням порівняно простих операцій, крім того потребують виконання до декількох мільярдів операцій на секунду.
Послідовне виконання великого числа елементарних кроків при комп`ютерному рішенні задачі займає відносно великий час. Крім того, незалежність апаратних засобів від складності задачі, що розв` язується, має і зворотною сторону – навіть для найпростіших задач необхідні блоки, що утворюють комп`ютер в цілому. Таким чином, прості задачі та задачі, що повинні розв`язуватися в реальному масштабі часу, можуть призвести до застосування апаратних варіантів розв`язку. Поняття «реальний час» означає, що результат повинен бути одержаний за обмежений інтервал часу, інакше він стає марним.
Зміст
Вступ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .4
Технічне завдання. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .5
Структура мікрокомп`ютера . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .6
Зовнішній інтерфейс мікропроцесора Gnome . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7
Порти мікропроцесора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8
Інтерфейс із зовнішньою пам`ятю . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Переведення мікропроцесора до початкового стану . . . . . . . . . . . . . . . . . . . . . .8
Програмна модель мікропроцесора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Програмно-доступні регістри . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .9
Множина інструкцій мікропроцесора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Внутрішня структура мікропроцесора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Інформаційний тракт мікропроцесора Gnome . . . . . . . . . . . . . . . . . . . . . . . . . . .12
Цикли виконання команд . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15
керуючий автомат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Висновки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19
Список літератури . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Додаток . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Вступ
Мета курсового проекту полягає в опануваннi методiв проектування вузлiв комп’ютерних систем на прикладi створення моделi однокристального комп`ютера з використанням мови апаратного опису VHDL, виконаннi симуляцiї з наступним тестуванням роботи мiкропроцесорної системи на функцiональному рiвнi. Розроблюваний унiверсальний однокристальний мікрокомп`ютер є рiзновидом унiверсальних комп`ютерів. Вiн мiстить усi стандартнi пристрої, необхiднi для реалiзацiї цифрової системи мiнiмальної конфiгурацiї, а саме – процесор, пам`ять команд, пам`ять даних, внутрiшнiй тактовий генератор. Основою мікрокомп`ютера, що проектується, є мiкропроцесор Gnome – 4-розрядний гiпотетичний неконвеєрний RISC мiкропроцесор, зi спрощеною системою команд та типiв адресування.
Основну увагу пiд час розробки мiкропроцесора придiлено проектуванню архiтектури з використанням мови апаратного опису VHDL, оскiльки при проектуваннi НВiС (надвеликих iнтегральних схем) з використанням рiвнiв архiтектурного, логiчного, топологiчного проектування успiх розробки найбiльшою мiрою залежить вiд результатiв попереднього, архiтектурного рiвня проектування. Вибраний спосiб побудови моделi пристрою за допомогою мови VHDL та iнструментального засобу Аctive-HDL фiрми Аldес забезпечує можливiсть швидкої модифiкацiї архiтектури, є самоописовим, тобто вiн дозволяс швидко виявляти та усувати хиби проектування. Альтернативою опису моделi за допомогою мов апаратного опису є схемотехнiчний синтез та синтез архiтектури з використанням функцiй алгебри логiки.
Синтез архiтектури з використанням функцiй алгебри логiки вимагає вiд розробника опису схеми в термiнах заданої множини логiчних функцiй. Такий пiдхiд є ефективний при побудовi пристроїв невеликої складностi. Суто теоретично функцiонування можна описати даним способом, але через велику складнiсть вiн є неприйнятним.
Метод схемотехнiчного синтезу базується на синтезi з використанням як окремих логiчних функцiй, так i елементiв, що побудовано на основi логiчних функцiй. Схемотехнiчний дизайн є зручним i наочним для схем невеликої складностi. Вiн дозволяс зручно втiлювати евристичнi схемотехнiчнi рiшення. Проте цей метод є практично неприйнятним для схем великої складностi (вiд 10 тисяч логiчних елементiв), оскiльки складно формулюсться, не дає змоги швидко модифiкувати проект, вчасно виявляти та усувати хиби проектування.
Незручнiсть схемотехнiчного проектування складних систем дала поштовх розробцi низки мов проектування. Зокрема, на початку 80-х рокiв Мiнiстерство оборони США пiдтримало розробку мови VHDL (VHSIC hardware description language) в рамках програми VHDL (very high-speed ІС). Цю iнiцiативу було пiдтримано iнститутом iнженерiв електрикiв та електронникiв (IEEE) з метою розробки стандарту мови – IEEE Standard 1076-1987. Згодом Мiнiстерством Оборони США доповнило стандарт IEEE Standard 1076-1987 власним стандартом MIL-STD-454, який регламентував сам процес проектування НВiС iз використанням мови VHDL. Інститутом IEEE запроваджено стандарт Std-1164 бiблiотеки мови VHDL уведенням багаторiвневої логiки, яка необхiдна в моделюваннi роботи iнтегральної схеми, запроваджено стандарт Std-1029 регламентацiї способiв верифiкацiї та тестування проекту. В 1993 роцi запроваджено новий IEEE стандарт мови VHDL 1076-1993, що доповнив iснуючий. Поширення набула абревiатура VHDL -87 та VHDL -93.
Мова VHDL дозволяє охопити водночас декiлька рiвнiв проектування вiд архiтектурного до логiчного. Ця мова апаратного опису дас змогу описати пристрiй як на поведiнковому, так i на структурному рiвнях та провести симуляцiю. Тут синтез топологiї кристала виконують засобами автоматизованого синтезу на основi поведiнкового та структурного описiв пристрою. У складних проектах застосування мови VHDL та потужного засобу логiчного синтезу дозволяї синтезувати пристрої, якi за ефективнiстю перевищують аналогiчнi, з використанням схемотехнiчного методу синтезу.
Технічне завдання
Розробити VHDLмодель мікрокомп`ютера з використанням пакету Active-HDL. Провести симуляцію на функціональному рівні блоків мікрокомп`ютера. Скласти програму та провести симуляцію виконання програми мікропроцесором.
Проектування мікропроцесорної системи виконати в такій послідовності:
Проектування та тестування компонентів інформаційного тракту мікропроцесора, блока зовнішньої пам`яті та двох зовнішніх пристроїв.
Проектування та тестування інформаційного тракту мікропроцесора.
Проектування та тестування керуючого автомату.
Проектування та тестування мікропроцесора.
Складання асемблерної програми та тестування мікрокомп`ютера загалом.
Реалізувати регістровий файл всередині інформаційного тракту, що містить 16 регістрів загального призначення. Можливий одночасний запис та читання з нього.
Додати до множини команд мікропроцесора Gnome дві команди load і store, що виконують відповідно завантаження та збереження.
Опис проекту
1. Структура мікрокомп`ютера
Базова структура мікрокомп’ютера містить мікропроцесор Gnome, блок зовнішньої пам’яті та два зовнішніх спеціалізованих пристрої (рис.1.1). Наведена структура мікрокомп’ютера не є функціонально завершеною, оскільки відсутній інформаційний зв’язок поміж мікрокомп’ютером та зовнішнім оточенням. З погляду учбового функціонального проектування таке обмеження не є критичним.
Рис.1.1. Структура мікрокомп’ютера
Зовні на мікрокоп`ютер надходять два сигнали: clock та reset. Перший є сигналом синхронізації, а другий – загальним скидом.
2 Зовнішній інтерфейс мікропроцесора Gnome
2.1 Порти мікропроцесора
Мікропроцесор Gnome має необхідну кількість інтерфейсних ліній/портів (address, data, csb, web, oeb) (рис.2.1.1), які дозволяють легко та з мінімальними витратами організувати взаємозв’язок поміж мікропроцесором Gnome та зовнішньою пам’яттю.
Розглянемо детально призначення портів мікропроцесора:
data – 8-розрядна двонаправлена шина даних;
address – 8-розрядна адресна шина (можливе фізичне звертання до 256 комірок зовнішньої пам'яті);
csb – керуючий сигнал вибору мікросхеми. Якщо csb='1', тоді обирається один із зовнішніх пристроїв, інакше звертання ведеться до пам`яті;
oeb – сигнал дозволу видачі інформації на шину даних; data (oeb='0' – дозвіл);
web – стробовий сигнал запису даних (web=‘0’ – запис);
reset – сигнал початкового скиду, рівень лог. '1' переводить мікропроцесор до початкового стану;
clock – на цей вхід надходять синхронізуючі імпульси з тактового генератора;
interrupt – лінія маскованого апаратного переривання (interrupt=’1’ – є переривання).
Слід зауважити, що сигнал oeb дозволу видачі даних та стробовий сигнал запису даних web водночас активними бути не можуть.
Рис.2.1.1. Порти мікропроцесора Gnome
2.2 Інтерфейс з зовнішньою пам'яттю
Обмін інформацією між мікропроцесором та зовнішньою пам’яттю виконують 8-бітними словами. Запис/читання інформаційного слова мікропроцесором між зовнішньою пам’яттю та мікропроцесором виконується за один цикл. Це можливе, оскільки невеликий об’єм пам’яті (256х8) дозволяє інтегрувати на одному кристалі ядро процесора та зовнішню пам’ять. Насправді використовується лише перші 128 комірок пам`яті, оскільки адресний простір поділяють між собою зовнішня пам`ять та два зовнішніх пристрої (див.рис.2.2.1).
Зовнішня пам`ять є пам`ятю типу RAM і використовується для читання програми для мікропроцесора і зберігання даних.
Читання інформаційного слова з пам’яті (рис.2.2.2) виконують у такій послідовності: після надходження зростаючого фронту тактового імпульсу мікропроцесор формує адресу комірки пам’яті на шині address та сигнал дозволу видачі блоком пам'яті інформації на шину даних (oeb=’0’), блок пам’яті розміщує прочитану інформацію з комірки пам’яті за вказаною адресою на шині даних data. При подальшому надходженні зростаючого фронту тактового імпульсу мікропроцесор використовує вже сформовані дані з шини даних, записуючи їх у внутрішній регістр.
Рис.2.2.2. Часова діаграма читання даних із зовнішньої пам’яті
З вищенаведеного зрозуміло, що розглядуваний мікропроцесор фізично може адресувати 128 8-розрядних комірок зовнішньої пам’яті. Проте можливість повноцінного використання всього простору пам’яті обмежується.
Тут під час читання вмісту даних комірок використовують тільки 8-розрядні слова, але процесор має 4-розрядну внутрішню архітектуру і використовує останню тетраду.
2.3 Переведення мікропроцесора до початкового стану
Переведення мікропроцесора до початкового стану виконується асинхронним сигналом reset. При надходженні reset=’1’ встановлюються в нульовий стан всі регістри у регістровому файлі, внутрішні регістри мікропроцесора. Сам мікропроцесор переходить в режим читання даних зовнішньої пам’яті за адресою “00000000” (цикл IF).
На цей сигнал реагують також обидва зовнішні пристрої і «обнулюють» свої внутрішні регістри.
3. Програмна модель мікропроцесора
Програмна модель має певні особливості, на які необхідно звернути увагу. По-перше, мікропроцесор Gnome має класичну Гарвардську архітектуру, по-друге, розглядуваний процесор є RISC процесором, в якому використовується тільки пряма та безпосередня адресація операндів.
3.1 Програмно-доступні регістри
R0-R15 – регістри загального призначення розрядністю 4-біти. Вони знаходяться у регістровому файлі. Звертання до даних регістрів виконується за їхнім номером, так, регістр R0 має двійковий номер 0000 /2/ , R1 - 0001 /2/ , …, R15 - 1111 /2/ ;
ACC – акумулятор є 4-розрядним регістром, призначеним для запису та збереження даних. Результат виконання арифметико-логічних інструкцій заноситься безпосередньо в акумулятор;
C – регістр ознаки переносу. Програмно доступний регістр стану програми. Значення регістра формується при виконанні арифметичних інструкцій, встановлене в ‘1’ значення вказує на переповнення акумулятора. Регістр може встановлювати користувач за допомогою команд встановлення та скиду ознаки переносу. Значення регістра ознаки переносу використовують арифметичні інструкції та команди умовного переходу;
Z – регістр ознаки нульового значення. Значення регістра формується при виконанні логічних операцій, значення регістра дорівнює ‘1’ при набутті значення “0000” після виконання логічної операції. Регістр не може безпосередньо встановлювати користувач. Значення регістра ознаки нульового значення використовують команди умовного переходу;
PC – лічильник команд. Формує поточну адресу інструкції в пам’яті команд. Регістр містить 7 розрядів. Значення регістра PC збільшується на одиницю при виборі кожного байту команди, значення регістра можна встановити за допомогою інструкції переходу.
PC1 – регістр, що зберігає «старе» значення лічильника команд під час виконання підпрограми обробки переривання.
3.2 Множина інструкцій мікропроцесора
Система команд мікропроцесора Gnome містить 16 інструкцій (табл.3.2.1), — це арифметико-логічні інструкції, інструкції збереження результату та інструкції умовного та безумовного переходів.
Табл.3.2.1. Множина інструкцій мікропроцесора
Інструкція
Код
Призначення
Дія
CLEAR_C
00000000
Встановити значення регістра ознаки переносу С в ‘0’
C<=’0’
SET_C
00000001
Встановити значення регістра ознаки переносу С в ‘1’
C<=’1’
SKIP_C
00000010
Ігнорувати наступну інструкцію, якщо регістр ознаки переносу є встановленим (С=’1’)
PC<=PC+C
SKIP_Z
00000011
Ігнорувати наступну інструкцію, якщо регістр ознаки нуля є встановленим (Z=’1’)
PC<=PC+Z
LOAD_IMM
0001dddd
Завантажити безпосередньо дані dddd/2/ в акумулятор (ACC).
ACC<=IR[3:0]
ADD_IMM
0010dddd
Додати dddd/2/ до акумулятора, результат помістити в акумулятор. Регістр ознаки переносу встановлюється в ‘1’ у разі переповнення регістра акумулятора.
ACC<=ACC+IR[3:0]
if ACC+IR[3:0] > F then C<=’1’
STORE_DIR
0011rrrr
Зберегти вміст акумулятора в регістрі загального призначення RF за номером rrrr/2/.
RF[IR[3:0]]<=ACC
LOAD_DIR
0100rrrr
Завантажити у акумулятор вміст регістра загального призначення RF за номером rrrr/2/.
ACC<=RF[IR[3:0]]
ADD_DIR
0101rrrr
Додати вміст регістра загального призначення RF за номером rrrr/2/ до акумулятора, результат помістити в акумулятор. Регістр ознаки переносу встановлюється в ‘1’ у разі переповнення регістра акумулятора.
ACC<=ACC+
RF[IR[3:0]]
if ACC+RF[IR[3:0]]>F
then C<=’1’
XOR_DIR
0110rrrr
Виконати логічну операцію XOR над вмістом регістра загального призначення RF за номером rrrr/2/ та акумулятора ACC, результат занести в акумулятор.
ACC<=
ACC xor RF[IR[3:0]]
TEST_DIR
0111rrrr
Виконати логічну операцію AND над вмістом регістра загального призначення RF за номером rrrr/2/ та акумулятора ACC, результат занести в акумулятор.
Формується значення регістру нульового результату.
ACC<=
ACC and RF[IR[3:0]]
JNZ
1000dddd
Якщо ознака нульового результату встановлена, то завантажити у лічильник команд таку комбінацію бітів: R0[2:0]&IR[3:0]
if Z=’0’ then
PC<=
R0[2:0]&IR[3:0].
LOAD
1001dddd
Завантажити у акумулятор значення, що знаходиться за адресою R0&IR[3:0]. Це може бути значення із зовнішньої пам`яті або з одного із зовнішніх пристроїв.
if R0[3]=’0’ then
ACC<=
MEM[R0&IR[3:0]]
else
ACC<=
DEV[R0&IR[3:0]]
STORE
1010dddd
Завантажити до певного внутрішнього регістра зовнішнього пристрою значення з акумулятора.
DEV[R0&IR[3:0]]<=ACC
RET
10110000
Відновити у лічильнику команд виконання тої послідовності команд, що була порушена необхідністю виконати обробку апаратного маскованого переривання.
PC<=PC1;
NOP
11000000
Збереження попереднього стану, ніяких дій не виконується.
–
4. Внутрішня структура мікропроцесора
У пристрої обробки цифрової інформації виділяють інформаційний тракт (операційний блок, Datapath Unit) та керуючий автомат (блок керування, Control Unit).Такий підхід спрощує проектування та полегшує розуміння процесу функціонування пристрою (рис.4.1.1).
Рис.4.1.1. Функціональна схема пристрою обробки цифрової інформації
Інформаційний тракт мікропроцесора Gnome (рис.6) містить РЗП (регістровий файл), службові регістри, АЛП та допоміжні вузли, які забезпечують виконання інструкцій читанням даних з пам‘яті, їх зберігання та перетворення, до того ж інформаційний тракт формує для керуючого автомата сигнали стану з інформацією про стан операндів, окремих вузлів, особливих значень операндів, їх окремих розрядів та результати виконання операцій (наприклад, рівність нулю результату операції і т.п.).
Процес функціонування в часі мікропроцесора складається з послідовності тактових інтервалів, в яких інформаційний тракт виконує елементарні операції — передачу слова з регістра в регістр, зсув і т.п. Виконання даних елементарних операцій ініціюється надходженням в інформаційний тракт відповідних керуючих сигналів (мікродій) з керуючого автомата. Послідовність елементарних операцій керуючий автомат формує на основі коду операції (регістр інструкцій IR) та службових сигналів стану з інформаційного тракту. Сукупність мікродій, які забезпечують виконання інструкції за певну кількість циклів, називають мікропрограмою даної інструкції.
4.1 Інформаційний тракт мікропроцесора Gnome
Інформаційний тракт складається з таких компонентів:
1. Восьмирозрядний мультиплексор MUX1
Цей мультиплексор формує фізичну адресу, виходячи з типу адресації, що необхідний для виконання біжучої команди. На нього надходить шина pc_r[6:0], що є виходом лічильника команд, шина R0[3:0], яка є виходом з регістра файлу, а фактично з регістру R0 та шина IR[3:0] – молодша тетрада регістра інструкцій. Керує мультиплексором сигнал sel_addr, що формується керуючим автоматом. Якщо sel_addr=’0’, то на виході мультиплексора формується адреса, старший біт якої ‘0’, а молодші сім – значення семирозрядного лічильника команд (застосовується для вибірки наступної команди з зовнішньої пам`яті). В протилежному випадку (sel_addr=’1’) на шину адреси надходить «злиття» бітів R0[3:0] та IR[3:0]. На виході мультиплексора формується сигнал вибору мікросхеми csb, що фактично є старшим бітом адреси address[7:0].
2. Програмно-доступні регістри PC,PC1, Z, C, ACC
Семирозрядний регістр PC призначено для зберігання вмісту лічильника команд. Регістр PC1 дублює значення регістру PC, при необхідності терміново виконати обробку переривання і відповідного переходу до нової адреси. Потім із нього відновлюється природній порядок виконання команд. Регістри Z та C є однорозрядними регістрами- тригерами, які зберігають поточне значення регістра ознаки нульового значення та регістра ознаки переносу. ACC – чотирирозрядний регістр, який виконує роль акумулятора. До кожного з них надходять глобальні сигнали синхронізації та скиду.
3. Регістр інструкцій IR
Призначено для зберігання коду прочитаної інструкції. Керуючий сигнал ld_ir дозволяє завантажувати в регістр IR 8-розрядне слово інструкції з пам‘яті команд. Якщо сигнал ld_ir=’0’, то регістр зберігає своє попереднє значення, інакше з пам`яті команд до нього завантажується 8-розрядне слово команди. Вихід з цього регістра поступає до керуючого автомата, регістрового файлу, АЛП та на мультиплексор формування фізичної адреси.
4. Семирозрядний мультиплексор MUX2 та суматор SM
Призначено для формування логічної адреси наступної інструкції на основі керуючих сигналів jump_pc[1:0] та inc_pc. Якщо inc_pc=’1’, на виході суматора є збільшений на одиницю вміст лічильника інструкцій PC, а якщо inc_pc=’0’,— поточне. Сигнал jump_pc керує формуванням наступної адреси pc_nxt з молодших розрядів регістра інструкцій IR[3:0], R0[2:0], PC1[6:0], R14_R15[6:0] та виходом з суматора. У таблиці 4.1.1 показано режими роботи мультиплексора.
Табл.4.1.1 Режими роботи мультиплексора MUX2
jump_pc
Обране значення
“00”
pc_nxt<=pc_r+inc_pc
“01”
pc_nxt<=pc1_r
“10”
pc_nxt<=R14_15[6:0]
“11”
pc_nxt<=R0[2:0]&IR[3:0]
5. Чотирирозрядний мультиплексор MUX3
Призначений для передачі на АЛП значень відповідно з шини даних з регістру інструкції та з регістрового файлу. Керується дворозрядним керуючим сигналом mx3[1:0], що надходить з керуючого автомата. Має 4 стани, що показані у табл.4.1.2 нижче
Табл.4.1.2 Режими роботи мультиплексора MUX3
mx3
Обране значення
“00”
IR[3:0]
“01”
RF_r[3:0]
“10”
data[3:0]
“11”
збереження попереднього значення
6. Арифметико-логічний пристрій
АЛП є комбінаційним пристроєм, який виконує певні операції над вхідними операндами. Для випадку розглядуваного мікропроцесора Gnome першим вхідним операндом АЛП (рис.4.1.1) є поточна інформація з акумулятора cur_acc, другим операндом є вихід мультиплексора MUX3, а також поточні значення ознак переносу curr_carry та нуля curr_zero. На виході блок АЛП залежно від коду операції alu_op формує результат: наступне значення акумулятора next_acc, отримане значення ознаки переносу next_carry, отримане значення ознаки нуля next_zero. Блок АЛП виконує невелику кількість операцій над 4-розрядними операндами (табл.4.1.3), що зумовлено простою системою команд мікропроцесора.
Табл.4.1.3 Множина операцій АЛП
7. Регістровий файл
Регістровий файл являє собою сукупність 16 4-розрядних регістрів загального призначення. На кожен з них надходить глобальні сигнали синхронізації та скиду. Спільна вхідна шина даних одночасно видає значення на всі 16 регістрів, а дешифратор «обирає» той регістр, якому призначені ці дані. Дешифратором керує 4-розрядна шина адресу та сигнал запису до регістрового файлу (приходить з керуючого автомату), що активізує дешифратор.
Рис.4.1.2. Схема побудови регістрового файлу
Мультиплексор активізації не потребує, тобто процес читання з регістрового файлу відбувається постійно, потрібно лише подавати адресу регістру на вхід addr[3:0]. Одночасно з виходом мультиплексора (основним виходом регістрового файлу) видаються значення регістрів R0, R14 та R15, як цього вимагає технічне завдання на проектування. Значення регістру R0 приймає участь у формуванні адреси (мультиплексор MUX1), об`єднання регістрів R14 та R15 вказує на адресу підпрограми обробки переривання і воно надходить на мультиплексор MUX2. Вихід регістрового файлу RF_r[3:0] є одним з входів мультиплексора MUX3, що працює з акумулятором.
Рис.4.1.3. Часові діаграми роботи регістрового файлу
8. Допоміжні елементи
В інформаційному тракті мікропроцесора Gnome присутні повторювачі, інвертори та інші логічні елементи, які забезпечують формування керуючих сигналів та інформації на шині даних.
4.2 Цикли виконання команд
Інформаційний тракт мікропроцесора Gnome забезпечує виконання однієї інструкції в поточний момент часу. Кожна інструкція виконується за три цикли. Після виконання поточної інструкції мікропроцесор переходить до виконання наступної (рис.4.2.1), тобто в основу закладено принцип послідовного неконвеєрного опрацювання інструкцій.
Оскільки в даному курсовому проекті проектування мікропроцесора виконується на функціональному рівні, то при синтезі VHDL-моделі увага часовим витратам виконання кожного циклу не приділяється. Вважатимемо, що час виконання кожного з циклів є однаковий і дорівнює тривалості тактового інтервалу clock. Розглянемо детально множини мікродій (елементарних операцій), що виконуються у кожному циклі:
Рис.4.2.1. Послідовність виконання циклів команд в мікропроцесорі Gnome
1. Цикл вибирання інструкцій (Instruction Fetch cycle -IF)
Виконуються наступні мікродії:
IR = ROM[PC];
PC = PC + 1.
Виконання першої мікродії забезпечує завантаження з пам‘яті інструкцій ROM за адресою, яка вказана в регістрі PC, команди з пам’яті програм в регістр інструкцій IR. Друга мікродія виконує інкремент лічильника команд PC на одиницю, що формує адресу комірки пам‘яті, з якої буде завантажуватись наступна планова інструкція. Обчислене значення адреси наступної команди на фазі IF може бути змінене на фазі EX під час виконання інструкцій переходу. Зауважимо, що нумерація мікродій в даному описі є суто умовною, оскільки згадані мікродії виконуються паралельно в часі і можуть розглядатись як одна сукупна мікродія.
2. Цикл декодування інструкції/вибирання операнда з регістрового файлу (Instruction decode/register fetch cycle - ID)
У даному циклі проводиться декодування інструкції для виявлення команд, що працють з зовнішньою пам`ятю або одним з двох спеціалізованих пристроїв. Зокрема, це такі команди: LOAD та STORE в полі операнда яких (молодші 4-ри розряди) вказують адресу джерела або призначення операнда. Для таких команд встановлюються керуючі сигнали read,write,mx3 та sel_addr.
Для решти інструкцій в циклі ID вибір операнда виконується з регістрового файлу або безпосередньо «виймається» з поля команди, сюди також входять інструкції, які не вимагають операнда.
На цьому циклі також встановлюється сигнал pc1_we для запису у регістр PC1 значення, що містить лічильник команд (при надходженні сигналу переривання).
3. Цикл виконання (Execute cycle - EX)
Послідовність виконання елементарних операцій, що виконуються інформаційним трактом на фазі EX, залежить від типу інструкції, які можна умовно об‘єднати в три групи: арифметико-логічні операції, операції збереження результату, операції умовних та безумовних переходів.
У групу арифметико-логічних операцій входять команди: CLEAR_C, SET_C, LOAD_IMM, ADD_IMM, LOAD_DIR, ADD_DIR, XOR_DIR, TEST_DIR. При виконанні вищенаведених інструкцій в фазі EX бере участь арифметико-логічний пристрій, результат заноситься в акумулятор. В дану групу включені команди LOAD_IMM, LOAD_DIR, оскільки запис в акумулятор виконується за участю АЛП. Код операції alu_op для АЛП формує керуючий автомат:
ACC = ACC alu_op IR[3:0] або ACC = ACC alu_op RF[IR[3:0]].
Встановлюється значення mx3 для вибору джерела для АЛП.
Групу операцій збереження результату становлять команди STORE_DIR, LOAD та STORE. При виконанні даних інструкцій у фазі EX записується вміст акумулятора в один з двох пристроїв або читається інформація з них( LOAD та STORE), а також запис у регістровий файл (команда STORE_DIR).
DEV[R0[3:0]& IR[3:0]]=ACC або
ACC=DEV[R0[3:0]& IR[3:0]] – для команд LOAD та STORE;
RF[IR[3:0]]=ACC – для команди STORE_DIR, формується сигнал we=1 для запису у регістровий файл.
В принципі можливим є читання із зовнішньої пам`яті даного з певної комірки, що адресується так: ACC=MEM[R0[3:0]&IR[3:0]].
Група операцій умовних переходів складається з команд SKIP_C, SKIP_Z, JZ.
Команди безумовних переходів представлені однією єдиною командою RET. При виконанні команди SKIP_C або SKIP_Z, при встановленому в одиницю регістра переносу C або регістра ознаки нульового результата Z відповідно, виконується збільшення поточного значення лічильника команд на одиницю:
PC = PC +1 (inc_pc=Z або inc_pc=C відповідно)
Операція умовного переходу виконується записом адреси переходу в регістр PC:
PC = R0[2:0]&IR[3:0] та визначенням сигналу jump_pc=”11”.
Команда безумовного переходу виконує такі мікродії: встановлення сигналу jump_pc=”01”, встановлення можливості обробки переривання – відповідно сигнали disable_interrupt та enable_interrupt: disable_interrupt= '0' та enable_interrupt='1';
Якщо лінія маскованого апаратного переривання утримана в 1, то скидаємо сигнал запису до регістру PC1: pc1_we<='0'; вибираємо перехід по адресі R14_15 сигналом керування jump_pc<="10" мультиплексора MUX2; та забороняємо переривання на час виконання підпрограми обробки переривання:
disable_interrupt <= '1';
enable_interrupt<='0';
Окремо стоїть команда NOP, призначення якої не виконувати протягом трьох циклів ніяких змін у стані мікропроцесора.
4.3 Керуючий автомат
Проектування керуючого автомата є складним та багатогранним етапом проектування, оскільки вимагає від розробника розуміння особливостей функціонування пристрою, вміння вибрати та ефективно спроектувати абстрактний автомат. Керуючий автомат — один з найважливіших блоків мікропроцесора. Спільно з генератором тактових
імпульсів, який формує сигнал синхронізації clock, керуючий автомат забезпечує проходження подій в мікропроцесорі в правильній послідовності, тобто декодування інструкції та генерацію відповідних керуючих сигналів для реалізації елементарних операцій інформаційним трактом в циклах IF, ID, EX, встановлення в початковий стан вузлів мікропроцесора при надходженні сигналу встановлення в початковий стан reset. Множину керуючих сигналів складають сигнали sel_addr, read, write, ld_ir, inc_pc, jump_pc, alu_op, pc1_we, mx3, disable_interrupt, enable_interrupt, we. Розглянемо детально, які значення керуючих сигналів формуються пристроєм керування на кожному циклі виконання інструкції.
1. Цикл вибирання інструкцій (Instruction Fetch cycle -IF)
Завантаження з пам‘яті інструкцій, інкремент значення лічильника команд PC на одиницю:
read <= '1';
ld_ir <= '1';
inc_pc <= '1';
перехід до циклу ID
2. Цикл декодування інструкції/вибирання операнда з регістрового файлу (Instruction decode/register fetch cycle - ID)
Для інструкцій LOAD та STORE, що виконують читання та запис за відповідною адресою:
if ir_r(7 downto 4)= LOAD then
sel_addr <= '1';
read <= '1';
mx3<="10";
end if;
if ir