Erros de oscilação

O algoritmo de propagação, que normalmente trabalha silenciosamente, sem qualquer problemas, vai se tornar mair visível quando você criar um circuito que oscile.

#########

Esse circuito está em condição estável. Mas se você mudar a entrada para 1, o circuito irá efetivamente entrar em um loop infinito. Depois um tempo, o Logisim simplesmente desistirá e mostrará a mensagem "oscilação aparente" dizendo que ele acredita que o circuito esteja oscilando.

#########

Ele irá exibir os valores que tiver no momento em que desistir. Esses valores parecerão errados - nessa tela, a porta AND estará emitindo 1 apesar de uma de suas entradas serem 0, mas poderia ser porque a porta NOT tem uma entrada em 1 e uma saída em um 1.

O Logisim prestativamente exibirá círculos em vermelho em cada local que possa estar envolvido na oscilação. Se um ponto envolvido estiver em um subcircuito, o Logisim irá colocar todo o contorno do subcircuito em vermelho.

Quando Logisim detectar oscilação, ele desligará todas as simulações. Você poderá reativar a simulação usando o menu Simulação e a opção Simulação Ativada.

O Logisim detecta oscilações usando uma técnica bastante simples: se a simulação dos circuitos aparecer em muitas iterações, então ele irá simplesmente desistir e reportará oscilação. (Os pontos que identificar como envolvidos serão aqueles que forem afetados nos últimos 25% do total das iterações.) Assim, ele poderia erroneamente relatar oscilação, especialmente se você estiver trabalhando com um circuito excepcionalmente grande, mas isso seria um bem maior do que qualquer outro que eu já tenha construído com o Logisim. Em qualquer caso, se você estiver confiante de que a mensagem seja um erro, você poderá configurar o número de iterações concluídas antes da oscilação ocorra através da janela Opções de projeto em Guia da simulação.

Próximo: Deficiências.