3 Разработка основных функциональных блоков и узлов
Для функциональных узлов и блоков, которые работают с многоразрядными словами, удобно использовать параметризированные описания. Условимся количество разрядов в таких словах обозначать параметром WIDTH.
Мультиплексор 21 является функциональным узлом комбинационного типа, который коммутирует два входных канала на один выход. В нашем случае каналы многоразрядные. Выбор входного канала определяется значением сигнала Cel. Ниже приведено параметризированное описание мультиплексора.
PARAMETERS (WIDTH=8);
SUBDESIGN mux_2
(
a[(width-1)..0],b[(width-1)..0], sel :INPUT;
y[(width-1)..0]:OUTPUT;
)
BEGIN
Y[]=A[]&!sel#b[]&sel;
END;
Для приема и хранения данных используются параллельные регистры, работу которых можно описать в форме таблицы режимов (таблица 2).
Таблица 3 – Режимы работы регистра
-
Режим работы
С
LD
Q+[Width-1..0]
Загрузка
1
D[Width-1..0]
Хранение
x
0
Q[Width-1..0]
Соответствующее параметризированное AHDL-описание модуля Reg
PARAMETERS (WIDTH=8);
SUBDESIGN reg
( d[(WIDTH-1)..0],ld,c : INPUT;
q[(WIDTH-1)..0] : OUTPUT;)
VARIABLE
q[(WIDTH-1)..0] : DFFE;
BEGIN
q[].clk = c;
q[].ena = ld;
q[] = d[];
END;
Для ЦВУ необходим программный счетчик с загрузкой параллельного кода (адрес команды). Режимы работы программного счетчика с загрузкой приведены в таблице 3.
Таблица 4 – Режимы работы счетчика
-
Режим работы
С
LD
CE
Q+[ Width-1..0]
Загрузка
1
x
D[Width-1..0]
Инкремент
0
1
Q[Width-1..1] + 1
Хранение
х
0
0
Q[Width-1..0]
Соответствующее параметризированное AHDL-описание модуля CTR
PARAMETERS(WIDTH=8)
subdesign CTR
(
c,en,ld,res,d[(width-1)..0]:input;
ctr[(width-1)..0]:output;
)
VARIABLE
ctr[(width-1)..0]:dffe;
begin
ctr[].(clk,ena,clrn)=(c,en#ld,!res);
if ld then
ctr[].d=d[(width-1)..0];
else ctr[].d=ctr[].q+1;
end if;
end;
Опишем ПЗУ - RОM
Параметризированное AHDL- описание модуля :
INCLUDE "altsyncram.inc";
SUBDESIGN rom
(
address[7..0] : INPUT;
clock : INPUT;
q[11..0] : OUTPUT;
)
VARIABLE
altsyncram_component : altsyncram WITH (
INTENDED_DEVICE_FAMILY = "Cyclone",
WIDTH_A = 12,
WIDTHAD_A = 8,
NUMWORDS_A = 256,
OPERATION_MODE = "ROM",
OUTDATA_REG_A = "CLOCK0",
ADDRESS_ACLR_A = "NONE",
OUTDATA_ACLR_A = "NONE",
WIDTH_BYTEENA_A = 1,
INIT_FILE = "rom.mif",
LPM_HINT = "ENABLE_RUNTIME_MOD=NO",
LPM_TYPE = "altsyncram"
);
BEGIN
q[11..0] = altsyncram_component.q_a[11..0];
altsyncram_component.clock0 = clock;
altsyncram_component.address_a[7..0] = address[7..0];
END;
Опишем ОЗУ - RAM
Параметризированное 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 (
INTENDED_DEVICE_FAMILY = "Cyclone",
WIDTH_A = 8,
WIDTHAD_A = 8,
NUMWORDS_A = 256,
OPERATION_MODE = "SINGLE_PORT",
OUTDATA_REG_A = "UNREGISTERED",
INDATA_ACLR_A = "NONE",
WRCONTROL_ACLR_A = "NONE",
ADDRESS_ACLR_A = "NONE",
OUTDATA_ACLR_A = "NONE",
WIDTH_BYTEENA_A = 1,
INIT_FILE = "Ram.mif",
LPM_HINT = "ENABLE_RUNTIME_MOD=NO",
LPM_TYPE = "altsyncram"
);
BEGIN
q[15..0] = altsyncram_component.q_a[15..0];
altsyncram_component.wren_a = wren;
altsyncram_component.clock0 = clock;
altsyncram_component.address_a[7..0] = address[7..0];
altsyncram_component.data_a[15..0] = data[15..0];
END;
Опишем РОН. Регистр общего назначения представляет 4 регистра. При записи в РОН, для выбора нужного регистра используется дешифратор. Данные на выход с РОНа определяются с помощью мультиплексора. Для указания адреса РОНа в команде используются младшие 2 бита.
AHDL описание РОНа:
DCR[]=DC(DROM[1..0],y[4]);
B[]=Reg(.D[]=res[],.LD=DCR[0],.C=clk) with (WIDTH=16);
C[]=Reg(.D[]=res[],.LD=DCR[1],.C=clk) with (WIDTH=16);
D[]=Reg(.D[]=res[],.LD=DCR[2],.C=clk) with (WIDTH=16);
F[]=Reg(.D[]=res[],.LD=DCR[3],.C=clk) with (WIDTH=16);
GPR[] = mux4_1(.A[]=B[],.B[]=C[],.C[]=D[],.D[]=F[],.sel[]=DROM[1..0]) with (WIDTH=16);
Где DC – дешифратор, mux4_1 – мультиплексор на 4 входа.
- Курсовой проект
- Задание на курсовой проект
- Аннотация
- Содержание
- 1 Структура цву
- 2 Алгоритм алу
- 3 Разработка основных функциональных блоков и узлов
- 4 Функциональная схема операционного автомата
- 5 Разработка управляющего автомата
- 6 Компиляция и верификация проекта в среде Quartus II
- Приложение в (справочное) ahdl-описание цву