| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Как перестать использовать защелки? https://radiokot.ru/forum/viewtopic.php?f=60&t=148151 |
Страница 1 из 1 |
| Автор: | Plazmoid [ Чт сен 07, 2017 01:26:08 ] |
| Заголовок сообщения: | Как перестать использовать защелки? |
Приветствую. Начал изучать verilog, но не могу избавиться от "сишной" привычки использовать if без else |
|
| Автор: | prx [ Сб сен 09, 2017 08:39:41 ] |
| Заголовок сообщения: | Re: Как перестать использовать защелки? |
использовать if без else Это допустимо, например в обыкновенном счетчике с разрешением счета:Код: always @(posedge clk) begin Защелки - это триггеры со статическим управлением, соответственно они появляются там где присваивание происходит не по фронту тактового сигнала. Например RS-триггер:if (enable) begin cnt <= cnt + 1'b1; end end Код: 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 или чего-нибудь похожего.
|
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


