[an error occurred while processing this directive]
No more (((((()))))) или ленивый пишет больше...
(«Телесистемы»: Конференция «Языки описания аппаратуры (VHDL и др.))

миниатюрный аудио-видеорекордер mAVR

Отправлено Victor Yurchenko 13 декабря 2002 г. 15:19
В ответ на: Сопливо, но работает (+) отправлено SM 10 декабря 2002 г. 21:11

И охота же вам каждый раз считать скобки, подбирая задержку?
Так же и обчепятаться недолго.
Пользуйтесь параметризованными функциями.
Вот то что ниже - это филе 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: 

Тема (обязательно):
Сообщение:

Ссылка на URL: 
Название ссылки: 

URL изображения: 


Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru