Приложение в (справочное) ahdl-описание цву
include "mux_2.inc";
include "reg.inc";
include "w.inc";
include "ctr.inc";
include "co.inc";
include "alu.inc";
include "ram.inc";
include "rom.inc";
INCLUDE "hex_to_ASCII.inc";
INCLUDE "lcd_controller.inc";
include "debounce.inc";
include "DC.inc";
include "mux4_1.inc";
Subdesign cpu
(
clk :input;
rw :output;
rs :output;
e :output;
data_ind[7..4] :bidir;
ctrl_bt :input;
%
--mux1[7..0]: output;
--rg[7..0]: output;
--ak[7..0] :output;
--mux2[7..0]:output;
y[4..0]:output;
ctrout[7..0] :output;
--res[7..0]:output;
COP[3..0] : output;
dram[15..0] : output;
drom[7..0] :output;
flags[1..0]:output;
GPR[15..0]:output;
B[15..0],C[15..0],
D[15..0],F[15..0]:output;
res[15..0]:output;
%
)
VARIABLE
mux2[15..0],dram[15..0],drom[7..0]:node;
res[15..0],ak[15..0]:node;
cout,z : NODE;
Flags[1..0]: node;
y[4..0]:node;
ctrout[7..0]:node;
cop[3..0]: node;
divf[9..0]:DFF;
f40kHz: node;
bt_clk : node;
res_cnt[3..0]:DFFE;
refresh,res_b,
str1[127..0],str2[127..0]:NODE;
DCR[3..0],B[15..0],C[15..0],
D[15..0],F[15..0]:node;
GPR[15..0]:node;
Begin
mux2[15..0]=mux_2(.A[]=dram[], .B[]=GPR[],.sel=cop[0])with (width=16);
(z,cout,ak[15..0])=alu(.w[]=res[], .data[]=mux2[], .c=flags[1], .cop[]=cop[2..1]);
res[15..0]=w(.d[]=ak[],.ld=y[1], .c=!clk)with (width=16);
flags[]=reg(.D[]=(z, cout), .ld=(y1&(cop[2]#cop[1])) or (cop[3..1]==b"001") , .c=!clk) with (width=2);
ctrout[]=ctr(.c=clk, .en=y[0], .ld=(y[2]&(flags[1])),.res=(cop[3]&cop[2]&cop[1]&cop[0]),
.d[]=DROM[])with (width=8);
----ром
(cop[3..0],drom[7..0])=rom(.address[7..0]=ctrout[],.clock=!clk);
---рам
dram[15..0]= ram(.data[]=res[],.wren=y[3],.address[5..0]=drom[5..0], .clock=clk);
-- co
y[4..0] = co(.c=!clk,.rst=(cop[3]&cop[2]&cop[1]&cop[0]), .en=bt_clk, .cop[3..1]=cop[3..1]);
divf[].clk = clk;
if divf[].q==1023 then f40kHz = vcc;
end if;
divf[].d = divf[].q + 1;
bt_clk=debounce(clk,ctrl_bt,f40kHz) & f40kHz;
res_cnt[].(clk,ena) = (clk,vcc);
if res_cnt[].q==x"F"
then
res_cnt[].d = res_cnt[].q;
res_b = VCC;
else
res_cnt[].d = res_cnt[].q + 1;
end if;
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);
--- контроллер жки
(data_ind[7..4],rs,e,rw)=lcd_controller
(.clk=clk,.reset_b=res_b,.string1[]=str1[],.string2[]=str2[],.refresh=bt_clk);
%Данные для вывода на ЖКИ%
str1[7..0] =HEX_To_ASCII(DRAM[3..0]);
str1[15..8] =HEX_To_ASCII(DRAM[7..4]);
str1[23..16]=HEX_To_ASCII(DRAM[11..8]);
str1[31..24]=HEX_To_ASCII(DRAM[15..12]);
str1[39..32]=x"20";
str1[47..40]=x"20";
str1[55..48]=HEX_To_ASCII(DROM[3..0]);
str1[63..56]=HEX_To_ASCII(DROM[7..4]);
str1[71..64]=x"20";
str1[79..72]=HEX_To_ASCII(cop[3..0]);
str1[111..80]=x"20202020";
str1[119..112]=HEX_To_ASCII(ctrout[3..0]);
str1[127..120]=HEX_To_ASCII(b"0",ctrout[6..4]);
if Flags[1] then str2 [7..0]=x"5A";else str2[7..0]=x"20";end if;
if Flags[0] then str2[15..8]=x"4F";else str2[15..8]=x"20";end if;
str2[23..16]=x"20";
str2[31..24]=HEX_To_ASCII(res[3..0]);
str2[39..32]=HEX_To_ASCII(res[7..4]);
str2[47..40]=HEX_To_ASCII(res[11..8]);
str2[55..48]=HEX_To_ASCII(res[15..12]);
str2[63..56]=x"20";
str2[71..64]=HEX_To_ASCII(gpr[3..0]);
str2[79..72]=HEX_To_ASCII(b"00",gpr[5..4]);
str2[127..80]=x"202020202020";
end;
- Курсовой проект
- Задание на курсовой проект
- Аннотация
- Содержание
- 1 Структура цву
- 2 Алгоритм алу
- 3 Разработка основных функциональных блоков и узлов
- 4 Функциональная схема операционного автомата
- 5 Разработка управляющего автомата
- 6 Компиляция и верификация проекта в среде Quartus II
- Приложение в (справочное) ahdl-описание цву