реклама на сайте
подробности

 
 
> Защелки в FSM
Fynjisx
сообщение May 20 2010, 02:17
Сообщение #1


студент
****

Группа: Свой
Сообщений: 571
Регистрация: 3-07-08
Из: Russia
Пользователь №: 38 712



Привет Всем! Является ли использование защелок плохим стилем проектирования в FSM?


--------------------
С Уважением...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
icyrock
сообщение May 26 2010, 14:28
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-04-07
Из: Санкт-Петербург
Пользователь №: 27 351



Цитата(Fynjisx @ May 20 2010, 06:17) *
Привет Всем! Является ли использование защелок плохим стилем проектирования в FSM?


На мой взгляд использование защелок никакой проблемы не составляет. У меня половина обычных триггеров, а половина защёлок. Живу и радуюсь - никаких проблем.

А использовать ветку else только для того чтобы написать что триггер должен сохранить свое значение - это только засорять код. От ошибок это не защищает.
Go to the top of the page
 
+Quote Post
des333
сообщение May 26 2010, 14:35
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Цитата(icyrock @ May 26 2010, 18:28) *
На мой взгляд использование защелок никакой проблемы не составляет. У меня половина обычных триггеров, а половина защёлок. Живу и радуюсь - никаких проблем.


Главный вопрос: а зачем?


--------------------
Go to the top of the page
 
+Quote Post
icyrock
сообщение May 27 2010, 15:02
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-04-07
Из: Санкт-Петербург
Пользователь №: 27 351



Цитата(des333 @ May 26 2010, 18:35) *
Главный вопрос: а зачем?

Алгоритмы у меня такие : нужно smile.gif
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение May 27 2010, 15:07
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(icyrock @ May 27 2010, 19:02) *
Алгоритмы у меня такие : нужно smile.gif

А Вы уверены, что в Вашем алгоритме без защелок не обойтись? Все-таки защелки - хитрая вещь и ИМХО лучше без них.
Да и по себе могу сказать - читая чужой код и встречая защелки (особенно в case любят опускать состояния) ну очень настораживает - как бы в неопределенность не погрузиться, особенно если обратная связь.
assign out = in & en | out & !en; - Вот такая то оплошность быстро обнаружиться, а вот если case состояний этак на 100, ну и одно забыли - хана, не обнаружишь.

Сообщение отредактировал bogaev_roman - May 27 2010, 15:17
Go to the top of the page
 
+Quote Post
icyrock
сообщение May 27 2010, 15:38
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 29
Регистрация: 27-04-07
Из: Санкт-Петербург
Пользователь №: 27 351



Цитата(bogaev_roman @ May 27 2010, 19:07) *
А Вы уверены, что в Вашем алгоритме без защелок не обойтись? Все-таки защелки - хитрая вещь и ИМХО лучше без них.
Да и по себе могу сказать - читая чужой код и встречая защелки (особенно в case любят опускать состояния) ну очень настораживает - как бы в неопределенность не погрузиться, особенно если обратная связь.


Вижу в использовании защёлки (когда это требуется) следующие факторы увеличивающие наглядность кода
1. Нет лишней засоряющей пространство ветви else
2. Чем реже меняет значение триггер тем меньше "ряби" и посторонних (промежуточных) значений на симуляции
3. Текст
always @(posedge clk)
if (ce)
dout<=din;
Прямо говорит что меняется значение dout тогда когда ce в единице
4. В принципе можно напрячься и избавиться от защёлок. Но это может привести к тому, что код хоть и будет работать правильно но идею алгоритма придётся расшифровывать внимательно вглядываясь в превращение входных данных в выходные.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение May 27 2010, 17:29
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(icyrock @ May 27 2010, 19:38) *
always @(posedge clk)
if (ce)
dout<=din;

Это триггер-защелка (синтезирован будет как обычный триггер). Тока вот теперь ответьте на вопрос что Вы будете делать если будет вложенный оператор
if else if else и забудете первый else поставить? А вообще можно просто написать else ; И насчет читабельности я бы еще поспорил.

Сообщение отредактировал bogaev_roman - May 27 2010, 17:30
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 27 2010, 20:19
Сообщение #8


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(bogaev_roman @ May 27 2010, 20:29) *
Это триггер-защелка (синтезирован будет как обычный триггер).

Это - не триггер-защелка.
Защелка (Latch) - это триггер, который передает входной сигнал, когда L = 1 (прозрачный), и не передает входной сигнал, когда L = 0. В момент перехода L из 1 в 0 триггер "защелкивает" сигнал, а до этого момента сигнал на выходе мог меняться вместе с входным.

P.S. А для case есть слово default.
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение May 28 2010, 06:21
Сообщение #9


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(ViKo @ May 28 2010, 00:19) *
Это - не триггер-защелка.
Защелка (Latch) - это триггер, который передает входной сигнал, когда L = 1 (прозрачный), и не передает входной сигнал, когда L = 0. В момент перехода L из 1 в 0 триггер "защелкивает" сигнал, а до этого момента сигнал на выходе мог меняться вместе с входным.

P.S. А для case есть слово default.

Все-таки откопал из старого форума-конференции - вот собственно тема http://www.telesys.ru/wwwboards/fpga/270/m...ges/21837.shtml
А вот подробное описание отличий - http://www.telesys.ru/wwwboards/fpga/270/m...ges/22311.shtml
Так что то о чем говорил des333 - это latch, то о чем писал я -flip-flop and latch в общем случае, и речь шла немного о разных вещах.
Некоторым лень сознательно ставить default так же как и else - типа читается лучше да и строчек меньше, а потом начинается в крупных проектах "выковыривание" ошибки.
Интересно, а вот сходу скажет кто-нибудь - стандарт рекомендует по стилю вставлять else и default? По-моему рекомендует, хотя и не обязывает...

Сообщение отредактировал bogaev_roman - May 28 2010, 06:24
Go to the top of the page
 
+Quote Post
des333
сообщение May 28 2010, 10:03
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Цитата(bogaev_roman @ May 28 2010, 10:21) *
Так что то о чем говорил des333 - это latch, то о чем писал я -flip-flop and latch в общем случае, и речь шла немного о разных вещах.


Ну, я думал, по контексту темы все поняли, что имеется в виду та защелка, которая latch.  smile.gif




Цитата(ViKo @ May 28 2010, 13:24) *
Это не оплошность, а осознанное решение. Ничего плохого в нем нет. Именно - триггер-защелка, применяется часто. Пример - 74HC373 - Octal 3-State Noninverting Transparent Latch.
Бывают защелки "полезные", а бывают "непредусмотренные" smile.gif


Altera рекомендует не использовать latch вообще.


--------------------
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 28 2010, 11:16
Сообщение #11


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(des333 @ May 28 2010, 13:03) *
Altera рекомендует не использовать latch вообще.

потому что у нее в каждом триггере есть нормальный тактовый вход clk
Go to the top of the page
 
+Quote Post
des333
сообщение May 28 2010, 11:18
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079



Цитата(ViKo @ May 28 2010, 15:16) *
потому что у нее в каждом триггере есть нормальный тактовый вход clk


Не понял.

Разве существуют FPGA, в которых у триггера нет нормального тактового входа?


--------------------
Go to the top of the page
 
+Quote Post
ViKo
сообщение May 28 2010, 11:26
Сообщение #13


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(des333 @ May 28 2010, 14:18) *
Не понял.
Разве существуют FPGA, в которых у триггера нет нормального тактового входа?

Нет, конечно. Поэтому такие же рекомендации будет давать каждый производитель ПЛИС smile.gif
Когда сигнал изменяется по тактам, можно получить большее быстродействие, чем когда он меняется, когда захочет.
Это (нерекомендация latch) вытекает из неприятия "асинхронщины".
Go to the top of the page
 
+Quote Post
sazh
сообщение May 28 2010, 11:54
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 435
Регистрация: 6-10-04
Из: Петербург
Пользователь №: 804



Цитата(ViKo @ May 28 2010, 14:26) *
Нет, конечно. Поэтому такие же рекомендации будет давать каждый производитель ПЛИС smile.gif
Когда сигнал изменяется по тактам, можно получить большее быстродействие, чем когда он меняется, когда захочет.
Это (нерекомендация latch) вытекает из неприятия "асинхронщины".


Потому что выходы latch изначально в неопределенном состоянии. Пока en в 1 единицу не перевести.
За это время много чего пожечь можно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Fynjisx   Защелки в FSM   May 20 2010, 02:17
- - Methane   Цитата(Fynjisx @ May 20 2010, 05:17) Прив...   May 20 2010, 03:05
|- - DmitryR   Включив телепатические способности на полную мощно...   May 20 2010, 06:11
|- - Fynjisx   Цитата(Methane @ May 20 2010, 06:05) Что ...   May 20 2010, 09:18
|- - DmitryR   Цитата(Fynjisx @ May 20 2010, 13:18) Т.е ...   May 20 2010, 09:41
|- - Fynjisx   Триггер со статическим управлением это называется ...   May 20 2010, 09:58
|- - des333   Цитата(Fynjisx @ May 20 2010, 13:18) Ладн...   May 20 2010, 10:11
|- - Fynjisx   Цитата(des333 @ May 20 2010, 13:11) Лучше...   May 20 2010, 10:48
- - glock17   Цитата(Fynjisx @ May 20 2010, 11:17) Прив...   May 20 2010, 06:54
- - AsJohnAs   Ну если сама стейт-машина находиться в процессе т....   May 20 2010, 07:09
- - bogaev_roman   "Так как информация на выходе остаётся неизме...   May 20 2010, 07:44
- - bogaev_roman   Это я про триггер-защелку, а не про latch, просто ...   May 20 2010, 10:39
- - dvladim   Цитата(bogaev_roman @ May 20 2010, 14:39)...   May 20 2010, 19:28
|||- - Builder   Цитата(icyrock @ May 27 2010, 18:38) 3. Т...   May 27 2010, 15:58
|||- - des333   Цитата(icyrock @ May 27 2010, 19:38) 3. Т...   May 27 2010, 16:07
|||- - Maverick   Цитата(des333 @ May 28 2010, 13:03) Alter...   May 28 2010, 11:58
|||- - sazh   Цитата(Maverick @ May 28 2010, 14:58) PS ...   May 28 2010, 12:23
||- - des333   Цитата(icyrock @ May 27 2010, 19:02) Алго...   May 27 2010, 15:25
|- - Builder   Цитата(icyrock @ May 26 2010, 17:28) На м...   May 26 2010, 14:38
|- - ViKo   Цитата(Builder @ May 26 2010, 17:38) а ра...   May 27 2010, 14:05
|- - des333   Цитата(ViKo @ May 27 2010, 18:05) Вот при...   May 27 2010, 14:26
|- - ViKo   Цитата(des333 @ May 27 2010, 17:26) Это н...   May 27 2010, 14:30
- - ViKo   Во всяком случае, Quartus предлагает следующий шаб...   May 28 2010, 09:24
- - ViKo   Пока быстродействие ПЛИС позволяет делать схему та...   May 28 2010, 12:39
- - fars   Коде конвншн для РТЛ, запрещяет использовать защел...   May 28 2010, 13:30
- - dvladim   Цитата(bogaev_roman @ May 28 2010, 10:21)...   May 28 2010, 18:37
|- - ViKo   Цитата(dvladim @ May 28 2010, 21:37) Если...   May 28 2010, 21:17
|- - des00   Цитата(ViKo @ May 28 2010, 16:17) Я сомне...   May 29 2010, 05:02
|- - ViKo   Цитата(des00 @ May 29 2010, 08:02) ну и з...   May 31 2010, 08:00
|- - des00   Цитата(ViKo @ May 31 2010, 02:00) В ссылк...   May 31 2010, 09:15
- - murmel1   Цитата(des00 @ May 29 2010, 09:02) есть п...   May 29 2010, 17:20
|- - des333   Цитата(murmel1 @ May 29 2010, 21:20) ИМХО...   May 29 2010, 17:26
|- - des00   Цитата(murmel1 @ May 29 2010, 11:20) Ссыл...   May 29 2010, 18:30
|- - des333   Цитата(des00 @ May 29 2010, 22:30) гугл в...   May 29 2010, 19:15
- - dvladim   Цитата(des333 @ May 29 2010, 23:15) Перех...   May 29 2010, 20:41
- - ViKo   Вы серьезно рассматриваете данную статью как приме...   May 31 2010, 11:26
|- - des00   Цитата(ViKo @ May 31 2010, 06:26) Вы серь...   May 31 2010, 11:37
|- - ViKo   Цитата(des00 @ May 31 2010, 14:37) Нормал...   May 31 2010, 12:06
- - ViKo   Хочу еще добавить пару слов. Кто мешал упомянутым ...   Jun 1 2010, 08:42
|- - Builder   Цитата(ViKo @ Jun 1 2010, 11:42) Хочу еще...   Jun 1 2010, 16:29
|- - ViKo   Цитата(Builder @ Jun 1 2010, 19:29) Где е...   Jun 2 2010, 08:56
- - dvladim   Цитата(ViKo @ Jun 2 2010, 12:56) Мне каже...   Jun 2 2010, 18:28
- - ViKo   Цитата(dvladim @ Jun 2 2010, 21:28) Вот к...   Jun 3 2010, 11:09


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 10:36
Рейтинг@Mail.ru


Страница сгенерированна за 0.01571 секунд с 7
ELECTRONIX ©2004-2016