|
FSM Mealy, Moore, практическое применение |
|
|
|
Jul 5 2018, 04:29
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Всем привет! Несомненно все, кто не прогуливал занятия по цифровой электронике, изучали конечные автоматы (КА), и в том числе их базовые разновидности - автоматы Мили и Мура. Я тоже прилежно учился и когда постигал премудрости профессии на практике, пытался накладывать полученные теоретические знания на разрабатываемые решения. В большинстве случаев это прекрасно работает. Но вот в случае с упомянутыми в заголовке темы вещами оно как-то не получилось. Поясню. КА Мили - это автомат, у которого выходы зависят и от состояния самого автомата, и от его входов. КА Мура - автомат, выходы которого зависят только от его состояния. Ещё на просторах интернета попался некий КА Медведева  , у него выходы - это просто его состояние - по сути это вырожденный автомат Мура, но речь пока не про него. Плюсы и минусы обоих вариантов очевидны: - у Мили решение может обойтись меньшим количеством внутренних регистров за счёт использования логики с входами, и при этом ещё получается меньше задержка - выходы могут меняться в том же такте, что и изменение входов. Недостатки: возможны глитчи и бОльшая задержка распространения по выходам из-за использования комбинационной логики;
- у Мура больше регистров и всегда задержка на такт относительно Мили, но зато можно сделать без глитчей и задержку тоже можно сделать меньше, т.к. нет обязательной логики по выходам.
Когда мне приходилось (и приходится) проектировать КА, я честно пытался применить эту теорию к этому процессу, но почему-то именно тут она уходила в фон: при описании КА смотришь на целевую задачу и решаешь её, исходя из доступных средств. Собственно, описываешь автомат так, чтобы его работа удовлетворяла целевой задаче, и почему-то тут [мне] ни разу совсем не потребовалось погружаться в эту классификацию и анализ свойств - просто кодишь логику, конечно имея в виду, что комбинационная задержка может подзатянуть слаки и/или дополнительный регистр сдвигает результат на такт, это надо тоже учитывать... А вопрос, собственно, такой: какое практическое преимущество даёт знание этой классификации нашему брату - ПЛИСоводу? Подозреваю, что для разработчиков компиляторов, синтезаторов эта классификация может быть полезна - например, в этой теории могут быть доказаны теоремы, что если, де, автомат Мили, то можно провести такую-то или такую-то оптимизацию, а если Мура, то вот такие-то или такие-то ограничения. Как сказал один мудрый человек: "Нет ничего практичнее хорошей теории". Но нам-то - простым пользователям компиляторов, синтезаторов, есть практическая польза? Например, вот описал я логику КА, вижу, что он Мили. Или Мура. И что? Что даёт это понимание? Ведь логику-то я описал, исходя из требований целевой задачи, а не ставя цель, сделать Мили или Мура. И вот опыт, вроде, говорит, что сие знание скорее академическое, но в книжках-то и доках вендоров регулярно упоминают обе фамилии, когда речь заходит про КА. Это порождает сомнение - может, я чего-то важного не ухватил. В общем, прошу поделиться мнением/опытом: какая практическая польза для ПЛИСовода заключается в знании этой классификации и её свойств, где и как это применяется при описании логики на ПЛИС?
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
 |
Ответов
|
Jul 6 2018, 06:56
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Спасибо всем за ответы, в общем и целом примерно так и думаю, рад, что моё понимание и личный опыт согласуется с общим трендом.
Вообще, для себя выработал стиль, при котором стараюсь максимально разделять сущности - например, если понимаю, что тут или там нужен КА, то выделяю его до "чистого " (pure) вида - по сути это получается вырожденный автомат Мура (который ещё называют кое-где КА Медведева), у которого выходы - это его состояние. Понимаю, что во многом тип КА получается из того, как трактовать логику регистровых переходов и внешний по отношению к ней контекст - ведь на практике-то как правило КА нужен не сам по себе, а для каких-то целей, т.е. после идёт логика, которая использует состояния автомата и другие сигналы, и если рассматривать это в целом, то получается тот же Мили. Но я предпочитаю не увязывать идущие мимо собственно автомата сигналы в иерархию этого КА - сторонние сигналы по смыслу относятся к своему контексту, а автомат - это отдельная сущность, несущая служебные функции к отношению к внешнему контексту.
Такая докомпозиция позволяет проще воспринимать дизайн, легче им управлять. Например, такой "отделённый" автомат проще заменить на другой или разбить на два или более более мелких и простых КА. Опыт научил, что в большинстве случаев эффективнее реализовывать несколько более простых, хотя и связанных друг с другом, автоматов, вместо одного большого, с десятками состояний. Именно благодаря декомпозиции легче видеть "узкие" места и проще их исправлять (т.к. намного меньше по сравнению с большим КА перекрёстных связей).
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
Сообщений в этой теме
dxp FSM Mealy, Moore Jul 5 2018, 04:29 Flip-fl0p Цитата(dxp @ Jul 5 2018, 07:29)
А очень ... Jul 5 2018, 04:48 dima32rus Цитата(dxp @ Jul 5 2018, 07:29) при описа... Jul 5 2018, 05:15 one_eight_seven ЦитатаМожно нарисовать граф переходов КА Мура, или... Jul 5 2018, 09:01 Flip-fl0p Цитата(one_eight_seven @ Jul 5 2018, 12:0... Jul 5 2018, 09:27  one_eight_seven Цитата(Flip-fl0p @ Jul 5 2018, 12:27... Jul 5 2018, 09:59 syoma ИМХО смысл для разработчика в том, что надо мыслен... Jul 5 2018, 12:56 one_eight_seven ЦитатаНаверное, так не стоит делать, или нет?
На ... Jul 5 2018, 13:43 Shivers Несколько комментариев
1. Строго говоря, автоматы ... Jul 5 2018, 21:05 x736C Цитата(Shivers @ Jul 6 2018, 00:05) 5. О ... Jul 5 2018, 23:23  warrior-2001 Доброго времени суток!
Цитата(x736C @ Ju... Jul 6 2018, 04:23   Flip-fl0p Цитата(warrior-2001 @ Jul 6 2018, 07... Jul 6 2018, 04:26   gin Цитата(warrior-2001 @ Jul 6 2018, 07... Jul 6 2018, 20:39 syoma ЦитатаМожно замутить автомат по науке, но он будет... Jul 6 2018, 06:58 one_eight_seven Цитатаа вот ПЛИС-программист или Verilog-кодер - э... Jul 6 2018, 07:12 syoma Цитата(one_eight_seven @ Jul 6 2018, 09:1... Jul 6 2018, 09:11 XVR У автоматов Мили и Мура есть большое различие с то... Jul 6 2018, 12:09 one_eight_seven ЦитатаНу, могу предположить такое же мнение о Вас.... Jul 6 2018, 13:22 Shivers Я там выше уже писал, что автомат Мили легко своди... Jul 6 2018, 18:02
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|