Altifigence Academy

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.

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

SystemVerilog
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
endmodule

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

Alcance de um sincronizador de um bit
  1. Nível assíncrono: Sem relação de fase com o clock de destino
  2. meta FF: Pode ficar metaestável
  3. synced FF: Capture na próxima borda de destino
  4. 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:

MTBF ∝ eTresolve/τfdstfevent\mathrm{MTBF}\ \propto\ \frac{e^{T_{\mathrm{resolve}}/\tau}}{f_{\mathrm{dst}}f_{\mathrm{event}}}

TresolveT_{\mathrm{resolve}} é o tempo disponível para resolução, τ\tau uma característica do dispositivo, fdstf_{\mathrm{dst}} a frequência receptora e feventf_{\mathrm{event}} 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çãoBastam dois estágios de um bit?Estrutura a considerar
Nível mantido por tempo suficienteSe cumprir requisitos probabilísticos e de latênciaSincronizador de destino
Pulso menor que um período de destinoO próprio pulso pode ser perdidoAlargamento, toggle, handshake
Vários bits com significado conjuntoPodem ser capturadas versões de instantes diferentesBarramento estável com handshake, FIFO assíncrona
Botão mecânicoO rebote dos contatos é outro problemaSincronizaçã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.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.