Санкт-Петербург 2021
Цель работы:
изучение методов создания и использования
модулей цифровых
устройств.
Ход работы:
Написать
программу для синтеза счетчика:
SUBDESIGN
ahdlcnt
(
clock, load,
ena, clr, d[7..0] : INPUT;
q[7..0] :
OUTPUT;
)
VARIABLE
count[7..0] :
DFF;
BEGIN
count[ ].clk =
clock;
count[ ].clrn
= !clr;
IF load THEN
count[ ].d =
d[ ];
ELSIF ena THEN
count[ ].d =
count[ ].q + 1;
ELSE
count[ ].d =
count[ ].q;
END IF;
q[ ] = count[
].q;
END;
На
основе программы из задания 1 реализовать
делитель частоты на 211:
SUBDESIGN
delitel
(
clock,
load, ena, clrn, prn, d[7..0] : INPUT;
q[7..0],
qt, qv, s : OUTPUT;
)
VARIABLE
count[7..0]
: DFF;
BEGIN
count[].clk
= clock;
count[].clrn
= qt;
IF
load THEN
count[].d
= d[];
ELSIF
ena THEN
count[].d
= count[].q + 1;
ELSE
count[].d
= count[].q;
END
IF;
q[]
= count[].q;
--D210
= B11010010
s
= q[7] & q[6] & !q[5] & q[4] & !q[3] & !q[2] &
q[1] & !q[0];
qt
= !dff(s,!clock, clrn, prn);
qv
= count[7].q;
END;
На
основе программы счетчика синтезировать
устройство, которое вырабатывает
сигнал, если в информационной
последовательности значение уровня
логического нуля повторяется через
интервал, больший девяти периодов
опорной частоты.
SUBDESIGN
cntflg
(
clock,
load, ena, dr, s, d[7..0] : INPUT;
q[7..0],
a, flg : OUTPUT;
)
VARIABLE
count[7..0]
: DFF;
b[7..0]
: node;
dt
: DFF;
BEGIN
count[
].clk = clock;
count[
].clrn = dr;
IF
load THEN
count[
].d = d[ ];
ELSIF
ena THEN
count[
].d = count[ ].q + 1;
ELSE
count[
].d = count[ ].q;
END
IF;
q[
] = count[ ].q;
b[
] = count[ ].q;
a=
!b7 & !b6 & !b5 & !b4 & b3 & !b2 & !b1 &
b0;
flg
= dt.q;
dt.d
= VCC;
dt.clk
= VCC;
dt.prn
= s;
dt.clrn
= !a;
END;
Вывод:
Мы познакомились
с особенностями использования модулей
и цифровых автоматов и устройств на их
основе в Quartus II в процессе синтеза
цифровых устройств на программируемых
логических интегральных схемах (ПЛИС).