Mengapa kita perlu menyinkronkan input asinkron dalam FSM?

8

Saya baru belajar elektronik digital. Saya tahu bahwa ada gerbang yang melakukan fungsi logika, saya belajar tentang RS-Latch, D-Latch dan Master-Slave-D-Flip-Flop. Sekarang saya dapat melakukan fungsi logika dan menyimpan status, saya dapat membuat Mesin-Hingga-Negara (misalnya lampu lalu lintas). Di kelas kami berbicara tentang contoh lampu lalu lintas khusus ini dan ada diskusi tentang masalah apa yang muncul, jika kami ingin menambahkan tombol start / stop (sinyal untuk lampu lalu lintas bahwa pejalan kaki sedang menunggu lampu hijau).

Kesimpulannya adalah, bahwa tombol ini akan menjadi input yang tidak sinkron kita harus meletakkan flip flop sebelum mesin negara sehingga input ini dapat disinkronkan terlebih dahulu.

Yang tidak saya mengerti adalah, apa masalah dengan input asinkron? Mengapa kita perlu menyinkronkannya? Dan mengapa flip flop di depan mesin negara atau bagian belakang membantu sinkronisasi? Saya membaca beberapa artikel, berbicara tentang "metastabilitas" tetapi saya masih tidak mengerti

Terima kasih banyak

Eren
sumber

Jawaban:

6

Seperti yang sudah Anda pahami, mesin pengontrol lampu lalu lintas Anda adalah mesin sinkron. Yaitu, ia digerakkan oleh beberapa jam sedemikian rupa sehingga semua perubahan logika kombinatorial terjadi dan menetap pada nilai yang stabil cukup lama sebelum jam tepi berikutnya untuk memenuhi waktu pengaturan yang diperlukan.

skema

mensimulasikan rangkaian ini - Skema dibuat menggunakan CircuitLab

masukkan deskripsi gambar di sini

Jika data berubah dalam waktu setup itu, hasil akhir tidak hanya tidak dapat diprediksi, tetapi karena meta-stabilitas, sebenarnya dapat mengambang atau menari di sekitar beberapa nilai menengah untuk sementara waktu sebelum mengambil nilai akhir. Ia bahkan dapat berosilasi antara logika satu dan logika nol pada frekuensi tinggi yang menyebabkan aliran dan pemanasan arus yang cukup besar.

masukkan deskripsi gambar di sini

Dengan demikian, input asinkron apa pun ke mesin keadaan perlu disinkronkan di beberapa titik agar sistem berfungsi seperti yang Anda harapkan. Namun, itu tidak selalu berarti Anda SELALU perlu menambahkan kait lain ke sistem.

Jika input hanya melanjutkan ke "gerbang berikutnya" tunggal DAN keadaan input independen dari semua input lainnya, maka itu benar-benar tidak masalah jika sinyal datang terlambat ke pesta. Pada dasarnya, Anda perlu bertanya ... "Jika kami melewatkan input untuk siklus clock, apakah itu penting?"

Namun, jika input mengumpan banyak gerbang yang berbeda. Gerbang berikutnya mungkin melihat tingkat logika yang berbeda dan menyebarkan keadaan yang salah ke kait berikutnya. Pada dasarnya berbagai hal buruk bisa terjadi.

Ini dapat diilustrasikan dengan contoh sederhana Anda. Perhatikan jika metastabilitas di REG1 belum diselesaikan sebelum jam berikutnya, ini dapat menyebabkan WALK dan lampu Lalu Lintas menyala pada waktu yang sama, atau keduanya tidak dapat menyala.

skema

mensimulasikan rangkaian ini

Lebih lanjut, jika input asinkron memiliki hubungan dengan input asinkron lain yang Anda harapkan terjadi pada saat yang sama, input kedua mungkin dikenali tetapi yang pertama tidak.

Dalam kedua kasus Anda perlu menambahkan kait sinkronisasi ke input untuk membawa waktu sinyal sejalan dengan jam mesin negara. Perhatikan, ini menambahkan satu penundaan siklus jam, atau penundaan siklus setengah jam jika Anda menggunakan sisi lain dari sinyal jam.

Namun, Anda mungkin bertanya, "tetapi bukankah kait itu menderita masalah yang sama?" dan tentu saja, jawabannya adalah ya. Tapi triknya di sini adalah membiarkan meta-stabilitas potensial terjadi pada titik di sirkuit di mana tidak masalah seperti yang saya soroti di atas.

Menemukan titik itu bisa bermasalah dengan input tergantung. Biasanya, logika tambahan perlu ditambahkan untuk memenuhi kualifikasi input tersebut.

Namun, waspadai metastabilitas adalah kemungkinan. Meskipun, karena perbedaan dalam toleransi pembuatan, sebagian besar kait akan mengambil sisi dengan sangat cepat, ada kemungkinan bahwa itu akan tetap tidak stabil untuk beberapa waktu. Semakin lama jarak antara jam pulsa semakin tinggi probabilitas bahwa itu akan diselesaikan. Dengan demikian, jika jam sistem Anda pada frekuensi tinggi, lebih baik membaginya ke bawah untuk melakukan pra-kait untuk memungkinkan waktu penyelesaian lebih lama. Namun, itupun tidak ada jaminan.

Pikiran terakhir. Saya menyebutkan bahwa ada kemungkinan meta-stabilitas yang diinduksi arus tinggi dan pemanasan saat menyinkronkan input eksternal acak. Sayangnya, ada sangat sedikit yang dapat Anda lakukan untuk memperbaikinya dan masalah metastabilitas lama selain menghapus sirkuit input asinkron.

Trevor_G
sumber
Terima kasih! Jadi siklus satu jam ekstra dari flip flop menambah waktu agar metastabilitas stabil. Juga, mengapa kita meletakkan flip flop, di akhir FSM?
Eren
@Eren Ya menambah waktu dan memberinya tempat yang aman, secara logis, untuk menyesuaikan diri dengan sinkronisasi. Secara umum Anda ingin semua output berubah pada saat yang sama. Jadi tahap terakhir biasanya harus flip-flop, atau lebih tepatnya, "latch" output, sehingga semua output sinkron.
Trevor_G
1
memberi Anda +1 untuk beberapa gerbang, tetapi dengan kepercayaan bahwa Anda memperbaiki paragraf terakhir Anda. Metastabilitas di kait pengunci juga penting, karena itu dapat dilewatkan ke sirkuit. Tidak ada obat untuk metastabilitas. Namun, Anda dapat mengurangi kemungkinan turun menjadi probabilitas yang semakin kecil dengan menunggu lebih lama sebelum keputusan akhir. Untuk menghindari penurunan clock rate, ini biasanya dilakukan dengan pipelining D-flops tambahan sebelumnya. Setelah probabilitas kesalahan turun ke sekali di zaman alam semesta, untuk 1 miliar sirkuit pada laju jam maks, kebanyakan orang menganggap metastabilitas 'sembuh'
Neil_UK
@Neil_UK ya, saya mencoba mengatakan itu, tanpa terlalu membingungkan OP. Masih dalam proses. Tapi harus keluar hari ini. Terima kasih.
Trevor_G
1
Metastabilitas adalah momok dalam diskusi semacam ini. Pada kenyataannya, situasi yang Anda gambarkan di mana Anda memberi beberapa input melintasi batas jam akan gagal jauh lebih sering daripada Anda mendapatkan peristiwa metastabilitas. Keterlambatan perutean dapat condong pada urutan nanodetik yang berarti perubahan data dapat mencapai satu flip flop sebelum tepi naik jam penerima dan dapat mencapai flip flop lain setelah tepi naik. Saya membuat perbedaan ini karena metastabilitas hanya masalah dalam kasus di mana Anda memiliki sedikit kelonggaran, sedangkan kemiringan rute selalu menjadi masalah.
jalalipop
3

Satu masalah dengan desain asinkron, adalah adanya ras atau bahaya. Katakan misalnya dalam rangkaian ini, misalkan A = 1, B = 0 dan C = 1 pada awalnya dan D stabil dan diselesaikan pada 1.

masukkan deskripsi gambar di sini

Sekarang mari B berubah menjadi 1 dan C berubah menjadi 0 pada saat yang sama . Jelas bahwa D akan tetap pada 1. Tetapi di sirkuit nyata, keterlambatan propagasi dan keterlambatan kawat penting. Oleh karena itu sangat mungkin bahwa perubahan C mencapai gerbang OR lebih cepat daripada perubahan B merambat ke gerbang OR, melalui gerbang AND. Hasilnya adalah bahwa D ditarik ke 0 sebentar, sebelum kembali ke kondisi stabil 1. Ini disebut ras atau bahaya. Kesalahan sesaat ini dapat memicu sirkuit apa pun yang ada setelah D, dan transisi yang tidak diinginkan ini disebarkan ke seluruh rangkaian. Ini menyebabkan disipasi daya yang tidak diinginkan dan kemungkinan kesalahan fungsi.

Untuk menghindari masalah ini, kita dapat mendaftarkan input dan output dengan menambahkan D-flip-flop sebelum semua input A, B, C, dan setelah output D. Sehingga sekarang sirkuit kita hanya mengaitkan input yang stabil pada clock-edge, menghitung ekspresi, kait D dan output hanya di tepi jam berikutnya. Ini memastikan bahwa tidak ada gangguan dalam input atau output yang disebarkan di sirkuit kami, asalkan semua input ke flip-flop memenuhi pengaturan dan tahan waktu.

Ini adalah alasan utama mengapa desain sinkron lebih disukai, meskipun kecepatan yang diberikan desain sinkron.

Mitu Raj
sumber
Terima kasih banyak! Saya hanya punya satu pertanyaan lagi jika itu ok. Menambahkan sandal jepit sebelum input dan setelah output akan menyebabkan pergeseran dua siklus clock. Akankah pergeseran menyebabkan masalah bagi mesin negara kita? Ada analogi dengan Orang A yang menghitung sampai 7 dan menanyakan Orang B apakah dia menghitung dengan benar. B akan menganalisisnya dan menjawab "Ya". Jika kita memiliki flip flop di depan dan setelah mengeluarkan jawaban "ya" akan mencapai orang A ketika dia sudah di 9. Aku tidak melihat bagaimana ini akan menyebabkan masalah meskipun selain latensi
Eren
Setelah menempel input dalam siklus clock, Kami mendapatkan output dalam siklus clock berikutnya itu sendiri. Fungsionalitas akan tetap sama. Sebutkan transisi di setiap siklus clock. Begitulah biasanya FSM dirancang.
Mitu Raj
Ya itu keterlambatan yang disebabkan oleh flip-flop, Tapi itu tidak mempengaruhi fungsi.
Mitu Raj