Автор работы: Пользователь скрыл имя, 28 Марта 2012 в 16:32, курсовая работа
Примем, что будет использована архитектура аккумуляторного типа, то есть один из операндов в двуместных операциях будет находиться в аккумуляторе W. Второй из операндов может находиться в ОЗУ (в операциях с прямой адресацией) или в банке регистров общего назначения (в операциях с регистровой адресацией). Результаты операций сохраняются в аккумуляторе.
1 Система команд.....................................................................................................5
2 Структура ЦВУ.....................................................................................................7
3 Разработка основных функциональных блоков и узлов...................................8
4 Тестирование ЦВУ..............................................................................................16
Список использованных источников...................
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
КУРСОВОЙ ПРОЕКТ
по дисциплине «Схемотехника ЭВМ»
Пояснительная записка
ГОУ ОГУ 230101.65.6011.5 ПЗ
Руководитель проекта:
________________А.В. Хлуденев
"___"____________2011 г.
Исполнитель:
студент группы 08ВМК
________________И.И. Резанов
"___"____________2011 г.
Оренбург 2011
Министерство образования и науки Российской Федерации
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ»
Факультет информационных технологий
Кафедра вычислительной техники
Задание на курсовой проект
Цифровое вычислительное устройство
Исходные данные: Архитектура – гарвардская;
Операции АЛУ– XOR, INC, SHR;
Операции управления – JMP, JNZ;
Разрядность данных – 8;
Число ячеек ПЗУ программ – 128;
Емкость ОЗУ данных – 128x8;
Виды адресации – прямая, косвенная;
Элементная база – ЕР1С3.
Разработать: 1) Схему электрическую функциональную;
Дата выдачи задания " 22 " февраля 2011 г.
Срок защиты проекта " 31 " мая 2011 г.
Руководитель
ктн, доцент А.В. Хлуденев
Исполнитель
студент группы 08ВМК -1 И.И. Резанов
Аннотация
В курсовом проекте разработано процессорное устройство гарвардской архитектуры, реализующее заданный набор операций.
Курсовой проект выполнен на интегральной схеме программируемой логики семейства Cyclone. Для реализации цифрового вычислительного устройства (ЦВУ) использован язык описания аппаратуры Altera HDL.
Пояснительная
записка выполнена на 23 листах, содержит
3 рисунка, 4 таблицы и 2 приложения.
Содержание
1 Система команд................
2 Структура ЦВУ.................
3 Разработка основных
функциональных блоков и узлов.
4 Тестирование ЦВУ..............
Список использованных
источников....................
Приложение А. Функциональная
схема.........................
Приложение Б. AHDL-описание
ЦВУ...........................
1 Система команд
Выполним развернутый анализ задания и выполним синтез системы команд.
Под запись чисел отводятся 8 разрядов. Оперативная память (ОЗУ) имеет 128 8-разрядных ячеек. Каждое число занимает одну ячейку ОЗУ. Все команды в ЦВУ будут одноадресные, за исключением безадресных команд INC, SHL, IN и OUT.
Примем, что будет использована
архитектура аккумуляторного
Дополним заданный набор операций следующими:
mov W, RAM(Adr) – загрузка в аккумулятор операнда, находящегося в ОЗУ по адресу Adr[7..0] (прямая адресация);
– загрузка в аккумулятор операнда, находящегося в ОЗУ по адресу Adr (косвенная адресация);
mov RAM(Adr), W – запись содержимого аккумулятора в ОЗУ по адресу Adr (прямая адресация);
mov RAM(KC), W – запись содержимого аккумулятора в ОЗУ по адресу Adr (косвенная адресация).
Выполним синтез команд. Команда будет иметь два поля:
- поле кода операции - будет занимать старшие разряды кода команды;
- поле параметра команды - будет занимать младшие разряды кода команды.
Поле параметра:
- в командах с прямой
- в командах с косвенной адресацией – 8-разрядный адрес ячейки ОЗУ;
- в командах перехода – 8-
С учетом дополнительных операций процессорное устройство должно выполнять 12 команд. Для их кодирования потребуется 4-разрядный код операции Cop[3..0]. Старший разряд будем использовать, чтобы различать команды с загрузкой результата в аккумулятор от прочих команд. Разряды Cop[2..1] будем использовать, чтобы различать команды каждой группы. Младший разряд Cop[0] будем использовать, чтобы различать операции с прямой и косвенной адресацией.
Результаты синтеза команд приведены в таблице 1. В таблице 1 приняты следующие обозначения:
- a – бит, отводящийся под адрес;
- x – бит, значение которого не важно для данной команды.
Все команды 12-разрядные и занимает одну ячейку ПЗУ программ. ПЗУ состоит из 256 ячеек по 12 разрядов каждая.
Таблица 1 – Система команд
Операция |
Мнемоника |
Адресация |
Код операции |
W ← RAM(Adr) |
MOV W,M |
Прямая |
0000 aaaa aaaa |
W ← RAM (Adr) |
MOV W,R |
Косвенная |
0001 xxxx xxaa |
W ← W XOR RAM(Adr) |
XOR M |
Прямая |
0010 aaaa aaaa |
W ← W XOR GPR(Adr) |
XOR R |
Косвенная |
0011 xxxx xxaa |
W ← INC W |
INC |
- |
0100 xxxx xxxx |
W ← SHR W |
SHR |
- |
0101 xxxx xxxx |
RAM(Adr) ← W |
MOV M,W |
Прямая |
1010 aaaa aaaa |
RAM (Adr) ← W |
MOV R,W |
Косвенная |
1011 xxxx xxaa |
W ← P_IN |
IN |
- |
1000 xxxx xxxx |
OUT_P ← W |
OUT |
- |
1001 aaaa aaaa |
PC ← Adr |
JMP |
- |
1100 aaaa aaaa |
PC ← Adr, (при условии) |
JNZ |
- |
1101 aaaa aaaa |
2 Структура ЦВУ
Примем решения, определяющие структуру ЦВУ.
Для выборки команд из ПЗУ программ емкостью 128 х 12 необходимы
- программный счетчик PCtr (8 разрядов);
- регистр команд IR (4 разряда).
В соответствии с вариантом задания для хранения данных необходимо использовать ОЗУ емкостью 128 х 8. Будем использовать ОЗУ с раздельными входами и выходами данных.
Операции над словами
– ZF – флаг нулевого результата;
– CF – флаг переноса.
В ЦВУ будет использоваться гарвардская
архитектура с раздельными
Схема ЦВУ, построенная в соответствии с принятыми решениями, приведена в приложении А. Адрес PC[7..0] выбираемой из ПЗУ команды определяется содержимым программного счетчика PCtr. Четыре старших разряда считанного слова DROM[11..8] загружаются в регистр команд IR и представляют код текущей операции Cop[3..0]. Разряды Cop[3..1] кода операции анализируется управляющим автоматом Co. Управляющий автомат формирует последовательность наборов микроприказов y1..y5, необходимых для выполнения текущей операции и подготовки к выборке следующей операции.
Восемь младших разрядов слова DROM[7..0] в командах с прямой адресацией определяют адрес ячейки памяти данных. В командах с регистровой адресацией адрес регистра определяется разрядами DROM[1..0].
Восемь младших разрядов слова DROM[7..0] в команде перехода JMP определяют адрес точки перехода.
Для устранения состязаний сигналов в ЦВУ использована двухфазная синхронизация:
- синхроимпульсы Clk от внешнего генератора поступают на синхровходы всех функциональных узлов, кроме управляющего автомата Co;
- синхронизация управляющего
Для инициализации ЦВУ используется сигнал Rst, который сбрасывает программный счетчик и переводит в состояние инициализации управляющий автомат.
3 Разработка функциональных блоков и узлов
3.1 Микропрограммный автомат
Функция микропрограммного автомата состоит в анализе разрядов кода операции Cop[3..1] и формировании последовательности наборов микроприказов y1..y5, необходимых для выполнения текущей операции и подготовки к выборке следующей операции. Действие микроприказов отображено на функциональной схеме ЦВУ.
При включении и рестарте ЦВУ микропрограммный автомат будет находиться в состоянии idle. Для обеспечения возможности пошагового (покомандного) исполнения программы автомат сможет перейти в последующие состояния только при наличии сигнала разрешения en. При аппаратной отладке ЦВУ такой сигнал необходимо формировать при нажатии кнопки «Шаг». При автоматическом выполнении программы на входе en постоянно должен действовать активный уровень.
Исполнение команды состоит из двух фаз:
- выборка команды;
- выполнение операции.
Выборка команды выполняется за один такт, при этом:
- текущее содержимое PCtr уже предварительно загружено в регистр адреса ПЗУ;
- код операции, считанный из ПЗУ, загружается в регистр команд IR, а параметр команд с прямой адресацией по шине адреса загружается в регистр адреса ОЗУ;
- выполняется инкремент PCtr для выборки следующей команды.
Для работы ЦВУ необходимо формировать следующие микрокоманды:
- y1 – выборка команды и инкремент адреса;
- y2 – загрузка аккумулятора;
- y3 – сохранение результата в памяти;
- y4 – загрузка адреса перехода в PCtr;
- y5 – вывод.
Поставим в соответствие каждой микрокоманде состояние автомата Мура:
- fetch – выборка команды и инкремент адреса;
- load – загрузка аккумулятора;
- out – вывод в порт;
- store – сохранение результата в памяти;
- jmp – загрузка адреса перехода в PCtr.
Микропрограмма автомата с отметкой внутренних состояний приведена на рисунке 1. Все команды выполняются за два такта.
Рисунок 1 – Микропрограмма автомата
Введем переменную текущего состояния автомата code. Тогда с учетом принятых решений управляющий автомат можно описать на AHDL:
SUBDESIGN co
(
c,rst,en,coper[3..1]: input;
Y[5..1] : output;
)
VARIABLE
code : machine with states(idle,fetch,load,store,
BEGIN
code.clk = c;
code.reset = !rst;
code.ena = vcc;
CASE code is
WHEN idle =>
if en then code = fetch;
else code = idle;
end if;
WHEN fetch =>
if !coper[3] then code = load;
else
CASE coper[2..1] IS
WHEN 0 => code = load;
WHEN 1 => code = store;
WHEN 2 => code = out;
WHEN 3 => code = jmp;
END CASE;
end if;
y[1]=vcc;
WHEN load => -- W (LOAD)
code = idle; y[2]=vcc;
WHEN out => -- OUT
code = idle; y[5]=vcc;
WHEN store => -- STORE
code = idle; y[3]=vcc;
WHEN jmp => -- JMP
code = idle; y[4]=vcc;
END CASE;
END;
3.2 АЛУ
АЛУ – блок, выполняющий арифметические операции и логические преобразования над операндами.
Введем обозначения:
- W[], DATA[] – входы операндов;
- C – вход переноса;
- СOP[1..0] – код операции АЛУ;
- CR – выход переноса;
- ZR – выход признака нулевого результата;
- R[] – выход результата.
Выполняемую операцию определяет код операции АЛУ COP[1..0]
(таблица 2).
Таблица 2
СОР[1..0] |
Мнемоника |
Операция |
00 |
MOV |
R[] = DATA[]; Z = (R[]= =0); |
01 |
XOR |
R[] = W[] $ DATA[]; Z = (R[]= =0); |
10 |
SHR |
(RES[7..0],CR)=(b"0",W[7..1], |
11 |
INC |
R[] = W[] + b”1”; Z = (R[]= =0); |