Mengapa edge triggering lebih disukai daripada trigger level?


18

Saya mencoba memahami mengapa trigger edge lebih disukai daripada trigger level. Dalam buku saya tidak dijelaskan dengan jelas. Setelah mencari online saya mengetahui bahwa edge triggering tidak sensitif terhadap gangguan sedangkan level trigger sensitif. Apa artinya?

Saya juga tidak dapat memahami yang berikut ini: "Jika jam sensitif level, dapat tergesa-gesa melalui jaringan logika dan mengubah output. Untuk menghindarinya kita perlu pulsa pendek untuk menangkap output dan menahannya konstan. Tapi pulsa pendek seperti itu tidak mudah dibuat, maka kami mencari pemicu tepi. Masalah umpan balik diselesaikan karena ada waktu yang tidak cukup untuk output baru untuk berlomba kembali ke input dalam durasi satu sisi yang meningkat "Qn

Saya tidak mengerti mengapa output tidak akan tergesa-gesa memicu level dan mengapa kita perlu pulsa pendek untuk menahan output.

Kedua, masalah umpan balik, karena durasi tingkat pemicu panjang dibandingkan dengan pemicu tepi, dalam kasus yang pertama, output akan diumpankan kembali ke input dan itu akan terus melakukan ini selama jam aktif . Apa masalah umpan balik?

Tetapi bagaimana hal itu dipecahkan di tepi memicu? Jika waktu untuk jatuh atau naik sangat singkat, bagaimana output akan dapat menyebar melalui semua gerbang? Apakah seperti itu, setelah pemicu tepi diterapkan, output akan disebarluaskan melalui semua gerbang dan input berikutnya akan dianggap hanya pada tepi jam berikutnya?


1
"Begitu pemicu tepi diterapkan, output akan disebarluaskan melalui semua gerbang dan input berikutnya hanya akan dipertimbangkan pada clock edge berikutnya" - bullseye !!
Wouter van Ooijen

Jawaban:


12

Meskipun edge adalah momen yang terdefinisi dengan baik, tidak benar untuk mengatakan bahwa pemicu level juga tidak memiliki momen yang terdefinisi dengan baik dalam waktu. Itu benar. Ada momen yang terdefinisi dengan baik ketika tingkat jam turun, input ke sirkuit clock diambil sampelnya, dan perubahan lebih lanjut pada input tidak lagi diterima.

Masalah dengan pemicu level adalah saat level clock tinggi, input mengubah output. Di sirkuit yang memiliki umpan balik (output dihubungkan kembali ke input) memicu tingkat memicu kekacauan, karena level cukup lebar (setengah siklus clock) bahwa output dapat memberi umpan balik ke input dalam periode yang sama.

tt+1

Solusi jelas pertama yang menyarankan dirinya untuk mempersingkat level ke titik yang tidak mungkin terjadi umpan balik yang tidak diinginkan (dan untuk menjaga level "on" tetap pendek, bahkan jika kita secara sewenang-wenang memperlambat periode waktu). Misalkan kita menggerakkan jam dari 0 ke 1 dan kembali ke 0 dengan sangat cepat, sehingga perangkat yang diberi clock menerima input mereka, tetapi output tidak memiliki cukup waktu untuk berpacu melalui loop umpan balik untuk mengubah input tersebut. Masalah dengan ini adalah bahwa pulsa sempit tidak dapat diandalkan, dan pada dasarnya memerlukan respons yang mungkin beberapa kali lipat lebih cepat daripada frekuensi clock. Kita mungkin menemukan bahwa kita memerlukan pulsa yang lebar nanodetik, meskipun sistem hanya berjalan pada 1 Mhz. Jadi kita memiliki masalah mendistribusikan pulsa nanosecond lebar bersih, tajam, cukup tinggi di atas bus yang dirancang untuk 1 Mhz.

Maka langkah logis berikutnya adalah membuat perangkat menghasilkan pulsa sempit untuk diri mereka sendiri sebagai turunan waktu dari tepi jam. Ketika jam transisi dari satu tingkat ke tingkat lainnya, perangkat itu sendiri secara internal dapat menghasilkan pulsa pendek yang menyebabkan input menjadi sampel. Kami tidak harus mendistribusikan pulsa itu sendiri melalui bus jam.

Dan pada dasarnya Anda bisa menganggap itu semua sebagai pemicu level pada akhirnya. Edge triggering adalah trik untuk memungkinkan perangkat membuat pemicu level yang sangat bagus yang lebih cepat daripada semua loop umpan balik eksternal, memungkinkan perangkat untuk menerima input dengan cepat, dan kemudian menutup pintu masuk tepat waktu sebelum perubahan outputnya akan mengubah nilai input .


Kita juga bisa membuat analogi antara sinyal "aktifkan" (level triggered clock) dan pintu pada pesawat yang menahan tekanan udara. Pemicu level seperti membuka pintu, memungkinkan udara keluar. Namun, kita dapat membangun kunci udara yang terdiri dari dua (atau lebih) pintu, yang tidak terbuka secara bersamaan. Inilah yang terjadi jika kita membagi clock level menjadi beberapa fase.

Contoh paling sederhana dari ini adalah master-slave flip-flop . Ini terdiri dari dua sandal jepit D yang dipicu bertingkat. Tetapi sinyal clock terbalik, sehingga input dari salah satu diaktifkan sedangkan yang lain dinonaktifkan. Ini seperti pintu kunci udara. Secara keseluruhan, flip flop tidak pernah terbuka sehingga sinyalnya dapat melewatinya dengan bebas. Jika kami memiliki umpan balik dari output flip-flop kembali ke input, tidak ada masalah karena melintasi ke fase clock yang berbeda. Hasil akhirnya adalah bahwa master-slave flip-flop memperlihatkan perilaku yang dipicu oleh edge! Sangat berguna untuk mempelajari flip-flop master-slave karena memiliki sesuatu untuk dikatakan tentang hubungan antara level dan edge triggering.


1
Jam multi-fase tingkat-sensitif menghindari masalah "kekacauan" jika tidak ada output kait yang kembali ke inputnya tanpa melalui kait yang diambil sampelnya pada fase clock yang berbeda. Desain semacam itu dapat memiliki beberapa keuntungan ketika menghubungkan prosesor dengan hal-hal seperti memori asinkron, karena waktu antara ujung depan dari satu fase jam dan ujung trailing selanjutnya dapat dibagi secara sewenang-wenang di antara waktu yang diperlukan untuk merutekan dan mengeluarkan alamat, akses waktu RAM, dan waktu pengaturan untuk input data prosesor.
supercat

2
@supercat Sebagai contoh yang umum, master-slave flip-flop dapat dianggap sebagai contoh clocking multi-fase. Master dan slave berada pada fase yang berlawanan, dan kondisi yang sama berlaku jika ada umpan balik: ia pergi ke fase yang berbeda. Saya harus menambahkan ini ke jawaban untuk menyelesaikannya.
Kaz

2
+1 analogi kunci udara. Saya tidak pernah mendengar ada orang yang menjelaskannya dengan cara ini tetapi itu masuk akal.
ajs410

@ ajs410: Analogi lain yang saya suka adalah pelarian jarum jam. Pendulum terhubung ke dua lengan, yang masing-masing dapat memungkinkan gigi lepas bergerak bebas atau memblokirnya saat berikutnya ia mencapai "fase" tertentu. Untuk operasi yang tepat, lengan harus disesuaikan sehingga tidak ada waktu ketika kedua lengan akan membiarkan roda gigi berputar. Tanpa kendala itu, mekanisme akan berputar liar di luar kendali.
supercat

2

Pemicu tepi baik untuk jam, karena memungkinkan nilai output oleh kait sebagai respons terhadap satu (misalnya naik) tepi jam untuk digunakan dalam perhitungan apa yang harus dilakukan pada tepi jam naik berikutnya. Jika seseorang membangun sirkuit berurutan seperti penghitung menggunakan sejumlah kait yang dipicu tepi, seseorang dapat secara acak mencampur komponen logika cepat dan lambat asalkan, untuk setiap jalur yang mungkin, waktu propagasi dikurangi jumlah yang digunakan oleh jam kait kait pengirim, dijamin lebih besar dari waktu penahanan penerima, dan waktu siklus ditambah jumlah jam kait penerima yang tertinggal pengirim, dikurangi waktu propagasi, dijamin lebih besar dari waktu pemasangan penerima.

Sebaliknya, membangun sirkuit untuk menghitung pulsa pada input tunggal tanpa menggunakan kait tepi-dipicu akan memerlukan jaminan tertentu tentang kecepatan relatif dari beberapa bagian sirkuit. Suatu pendekatan yang umum digunakan untuk mengubah sinyal clock yang masuk (ClkIn) menjadi sinyal clock pair yang tidak tumpang tindih (Phi1 dan Phi2). Phi1 benar ketika ClkIn tinggi dan telah tinggi untuk beberapa waktu minimum yang dijamin . Phi2 tinggi ketika ClkIn rendah dan telah rendah untuk beberapa waktu minimum yang dijamin. Ketika ClkIn beralih dari rendah ke tinggi, Phi2 akan menjadi rendah sebelum Phi1 menjadi tinggi; juga saat beralih dari tinggi ke rendah. Orang dapat membangun penghitung dengan memiliki dua set kait (yang saya sebut Count1 dan Count2). Setiap kali Phi1 tinggi, Count1 mengunci Count2. Setiap kali Phi2 tinggi, Count2 terkunci (Count1 +1). Jika Phi1 dan Phi2 keduanya pergi tinggi sekaligus, atau dengan terlalu sedikit waktu di antara mereka, nilai penghitung akan menjadi tak tentu, tetapi asalkan pemisahan yang tepat dipertahankan, penghitung akan beroperasi dengan sangat baik. Sistem dua fase seringkali memiliki jumlah pemisahan yang cukup besar yang direkayasa dalam; asalkan semuanya cukup cepat, pemisahan seperti itu dapat menghindari masalah dengan kemiringan jam.

Secara internal, banyak kait yang dipicu tepi mungkin dianggap sebagai pasangan master / budak dari kait yang ditransfer sehingga master mengunci input setiap kali jam dalam keadaan sebelum tepi, dan budak mengunci master ketika jam tersebut di negara bagian setelah. Sinyal yang memberi makan kedua kait harus memiliki hubungan yang cocok, tetapi jika mereka diproduksi di sekitar yang sama dengan kait, kita tidak perlu merekayasa jumlah pemisahan hampir sebanyak yang diperlukan jika dua fase jam dilakukan. dikirim ke area yang lebih luas.

Perhatikan bahwa meskipun edge-triggering baik untuk jam, ada tujuan lain yang kurang baik. Kadang-kadang menguntungkan untuk peristiwa berkala menjadi gangguan asalkan tidak ada dua peristiwa berbagi sinyal yang dipicu oleh tepi yang sama. Pemicu tepi buruk untuk interupsi bersama, dan dalam beberapa kasus bisa bermasalah bahkan dengan yang tidak dibagi kecuali ada cara untuk polling keadaan kawat interupsi. Pemicu level mungkin juga menguntungkan dalam kasus di mana sinyal strobo akan aktif pada siklus yang sama seperti beberapa informasi yang harus terkunci, tetapi di mana informasi memiliki jalur perhitungan yang lebih panjang daripada strobo. Jika informasi itu seperti alamat untuk chip memori asinkron, membuatnya tersedia kapan saja selama siklus clock mungkin lebih baik daripada menunggu sampai awal siklus clock berikutnya.


2

Untuk memahami mengapa edge triggering lebih disukai, bayangkan sebuah adder 8-bit dihubungkan ke sebuah register, secara konstan menambahkan 1 ke nilai register, dengan sebuah tombol push yang dihubungkan ke pin yang memungkinkan register.

Jika pin pengaktifan register sensitif terhadap level, maka konten register akan terus bertambah selama durasi tombol ditekan. Keadaan register berikutnya tidak akan bersifat deterministik untuk penekanan tombol yang diberikan. Ini karena adder dapat meningkatkan register beberapa kali sebelum Anda dapat menghapus jari Anda - dengan kata lain, umpan balik meninggalkan register dan membuatnya kembali ke adder terlalu cepat.

Jika pin yang diaktifkan lebih sensitif terhadap tepi, isi register akan bertambah tepat sekali setiap kali tombol ditekan, tidak peduli berapa lama tombol itu ditekan (dengan asumsi input benar ditolak). Tidak mungkin output register untuk kembali ke adder tepat waktu untuk perilaku non-deterministik.


1

Seperti kata orang lain, keunggulan adalah momen yang sangat spesifik dalam waktu. Kita semua tahu bahwa sirkuit digital dapat melalui gangguan di mana output dari gerbang salah karena hanya beberapa inputnya telah mencapai itu, sinyal lain sedang dalam perjalanan dan lebih lama karena jalur yang lebih panjang (listrik bergerak cukup cepat tetapi masih 3x10 ^ 8 m / s membutuhkan sedikit waktu untuk berkeliling kabel). Jika kita memiliki unit level trigerred, outputnya akan dipengaruhi oleh gangguan. Dengan membuat hal-hal dipicu kami memiliki jendela yang sangat sempit dalam waktu di mana "hal-hal dapat terjadi", dengan kata lain sirkuit hanya akan mengubah keadaannya (nilai-nilai pada kabel yang berbeda di dalam sirkuit, termasuk output) pada contoh yang ditentukan dengan baik di waktu. Harap perhatikan frasa "instan dalam waktu"

Pada titik ini Anda tidak akan menyadari sesuatu yang disebut "analisis waktu" tetapi saya akan menjelaskan sedikit. Ketika kita membuat sirkuit digital, kita ingin mensimulasikan mereka untuk melihat bagaimana mereka akan berperilaku dan jika perilaku ini sesuai dengan apa yang kita inginkan. Dalam analisis waktu kami memeriksa apakah sinyal dapat mencapai pada titik tertentu dalam rangkaian dalam waktu yang diperlukan. Jika mereka terlalu tertunda maka sirkuit tidak akan berfungsi dengan benar. Dengan menggunakan blok sirkuit yang dipicu tepi alih-alih dipicu level, analisis waktu menjadi sangat mudah karena kita tahu persis kapan hal-hal dapat terjadi di sirkuit. Ini berarti desain sirkuit menjadi lebih mudah juga. Ingatlah bahwa di dunia nyata Anda akan menemukan kait dengan level yang dipicu sangat jarang.


1

Meskipun jawaban lain telah mencakup hampir semua yang ada untuk dikatakan tentang pertanyaan Anda, untuk membuatnya lebih jelas saya telah menambahkan beberapa diagram dan penjelasan singkat.

Bayangkan Anda ingin merancang rangkaian yang mencakup semacam umpan balik. Katakan A = A.B(pada dasarnya gerbang AND dengan umpan balik). Jika Anda menerapkannya menggunakan kait sensitif level sederhana yang menyimpan nilai A, sirkuit Anda akan terlihat seperti ini masukkan deskripsi gambar di sini

Ini bisa menimbulkan masalah. Ketika jam tinggi, kait menjadi transparan, dan gerbang AND menghitung nilai baru A and B. Tetapi nilai diumpankan kembali ke kait, dan karena kait masih transparan (CLK masih tinggi), nilai baru A AND Bdihitung. Inilah yang biasa disebut sebagai Kondisi Balap , yang menciptakan gangguan (tinggi dan rendah yang tidak terduga dalam output) yang Anda sebutkan.

Salah satu solusi untuk masalah ini adalah menjaga agar pulsa CLK sangat singkat, cukup singkat sehingga setelah output gerbang AND dihasilkan, kait dinonaktifkan sebelum nilai dipropagasi kembali ke input lagi. Harus intuitif untuk melihat mengapa ini mungkin sulit dicapai. Itu akan tergantung pada kecepatan switching kait (akhirnya, kait juga terbuat dari gerbang kombinasional), panjang kawat, dan ratusan parameter lainnya.

Pilihan kedua yang lebih layak adalah dengan menggunakan elemen sensitif tepi (flip flop dalam kasus ini), yang pada dasarnya adalah beberapa kait yang terhubung dengan cara yang sangat pintar.

masukkan deskripsi gambar di sini

Pada dasarnya, ketika CLKsinyal tinggi, kait U1 transparan, yang membawa nilai logika pada input A ke output kait U1, ketika CLKsinyal RENDAH, kait U2 menjadi transparan, dan nilai baru A AND Bdihitung. Tetapi nilai ini akan menyebar ke input gerbang AND hanya ketika kait U1 menjadi transparan (CLK adalah TINGGI), dan akibatnya kait U1 menjadi transparan (CLK adalah RENDAH). Yang pada dasarnya sama dengan mengatakan bahwa sirkuit sekarang sensitif terhadap tepi (nilai output berubah hanya pada tepi negatif jam).

Ini menghindari masalah Kondisi Balapan yang dijelaskan sebelumnya, dan itulah sebabnya pemicu level lebih disukai daripada pemicu tepi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.