Синтез конечного и структурного автомата Может быть есть те, кто знает или в настоящее время изучает дискретную математику и поможет?
Я пытаюсь сделать достаточно простую вещь — синтезировать автомат обработчика нажатия кнопки. Надо понять:
1. Была ли нажата ли кнопка
2. Если да, то было ли это короткое нажатие
3. Или длинное
Второй день читаю пособия и статьи (например эту), и все никак не могу ухватить основной смысл.
Вводные: у нас есть кнопка. Она может быть нажата и не нажата. При нажатии кнопки запускается дебаунс-таймер и отмеряет интервал короткого нажатия кнопки. Если во время работы этого таймера кнопку отпустили, возвращаемя в исходное положение. Если таймер отработал и кнопка все еще нажата, запускается таймер измерения интервала длинного нажатия. Если во время работы этого таймера кнопка отпущена, фиксируем короткое нажатие и уходим в исходное состояние. И т.д.
Я сделал такую карту переходов и выходов.
Последующее курение пособий показало, что я, похоже, неправильно понял суть входов. Т.е. вход должен быть один — x1(кнопка). Вход может быть в состоянии 0 или 1.
Дальше непонятно чем же все-таки являются таймеры — это входы или состояния? Или это вообще счетчики, инкрементирующиеся по второму входному сигналу — такту? Еще периодически встречается термин «функции возмущения», но с ними вообще ничего непонятно.
А на следующем этапе мне еще нужно будет преобразовать это в структурный автомат и синтезировать логическую схему. Мааамаааа. Помогите, пожалуйста. Хотя бы с правильным синтеза автомата Мили
Чтобы правильно синтезировать конечный автомат обработчика нажатия кнопки, вам следует учитывать следующее:
Входом вашего автомата будет сигнал от кнопки, который может принимать два состояния: 0 (кнопка не нажата) и 1 (кнопка нажата).Для реализации дебаунс-таймера и таймеров измерения интервалов нажатия, вам необходимо использовать состояния автомата. Эти таймеры будут представлены в виде счетчиков или счетчиков с некоторым предопределенным значением.Функции возмущения могут использоваться для переключения между состояниями автомата в зависимости от входного сигнала (нажатия кнопки) и времени, прошедшего с момента нажатия.Для синтеза структурного автомата вам нужно будет разбить его на подмодули, которые будут выполнять определенные функции (например, дебаунс-таймер, таймер измерения короткого и длинного нажатия и т.д.).При синтезе логической схемы учитывайте логические операции, которые необходимо выполнить для перехода между состояниями и фиксации типа нажатия кнопки.
Если у вас возникли трудности с пониманием концепций дискретной математики, рекомендуется обратиться к специализированным ресурсам или консультантам, которые могут помочь вам разобраться в вопросе и успешно синтезировать требуемый автомат.
Чтобы правильно синтезировать конечный автомат обработчика нажатия кнопки, вам следует учитывать следующее:
Входом вашего автомата будет сигнал от кнопки, который может принимать два состояния: 0 (кнопка не нажата) и 1 (кнопка нажата).Для реализации дебаунс-таймера и таймеров измерения интервалов нажатия, вам необходимо использовать состояния автомата. Эти таймеры будут представлены в виде счетчиков или счетчиков с некоторым предопределенным значением.Функции возмущения могут использоваться для переключения между состояниями автомата в зависимости от входного сигнала (нажатия кнопки) и времени, прошедшего с момента нажатия.Для синтеза структурного автомата вам нужно будет разбить его на подмодули, которые будут выполнять определенные функции (например, дебаунс-таймер, таймер измерения короткого и длинного нажатия и т.д.).При синтезе логической схемы учитывайте логические операции, которые необходимо выполнить для перехода между состояниями и фиксации типа нажатия кнопки.Если у вас возникли трудности с пониманием концепций дискретной математики, рекомендуется обратиться к специализированным ресурсам или консультантам, которые могут помочь вам разобраться в вопросе и успешно синтезировать требуемый автомат.