Altifigence Academy

34 / 37 · Concetto

Confini dei domini di clock e metastabilità

Comprendere i limiti della sincronizzazione a due stadi distinguendo bit, impulsi brevi e bus.

Clock diversi non garantiscono distanze fra i fronti

SetupSetup Tempo minimo prima del fronte di acquisizione in cui i dati devono essere stabili. Una violazione rende non garantito il valore memorizzato. Approfondisci e holdTempo di hold Tempo minimo dopo il fronte di acquisizione in cui i dati devono restare stabili. Va distinto dal generico mantenimento di un valore. Approfondisci richiedono dati stabili attorno al fronte ricevente. Un pulsante o un dominio indipendente ha fase arbitraria rispetto a esso: non è facile garantirlo sempre.

Il flip-flopFlip-flop Acquisisce al fronte di clock specificato e mantiene fino al successivo. Gli ingressi devono rispettare setup e hold. Approfondisci può diventare metastabile: per un intervallo lo stato interno non si risolve rapidamente in 0 o 1. La normale simulazione RTL 0/1 non rappresenta direttamente questo fenomeno analogico. Forme d'onda pulite non dimostrano una CDC sicura.

Due stadi per un singolo bit mantenuto abbastanza a lungo

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

Il primo stadio ha tempo per stabilizzarsi prima della lettura del secondo. La logica funzionale usa solo l'ultimo; il primo non deve diramarsi direttamente verso di essa. Si assume il reset mostrato sincrono al clock destinatario.

L'implementazione reale richiede attributi di sincronizzazioneSincronizzatore Porta segnali da un altro dominio temporale al clock ricevente. La catena multistadio a un bit non va applicata invariata ai dati multibit., collegamenti brevi fra stadi e controlli STA/CDC adeguati. Due registriRegistro Memorizza uno stato di più bit. I registri sincroni del corso acquisiscono gli ingressi specificati al fronte di clock. Approfondisci da soli non garantiscono posizionamento e cammini.

L'ingresso asincrono raggiunge il primo stadio e la funzione usa solo l'ultimo. Il tempo intermedio dà opportunità di assestamento, senza garantire la scomparsa della metastabilitàMetastabilità Stato analogico in cui un elemento di memoria non si assesta temporaneamente né a 0 né a 1. La sincronizzazione ne riduce la propagazione senza annullarne la probabilità. analogica.

Limiti d’impiego di un sincronizzatore a un bit
  1. Livello asincrono: Nessuna relazione di fase con il clock di destinazione
  2. meta FF: Può verificarsi instabilità
  3. synced FF: Acquisire al prossimo fronte del clock di destinazione
  4. Circuito funzionale: Usare solo l’ultimo stadio

La probabilità di guasto diminuisce, ma non diventa zero

Un modello semplificato indica questa tendenza del tempo medio fra guasti MTBF:

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

TresolveT_{\mathrm{resolve}} è il tempo di risoluzione, τ\tau una caratteristica del componente, fdstf_{\mathrm{dst}} la frequenza ricevente e feventf_{\mathrm{event}} il tasso di transizione asincrono. Il calcolo reale richiede costanti specifiche. La formula da sola non autorizza garanzie arbitrarie di «anni di sicurezza».

Problemi diversi richiedono strutture diverse

InformazioneBastano due stadi a un bit?Struttura da valutare
Livello mantenuto a lungoPossibile se soddisfa probabilità e latenza richiesteSincronizzatore destinatario
Impulso più corto del periodoPuò essere perso del tuttoEstensione, toggle, handshake
Più bit coerentiI bit possono riferirsi a istanti diversiBus stabile con handshake, FIFO asincrona
Pulsante meccanicoI rimbalzi sono un problema distintoSincronizzazione poi debounce

Nel cambio a quattro bit da 0111 a 1000, sincronizzare ogni bit separatamente può mostrare una combinazione mai esistita. La coerenza del bus richiede una relazione progettata fra dato complessivo e completamento del trasferimento.

Per approfondire: MIT OpenCourseWare — Synchronization, Metastability and Arbitration

Prova tu

Clock ricevente 50MHz, impulso 5ns: due stadi garantiscono ogni rilevazione ed eliminano anche il rimbalzo del pulsante?

Leggi la spiegazione

Il periodo è 20ns. Un impulso di 5ns può iniziare e finire fra i fronti e sfuggire già al primo stadio. Aggiungere stadi non lo conserva. Servono estensione o handshake; il rimbalzo richiede debounce separato.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.