Автор работы: Пользователь скрыл имя, 28 Марта 2012 в 16:32, курсовая работа
Примем, что будет использована архитектура аккумуляторного типа, то есть один из операндов в двуместных операциях будет находиться в аккумуляторе W. Второй из операндов может находиться в ОЗУ (в операциях с прямой адресацией) или в банке регистров общего назначения (в операциях с регистровой адресацией). Результаты операций сохраняются в аккумуляторе.
1 Система команд.....................................................................................................5
2 Структура ЦВУ.....................................................................................................7
3 Разработка основных функциональных блоков и узлов...................................8
4 Тестирование ЦВУ..............................................................................................16
Список использованных источников...................
AHDL описание модуля АЛУ:
SUBDESIGN alu
(
W[7..0], DATA[7..0], COP[1..0], C: INPUT;
RES[7..0], ZR,CR: OUTPUT;
)
BEGIN
CASE COP[1..0] IS
WHEN 0 => RES[]=DATA[]; -- MOV
WHEN 1 => RES[]=W[] $ DATA[]; -- XOR
WHEN
2 => (RES[7..0],CR)=(b"0",W[7..1],
WHEN 3 => RES[] = W[] + 1; -- INC
END CASE;
ZR = (RES[]==0);
END;
3.3 Регистры
В состав ЦВУ входят 8-разрядные регистры общего назначения Rg и 4-разрядный регистр команд IR. Работу регистров можно описать в форме таблицы режимов (таблица 3). Параметр Width – число разрядов.
Таблица 3 – Режимы работы регистра
Режим работы |
С |
LD |
Q+[ 7..0] |
Загрузка |
|
1 |
D[7..0] |
Хранение |
x |
0 |
Q[7..0] |
Соответствующее AHDL-описание регистра Rg:
SUBDESIGN rg
(d[7..0],ld,c : INPUT;
q[7..0] : OUTPUT;)
VARIABLE
q[7..0] : DFFE;
BEGIN
q[].(clk, ena) = (c, ld);
q[] = d[];
END;
3.4 Программный счетчик
Для ЦВУ необходим программный счетчик PCtr с возможностью загрузки адреса команды. Режимы работы программного счетчика с загрузкой приведены в таблице 4.
Таблица 4 – Режимы работы счетчика
Режим работы |
С |
LD |
CE |
Q+[ 7..0] |
Загрузка |
|
1 |
x |
D[7..0] |
Инкремент |
|
0 |
1 |
Q[7..1] + 1 |
Хранение |
х |
0 |
0 |
Q[7..0] |
Соответствующее AHDL-описание модуля PCtr:
SUBDESIGN PCTR
(
d[7..0],ld,en,c,R :INPUT;
cntr[7..0] :OUTPUT;
)
VARIABLE
cntr[7..0] :DFFE;
Begin
cntr[].(clk,clrn,ena) = (c,!R,en#ld);
if ld then cntr[].d = d[7..0];
else cntr[].d = cntr[].q + 1;
end if;
end;
3.5 Мультиплексор
Мультиплексор «2 в 1» передает данные с одного из регистров банка на выход. Введем внутренние обозначения сигналов:
- входной код адреса - sel[1..0];
- водные сигналы - A[7..0],B[7..0];
- выходной сигнал - Y[7..0].
AHDL-описание модуля mux2_1:
SUBDESIGN mux2_1
(
A[7..0], B[7..0]: INPUT;
sel[0]: INPUT;
Y[7..0]: OUTPUT;
)
BEGIN
CASE sel[] IS
WHEN 0 => Y[] = A[];
WHEN 1 => Y[] = B[];
END CASE;
END;
3.6 Модули памяти
Модули ОЗУ данных и ПЗУ программ реализуем на основе библиотечной параметризируемой мегафункции altsyncram. Настройка мегафункции выполнена средствами инструмента MegaWizard Plug-In Manager инструментальной системы Qartus II. Полученное описание ПЗУ емкостью 128х12 на языке AHDL:
INCLUDE "altsyncram.inc";
SUBDESIGN ROM
(
address[7..0] : INPUT;
clock : INPUT;
q[11..0] : OUTPUT;
)
VARIABLE
altsyncram_component : altsyncram WITH (
ADDRESS_ACLR_A = "NONE",
INIT_FILE = "ROM.mif",
INTENDED_DEVICE_FAMILY = "Cyclone",
LPM_HINT = "ENABLE_RUNTIME_MOD=NO",
LPM_TYPE = "altsyncram",
NUMWORDS_A = 128,
OPERATION_MODE = "ROM",
OUTDATA_ACLR_A = "NONE",
OUTDATA_REG_A = "UNREGISTERED",
WIDTHAD_A = 8,
WIDTH_A = 12,
WIDTH_BYTEENA_A = 1
);
BEGIN
q[11..0]
= altsyncram_component.q_a[11..
altsyncram_component.clock0 = clock;
altsyncram_component.address_
END;
Полученное описание синхронного ОЗУ емкостью 128х8 на языке AHDL:
INCLUDE "altsyncram.inc";
SUBDESIGN RAM
(
address[7..0] : INPUT;
clock : INPUT;
data[7..0] : INPUT;
wren : INPUT;
q[7..0] : OUTPUT;
)
VARIABLE
altsyncram_component : altsyncram WITH (
ADDRESS_ACLR_A = "NONE",
INDATA_ACLR_A = "NONE",
INIT_FILE = "RAM.mif",
INTENDED_DEVICE_FAMILY = "Cyclone",
LPM_HINT = "ENABLE_RUNTIME_MOD=NO",
LPM_TYPE = "altsyncram",
NUMWORDS_A = 128,
OPERATION_MODE = "SINGLE_PORT",
OUTDATA_ACLR_A = "NONE",
OUTDATA_REG_A = "UNREGISTERED",
POWER_UP_UNINITIALIZED = "FALSE",
WIDTHAD_A = 8,
WIDTH_A = 8,
WIDTH_BYTEENA_A = 1,
WRCONTROL_ACLR_A = "NONE"
);
BEGIN
q[7..0] = altsyncram_component.q_a[7..0]
altsyncram_component.wren_a = wren;
altsyncram_component.clock0 = clock;
altsyncram_component.address_
altsyncram_component.data_a[7.
END;
Значения параметра INIT_FILE "Rom.mif" и "Ram.mif" указывают на файлы инициализации памяти (контент модулей памяти).
4 Тестирование ЦВУ
4.1 Компиляция и верификация проекта в среде Quartus II
В приложении Б приведено AHDL-описание ЦВУ верхнего иерархического уровня, сформированное в соответствие с функциональной схемой.
ЦВУ должно выполнять программу, хранящуюся в ПЗУ. Загрузочный код программы необходимо сформировать в виде файла ROM.mif. Вариант тестовой программы для ЦВУ включает циклическое выполнение семи команд:
DEPTH = 128% Memory depth and width are required %
WIDTH = 12; % Enter a decimal number %
ADDRESS_RADIX = HEX; % Address and value radixes are optional %
DATA_RADIX = HEX;
CONTENT
BEGIN
00 : 000; % mov w,M(0) %
01 : 600; % inc %
02 : A01; % mov M(1),w %
03 : 400; % shr %
04 : 301; % xor M(1) %
05 : A02; % mov M(2),w %
06 : 800; % in %
07 : C00; % out %
08 : E00; % jmp 0 %
[09..7F]: 000;
END ;
Чтобы на стадии компиляции выполнить загрузку данных в ячейки ОЗУ, необходимо сформировать файл загрузки RAM.mif:
DEPTH = 128
WIDTH = 8;
ADDRESS_RADIX=HEX;
DATA_RADIX=HEX;
CONTENT
BEGIN
00 : FB; % %
[02..7F]: 00; % %
END;
Для данного варианта тестирования исполнение команд над заданными операндами должно привести к получению следующих результатов:
- 00 W ← FB;
- 01 W ← FC;
- 02 W ← FC;
- 03 W ← 7E;
- 04 W ← 82;
- 05 RAM(2) ← 82; ZF;
- 06 W ← EC;
- 07 OUT ← EC;
- 08 переход на 00.
Для проверки правильности работы ЦВУ при выполнении тестовой программы выполняем анализ его работы методом имитационного моделирования в среде симулятора системы Quartus II с помощью сигнального редактора (Waveform Editor).
Анализ результатов
Полученная оценка предельной частоты
синхронизации для ЦВУ
Рисунок 4.1
Рисунок 4.2
Список использованных источников
Приложение А
(обязательное)
Схема электрическая функциональная
Приложение Б
(обязательное)
AHDL-описание ЦВУ
INCLUDE "rg.inc";
INCLUDE "rg2.inc";
INCLUDE "alu.inc";
INCLUDE "pctr.inc";
INCLUDE "ROM.inc";
INCLUDE "RAM.inc";
INCLUDE "mux2_1.inc";
INCLUDE "co.inc";
SUBDESIGN CPU
(
Clk :input;
res_b :input;
IPORT[7..0] :input;
OPORT[7..0] :output;
W[7..0] :output;
DROM[11..0] :output;
DRAM[7..0] :output;
PC[7..0] :output;
COP[3..0] :output
Y[5..1] :output;
VARIABLE
W[7..0] :node;
DROM[11..0] :node;
DRAM[7..0] :node;
PC[7..0] :node;
MALU[7..0], DALU[7..0], RES[7..0]:node;
cout,z :node;
COP[3..0] :DFFE;
Flags[1..0] :node;
Y[5..1] :node;
ARg[7..0] :node;
BEGIN
%-----------------------------
MALU[] = mux2_1(.A[]=DRAM[7..0],.B[]=
DALU[] = mux2_1(.A[]=DROM[7..0],.B[]=
(RES[],z,cout) = ALU(.W[]=W[],.DATA[]=MALU[],.
ARg[] = Rg(.D[]=RES[7..0],.LD=y3&COP[
W[] = Rg(.D[]=RES[7..0],.LD=y2,.C=
Flags[] = Rg2(.D[]=(z,cout),.LD=y2&(COP[
%-----------------------------
OPORT[] = Rg(.D[]=W[7..0],.LD=y5,.C=clk) with (WIDTH=8);
%-----------------------------
PC[] = Pctr(.C=clk,.R=!res_b,.EN=y1,.
%-----------------------------
DROM[11..0]=ROM(.address[7..0]
COP[3..0].(clk,ena) = (clk,y1);
COP[3..0].d = DROM[11..8];
%-----------------------------
DRAM[]= RAM(.data[7..0]=W[],
.wren=y3&!COP[0],
.address[7..0]=DROM[7..0],
.clock=clk);
%-----------------------------
(y[5..1]) = co(.C=!CLK,.RST=res_b,.en=vcc %bt_clk%,.coper[]=cop[3..1]);
END;
Приложение В
(обязательное)
Схема электрическая принципиальная
ГОУ ОГУ 230101.65.6511.5 Э2 | |||||||||||
ЦВУ Схема электрическая принципиальная |
Литера |
Масса |
Масштаб | ||||||||
Изм |
Лист |
№ докум. |
Подп. |
Дата |
|||||||
Разраб. |
Резанов И.И. |
||||||||||
Пров. |
Хлуденев А.В. |
||||||||||
Т.Контр. |
Лист 1 |
Листов 1 | |||||||||
ФИТ 08ВМК1 | |||||||||||
Н.Контр. |
|||||||||||
Утв. |
ГОУ ОГУ 230101.65.6011.5 ПЗ | ||||||||||
Изм |
Лист |
№ докум. |
Подп. |
Дата | ||||||
Разраб. |
Резанов И.И. |
Цифровое вычислительное устройство Пояснительная записка |
Лит. |
Лист |
Листов | |||||
Пров. |
Хлуденёв А.В. |
|||||||||
ФИТ 08ВМК1 | ||||||||||
Н.контр. |
||||||||||
Утв. |
Лист |
ГОУ ОГУ 230101.65.6511.5 Э2 | |||||||||||
ЦВУ Схема электрическая функциональная |
Литера |
Масса |
Масштаб | ||||||||
Изм |
Лист |
№ докум. |
Подп. |
Дата |
|||||||
Разраб. |
Резанов И.И. |
||||||||||
Пров. |
Хлуденев А.В. |
||||||||||
Т.Контр. |
Лист 1 |
Листов 1 | |||||||||
ФИТ 08ВМК1 | |||||||||||
Н.Контр. |
|||||||||||
Утв. |
Лист |