O que é condição de corrida em chinelos?

8

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:

  1. 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.

  2. 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?

Soham
fonte
2
Esta é uma pergunta sobre trincos ou chinelos? Algumas das respostas estão descrevendo travas, mas chamando-as de chinelos. A distinção é discutida aqui: electronics.stackexchange.com/questions/21887/…
nobar
eu estou falando sobre flip-flop (borda mecanismo acionado)
Soham
A questão está redigida em termos de S e R, portanto, obviamente, não se trata de lógica cronometrada. Se Lucyfer pretendia fazer algo diferente, ele poderia editar a pergunta, acho que não é apropriado ter um comentário que não apenas carifique uma pergunta, mas gire-a em 180 graus.
Wouter van Ooijen
@WoutervanOoijen Eu concordo que seria uma boa idéia para o OP esclarecer em sua pergunta que ele quer chinelos SR com pulso de disparo disparado pela borda. Na verdade, todas as respostas atuais (incluindo a minha, que excluí) usavam travas. Eu admito que o OP disse flip-flop em seu post original, não trava, e eu não percebi a diferença. Este é um flip-flop acionado por borda - observe que ele requer duas travas SR em série.
tcrosley
No meu livro, uma coisa acionada por borda tem uma única entrada de dados, e uma coisa com entradas S e R é uma simples NAND ou NOR de acoplamento cruzado. Isso é mais constante do que os termos FlipFlop / Register / Latch, então só posso interpretar sua pergunta como se referindo ao circuito simples. Mas estendi minha resposta para abranger coisinhas desencadeadas de nível e de ponta.
Wouter van Ooijen

Respostas:

7

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.

insira a descrição da imagem aqui

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):

insira a descrição da imagem aqui

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.

insira a descrição da imagem aqui

PS pesquisando as fotos apropriadas que eu obtive. Como 1 bit foi armazenado no flip flop? :)

Wouter van Ooijen
fonte
perdoe minha estupidez, mas ainda não consigo entender o que "corrida ao redor" realmente significa desta resposta.
Soham
adicionou algum texto
Wouter van Ooijen
Esta resposta é para uma trava, não um flip-flop. O OP estava interessado em chinelos SR com relógio. Veja o comentário em seu post.
tcrosley
A imagem que você adicionou não é um flip-flop SR acionado por borda (que é o tópico desta pergunta), é um flip-flop D acionado por borda. Veja a imagem à qual vinculei o comentário na pergunta, que é um flip-flop SR disparado pela borda. Não sei por que você está trazendo chinelos D neste momento. O seu comentário acima da imagem de fundo sobre o primeiro trinco sendo suscetível à mesma condição de corrida, obviamente, não se aplica a D flip-flop, as duas entradas para o trinco nunca pode ser tanto 1.
tcrosley
Eles podem, por um breve momento, devido a atrasos. E um breve momento é tudo o que é necessário para obter uma (possível) situação metaestável.
Wouter van Ooijen
1

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:

insira a descrição da imagem aqui

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.

Contrabandista de plutônio
fonte
1

Todas as respostas insira a descrição da imagem aqui

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 ...

Agniva Dutta
fonte
0

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'.

nidhin
fonte
bem se você usar nem portas, então é 11
Soham
0

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.

Shardul Lingwal
fonte