34 / 37 · Conceito
Cruzamentos de domínios de clock e metaestabilidade
Compreenda o alcance do sincronizador de dois estágios e distinga níveis de um bit, pulsos curtos e transferências multibit.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Outro clock não garante separação em relação às bordas
SetupSetup Tempo mínimo durante o qual a entrada deve permanecer estável antes da borda de captura. Se for violado, o valor armazenado não é garantido. Saiba mais e holdTempo de hold Tempo mínimo durante o qual a entrada deve permanecer estável após a borda de captura. Pelo contexto, deve ser distinguido da simples manutenção de um valor. Saiba mais exigem dados estáveis ao redor da borda receptora. Um botão ou domínio independente muda com fase arbitrária em relação a ela, dificultando garantir sempre essas condições.
Pode ocorrer metaestabilidade: o estado interno do flip-flopFlip-flop Elemento que captura a entrada na borda de clock especificada e a mantém até a próxima. A entrada deve cumprir setup e hold. Saiba mais demora para se definir como 0 ou 1. A simulação RTL binária usual não representa diretamente esse fenômeno analógico. Uma onda limpa não demonstra um cruzamento de domínio seguro.
Dois estágios para um nível de um bit mantido por tempo suficiente
module level_synchronizer (
input logic clk_dst,
input logic rst_dst,
input logic async_level,
output logic synced_level
);
logic first_stage;
always_ff @(posedge clk_dst) begin
if (rst_dst) begin
first_stage <= 1'b0;
synced_level <= 1'b0;
end else begin
first_stage <= async_level;
synced_level <= first_stage;
end
end
endmoduleSe o primeiro flip-flop ficar instável, é dado tempo para resolver antes da captura seguinte. A lógica funcional usa apenas o último estágio, sem derivar diretamente o primeiro. Pressupõe-se reset síncrono ao clock de destino.
A implementação exige atributos de sincronizadorSincronizador Circuito que permite tratar, no clock receptor, um sinal vindo de outro domínio temporal. Um sincronizador com vários flip-flops para um bit não deve ser aplicado diretamente a dados de vários bits., conexões curtas entre estágios e verificações STA/CDC adequadas ao dispositivo e às ferramentas. Dois registradoresRegistrador Circuito que armazena vários bits de estado. Os registradores síncronos deste curso capturam a entrada especificada na borda de clock. Saiba mais em RTL não garantem posicionamento nem condições dos caminhos.
A entrada assíncrona chega ao primeiro estágio e a função usa o último. O intervalo entre estágios oferece tempo de resolução; não garante eliminar sempre a metaestabilidadeMetaestabilidade Estado analógico transitório no qual um elemento de armazenamento não consegue se estabilizar em 0 ou 1. A sincronização reduz a probabilidade de propagação, mas não a elimina..
- Nível assíncrono: Sem relação de fase com o clock de destino
- meta FF: Pode ficar metaestável
- synced FF: Capture na próxima borda de destino
- Lógica funcional: Use apenas o último estágio
Reduz a probabilidade de falha, sem levá-la a zero
Um modelo simplificado expressa esta tendência do tempo médio entre falhas:
é o tempo disponível para resolução, uma característica do dispositivo, a frequência receptora e a taxa de transições assíncronas. O cálculo real precisa de constantes específicas do dispositivo. A fórmula sozinha não justifica afirmar «seguro por tantos anos» para qualquer circuito.
Cada tipo de informação precisa de sua solução
| Informação | Bastam dois estágios de um bit? | Estrutura a considerar |
|---|---|---|
| Nível mantido por tempo suficiente | Se cumprir requisitos probabilísticos e de latência | Sincronizador de destino |
| Pulso menor que um período de destino | O próprio pulso pode ser perdido | Alargamento, toggle, handshake |
| Vários bits com significado conjunto | Podem ser capturadas versões de instantes diferentes | Barramento estável com handshake, FIFO assíncrona |
| Botão mecânico | O rebote dos contatos é outro problema | Sincronização seguida de debounce |
Por exemplo, ao passar quatro bits de 0111 para 1000, sincronizá-los independentemente pode produzir combinações que nunca existiram. Para manter a coerência do barramento, projete a relação entre o dado completo e a confirmação da transferência.
Leitura adicional: MIT OpenCourseWare — Synchronization, Metastability and Arbitration
Experimente
O clock receptor é de 50 MHz e os pulsos duram 5 ns. Acrescentar dois estágios garante detectar todos? Também elimina o rebote dos botões?
Ler a explicação
O período é 20 ns. Um pulso de 5 ns pode surgir e desaparecer entre bordas, sendo perdido já no primeiro estágio. Acrescentar estágios não preserva pulsos por si só: é necessário alargamento, handshake ou outro contrato. Rebote também exige debounce.