Introduction to Clock Domain Crossing: Double Flopping

This article will discuss a well-known technique called “double flopping” to transfer a single-bit control signal between two clock domains.

é comum empregar vários sinais de clock num sistema digital. Uma vez que os sinais de clock de diferentes domínios de clock são independentes em geral, a transferência de dados entre os diferentes domínios de clock pode ser uma tarefa desafiadora. Este artigo irá discutir uma técnica bem conhecida chamada “Double flopping” para transferir um sinal de controle de um único bit entre dois domínios de clock.Por Que Precisamos De Relógios Múltiplos?

a metodologia geral de design digital recomenda o uso de um sinal de relógio para todo o sistema, principalmente porque simplifica tanto o procedimento de projeto quanto a análise de tempo do sistema. No entanto, esta metodologia nem sempre dá a solução mais eficiente e às vezes nem sequer é possível ter um único relógio para todo o sistema. Por exemplo, considere um projeto FPGA operando em 20 MHz que está se comunicando com dois dispositivos externos usando interfaces operando em 100 MHz e 150 MHz. Aqui, temos de lidar com três frequências de relógio diferentes. Note que a frequência de clock das interfaces pode ser predefinida e nós podemos não ser capazes de escolhê-la com base no clock utilizado dentro do FPGA.

às Vezes, podemos ser capazes de escolher a frequência do relógio para as diferentes partes do sistema, mas, mesmo neste caso, pode não ser uma boa idéia para operar todo o sistema a uma dada frequência de relógio. Por exemplo, suponha que todo o sistema pode ser operado a 20 MHz, exceto para um subsistema que precisa de um relógio de 100 MHz. Se decidirmos usar um sinal de clock para todo o sistema, então teremos que operar o sistema a 100 MHz para acomodar a maior taxa de clock disponível no sistema. Obviamente, isso não é razoável, porque não só nós exageramos uma grande parte do sistema (peças que poderiam ser operadas a 20 MHz), mas também aumentamos desnecessariamente o consumo dinâmico de energia do sistema. Como podem ver, há muitas circunstâncias em que precisamos de empregar diferentes taxas de relógio para diferentes partes do sistema.

A section of the design in which all the synchronous elements, such as flip-flops and RAMs, use the same clock signal is referred to as a clock domain. Ter diferentes domínios de relógio pode ser benéfico, mas não é tão fácil como parece ser. A próxima seção discute alguns dos problemas que podemos enfrentar ao usar um sistema de relógio múltiplo.

The Metastability Problem

Assume que temos duas seções de lógica, A E B, que operam em 50 MHz e 100 MHz, respectivamente. Isto é mostrado na Figura 1.

Figura 1

No nosso exemplo simples, o B secção tem uma entrada, En_In, que é ligado ao En_Out saída de Uma seção. Esta ligação corresponde a um sinal active-high enable que inicia um algoritmo em B Após uma operação particular ser feita por A. A Figura 1 mostra o registo que gera o sinal Active em A e o registo que o recebe em B.

assumir que as formas de onda do relógio são como mostrado na Figura 2 e o sistema é ativado por borda ascendente. Uma vez que o sinal En_Out é gerado pelo domínio de um relógio, sua transição de baixo para alto pode ocorrer após uma borda ascendente de clk1 como mostrado na figura. O atraso entre a borda ascendente do clk1 e a transição En_ Out corresponde ao atraso clock-to-Q ($$t_{clk-to-Q, DFF1}$$) do flip-flop na secção lógica A. Agora, nós esperamos que o registro DFF2 no domínio B irá provar o sinal de habilitação na próxima borda ascendente de clk2 em $t=t_2$. A amostragem irá acontecer com sucesso, desde que os requisitos de tempo do DFF2 sejam cumpridos, ou seja, $$t_1+T_{clk-to-Q,\; DFF1} \leq t_2-T_{setup,\; DFF2}$.

Figura 2

Na Figura 2, a condição $$t_1+T_{clk-a-Q, \; DFF1} \leq t_2-T_{a instalação, \; DFF2}$$ é satisfeito, mas este não é sempre o caso. Note que os sinais de clock de diferentes domínios de clock são independentes em geral. Não sabemos a sua relação de fase e as formas de onda podem ser como mostrado na Figura 3. Neste caso, a baixa a alta de transição do sinal de habilitação é tão perto da borda de subida do clk2 que a condição $$t_1+T_{clk-a-Q, \; DFF1} \leq t_2-T_{a instalação, \; DFF2}$$ não está satisfeito.

Figura 3

uma vez que os dados de entrada do DFF2 mudaram dentro do tempo de configuração, o comportamento do registo será imprevisível. Devido à violação do tempo de configuração, a tensão de saída registrada pode ser o valor que representa uma lógica alta, uma lógica baixa, ou ainda pior um valor entre a lógica alta e a lógica baixa voltagens. Estes três casos são possíveis enquanto os dados de entrada eram na verdade logic high na borda do relógio correspondente. Do mesmo modo, o valor de saída do registo será imprevisível, quando o tempo de espera do registo for violado, ou seja, as alterações de saída dentro de uma janela de tempo após o limite de tempo activo definido pelo tempo de espera do registo. Quando a saída do registro fica suspensa em uma tensão entre a alta lógica e baixa tensão Lógica, dizemos que o flip-flop entrou em um estado metastável.

vamos examinar os três casos possíveis de violação de tempo da Figura 3 individualmente:

  • como o primeiro caso, assumir que o valor de saída do DFF2 vai para a lógica alta com a borda de elevação do clk2 em $t=t_2$. Neste caso, não há erro e o flip-flop contém dados válidos, embora tivéssemos a violação de tempo de configuração. As transições de dados como esperado sem erro.
  • o segundo caso: assumir que a saída do DFF2 vai para a lógica baixa com a borda ascendente do clk2 em $$t = t_2$. Neste caso, o sinal de ativação não é amostrado com sucesso no domínio B clock. No entanto, isso não será um problema porque a En_Out vem do domínio de um relógio e será alta por pelo menos um período de clk1 como mostrado na Figura 3. Portanto, a próxima borda ascendente do clk2 a $$t=t_3$$ irá provar o valor de En_Out corretamente. Para este limite de relógio, OS requisitos de tempo do DFF2 serão satisfeitos porque En_Out não mudou por mais de um período de clk2. Neste caso, estamos amostrando En_ Out cerca de um período de relógio mais tarde do que realmente transitou. No entanto, isso não é um problema porque os relógios dos dois domínios do relógio foram assumidos como independentes e nós não fizemos nenhuma suposição sobre a hora de chegada do sinal En_Out. Na verdade, o circuito no domínio B clock realiza o fim dos cálculos do domínio a clock com um atraso extra de um período clk2.
  • em seguida, assumir que o registro DFF2 entra no estado metastável. Neste caso, a saída de registro fica suspensa em uma tensão entre a alta lógica e baixa tensão lógica, mas isso será temporário. O flip-flop acabará por sair do estado metastável e ir para a lógica alta ou lógica baixa. O tempo necessário para sair do estado metastável é conhecido como o tempo de resolução $t_r$. Isto é mostrado na Figura 4. Nesta figura, ocorreu a violação do tempo de configuração e o flip flop entrou no estado metastável por um intervalo de tempo de $$t_r$$. Após $$T_r$$$, a saída do flip flop irá para a logic high ($$Q2_{meta-to-1}$$$) ou logic low ($$Q2_{meta-to-0}$$$$).

Figura 4

O tempo de resolução não é determinista e é descrito como uma função de distribuição de probabilidade

$$P(T_r)=e^{\frac{-T_r}{\tau}}$$

Onde $$\tau$$ é a “decadência constante de tempo” e é determinado por características elétricas do flip-flop. Um valor típico para este parâmetro será cerca de uma fração de um nanossegundo.

a equação acima dá a probabilidade de permanecer no estado metastável por um intervalo de tempo igual a $$t_r$$ após a borda do relógio de amostragem. Devido à característica exponencial da equação, a probabilidade irá diminuir rapidamente à medida que aumentamos o valor de $t_r$$. Por exemplo, por $$\tau =0.5$ ns e$ $t_r = 5$ns, obtemos uma probabilidade de $ $ \ approx 4.5 \vezes 10^{-5}$.

para resumir, não podemos evitar que a metástase aconteça porque os sinais de clock dos dois domínios de clock são independentes um do outro. No entanto, se nós fornecermos o flip-flop com tempo de resolução suficientemente grande, ele irá resolver para um estado estável com uma alta probabilidade. Portanto, se o nosso design inclui chinelos que podem entrar no estado de metástase, devemos dar ao Chinelos tempo suficiente para sair da metástase. Então, podemos propagar com segurança o valor do flip-flop para as células lógicas downstream. Note que o uso de um valor metastável pode levar todo o sistema em um estado desconhecido. Pode levar a um fluxo de corrente alta e até mesmo queimar chip no pior caso. Por isso, devemos evitar alimentar o sistema com dados instáveis.

Double Flopping

we saw that giving the flip-flop a sufficient time can greatly reduce the chance of remaining in the metastable state. Vamos ver como isso pode ser usado para evitar a propagação de dados metastáveis no sistema. Considere o diagrama de blocos na Figura 5. Isto mostra um caminho típico no domínio do relógio B da Figura 1 que recebe e processa o sinal En_In.

Figura 5

O relógio mínimo período que pode ser usado para operar este circuito será

$$T_{clk, \; min} = T_{clk-a-Q} + T_{pente, \; max} + T_{a instalação}$$

onde $$T_{clk-a-Q}$$ e $$T_{configuração}$$ são o relógio-para-Q e o tempo de configuração do flip-flops e $$T_{pente, \; máx}$$ é o atraso máximo que o circuito combinacional, “Pente.”, exposicao. Esta equação é obtida assumindo que os dados de saída do DFF2 são estáveis. Se não for, temos que considerar algum tempo de resolução como na seguinte equação:

$t_{clk,\; min} = t_{clk-to-Q} + T_r + t_{comb, \; max} + T_ {configuração}$$

o valor do tempo de resolução determinará a probabilidade de sair do estado metastável. Suponha que o período de clk2 é $t_{clk2}$$. Em seguida, o valor de tempo de resolução será

$$T_r = T_{clk2} – \big ( T_{clk-a-Q} + T_{pente, \; max} + T_{configuração} \big )$$

Para reduzir a probabilidade de permanecer em um estado metaestável, devemos aumentar a $$T_r$$. Com um dado período de tempo $$t_{clk2}$$$, a única opção de desenho será a minimização do parâmetro $t_{comb,\; max}$$. Por isso, é melhor colocarmos o pente.”bloquear após o flip-flop DFF3 como mostrado na Figura 6. Desta forma, $$t_{comb,\; max}$$ será teoricamente zero para o caminho entre DFF2 e DFF3. Por isso, teremos o máximo tempo de resolução possível.

Figura 6

esta técnica é chamada de Double flopping e é amplamente utilizada na transferência de sinais de controle como o acima habilitar sinal entre dois domínios de clock. Note que o registro extra introduzirá outro atraso de um período de clock para o sinal ativado pelo domínio B clock. No entanto, este atraso vale a pena o benefício de evitar Estados metastizáveis no sistema.

This article discussed passing an enable signal from a slow clock domain to a fast clock domain. Você pode precisar se familiarizar com várias outras técnicas, tais como passar um sinal de controle de rápido para o domínio de clock lento, a técnica de aperto de mão e transferência de dados FIFO entre os domínios de clock. Você pode encontrar alguns detalhes no Capítulo 16 do design de Hardware RTL usando VHDL: codificação de eficiência, portabilidade e escalabilidade e Capítulo 6 do design avançado FPGA: Arquitetura, implementação e otimização.

resumo

  • há muitas circunstâncias em que precisamos empregar diferentes taxas de relógio para diferentes partes do sistema.Uma vez que os sinais de clock de diferentes domínios de clock são independentes em geral, a transferência de dados entre os diferentes domínios de clock pode ser uma tarefa desafiadora.
  • o valor de saída de um registo será imprevisível quando ocorrer uma violação de tempo de configuração ou de espera. Ele poderia manter o valor representando uma lógica alta, uma lógica baixa, ou ainda pior um valor entre a lógica alta e a lógica baixa voltagens.
  • o tempo necessário para sair do estado metastável é conhecido como o tempo de resolução $$t_r$.
  • se o nosso design inclui chinelos que podem entrar no estado de metástase, devemos dar ao Chinelos tempo suficiente para sair da metástase.
  • a técnica “Double flopping” é amplamente utilizada para transferir sinais de controle de um único bit entre dois domínios de clock.

para ver uma lista completa dos meus artigos, visite esta página.

Deixe uma resposta

O seu endereço de email não será publicado.