Examinei dois dos meus livros e consultei meu professor, mas nada parece esclarecer minhas dúvidas.
As duas versões de corrida que me ensinaram são:
Quando as entradas S e R de um flip-flop SR estão no lógico 1, a saída se torna instável e é conhecida como condição de corrida.
Quando as entradas S e R de um flip-flop SR estão no lógico 1 e, em seguida, a entrada é alterada para qualquer outra condição, a saída se torna imprevisível e isso é chamado de condição de corrida.
Qual é o certo? Ou, ambos estão errados; se sim, o que é realmente raça?
digital-logic
flipflop
Soham
fonte
fonte
Respostas:
Uma condição de corrida é um fenômeno relacionado ao tempo. Um SR FF padrão (duas portas NAND ou NOR com acoplamento cruzado) é estável para qualquer entrada estável.
A 'diversão' está na entrada S = 1 R = 1, a situação da memória. O estado do FF depende de qual estado veio antes do 11, se fosse 01, o FF está no estado Q = 1, se fosse 10, o FF está no estado Q = 0. Este é o efeito clássico de memória de um FF.
Mas se fosse 00 e as duas entradas mudassem para 1 suficientemente próximas uma da outra no tempo, o FF pode entrar em um estado metaestável, que pode durar significativamente mais do que o tempo de atraso dos portões. Nesse estado, as saídas podem vagar lentamente em direção ao estado final ou mostrar uma oscilação amortecida antes de se estabelecer no estado final. O tempo necessário para liquidar é ilimitado, mas possui uma distribuição que cai rapidamente para o atraso de porta.
Em operação normal, a partir da entrada 00, uma entrada se torna 1, e o loop de feedback no flip-flop propaga essa (ou melhor, a entrada 0 restante) pelas duas portas, até que o FF esteja em um estado estável. Quando a outra entrada também gira 1 enquanto a propagação da primeira ainda está ocorrendo, isso também começa a se propagar, e é alguém que adivinha quem ganhará. Em alguns casos, nenhum deles vence imediatamente, e o FF entra no estado metaestável.
A condição de corrida é que, de um estado de entrada 00, uma entrada muda para 0 e a segunda também muda para 0 antes que o efeito da primeira alteração seja estabilizado . Agora, os efeitos das duas mudanças são 'corrida' por prioridade.
A explicação indicada é para um simples FF de reinicialização simples (ou trava, ou como você deseja chamá-lo). Um circuito acionado por nível (eu chamaria isso de trava) pode ser pensado como um RS-FF com as duas entradas bloqueadas pela entrada de habilitação (CLK neste diagrama):
Nesse circuito, uma transição simultânea 00 -> 11 das 'entradas' ocultas do NANDS de acoplamento cruzado ainda causa uma condição de corrida. Essa transição pode ocorrer (devido ao atraso causado pelo inversor) quando a entrada D muda simultaneamente, com a entrada CLK mudando de 1 para 0.
Um circuito de memória com clock real (acionado por borda) pode ser pensado em duas travas, habilitadas pelos níveis de relógio opostos (arranjo mestre-escravo). Obviamente, a primeira trava ainda é suscetível à mesma condição de corrida.
PS pesquisando as fotos apropriadas que eu obtive. Como 1 bit foi armazenado no flip flop? :)
fonte
A condição de corrida em circuitos digitais ocorre quando o estado final da saída depende de como as entradas chegam.
Os circuitos digitais têm atrasos inerentes. Portanto, é possível que uma das entradas chegue um pouco mais cedo ou mais tarde que outras, ou seja, as entradas que deveriam estar presentes ao mesmo tempo, na verdade cheguem a momentos diferentes devido a diferentes atrasos no caminho.
Como resultado disso, a saída muda imprevisivelmente. Em outras palavras, existe uma disputa entre as entradas sobre qual delas afetará a saída. Geralmente, isso assume a forma de picos, que podem ser altos ou baixos.
Para o seu caso:
Considere o que acontecerá se S e R forem altos.
Suponha q = 0 e q '= 1 inicialmente. Então
Se A chegar antes de B, Q mudará para Alto, que momentaneamente definirá Q 'baixo, o que, por sua vez, deveria manter Q alto e assim por diante.
Agora, depois de um momento, B chega (duração muito curta). Isso ativará Q 'High, que por sua vez definirá Q High.
Você pode verificar o que acontece quando B chega antes de A.
Agora, na verdade, há duas coisas acontecendo aqui:
1) A saída depende momentaneamente de qual entrada chega primeiro. Essa é essencialmente a condição da corrida.
2) O estado final é q = 1 e q '= 1. Esta NÃO é uma condição de corrida. Este é apenas um estado inválido. Idealmente, Q e Q 'devem ser opostos, o que não é o caso aqui.
Espero estar correto.
fonte
Todas as respostas
Em primeiro lugar, não é uma corrida em torno de uma condição .... não a confunda .... sua condição de corrida .....
Quando S = R = 1 Q = Q '= 1. Está bem definido ... mas o problema surge quando S e R mudam simultaneamente para 0 de 1 (alto para baixo)
Os transistores tentarão sair da saturação ...
Agora, ambos os transistores Qr e Q tentarão sair da saturação ... mas, como atraso de saturação, se os transistores raramente puderem ser iguais na produção em massa ... o transistor com menos atraso de saturação vencerá ... e travará o circuito. ..
Se Qr for mais rápido, a tensão em M cairá e Q = 0 Se Qs for mais rápido, a tensão em N cairá e Q '= 0
Assim, a produção é imprevisível
Mesmo que as velocidades sejam iguais, as saídas Q e Q 'também oscilarão entre 1 e 0 e depois entre 0 e 1. Assim, a saída é instável ...
fonte
Eu acho que o caso 1 é apropriado. Ou seja, quando as duas entradas de uma trava SR são '1', a saída é instável.
Agora, a partir de S = R = '1', a entrada é alterada para S = R = '0' nesta condição, pois a saída deve ser o estado anterior. Mas o estado anterior era instável. Portanto, a saída pode ser bloqueada para '1' ou '0'. Você não pode prever.
Portanto, o caso 2 está correto se a entrada foi alterada de '11' para '00'.
fonte
Sempre que fornecemos 1 para J e K no flip flop JK, a saída deve complementar a saída anterior. Isso é chamado de condição de corrida ao redor (semelhante ao mesmo conceito em "sistema operacional", em que a saída final depende da sequência pela qual os processos são executados).
Para superar esse problema, usamos flip-flop master-slave.
fonte