Зачем нам синхронизировать асинхронные входы в FSM?


8

Я недавно изучал цифровую электронику. Я знаю, что есть шлюзы, которые выполняют логические функции, я узнал о RS-Latch, D-Latch и Master-Slave-D-Flip-Flop. Теперь, когда я могу выполнять логические функции и сохранять состояния, я могу создать конечный автомат (например, светофор). В классе мы говорили об этом конкретном примере светофора и обсуждали, какие проблемы возникают, если мы добавим кнопку «старт / стоп» (сигнал светофора о том, что пешеход ждет зеленый свет).

Был сделан вывод, что эта кнопка будет асинхронным входом, нам нужно поставить триггер перед конечным автоматом, чтобы этот вход можно было сначала синхронизировать.

Я не понимаю, в чем проблема с асинхронными входами? Почему мы должны синхронизировать это? И почему триггер перед конечным автоматом или задняя часть помогает синхронизировать? Я прочитал через несколько статей, говоря о «метастабильности», но до сих пор не понимаю

большое спасибо

Ответы:


6

Как вы уже поняли, ваш конечный автомат контроллера светофора является синхронной машиной. То есть он управляется некоторыми тактовыми импульсами таким образом, что все комбинаторные логические изменения происходят и устанавливаются в стабильные значения достаточно долго до следующего фронта тактового сигнала, чтобы соответствовать требуемому времени установки.

схематический

смоделировать эту схему - схема, созданная с использованием CircuitLab

введите описание изображения здесь

Если данные изменяются в течение этого времени настройки, окончательный результат будет не только непредсказуемым, но и из-за метастабильности, может фактически плавать или колебаться вокруг некоторого промежуточного значения некоторое время, прежде чем он выберет окончательное значение. Он может даже колебаться между логической единицей и логическим нулем на высокой частоте, вызывая значительный ток и нагрев.

введите описание изображения здесь

Таким образом, любой асинхронный ввод в конечный автомат должен быть синхронизирован в определенный момент, чтобы система работала так, как вы ожидаете. Однако это не обязательно означает, что вам ВСЕГДА нужно добавить еще одну защелку в систему.

Если вход идет только к одному «следующему шлюзу» И состояние входа не зависит от всех других входов, тогда действительно не имеет значения, поступает ли сигнал поздно на вечеринку. По сути, вам нужно спросить ... "Если мы пропустим ввод для тактового цикла, это имеет значение?"

Однако, если вход подает несколько ворот, которые отличаются. Следующие ворота могут видеть различные логические уровни и распространять ошибочное состояние на следующую защелку. В основном может случиться множество плохих вещей.

Это можно проиллюстрировать на вашем простом примере. Обратите внимание, что если метастабильность на REG1 не установилась до следующих часов, это может привести к одновременному включению и индикатора WALK, и светофора, или ни того, ни другого.

схематический

смоделировать эту схему

Кроме того, если асинхронный вход связан с другим асинхронным входом, который вы ожидаете одновременно, второй вход может быть распознан, а первый - нет.

В обоих случаях вам нужно добавить синхронизирующую защелку на вход, чтобы привести синхронизацию сигнала в соответствие с часами конечных автоматов. Обратите внимание, что это добавляет одну задержку тактового цикла или половину тактовой задержки, если вы используете другой фронт тактового сигнала.

Тем не менее, вы можете спросить, "но разве ЭТО защелка не страдает от той же проблемы?" и, конечно, ответ будет: да, это так. Но хитрость здесь заключается в том, чтобы позволить этой потенциальной метастабильности произойти в той точке цепи, где это не имеет значения, как я подчеркнул выше.

Поиск этой точки может быть проблематичным с зависимыми данными. Обычно, дополнительная логика должна быть добавлена, чтобы квалифицировать эти входы.

Однако следует помнить, что метастабильность - вещь вероятности. Хотя из-за различий в производственных допусках большинство защелок будут выбирать очень быстро, существует вероятность, что они будут оставаться нестабильными в течение достаточно долгого времени. Чем больше промежуток между тактовыми импульсами, тем выше вероятность того, что он установится. Таким образом, если ваши системные часы работают на высокой частоте, было бы целесообразно разделить их, чтобы выполнить предварительную фиксацию, чтобы обеспечить большее время установления. Однако даже тогда нет никаких гарантий.

Последняя мысль. Я упомянул, что при синхронизации случайного внешнего входа существует вероятность возникновения больших токов и нагрева при метастабильности. К сожалению, вы мало что можете сделать, чтобы исправить это, и проблемы с длительной метастабильностью, кроме удаления асинхронных входных цепей.


Спасибо! Таким образом, дополнительный тактовый цикл с триггера добавляет время для стабилизации метастабильности? Кроме того, зачем нам ставить шлепок в конце FSM?
Эрен

@Eren Да добавляет время и дает ему логичное безопасное место для синхронизации. Как правило, вы хотите, чтобы все выходы изменялись одновременно. Таким образом, последняя ступень обычно должна быть триггером, или, точнее, выходом «защелки», чтобы все выходы были синхронными.
Trevor_G

1
дал вам + 1 за несколько ворот, но, поверьте, вы исправляете свои последние пункты. Метастабильность в синхронизаторе также имеет значение, потому что это может быть передано в схему. Существует не лекарство от метастабильности. Тем не менее, вы можете уменьшить вероятность до исчезающе малой вероятности, дольше ожидая окончательного решения. Чтобы избежать снижения тактовой частоты, это обычно делается путем конвейерной передачи дополнительных D-флопов перед ним. Как только вероятность возрастания ошибки снижается до одного в эпоху вселенной, для 1 миллиарда цепей с максимальной тактовой частотой большинство людей считают метастабильность «излеченной»
Neil_UK

@Neil_UK Да, я пытался сказать это, не слишком путая ОП. Все еще в стадии разработки. Должен выйти на день, хотя. Спасибо.
Trevor_G

1
Метастабильность - пугающий человек в подобных дискуссиях. В действительности ситуация, которую вы описываете, когда вы подаете несколько входов через границу часов, будет выходить из строя гораздо чаще, чем вы получаете события метастабильности. Задержки маршрутизации могут искажаться на порядок наносекунд, что означает, что изменение данных может достигать одного триггера до нарастающего фронта тактового сигнала приема и может достигать другого триггера после нарастающего фронта. Я делаю это различие, потому что метастабильность является проблемой только в тех случаях, когда у вас очень мало провисания, тогда как перекос маршрутизации всегда является проблемой.
jalalipop

3

Одной из проблем асинхронных конструкций является наличие рас или опасностей. Скажем, например, в этой схеме, пусть A = 1, B = 0 и C = 1 изначально, и поэтому D устойчив и установлен на 1.

введите описание изображения здесь

Теперь пусть B изменится на 1, а C изменится на 0 в тот же момент . Очевидно, что D останется на 1. Но в реальных цепях задержки распространения и задержки в проводе имеют значение. Следовательно, очень возможно, что изменение в C достигает шлюза OR быстрее, чем изменение в B распространяется на вентиль OR через вентиль AND. В результате D мгновенно переводится в 0, прежде чем он снова возвращается в свое стабильное состояние 1. Это называется гонкой или опасностью. Этот кратковременный сбой может вызвать любую цепь, присутствующую после D, и этот нежелательный переход распространяется по всей цепи. Это вызывает нежелательное рассеивание мощности и, возможно, ошибку в функционировании.

Чтобы избежать этих проблем, мы можем зарегистрировать входы и выходы, добавив D-триггеры перед всеми входами A, B, C и после выхода D. Так что теперь наша схема фиксирует только стабильные входы на фронтах тактовых импульсов, вычисляет выражение, фиксирует D и выводит его только на следующем фронте тактового сигнала. Это гарантирует, что такие сбои во входах или выходах не распространяются в нашей схеме, при условии, что все входы в триггеры соответствуют времени установки и удержания.

Это главная причина, по которой синхронные конструкции являются более предпочтительными, несмотря на скорость, которую дают асинхронные конструкции.


Большое спасибо! У меня просто есть еще один вопрос, если это нормально. Добавление триггеров до входов и после выходов вызовет сдвиг двух тактовых циклов. Не вызовет ли сдвиг каких-либо проблем для нашего конечного автомата? Была аналогия с человеком А, считающим до 7 и спрашивающим человека Б, правильно ли он сосчитал. Б проанализирует это и ответит «Да». Если бы у нас был триггер спереди и после выхода, ответ «да» достиг бы человека А, когда он уже в 9. Я не понимаю, как это могло бы вызвать какие-либо проблемы, кроме задержки
Эрен

После фиксации входов в тактовом цикле, мы получаем выход в следующем тактовом цикле. Функциональность останется прежней. Переход состояния в каждом такте. Вот как обычно разрабатывается FSM.
Миту Радж

Да, это задержка, вызванная триггером, но это не влияет на функциональность.
Миту Радж
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.