Altifigence Academy

34 / 37 · Konsep

Batas domain clock dan metastabilitas

Pahami cakupan sinkroniser dua tahap dan bedakan level satu bit, pulsa singkat, serta transfer multibit.

Antar-clock tidak menjamin jarak terhadap tepi

SetupSetup Waktu minimum data harus stabil sebelum tepi tangkap. Jika dilanggar, hasil tersimpan tidak dijamin. Selengkapnya dan holdWaktu hold Waktu minimum data tetap stabil setelah tepi tangkap. Bedakan dari operasi menahan nilai biasa menurut konteks. Selengkapnya mewajibkan data stabil di sekitar tepi penerima. Tombol atau keluaran domain clock independen memiliki hubungan sembarang dengan tepi itu, sehingga sulit selalu memenuhi syarat.

Flip-flopFlip-flop Elemen yang menangkap masukan pada tepi clock tertentu dan menyimpannya hingga tepi berikutnya. Masukan harus memenuhi setup dan hold. Selengkapnya dapat mengalami metastabilitas, yaitu keadaan internal yang tidak segera menetap pada 0 atau 1. Fenomena analog ini tidak direpresentasikan apa adanya oleh simulasi RTL 0/1. Gelombang bersih tidak membuktikan CDC aman.

Dua tahap untuk level satu bit yang ditahan cukup lama

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

Jika tahap pertama tidak stabil, struktur ini memberi waktu sebelum tahap kedua membacanya. Logika fungsi hanya memakai keluaran tahap terakhir, tanpa cabang langsung dari tahap pertama. Reset di atas diasumsikan sinkron terhadap clock tujuan.

Implementasi nyata memerlukan atribut sinkroniserSinkroniser Rangkaian yang membawa sinyal dari domain waktu lain ke clock penerima. Rangkaian flip-flop bertahap satu bit tidak boleh langsung diterapkan pada data multibit., sambungan pendek antartahap, serta pemeriksaan STA/CDC sesuai alat dan komponen. Dua registerRegister Rangkaian penyimpan beberapa bit keadaan. Register sinkron mata kuliah ini menangkap masukan yang ditentukan pada tepi clock. Selengkapnya dalam kode tidak menjamin penempatan serta kondisi jalurnya.

Masukan asinkron masuk tahap pertama dan fungsi hanya membaca tahap terakhir. Waktu antartahap memberi kesempatan stabil, tetapi tidak menjamin semua metastabilitasMetastabilitas Keadaan analog ketika elemen penyimpan sementara belum stabil pada 0 atau 1. Sinkronisasi mengurangi probabilitas perambatannya tanpa menjadikannya nol. hilang.

Batas penggunaan sinkronisator satu bit
  1. Level asinkron: Fase tidak terkait clock tujuan
  2. FF meta: Dapat terjadi ketidakstabilan
  3. FF tersinkron: Tangkap pada tepi tujuan berikut
  4. Rangkaian fungsional: Gunakan hanya tahap terakhir

Menurunkan probabilitas gagal tidak menjadikannya nol

Model sederhana memberi kecenderungan waktu rata-rata antarkegagalan MTBF berikut:

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

TresolveT_{\mathrm{resolve}} adalah waktu stabilisasi, τ\tau karakteristik komponen, fdstf_{\mathrm{dst}} frekuensi penerima, dan feventf_{\mathrm{event}} frekuensi transisi asinkron. Perhitungan nyata membutuhkan konstanta komponen. Rumus ini saja tidak membenarkan klaim “aman sekian tahun” untuk rangkaian sembarang.

Persoalan berbeda membutuhkan struktur berbeda

InformasiApakah dua tahap satu bit cukup?Struktur yang diperiksa
Level bertahan cukup lamaBisa jika syarat probabilitas dan latensi terpenuhiSinkroniser tujuan
Pulsa lebih singkat dari periode tujuanPulsa dapat terlewatPelebaran, toggle, handshake
Banyak bit bermakna bersamaBit dapat terlihat dari waktu berbedaBus stabil dengan handshake, FIFO asinkron
Tombol mekanisBounce tetap persoalan terpisahSinkronisasi lalu debounce

Pada transisi 0111→1000, sinkronisasi tiap bit terpisah dapat menghasilkan kombinasi yang tidak pernah dikirim. Koherensi bus memerlukan hubungan yang dirancang antara seluruh data dan penyelesaian transfer.

Bacaan lanjutan: MIT OpenCourseWare — Synchronization, Metastability and Arbitration

Coba sendiri

Dengan clock penerima 50MHz dan pulsa 5ns, apakah dua tahap menjamin semua pulsa terdeteksi? Apakah bounce tombol ikut dihilangkan?

Baca penjelasan

50MHz berarti 20ns. Pulsa 5ns dapat muncul dan hilang di antara tepi tanpa ditangkap tahap pertama. Menambah tahap tidak menjamin pelestarian pulsa; diperlukan pelebaran atau handshake. Bounce tombol membutuhkan debounce terpisah.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.