[an error occurred while processing this directive]
|
И охота же вам каждый раз считать скобки, подбирая задержку?
Так же и обчепятаться недолго.
Пользуйтесь параметризованными функциями.
Вот то что ниже - это филе lcdelay.tdf
Ncells - количество селлов, которое нужно вставить (5 по умолчанию;
Rise - Формирование импульса по нарастанию входного сигнала
Fall = то же по спаду
если Rise и Fall оба в нулях или оба в единицах, то генерится импульс по обеих перепадах.
Don't worry, be happy!
----------------------------------------------------------------------
parameters
(
Ncells = 5,
Rise = 0,
Fall = 0
);
subdesign 'lcdelay'
(
in : input;
out : output;
)
variable
lc[Ncells-1..0] : lcell;
begin
assert (Ncells > 1)
report "Значение параметра Ncells должно быть больше 1"
severity error;
assert report "Ncells = %"Ncells
severity info;
lc[0] = in;
for i in 1 to Ncells-1 generate
lc[i] = lc[i-1];
end generate;
if (Rise # Fall) generate
if (Rise) generate
assert report "Формирование импульса по нарастанию сигнала"
severity info;
out = in & !lc[Ncells-1];
else generate
assert report "Формирование импульса по спаду сигнала"
severity info;
out = !in & lc[Ncells-1];
end generate;
else generate
assert report "Формирование импульса по нарастанию и спаду сигнала"
severity info;
out = in $ lc[Ncells-1];
end generate;
end;
E-mail: info@telesys.ru