34 / 37 · Konsep
Batas domain clock dan metastabilitas
Pahami cakupan sinkroniser dua tahap dan bedakan level satu bit, pulsa singkat, serta transfer multibit.
Pelajaran dapat dibaca gratis. Daftar untuk menyimpan progres.
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
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
endmoduleJika 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.
- Level asinkron: Fase tidak terkait clock tujuan
- FF meta: Dapat terjadi ketidakstabilan
- FF tersinkron: Tangkap pada tepi tujuan berikut
- Rangkaian fungsional: Gunakan hanya tahap terakhir
Menurunkan probabilitas gagal tidak menjadikannya nol
Model sederhana memberi kecenderungan waktu rata-rata antarkegagalan MTBF berikut:
adalah waktu stabilisasi, karakteristik komponen, frekuensi penerima, dan 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
| Informasi | Apakah dua tahap satu bit cukup? | Struktur yang diperiksa |
|---|---|---|
| Level bertahan cukup lama | Bisa jika syarat probabilitas dan latensi terpenuhi | Sinkroniser tujuan |
| Pulsa lebih singkat dari periode tujuan | Pulsa dapat terlewat | Pelebaran, toggle, handshake |
| Banyak bit bermakna bersama | Bit dapat terlihat dari waktu berbeda | Bus stabil dengan handshake, FIFO asinkron |
| Tombol mekanis | Bounce tetap persoalan terpisah | Sinkronisasi 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.