Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АПКС Методичні вказівки до виконання лаб робіт...doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
506.37 Кб
Скачать

Лабораторна робота № 4. Проектування керуючого пристрою. Мета роботи:

Навчитись створювати, модифікувати, компілювати та моделювати роботу керуючого пристрою мікропроцесора засобами пакету Aldec Active-HDL.

Загальні відомості

Операційний пристрій мікропроцесора Gnome, зображений на рис.1.

Рис. 2. Структурна схема операційного пристрою мікропроцесора Gnome.

Проектований мікропроцесор передбачає виконання інструкції за два етапи.

  • перший етап – IF (Instruction Fetch) - вибірка інструкції з пам’яті програм до регістру поточної інструкції IR (Instruction Register).

  • другий етап – EX (EXecution) – власне виконання специфічних для інструкції дій.

Після цього мікропроцесор переходить до виконання наступної інструкції (рис.2).

Рис. 3. Послідовність виконання інструкцій в мікропроцесорі Gnome.

Оскільки проектування мікропроцесора в даній роботі виконується на функціональному рівні, то при синтезі VHDL-моделі увага часовим витратам виконання кожного циклу не приділяється. Вважатимемо, що час виконання кожного з циклів є однаковий і дорівнює тривалості тактового інтервалу clock.

Цикл if (вибірка інструкції)

Виконання цього циклу передбачає читання інструкції із зовнішньої пам’яті програм за адресою, що зберігається в регістрі - вказівнику команд. Зчитане значення зберігається у регістрі інструкцій. Після цього обчислюється значення адреси наступної інструкції. Обчислене значення може бути змінене на фазі EX під час виконання інструкцій переходу. Таблиця 1 ілюструє мікрокоманди керуючого пристрою, що забезпечують виконання наведених вище дій. Мікродії виконуються паралельно в часі і можуть розглядатись як одна сукупна мікродія. Зовнішня відносно ядра процесора пам’ять повинна виконувати читання та запис за один тактовий інтервал.

Таблиця 1. Виконання циклу IF.

Інструкція

Дії

Мікрооперації

IR=IM[PC]

MeM_read <= '1'

Всі інструкції

ld_ir <= '1'

NPC=PC+1

inc_pc <= '1'

Цикл ex (обчислення результату)

Цей цикл передбачає виконання дій, специфічних для кожної інструкції. Тут можемо виділити шість груп інструкцій.

  1. Інструкції АЛП (CLEAR_C, SET_C, LDA_IMM, ADDA_IMM, LDA_RG, ADDA_RG, XORA_RG, TESTA_RG) виконують певну дію над вхідним операндом та вмістом акумулятора АЛП. Виконання таких інструкцій ініціюється передачею відповідного коду операції (alu_op) до АЛП. Для інструкцій, операндом яких є значення з регістрового файлу, генерується також сигнал Rg_op.

Таблиця 2. Виконання циклу EX для АЛП - інструкцій.

Інструкція

Дії

Мікрооперації

CLEAR_C

C=’0’

alu_op <= CLR_C_OP;

SET_C

C=’1’

alu_op <= SET_C_OP;

LDA_IMM

ACC=[IR3...IR0]

alu_op <= LOAD_OP;

ADDA_IMM

ACC=ACC+[IR3...IR0]

alu_op <= ADD_OP;

LDA_RG

ACC= R[IR3...IR0]

alu_op <= LOAD_OP;

Rg_op <= '1';

ADDA_RG

ACC=B

alu_op <= ADD_OP;

Rg_op <= '1';

XORA_RG

ACC=ACC XOR B

alu_op <= XOR_OP;

Rg_op <= '1';

TESTA_RG

Z=ACC AND B

alu_op <= AND_OP;

Rg_op <= '1';

  1. Інструкції звертання до зовнішньої пам’яті (LOAD, STORE) реалізують обмін даними між регістровим файлом та пам’яттю даних.

Таблиця 3. Виконання циклу EX для інструкцій звертання до пам’яті.

Інструкція

Дії

Мікрооперації

LOAD

R[IR3...IR0]=MEM[IX]

alu_op <= NOP_OP;

sel_dm <= '1';

MEM_read <= '1';

ld_op<= '1';

RgWrite <= '1';

STORE

MEM[IX]=R[IR3...IR0]

alu_op <= NOP_OP;

Rg_op <= '1';

sel_dm <= '1';

data_out <= '1';

MEM_write <= '1';

  1. Інструкції завантаження індексного регістру значенням із регістрового файлу (SET_IXH, SET_IXL) виконуються активацією відповідних сигналів запису.

Таблиця 4. Виконання циклу EX для інструкцій завантаження РСП IX.

Інструкція

Дії

Мікрооперації

SET_IXH

IX[7...4]= R[IR3...IR0]

alu_op <= NOP_OP;

Rg_op <= '1';

write_ixh <='1';

SET_IXL

IX[3...0]= R[IR3...IR0]

alu_op <= NOP_OP;

Rg_op <= '1';

write_ixl <='1';

  1. Інструкція збереження значення акумулятора в регістровому файлі (STA_RG) потребує сигналу запису до регістрового файлу (Rg_write).

Таблиця 5 Виконання циклу EX для інструкції збереження акумулятора.

Інструкція

Дії

Мікрооперації

STA_RG

R[IR3...IR0]= ACC

alu_op <= NOP_OP;

RgWrite <= '1';

  1. Інструкції умовного переходу (SKIP_C, SKIP_Z) - виконують інкремент вказівника інструкцій за умови активності відповідної ознаки АЛП.

Таблиця 6. Виконання циклу EX для інструкцій завантаження РСП IX.

Інструкція

Дії

Мікрооперації

SKIP_C

If (C) Then PC= PC+1

inc_pc <= C;

SKIP_Z

If (Z) Then PC= PC+1

inc_pc <= Z;

  1. Інструкція безумовного переходу (JMP_IX) присвоює вказівнику інструкцій значення індексного регістру IX, активуючи сигнал jump_pc.

Таблиця 7. Виконання циклу EX для інструкції збереження акумулятора.

Інструкція

Дії

Мікрооперації

JMP_IX

PC= IX

jump_pc <= '1';

Визначивши множину сигналів на входах та виходах пристрою, можемо описати його інтерфейс (рис. 3)

Рис. 4. Інтерфейс керуючого пристрою.