Compreender o momento do Shift Register


8

(Estou aprendendo o design do circuito digital. Com licença, se essa é uma pergunta ingênua.)

Na Wikipedia , encontrei o seguinte diagrama sobre o registro de turno do SIPO:

insira a descrição da imagem aqui

Pelo que entendi, esse registro de turno é feito de DFF (D Flip-Flop). O DFF é acionado na borda ascendente do período do relógio. Assim, para cada borda ascendente do Clocksinal, os dados do Data Inpropagarão através de um estágio do DFF.

Minha pergunta é: como o Clocké compartilhado por todos os DFFs, quando a borda ascendente chega, todos os 4 DFFs devem estar no estado acionado / transparente. Então, o que garante que os dados se propaguem através do only 1estágio do DFF em vez de 2 ou mais estágios?

Digamos:

  • Td é o atraso interno para 1 estágio DFF para carregar dados de D para Q.
  • Tré o tempo duradouro da borda ascendente do relógio. Veja abaixo a foto.

insira a descrição da imagem aqui

Eu acho que para limitar a propagação a 1 estágio, tem que ser:

Td < Tr < Td*2

Estou correcto?

Mas no link acima, diz:

Nesta configuração, cada flip-flop é acionado pela borda. O flip-flop inicial opera na frequência do relógio fornecida. Cada flip-flop subsequente reduz pela metade a frequência do seu antecessor, que dobra seu ciclo de trabalho . Como resultado, leva o dobro do tempo para a borda ascendente / descendente disparar cada flip-flop subsequente; isso atrapalha a entrada serial no domínio do tempo, levando à saída paralela.

Isso me deixa confuso sobre algumas coisas.

  • O que halves the frequencysignifica isso ?
  • Como um DFF pode ser caracterizado com uma frequência?
  • Um DFF não funciona apenas na extremidade ascendente do relógio e, em geral, não se importa com a frequência com que o relógio está?
  • E como a frequência pode estar relacionada ao ciclo de serviço? A frequência está relacionada ao período, enquanto o ciclo de serviço significa apenas a porcentagem de um período em que um sinal ou sistema está ativo . Não vejo relação entre frequência e ciclo de serviço.

ADICIONAR 1

Como Neil_UK disse em sua resposta abaixo, a citação wiki acima está completamente errada. E ele corrigiu a página da wiki.

Como EM Fields disse em sua resposta abaixo,

... nada mais pode acontecer até a próxima borda ascendente do relógio, já que a borda do relógio que fez o trabalho já morreu ...

A rigor, não existe uma borda vertical ideal para subir. Deve haver alguns, Trcomo mostrado na ilustração acima. Eu acho que para limitar a propagação do sinal através dos estágios DFF, a borda ascendente deve durar o tempo suficiente para o sinal se propagar através de um estágio e curta o suficiente para que o sinal não se propague até o próximo estágio.

Eu apenas acho que esse tipo de controle é muito complicado / delicado para ser verdade. Mas se é verdade, como é alcançado? (Acabei de colocar uma recompensa por esta pergunta.)


o que exatamente você quer dizer com "Tr é a duração do tempo que aumenta o tempo"?
Elbehery 06/10

1
@ Elbehery Obrigado pela resposta. Eu adicionei uma ilustração. Como o relógio é compartilhado por todos os estágios do DFF, durante o Tr, acho que todos os DFFs devem ser transparentes na entrada. É por isso que acho que é necessário controlar até que ponto o sinal pode se propagar.
smwikipedia

2
Você ficou confuso com uma entrada falsa da Wikipedia. Veja a minha resposta, e ver a página wikipedia atualizado (pode ser necessário liberar o cache do navegador para ver a nova página)
Neil_UK

Respostas:


5

Minha pergunta é: como o Clock é compartilhado por todos os DFFs, quando a borda ascendente chega, todos os 4 DFFs devem estar no estado acionado / transparente. Então, o que garante que os dados se propaguem por apenas 1 estágio do DFF em vez de 2 ou mais estágios?

Considere os requisitos de tempo de um flip-flop D típico .

D flip flop timing

Como você pode ver, há vários parâmetros; da maior importância aqui são o tempo de configuração, tempo de espera e atraso de propagação .

A entrada (em D) deve ser estável durante o período mostrado (de tsu para th)

Para esta parte específica, o tempo mínimo de espera necessário é de 3nseg. Esta é a quantidade mínima de tempo que a entrada deve permanecer estável atrás do relógio para garantir o desempenho (ou seja, D é transferido para Q)

Tempos de configuração e espera

Qualquer transição da entrada depois disso é efetivamente ignorada pelo dispositivo. Desde que o período do relógio seja maior quetsu + th funcionará corretamente.

Agora vamos ver os atrasos de propagação (tplh e tphl)

Na folha de dados, esses são tipicamente 14 nsec:

atraso de propagação

Como esse evento ocorrerá além do requisito de tempo de espera, essa transição na próxima entrada D não terá efeito, pois a entrada agora está efetivamente bloqueada pelo mecanismo de feedback interno.

Observe que a taxa máxima que um registro de turno pode atingir é 1tsu(min) +tprop(max)como a entrada D deve ser estável pelo menos durante o tempo de configuração após a saída Q anterior se tornar estável.

Desde que o atraso de propagação seja maior que o tempo de espera, ele pode ser ignorado pela taxa de clock máxima.

Portanto, o ponto principal é que, desde que o atraso de propagação de D a Q seja maior que o tempo de espera necessário, um único evento de relógio não pode se propagar por mais de um flip-flop.

Usando seu diagrama, o relógio acontece em algum momento t0. A saídaQ1mudará após o atraso de propagação do primeiro flip-flop, mas como isso ocorrerá após o tempo de configuração de entrada no segundo flip-flop, desde que o atraso de propagação do primeiro flip-flop seja maior que o tempo de espera de entrada do segundo flip-flop (sempre é, na minha experiência), então a transição no Q1 (D do segundo flip-flop) não tem efeito para esse evento do relógio .


5

Esse link da wikipedia tinha uma descrição incorreta, era para uma divisão em cascata por 2 contadores. Eu já corrigi a entrada da Wikipedia para que ela descreva um registro de turno. Pode não ser a melhor descrição (feita em um minuto), mas pelo menos não está totalmente errada!


2

Para que os tempos funcionem corretamente, o tempo de espera na entrada D deve ser menor que o atraso de propagação do flip-flop menos a incerteza do relógio. Enquanto essa condição for verdadeira, os novos dados do flip-flop anterior não serão alterados até que o próximo estágio tenha bloqueado os dados.

Para um NXP 74HC74, vemos na folha de dados que o tempo de espera é o pior caso de 3ns e o atraso de propagação geralmente é de 14ns, portanto, uma inclinação do relógio de até 11ns não causará um problema (a 5V) com esses tempos. Observe, no entanto, que o atraso de propagação normalmente não é mínimo; portanto, as margens de uma determinada peça podem ser muito mais apertadas; no entanto, por razões bastante óbvias, a maioria dos chinelos D é projetada para que esse tipo de coisa funcione no tempo certo, pois obter uma particularmente rápida também provavelmente têm requisitos de tempo de espera mais curtos.


1

Os DFFs não são transparentes, eles operam na extremidade do sinal do relógio. A borda do relógio deve ser rápida o suficiente para que os circuitos funcionem corretamente.

Um exemplo é mostrado abaixo:insira a descrição da imagem aqui

O primeiro estágio é ativo durante a fase baixa do relógio. Quando o relógio aumenta, os primeiros inversores conectados trava (trava) armazenam o estado atual e a entrada é desconectada pela porta de transmissão deixada para o nó X. Ao mesmo tempo, o segundo TG se torna transparente e aciona a segunda trava. Assim que o relógio baixa novamente, o segundo trinco retém o valor.

No circuito retirado da Wikipedia, os flip-flops formam um registro de deslocamento, todos eles operam na mesma frequência. Eles poderiam ser usados ​​como contadores ou divisores de clock, no entanto, uma configuração diferente seria usada para isso.


Mas como você conseguirá phi e phi_bar 100% simétricos? Provavelmente você usaria um inversor, levando pelo menos um atraso de porta entre os dois. Portanto, agora seu primeiro portão de transmissão pode passar um '0' um pouco mais que um '1', e o segundo portão de transmissão pode passar um '1' um pouco mais que um '0', devido a relógios irregulares. Efeitos semelhantes ocorrem com os dispositivos de feedback tristate. Há também roteamento de metal entre os pontos do relógio. Nada é exato. Portanto, essa análise ideal apenas oculta problemas que existem na vida real. Imo.
precisa saber é o seguinte

@ jbord39 - Claro que o tempo deve ser verificado. Tornar phi e phi_bar simétricos não é tão difícil. Se fosse necessária uma margem de erro, um atraso poderia ser introduzido entre os dois TGs. O roteamento é apenas local e muito curto. Os atrasos são geralmente determinados após a extração parasitária e também podem ser verificados. É claro que existem projetos mais robustos, mas eu já vi esse em bibliotecas de células padrão.
Mario

Sim, está nas bibliotecas de células padrão o tempo todo, é o DFF mais básico. Mas os relógios raramente são feitos para serem simétricos. O atraso de 10ps / inversor é 'bom o suficiente'. O mecanismo de caracterização capta diferenças de ascensão / queda e as representa novamente em tabelas de qualquer maneira. Meu argumento é que o OP levanta uma questão completamente lógica, que causou erros reais no design. Explodir como 'na borda ascendente captura instantaneamente' é uma grande simplificação, mas não é muito boa quando a questão diz respeito a nuances no tempo.
precisa saber é o seguinte

@ jbord39 - Meu argumento é que esse design pode ser feito com a robustez necessária. Se isso causar um erro no design, o fluxo do design precisará ser corrigido. Além disso, acho que você está lendo demais a questão. No entanto, entendo o seu ponto.
Mario

1

Simplificando, não há nada para impedir a situação que você descreve, exceto pelo conhecimento do próprio designer ao construí-lo. Lembre-se de que existe um atraso finito entre o disparo do limite do relógio e a alteração da saída, geralmente denominada clk-to-q ou clk-to-out.

Com um DFF comum do estilo Transmission-Gate (hoje mais usado nos CPUs) na tecnologia atual, você provavelmente encontrará a situação que descreve. É conhecido como violação de retenção.

De fato, violações de retenção são as mais mortais para os chips digitais. Se houver uma violação de configuração, você pode simplesmente desacelerar o relógio até que o caminho lento pare de falhar. Mas, se houver uma violação de espera, geralmente não há nada a ser feito (a menos que você coloque medidas à prova de falhas, como bordas móveis do relógio por registro). Por serem tão mortais, é normal acolchoar furiosamente para evitar violações de espera. Portanto, se você tem um caminho de ciclo (digamos 400ps a 2.5GHz), isso é apenas flop-> flop; não há razão para não usar alguns buffers. Isso é de fato encorajado.

Outros também afirmaram que os DFFs não são transparentes. Isso certamente depende do DFF , a maioria dos FLs do VLSI hoje tem uma transparência de alguns picossegundos. Outros são intencionalmente modificados para permanecerem transparentes por mais tempo (emprestando flip flop - concedendo tempo adicional para a configuração e também forçando você a manter os dados válidos por mais tempo) atrasando o relógio principal em relação ao escravo.

Se o sinal pular no flip-flop, seria considerado um caminho de ciclo 0. Isso geralmente é considerado uma 'violação de retenção', o que significa que os dados não foram mantidos por tempo suficiente.

Os tempos de configuração e espera de cada flip-flop são diferentes. Se eles foram projetados para uso em um registro de turno, eu quase posso garantir que eles terão um tempo de espera negativo (atrasar o relógio para a trava secundária em relação à trava principal; fazer com que a trava principal feche mais cedo e se torne não transparente, algum tempo antes que a trava do escravo fique transparente). Ou isso, ou o clk-> desses chinelos pode demorar muito mais que o tempo de espera. Ou eles inseriram atraso entre os estágios; no caminho de dados ou no caminho do relógio (invertido).

É muito simples corrigir esse problema. De fato, existem muitas, muitas, muitas maneiras de resolver o problema. Dois simples: Basta inserir um atraso apropriado entre cada estágio do flip-flop. Ou, coloque um atraso entre o relógio em cada flip-flop no registro de turno; a partir do último da cadeia. Isso garantirá que cada flip-flop pegue os dados estáveis ​​do flip-flop anterior.


1

Este esquema mostra a lógica dos portões de transmissão e dos inversores de transmissão logo após a borda ascendente ativa do relógio, que controla a série de comutadores com capacidade de armazenamento suficiente para permitir que um comutador de feedback mantenha ativamente esse nível lógico isoladamente da entrada.

Três (3) etapas dos flip-flops D são mostradas abaixo como parte ou um Shift Register que pode ser Saída serial paralela (SIPO) ou Saída serial serial (SISO)

Embora o relógio seja invertido para acionamento bipolar dos portões de transmissão, ele é mostrado simbolicamente como um controle de relé para uma compreensão simplificada.

esquemático

simular este circuito - esquemático criado usando o CircuitLab


1

Esta é realmente uma pergunta muito boa! Para saber como o DFF funciona, clique aqui , para sincronização e transição do relógio, você encontrará aqui a resposta que diz o seguinte

A ação do gatilho Schmitt na entrada do relógio torna o circuito altamente tolerante aos tempos de subida e descida mais lentos do relógio.

A implementação dessa ação de Schmitt removerá ao máximo a metaestabilidade durante a transição do relógio. Portanto, o relógio logicamente aumentará apenas uma vez, fazendo com que o gatilho verifique seu estado apenas uma vez. Para a frequência do relógio, os DFFs geralmente têm valores mínimo e máximo em suas folhas de dados para garantir a propagação síncrona do sinal dentro de seus elementos lógicos.

Na configuração do SIPO, sua tarefa é garantir que o atraso de propagação através do DFF seja menor que o período do relógio, além de alguma folga para garantir que o sinal seja estável no fio conectado à entrada D do próximo DFF.


0

Quando a entrada do relógio de um flip-flop do tipo "D" fica alta, o estado da entrada D - naquele instante - será transferido para a saída Q e Q permanecerá nesse estado, independentemente de quaisquer alterações em D até a próxima ponto alto do relógio.

Uma trava transparente, por outro lado, opera com Q seguindo D enquanto o relógio está alto e, em seguida, travando o estado de D em Q no instante em que o relógio fica baixo.

No circuito que você mostra, o relógio está em paralelo com todos os dflops; assim, quando o limite do relógio alto aparecer e o conteúdo de D for transferido para Q - e, portanto, para D do estágio seguinte - nada mais poderá acontecer até a próxima borda ascendente do relógio, já que a borda do relógio que fez o trabalho já morreu.

A seguir, é apresentado o seu circuito com alguns drivers e sua resposta ilustrada com um diagrama de tempo.

Observe que os estados de saída dos estágios anteriores são propagados pelos estágios seguintes apenas uma vez para cada borda do relógio crescente.

insira a descrição da imagem aqui


Obrigado pela resposta. Como você disse, ... nada mais pode acontecer até a próxima subida do relógio, já que a borda do relógio que fez o trabalho já morreu . A rigor, não há arestas verticais ideais, como Trindica a minha pergunta. Então eu acho que a borda ascendente deve durar o suficiente para que o sinal se propague por um estágio e curta o suficiente para o sinal não se propague até o próximo estágio. Eu apenas acho que esse tipo de controle é muito complicado / delicado para ser verdade. Mas se é verdade, como é alcançado?
smwikipedia

0

O modo como funciona é que cada DFF é ativado por um período muito curto. Para transformar uma trava em um flip-flop, use algo como o seguinte circuito em seu sinal de habilitação. borda do relógio O relógio está conectado como entrada. Quando você atinge a borda ascendente, apenas um pulso muito curto é gerado. Suponha inicialmente que o relógio esteja em 0. As saídas dos portões NOT para a porta AND estão altas. Quando você obtém a borda ascendente do relógio, as duas entradas no portão AND são altas, gerando seu sinal de alta habilitação. No entanto, logo depois disso, o relógio se propaga pelos portões não e a saída do portão AND fica baixa novamente.

Você pode cronometrar isso com bastante precisão, escolhendo as dimensões do transistor nas portas NOT. O pulso de ativação é o comprimento certo para o sinal mudar uma vez no seu registro de turno e não ter propagação múltipla. Isso depende do processo, é claro, e é bastante complicado de acertar.


1
Eu tenho que discordar de você neste caso. Adicionar esse circuito a uma trava apenas a torna uma "trava de pulso": eetimes.com/document.asp?doc_id=1271447 Para converter uma trava em um flip-flop (FF verdadeiro), use duas trincas, coloque-as novamente e dê a eles relógios de fase opostos, conforme a capacidade. Você pode fazer isso com qualquer tipo de trava. JK, D, SR, etc; isso não importa - a diferença fundamental entre uma trava e um flip-flop está na topologia mestre-escravo.
precisa saber é o seguinte

1
Além disso, simplesmente não é verdade. Travas de pulso SÃO usadas, mas devem ter margens elevadas devido à sua natureza mais dinâmica. Por exemplo, como você deve garantir que o pulso seja longo o suficiente para que os dados sejam gravados em baixa e alta tensão, em todas as temperaturas e cantos do processo. Isso é certamente possível, mas provavelmente 3-5 vezes mais difícil do que um flip-flop tradicional de mestre-escravo.
Jbord39 # 9/16
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.