Цифровое вычислительное устройство

Автор работы: Пользователь скрыл имя, 28 Марта 2012 в 16:32, курсовая работа

Описание

Примем, что будет использована архитектура аккумуляторного типа, то есть один из операндов в двуместных операциях будет находиться в аккумуляторе W. Второй из операндов может находиться в ОЗУ (в операциях с прямой адресацией) или в банке регистров общего назначения (в операциях с регистровой адресацией). Результаты операций сохраняются в аккумуляторе.

Содержание

1 Система команд.....................................................................................................5
2 Структура ЦВУ.....................................................................................................7
3 Разработка основных функциональных блоков и узлов...................................8
4 Тестирование ЦВУ..............................................................................................16
Список использованных источников...................

Работа состоит из  1 файл

КП_Схемотехника_Гарвард.docx

— 392.60 Кб (Скачать документ)

 

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],W[0]);  -- SHR

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..0];

altsyncram_component.clock0 = clock;

altsyncram_component.address_a[7..0] = address[7..0];

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_a[7..0] = address[7..0];

altsyncram_component.data_a[7..0] = data[7..0];

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).

Анализ результатов моделирования  позволяет оценить правильность работы проекта. На рисунках 2 и 3 приведены  полученные временные диаграммы  основных сигналов. Анализ этих результатов  позволяет сделать вывод, что  данную тестовую программу ЦВУ выполняет  правильно.

Полученная оценка предельной частоты  синхронизации для ЦВУ составляет 135,39 МГц. Для построения ЦВУ на кристалле ПЛИС компилятор системы Quartus II использовал 55 программируемых логических элементов (2 % от имеющихся на кристалле) и 2560 бит модулей памяти (4 % от имеющихся на кристалле).

 

Рисунок 4.1

 

Рисунок 4.2

 

 

Список использованных источников

  1. Хлуденев А.В. Цифровое вычислительное устройство: Методические указания. – Оренбург: ГОУ ОГУ, 2005. - 67 с.
  2. Грушвицкий Р.И., Мурсаев А.Х., Угрюмов Е.П. Проектирование систем на микросхемах программируемой логики. – С-П.: БХВ-Петербург, 2002. - 606 с.

 

Приложение  А

(обязательное)

Схема электрическая функциональная

 

 

 

 

 

 

 

Приложение Б

(обязательное)

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

%------------------------------------- OU ---------------------------------------%

MALU[] = mux2_1(.A[]=DRAM[7..0],.B[]=IPORT[],.sel=COP[3]) with (WIDTH=8);

 

DALU[] = mux2_1(.A[]=DROM[7..0],.B[]=ARg[],.sel=COP[0]) with (WIDTH=8);

 

(RES[],z,cout) = ALU(.W[]=W[],.DATA[]=MALU[],.COP[]=COP[2..1],.c=Flags[0]);

 

ARg[] = Rg(.D[]=RES[7..0],.LD=y3&COP[0],.C=clk) with (WIDTH=8);

 

W[] = Rg(.D[]=RES[7..0],.LD=y2,.C=clk) with (WIDTH=8);

 

Flags[] = Rg2(.D[]=(z,cout),.LD=y2&(COP[2]#COP[1]),.C=clk) with (WIDTH=2);

 

%----------------------------------- Output Port ------------------------------------%

OPORT[] = Rg(.D[]=W[7..0],.LD=y5,.C=clk) with (WIDTH=8);

 

%------------------------------- Program counter --------------------------------%

PC[] = Pctr(.C=clk,.R=!res_b,.EN=y1,.LD=y4,.D[]=DROM[7..0]) with (WIDTH=8);

 

%----------------------------------- ROM & IR -----------------------------------%

DROM[11..0]=ROM(.address[7..0]=PC[],.clock=clk);

COP[3..0].(clk,ena) = (clk,y1);

COP[3..0].d = DROM[11..8];

 

%------------------------------------ RAM ---------------------------------------%

DRAM[]= RAM(.data[7..0]=W[],

.wren=y3&!COP[0],   

.address[7..0]=DROM[7..0],

.clock=clk);

 

%---------------------------------- Control -------------------------------------%

(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

Н.Контр.

     

Утв.

     


 


Лист

 


Информация о работе Цифровое вычислительное устройство