Перейти к содержанию
    

Сигнал ресет

Есть большая разница как сделать?

Так

process (CLK, RST)
begin
  
    if RST = '1' then
        --do something
    elsif (rising_edge(CLK)) then
        --do something
    end if;
end process;

Или так

process (CLK, RST)
begin
    if (rising_edge(CLK)) then
        if RST = '1' then
            --do something
        elsif
            --do something
        end if; 
    end if;
end process;

 

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Асинхронный или синхронный в зависимости от потребности и архитектуры целевой ПЛИС.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, andrew_b said:

Асинхронный или синхронный в зависимости от потребности и архитектуры целевой ПЛИС.

я понимаю. лично мне нравится второй вариант синхронный. но есть у него какие то преимущества? не хочется переписывать кучу модулей.

темплейт дает

<optional_label>:
	process(reset, clk) is 
		-- Declaration(s) 
	begin 
		if(reset = '1') then
			-- Asynchronous Sequential Statement(s) 
		elsif(rising_edge(clk)) then
			-- Synchronous Sequential Statement(s)
		end if;
	end process; 

вот я наштамповал а теперь сижу и думаю а правильно ли это.

Изменено пользователем jenya7

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нравится/не нравится -- не является каким-либо значимым критерием в инженерном подходе. Оба сброса имеют имеют право на жизнь.

Про преимущества и недостатки обоих -- google://, пока Роскомзапрет его не забанил.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

WP272: Get Smart About Reset: Think Local, Not Global (c) Ken Chapman 

Synchronous Resets? Asynchronous Resets? I am so confused! How will I ever know which to use? (c) Clifford E. Cummings Don Mills

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Разницы нет, если только для платформы нет каких-либо ограничений. Иногда бывает, что ПЛИС не содержит понятия, к примеру, синхронный сброс. В таком случае будет дополнительная логика на входах сброса (флоп + гейты).
В таком случае могут быть сложности с утилизацией/плейсментом/деревом/таймингом.

Для ненапряжных проектах по сути не играет роли.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по-моему, для ПЛИС синхронный меньше ресурсов жрет (если его больше одного в системе)

ну и для ПЛИС сброс не по логике работы, а инициализация - просто трата ресурсов. ПЛИС (кроме старых актелов, насколько я знаю) в загружаемой прошивке содержит значение, в которое поставит этот (любой) триггер на старте - по дефолту 0, но есть атрибут типа INIT который и 1 позволяет

чтобы с симулятором совпадало, то при объявлении дописать :=0; ну или какое-то другое VHDL

-------------------------------

а в АЗИКЕ по-моему, надо делать синхронизацию сброса по тактовым сигналам (которых сильно не один, обычно), чтоб не было проблем с REMOVAL / RECOVERY. это в стародавние времена можно было потребовать от разработчиков платы соблюдения CLOCK / RESET времянки, а сейчас не поймут...

-------------------------------

ну то есть асинхронный сброс по любому хуже

единственное преимущество, что кремния занимает триггер с асинхронным сбросом процентов на 20 меньше, чем с синхронным - это в АЗИКЕ, естестественно

и еще случай, когда такта нет, а сброс нужен - но такого тоже уже лет 20 не видел...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В зависимости от архитектуры ПЛИС, реализация синхронного сброса может "отъедать" один комбинаторный вход LUT.

А для асинхронного сброса в ПЛИС, как правило, используются специальные глобальные ресурсы разводки.

Я обычно стараюсь делать в проекте один общий глобальный асинхронный сброс. Причем, чтобы сигнал этого сброса выставлялся асинхронно, а снимался синхронно (пары триггеров на это не жаль).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, StewartLittle said:

Я обычно стараюсь делать в проекте один общий глобальный асинхронный сброс. Причем, чтобы сигнал этого сброса выставлялся асинхронно, а снимался синхронно (пары триггеров на это не жаль).

также как и я )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 часов назад, Maverick_ сказал:

также как и я )))

Так это же базовые правила - на все асинхронные сбросы ставить reset bridge.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

подаем сброс асинхронно, снимаем синхронно. все верно, я также делаю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, jenya7 сказал:

а что значит "снимаем синхронно"?

96_4-2-600x300.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 hours ago, Flip-fl0p said:

Так это же базовые правила - на все асинхронные сбросы ставить reset bridge.

Я знаю )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В этом вопросе я прежде всего смотрю на строение макроячейки конкретного семейства. Если там уже учтена аппаратная возможность синхронного сброса, то все красиво и экономно с синхронным описанием ....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...