Dari artikel Wikipedia Metastabilitas dalam elektronik :
Metastabilitas dalam elektronik adalah kemampuan sistem elektronik digital untuk bertahan selama waktu yang tidak terbatas dalam keseimbangan yang tidak stabil atau keadaan metastabil. Dalam keadaan metastabil, sirkuit mungkin tidak dapat mengendap menjadi level logika '0' atau '1' yang stabil dalam waktu yang diperlukan untuk operasi sirkuit yang tepat. Akibatnya, sirkuit dapat bertindak dengan cara yang tidak terduga, dan dapat menyebabkan kegagalan sistem.
Itu sepertinya definisi yang bagus, tetapi apa artinya dalam aplikasi?
Dari sudut pandang perancang elektronik, apa saja contoh kapan ini mungkin terjadi dan di mana seharusnya jenis kegagalan ini menjadi perhatian?
Apakah ada definisi yang lebih pragmatis atau terapan - sesuatu dalam istilah yang lebih spesifik?
Jawaban:
Jawaban Cepat: Jika Anda melanggar pengaturan dan menahan waktu pada input flip flop, maka output akan tidak dapat diprediksi selama beberapa waktu. Output yang tidak dapat diprediksi itu disebut meta-stable (atau metastability).
Jawaban panjang: Ketika output tidak dapat diprediksi, maksud saya itu tidak dapat diprediksi. Bisa jadi tinggi, bisa rendah, bisa di suatu tempat di antaranya, atau bisa berosilasi. Setelah periode metastabil ini, outputnya akan tinggi atau rendah, tetapi kita tidak tahu kemana akan pergi sampai itu terjadi.
Namun, jumlah waktu yang tidak dapat diprediksi agak dapat diprediksi. Ada dua faktor utama yang menentukan panjang periode metastable: Kecepatan flip-flop, dan seberapa "dekat dengan tepi" Anda mendapatkan waktunya.
Sebagian besar waktu metastable cukup singkat, meskipun kemungkinan memiliki waktu yang lama adalah nol. Secara teoritis Anda bisa memiliki waktu metastable dalam urutan detik, meskipun kemungkinan itu terjadi sangat jarang. Ketika kecepatan flip-flop meningkat, rata-rata waktu metastable berkurang - semua hal lain dianggap sama.
Ada "imajiner" waktu di flip-flop, relatif terhadap tepi jam, di mana Anda paling rentan terhadap masalah metastabilitas. Tepat saat itu tergantung pada banyak faktor seperti suhu, voltase, proses, fase bulan, pengorbanan hewan, dan partai politik apa yang berafiliasi dengan Anda. Setiap kali waktu itu, semakin dekat tepi input data Anda ke waktu itu semakin lama waktu metastabilitas.
Cara terbaik untuk menangani metastabilitas adalah membuat semua logika Anda sinkron, dan tidak melanggar pengaturan dan waktu tunggu Anda. Ini, tentu saja, sulit untuk mustahil bagi sirkuit dengan kompleksitas apa pun. Jadi yang kami lakukan adalah mencoba membatasi tempat-tempat di mana metastabilitas bisa menjadi masalah dan kemudian berurusan dengan tempat-tempat itu.
Metode normal adalah dengan "menggandakan waktu" data. Artinya, miliki dua D Flip-Flops secara seri dengan output dari input pertama input kedua. Harapannya adalah jika flip-flop pertama berjalan metastable maka periode metastable akan berakhir sebelum melanggar pengaturan / tahan waktu yang kedua. Dalam praktiknya ini bekerja dengan cukup baik. Dalam aplikasi yang sangat kritis mungkin ada "triple-clocking" yang terjadi.
sumber
Keadaan metastabil mirip dengan keseimbangan yang tidak stabil. Contoh umum keseimbangan tidak stabil adalah pendulum terbalik . Jika Anda dapat menyeimbangkan pendulum dalam posisi vertikal, itu adalah kondisi stabil. Namun, jika sesuatu mendorong tuas ke kedua sisi (arus udara atau getaran tanah, misalnya), pendulum tidak akan mengembalikan dirinya ke posisi vertikal, ia akan jatuh ke bawah. Kontras dengan pendulum biasa, yang jika didorong ke satu sisi, pada akhirnya akan menetap kembali ke vertikal.
Keseimbangan stabil digunakan dalam sistem kelistrikan untuk membuat elemen penyimpanan. Equlibria yang tidak stabil tidak membuat elemen penyimpanan yang baik (karena mereka kehilangan keadaannya dengan mudah), tetapi sering ada sebagai keadaan parasit.
Elemen penyimpanan digital yang umum adalah sepasang inverter bersilangan:
Elemen penyimpanan memiliki dua keadaan stabil, satu di mana simpul di sebelah kiri berada di tegangan suplai dan simpul di sebelah kanan di tanah, dan yang lainnya di kondisi berlawanan. Ada juga keadaan tidak stabil, di mana setiap node berada pada tegangan menengah.
Untuk lebih memahami bagaimana kondisi tidak stabil muncul, ingat fungsi transfer untuk inverter. Alur fungsi transfer menunjukkan tegangan output inverter untuk tegangan input yang diberikan.
Inverter tidak linier; satu cara sederhana untuk mendapatkan solusi perkiraan dari sirkuit non-linear adalah dengan memplot karakteristik rangkaian; persimpangan plot adalah solusi, atau dengan kata lain, titik-titik di mana karakteristik listrik dari semua komponen rangkaian terpenuhi. Biasanya ini dilakukan dengan plot iv seperti pada contoh dioda ini di Wikipedia . Namun, untuk inverter, kami akan melakukannya dengan plot vv. Overlay fungsi transfer inverter kedua pada plot (dengan kapak ditukar, karena inverter kedua mundur:
Ada tiga persimpangan plot: satu di (0, Vs), satu di (Vs, 0), dan satu di (Vs / 2, Vs / 2). Status (Vs / 2, Vs / 2) adalah metastable. Setelah gangguan kecil pada kedua node, rangkaian hampir selalu akan mengendap ke salah satu kondisi stabil daripada kembali ke (Vs / 2, Vs / 2).
Cara untuk menulis nilai ke elemen penyimpanan dual-inverter adalah dengan memaksa salah satu node ke nilai yang diinginkan menggunakan driver yang lebih kuat dari inverter. Salah satu cara umum untuk melakukan ini adalah dengan pass transistor:
Jika Anda menghubungkan gerbang pass transistor ke jam, Anda memiliki kait D (saya meninggalkan struktur output). Ketika jam tinggi, memungkinkan transistor lulus, kait transparan - input langsung ke output. Ketika jam rendah, kait memegang nilai sebelumnya. Metastabilitas muncul pada saat sampel kait. Jika input tegangan tinggi atau rendah stabil ketika sampel kait, maka itu akan berfungsi dengan baik. Namun, jika input berada di sekitar titik Vs / 2 ketika sampel kait, ada kemungkinan kait akan berakhir dalam keadaan metastable (Vs / 2, Vs / 2). Setelah berada dalam kondisi metastabil, ia dapat tetap berada di sana tanpa batas waktu (dengan asumsi kait tidak diulang lagi), tetapi karena ini merupakan kesetimbangan yang tidak stabil, sesuatu biasanya terjadi secara relatif cepat untuk membuatnya keluar dari kondisi metastabil.
Kapan harus khawatir tentang metastabilitas
Jika elemen penyimpanan Anda menjadi metastable, maka Anda setidaknya kehilangan sebagian dari anggaran waktu untuk logika hilir. Logikanya tidak dapat melakukan evaluasi yang diinginkan sampai keadaan metastabil diselesaikan. Dalam kasus terburuk, keadaan metastabil bertahan atau menyebar melalui logika, dan elemen penyimpanan hilir juga menjadi metastabil, atau beberapa elemen penyimpanan terkait menangkap nilai yang tidak konsisten.
Logika sinkron yang dirancang dan berfungsi dengan baik tidak memiliki masalah dengan metastabilitas. Periode jam lebih lama dari waktu evaluasi untuk logika, semua input flip-flop stabil di tepi jam berikutnya (persyaratan setup puas), dan mereka semua memuat nilai yang valid.
Beberapa situasi umum di mana metastabilitas menjadi perhatian adalah:
sumber
Sinyal metastabil adalah sinyal yang dapat berubah menjadi tinggi atau rendah dalam pola sembarang untuk beberapa jangka waktu yang sewenang-wenang. Jika sinyal mengumpankan beberapa gerbang secara langsung atau tidak langsung , mungkin saja beberapa gerbang itu "melihatnya" tinggi sementara yang lain melihatnya rendah. Hal-hal buruk.
Untuk sistem dengan satu jam, sinyal metastable sering dapat ditangani dengan melewati dua kait. Masalah rumit muncul saat gating jam. Ada banyak sirkuit (terutama menggunakan kait RS) yang akan bekerja luar biasa jika metastabilitas tidak mungkin, tetapi yang dapat, jika metastabilitas terjadi, akhirnya menghasilkan pulsa jam runt (yang pada gilirannya dapat menyebabkan metastabilitas hilir).
Secara kebetulan, poin penting lain yang perlu diperhatikan mengenai metastabilitas: waktu propagasi latch menunjukkan kapan, jika sampel dan waktu penahanan terpenuhi , output akan stabil pada nilai barunya. Jika waktu pengaturan dan penahanan tidak terpenuhi, tidak ada jaminan apakah atau kapan output akan atau tidak akan beralih, sampai saat kait menerima peristiwa pencatatan jam kerja yang valid. Bahkan jika output 'tampaknya' beralih dengan bersih, tidak ada jaminan itu tidak akan secara spontan kembali.
sumber
Kasus klasik adalah jika Anda melanggar pengaturan / tahan waktu untuk kait sinkron, dan merupakan masalah yang perlu Anda ketahui ketika merancang FPGA (saya yakin Xilinx dan Altera akan memiliki catatan tentang ini). Jika suatu sinyal dapat datang kapan saja secara acak, Anda tidak akan pernah bisa memastikan bahwa ketika Anda mencatatnya, itu tidak berubah dalam spesifikasi jendela pengaturan / tahan waktu. Apa yang bisa terjadi adalah alih-alih output kait menjadi tinggi atau rendah pada waktu yang ditentukan setelah jam tepi, itu bisa gentar sekitar untuk sementara waktu sebelum menetap pada keadaan stabil. Cara normal untuk mencegah hal ini adalah dengan menggunakan kait 2-tahap, baik dengan jam yang sama atau jam yang tertunda atau di luar fase tergantung pada keseimbangan antara persyaratan latensi Anda dan kemungkinan metastabilitas. Ini memungkinkan waktu kait pertama untuk stabil sebelum kait kedua mengunci keadaan stabil. Kebetulan, ini adalah sesuatu yang harus ditangani oleh mikrokontroler secara internal, karena sinyal I / O eksternal biasanya tidak sinkron dengan jam CPU, sehingga port I / O sering memiliki pengaturan kait ganda untuk menghindari masalah, dan perangkat lunak tidak perlu khawatir tentang hal itu. . Pembacaan samar-samar bertahun-tahun yang lalu tentang masalah dengan 6502, di mana bus membaca data yang berubah di luar spesifikasi waktu setup / tahan dapat menyebabkan cabang ke alamat yang bukan target cabang atau instruksi berikutnya, karena beberapa internal negara menjadi metastabil. Video ini menunjukkan beberapa contoh: Pembacaan samar-samar bertahun-tahun yang lalu tentang masalah dengan 6502, di mana bus membaca data yang berubah di luar spesifikasi waktu setup / tahan dapat menyebabkan cabang ke alamat yang bukan target cabang atau instruksi berikutnya, karena beberapa internal negara menjadi metastabil. Video ini menunjukkan beberapa contoh: Pembacaan samar-samar bertahun-tahun yang lalu tentang masalah dengan 6502, di mana bus membaca data yang berubah di luar spesifikasi waktu setup / tahan dapat menyebabkan cabang ke alamat yang bukan target cabang atau instruksi berikutnya, karena beberapa internal negara menjadi metastabil. Video ini menunjukkan beberapa contoh:http://www.youtube.com/watch?v=tKHCwjWMMyg
Sebuah analoginya adalah jika Anda melempar bola kepada seseorang - mereka kebanyakan menangkapnya atau menjatuhkannya, jadi setelah waktu tertentu melempar, mereka akan memegangnya atau tidak. Tetapi kadang-kadang mereka akan meraba-raba untuk sementara waktu sebelum menangkap atau menjatuhkannya, sehingga negara mereka tidak memegang atau menjatuhkan - ini adalah negara yang mudah terbakar!
sumber