Я пишу циклическое логическое моделирование в C#. Я хочу имитировать как комбинационные, так и последовательные схемы. Комбинационные схемы - это простые, но последовательные схемы дают мне проблемы.Как обнаружить колебания в логических симуляторах ворот?
Я хочу обнаружить колебания и отобразить соответствующее предупреждающее сообщение. Есть ли простой способ проверить, сколько раз один затвор может изменить свое состояние и все же оставить контур стабильным?
Я думал о «минимальном алгоритме настройки дуги обратной связи», но это кажется излишним. Многие настольные приложения делают это быстро, поэтому я сомневаюсь, что они его используют.
Я также нашел документ, в котором говорится об использовании тройной логики (0, 1, неизвестно) и алгоритме расщепления в двух частях: один инициализирует схему и выполняет фактические вычисления, но он говорил что-то вроде «если алгоритм А не прерывать цепь, имеет колебания ", которая ничего мне не дает, поскольку нет возможности остановить тактовый цикл и предупредить пользователя.
Любые идеи о том, как такие приложения, как «Logisim» или «digital works», обнаруживают колебания?
Я могу представить простой алгоритм: вычислить все логические уровни по всей сети * дважды *. Если (по крайней мере) одно из значений изменяется, то у вас есть колебания. –
Затвор в простом флип-флопе RS может изменить свое состояние дважды и оставить контур стабильным (третья оценка может определить, есть ли колебание) - если вычислено в правильном порядке. Правильным порядком я имею в виду порядок использования человеком для решения схемы вручную. Если я использую простой алгоритм DFS, то тот же самый затвор может изменить свое состояние МНОГО раз. http://tinyurl.com/py4z7ol Я не совсем уверен, но я подозреваю, что если в воротах больше циклов обратной связи, их нужно вычислить три, четыре, пять раз - я буду очень благодарен, если кто-нибудь сможет подтвердить это. – Morfidon
Правильно, я об этом не думал. Да, третий раунд поможет. Что касается правильного порядка: разве это не так просто, как начать с входов? –