Например TDA7294

Форум РадиоКот • Просмотр темы - Как перестать использовать защелки?
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт мар 28, 2024 11:28:20

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Как перестать использовать защелки?
СообщениеДобавлено: Чт сен 07, 2017 01:26:08 
Встал на лапы

Зарегистрирован: Пн дек 31, 2012 02:36:32
Сообщений: 97
Рейтинг сообщения: 0
Приветствую.
Начал изучать verilog, но не могу избавиться от "сишной" привычки использовать if без else :) . Везде пишут, что это недопустимо, т.к. приводит к синтезу защелки (latch), надо обязательно ставить else или делать инициализацию. Это все понятно, но проблема именно в том, что данная конструкция "есть событие - меняем переменную, нет события - оставляем как было" очень удобная, но приходится постоянно выкручиваться и каждый раз что-то изобретать, чтобы ее не использовать. Вроде как старый инструмент отобрали, а новый не выдали - очень некомфортно :) . Что посоветуете?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как перестать использовать защелки?
СообщениеДобавлено: Сб сен 09, 2017 08:39:41 
Родился

Зарегистрирован: Пн авг 07, 2017 23:05:44
Сообщений: 5
Рейтинг сообщения: 0
использовать if без else :) . Везде пишут, что это недопустимо, т.к. приводит к синтезу защелки (latch)
Это допустимо, например в обыкновенном счетчике с разрешением счета:
Код:
always @(posedge clk) begin
  if (enable) begin
    cnt <= cnt + 1'b1;
  end
end
Защелки - это триггеры со статическим управлением, соответственно они появляются там где присваивание происходит не по фронту тактового сигнала. Например RS-триггер:
Код:
always @(S, R, C, Q)
  if(C) begin
    Q <= (~R & Q) | S;
  end else begin
    Q <= Q;
  end
end
Такое действительно не желательно, потому что затрудняет временной анализ САПР-у и создает значительные задержки.
Для того чтобы этого не происходило, достаточно в блоках always делать присваивание только по фронту тактового сигнала и не использовать блокирующие присваивания. Если требуется описать комбинационную логику отдельно, то хорошим вариантом будет использовать assign, а не always.

Что посоветуете?
Изучить основы синтеза цифровых устройств на бумажке. Советую прорешать примеры из https://librusec.pro/b/474613 или чего-нибудь похожего.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y