Например TDA7294

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



Текущее время: Вс фев 18, 2018 03:57:57



Часовой пояс: UTC + 3 часа [ Летнее время ]


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



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

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


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

Зарегистрирован: Вт авг 08, 2017 00:05:44
Сообщений: 3
Рейтинг сообщения: 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 или чего-нибудь похожего.


Вернуться наверх
 Профиль  
 
JLCPCB Prototype, Бесплатная доставка первого заказа + $2 на прототип ПП!

Крупнейший производитель печатных плат в Китае, 290,000+ заказчиков, 8,000+ он-лайн заказов в день.

Цена за 10 плат: $2 за 2-х слойную, $15 за 4-х слойную, $74 за 6-ти слойную.

LCSC Parts: Экономия до 50%, большой выбор компонентов в наличии, отправка заказа в день оплаты.

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



Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

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


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