Вибір підходящої структури процесорного елемента та його опис

 

Структура створеного процесорного елемента зображена в додатку 1, розшифровка позначень, використаних у схемі, наведена в додатку 2.

Створюючи власну структуру процесорного елемента я вирішив, що його розрядність зручно зробити 8 біт, розрядність адрес теж я вирішив зробити 8 біт. Відповідно розрядність абсолютно всіх регістрів, а саме регістрів загального призначення, допоміжних регістрів АЛП, регістру даних пам’яті, регістру адрес пам’яті (MAR), лічильника команд (PC), регістру команд (IR) та регістру станів (PSW) — теж 8 біт.

Команди – однооперандні. Розмір коду операції – фіксований, і складає 8 біт. Структура команди має такий вигляд:

 

15 8 7 2 1 0
Операнд  Код операції Rm

Операнд вибирається після дешифрації команди в тому випадку, якщо він потрібен. Для спрощення вважається, що операнд завжди присутній, просто в деяких командах він не використовується. В нашому випадку операндом є константа, з якою виконується порівняння. Rm (біти 0 та 1) — це номер регістра, значення якого порівнюється зі значенням константи. Нехай для нашої команди біти 2-7 мають таке значення: 000001b. Так як регістрів у нас 4, то можливі наступні варіанти коду команди:

 

00000100 SBR R0, B

00000101 SBR R1, B

00000110 SBR R2, B

00000111 SBR R3, B

 

Кількість регістрів загального призначення (R0..R3) вибрана такою малою через нестачу портів введення/виведення в пристрої управління.

До структури процесора також ввійшов пристрій приросту. Його задача — збільшення значення 8-розрядного регістру PC на одиницю за один такт, при цьому не займаючи шину даних.

Безпосередньо до шини даних під’єднані всі структурні елементи процесора, крім пристрою управління та пристрою приросту. Останній може отримувати дані лише через регістр IR (через старший або молодший байт). Виведення даних з пристрою управління на шину можливе лише через IRoff. Під’єднати шину даних безпосередньо пристрою управління не вдалося через нестачу портів введення/виведення в пристрої управління.

Для економії часу на пересилку адреси наступної команди з регістру PC в регістр MAR я вирішив з’єднати їх між собою безпосередньо. Завдяки цьому при вибірці кожної команди економиться один такт процесора. Крім того, пересилку PC à MAR для отримання наступної команди можна здійснювати під час виконання поточної команди, адже така пересилка не використовує шину даних. Тоді можна економити ще один такт при вибірці кожної команди.

На структурній схемі знехтувано лініями керування та лініями синхронізації, по яким пристрій управління посилає сигнали до всіх елементів процесора.

На рис 2 (додаток 1) показана розроблена архітектура процесора. В ній арифметико-логічний пристрій (АЛП) і всі регістри з'єднані однією загальною шиною. Це внутрішня шина процесора, яку не слід плутати з зовнішньою шиною, що з'єднує процесор з основною пам'яттю і пристроями введення\виведення.

Лінії даних і адреси зовнішньої шини пам'яті з'єднані з внутрішньою шиною процесора через регістр даних пам'яті, MDR, і регістр адреси пам'яті, MAR. Регістр MDR має два входи і два виходи. Дані можуть завантажуватися в нього або з зовнішньої шини пам'яті, або з внутрішньої шини процесора. Дані, що зберігаються в MDR також можуть бути поміщені на будь-яку з цих шин. Вхід регістра MAR з'єднаний із внутрішньою шиною і регістром PC, а його вихід — із зовнішньою. Керуючі лінії шини пам'яті з'єднані з дешифратором команди і керуючим логічним блоком.

Всі операції всередині процесора виконуються протягом періодів часу, що обумовлені тактовим сигналом процесора, або сигналом синхронізації, що надходить від пристрою управління, в якості якого в нашому випадку вступає мікроконтроллер. Сигнали, що керують конкретними операціями пересилання, активізуються на початку такту.

 

Реалізація пристрою управління

 

Пристрій управління реалізований у вигляді мікроконтроллера. Мікроконтроллер можна взяти будь-який, єдина вимога до нього — наявність п’яти потрів введення/виведення. Нехай було взято мікроконтроллер сімейства MCS-51.

4 порти введення/виведення під’єднані до управляючих ліній всіх елементів процесора. Інший 5-тий порт використовуються для введення чи виведення 8-бітних даних. Цей порт (P.2) може обмінюватись даними з молод­шим та старшим байтом регістру IR. Призначення портів зображено на рис 1.

 

         
R0in P1.0   P0.0 IRcopin
R0out P1.1   P0.1 IRcopout_mc
R1in P1.2   P0.2 Yin
R1out P1.3   P0.3 Yout
R2in P1.4   P0.4 Zin
R2out P1.5   P0.5 Zout
R3in P1.6   P0.6 CLK
R3out P1.7   P0.7 PCinc
         
PCin P3.0   P2.0 IR 0
PCout P3.1   P2.1 IR 1
PC_to_MAR P3.2   P2.2 IR 2
MFC P3.3   P2.3 IR 3
MARin P3.4   P2.4 IR 4
MRead P3.5   P2.5 IR 5
MDRin P3.6   P2.6 IR 6
MDRout P3.7   P2.7 IR 7
         
      P4.0 ALUe0
      P4.1 ALUe1
      P4.2 ALUe2
      P4.3 ALUe3
      P4.4 ALUm
      P4.5 IRoffin
      P4.6 IRoffout
      P4.7
         

Рис 1. Призначення портів пристрою управління

 

Розшифровка позначень

Біти портів для отримання сигналів (введення)

MFC — лінія для отримання сигналу готовності пам’яті.

Біти портів для керування (виведення):

Xin — лінія дозволу на вхід даних в регістр X з шини.

Xout — лінія дозволу на видачу даних з регістру X на шину.

Xin_mc — лінія дозволу на вхід даних в регістр X з порта мікро­кон­т­роллера.

Xout_mc — лінія дозволу на видачу даних з регістру X на порт мікро­конт­роллера.

CLK — лінія для сигналів синхронізації

PCinc — лінія для активації пристрою приросту

MRead — лінія для сигналу читання з пам’яті

PC_to_MAR — лінія дозволу пересилки даних з регістра PC в регістр MAR.

ALUe0.. ALUe0 — лінії для видачі на АЛП коду операції

ALUm — лінія вибору режиму роботи АПЛ (арифметичний / логічний)

Порт для обміну даними (введення/виведення)

IR — порт може обмінюватись даними з молодшим байтом регістру IR та отримувати дані зі старшого байту регістру IR.



Розробка мікропрограми


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: