[an error occurred while processing this directive]
[an error occurred while processing this directive]
|
Нужно написать код, который, имея тактовый вход, и шину (3 бита) задания количества импульсов, на выходе выдавал каждый раз импульс после прохождения на входе заданного кол-ва импульсов.
Вроде всё работает, но нужно после совпадения счетчика с заданным числом счетчик сбрасывать, что вызывает "некрасивую" картинку в симуляторе (за очень короткое времясчетчик переходит на следующее значение и тут же сам себя сбрасывает).
Есть ли более элегантные способы заставить счетчик cntr[2..0]: DFF; считать до заданного числа, а не до 7-ми.
Спасибо!
Dm
PS Вот мой код:
%
The function implements the STROBE pulse going together with input pulse number s2,s1,s0
%
SUBDESIGN strobe
(
clk, s[2..0]: INPUT;
cntrout[2..0], strobe_pulse: OUTPUT;
)
VARIABLE
cntr[2..0]: DFF;
l: DFF;
BEGIN
%Implement the counter which defines the interval between STROBE pulses%
cntr[].clk=clk;
cntrout[]=cntr[];
cntr[].d=cntr[].q+1;
%Additional DFF trigger to eliminate glitches on strobe_pulse output%
l.clk=clk;
l.d=(s[]==cntr[]);
cntr[].clrn=!(s[]+1==cntr[]);
strobe_pulse=l.q;
END;
E-mail: info@telesys.ru