Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Асинхронный сброс счетчиков - не работает
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
Саша Z
Уже во втором совем дизайне наблюдаю такую картину:
если у счетчиков сброс асинхронный - они не будут работать а всегда заткнуты в состянии сброса (по нулям например) несмотря на то что сигнал сброса деактивировался и клок бежит ОК.
Как только меняю код на синхронный сброс - начинают работать ОК.

Это относится к timing simulation, в functional асинхронный работает ОК.

Почему ?

для инфо: работаю с Латисом.
vetal
Привяжите сигнал сброса к тактовому сигналу и сбрасывайте асинхронно этим синхронным сигналом схему.
Саша Z
Цитата(vetal @ Nov 14 2008, 20:03) *
Привяжите сигнал сброса к тактовому сигналу и сбрасывайте асинхронно этим синхронным сигналом схему.


сорри, не совсем понял.. cranky.gif
вы имеете ввиду засинхронизировать асинхронный сигнал сброса и его затем его подать на счетчик ?
это возможно обеспечит необходимый setup/hold на FFs сброса относительно клока, но тогда вся идея асинхонного сброса пропадает...
или я ошибаюсь ?
vetal
Цитата
это возможно обеспечит необходимый setup/hold на FFs сброса относительно клока, но тогда вся идея асинхонного сброса пропадает...
или я ошибаюсь

Он по прежнему будет асинхронным и поступать будет на асинхронные входы триггеров. Он всего-лишь будет привязан к тактовому сигналу.

примерно так будет выглядеть схема:
Код
process(ext_rst_n,clk)
variable ff: std_logic_vector(1 downto 0); -- этим триггерам нужно прописать правило запрета оптимизации.
begin
if(ext_rst_n='0')  then
ff:=(others=>'0');
rst_n<='0';
elsif(falling_edge(clk)) then
rst_n<=ff(1);
ff(1):=ff(0);
ff(0):='1';
end process;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.