Kenar tetikleme neden seviye tetiklemeye göre tercih edilir?


18

Kenar tetiklemenin neden düzey tetiklemeye göre tercih edildiğini anlamaya çalışıyorum. Kitabımda net bir şekilde açıklanmadı. Çevrimiçi arama yaptıktan sonra, kenar tetiklemenin aksaklıklara karşı duyarsız olduğunu, ancak seviye tetiklemenin hassas olduğunu öğrendim. Bu ne demek?

Ayrıca ben aşağıdakileri anlamak mümkün değilim: "Saat seviyesi duyarlı, yeniyse mantık ağı üzerinden acele ve çıkışını değiştirebilir biz çıkış yakalamak bir kısa darbe ihtiyaç ve sürekli tutun Bunu önlemek için.. Ancak bu kısa darbenin oluşturulması kolay değildir, bu nedenle kenar tetikleme için gidiyoruz. Geri bildirim sorunu çözüldü, çünkü yeni çıkışın tek bir yükselen kenar içinde girdiye geri dönmesi için yeterli zaman yok. "Sn

Çıktının neden seviye tetiklemesinde acele etmeyeceğini ve çıktıyı tutmak için neden kısa bir darbeye ihtiyacımız olduğunu anlamadım.

İkincisi, geri besleme problemi, seviye tetikleme süresi kenar tetikleme ile karşılaştırıldığında uzun olduğu için, birincisi durumunda, çıktı tekrar girişe geri beslenecek ve saat aktif olduğu sürece bunu yapmaya devam edecektir. . Geri bildirim sorunu nedir?

Ancak kenar tetiklemede nasıl çözülecek? Düşme veya yükselme süresi çok kısaysa, çıktı tüm kapılardan nasıl yayılabilir? Kenar tetikleme uygulandıktan sonra çıkış tüm kapılardan yayılacak ve sonraki girişler sadece bir sonraki saat kenarında değerlendirilecek mi?


1
"kenar tetikleme uygulandıktan sonra çıkış tüm kapılardan yayılacak ve sonraki girişler sadece bir sonraki saat kenarında dikkate alınacaktır" - bullseye !!
Wouter van Ooijen

Yanıtlar:


12

Bir kenar zaman içinde iyi tanımlanmış bir an olsa da, seviye tetiklemenin de zaman içinde iyi tanımlanmış bir anı olmadığını söylemek doğru değildir. Öyle. Saatin seviyesinin düştüğü, saatli devreye girişlerin örneklendiği ve girişlerde daha fazla değişiklik yapılmadığı zaman içinde iyi tanımlanmış bir an vardır.

Seviye tetiklemeyle ilgili sorun, saat seviyesi yüksekken girişlerin çıkışları değiştirmesidir. Geri beslemesi olan devrelerde (çıkışlar girişlere geri bağlanır) seviye tetiklemesi kaosa neden olur, çünkü seviye, çıkışın aynı süre içinde girişlere geri beslenebileceği kadar geniştir (yarım saat döngüsü).

tt+1

Seviyeyi istenmeyen geri bildirimin gerçekleşmesinin imkansız olduğu noktaya kısaltmasını öneren ilk bariz çözüm (ve saat süresini keyfi olarak yavaşlatsak bile "açık" seviyesini kısa tutması). Saati hızlı bir şekilde 0'dan 1'e ve 0'a geri döndürdüğümüzü varsayalım, böylece saatli cihazlar girişlerini kabul eder, ancak çıkışların bu girişleri değiştirmek için geri besleme döngüsünden yarışacak kadar zamanı yoktur. Bununla ilgili sorun, dar darbelerin güvenilir olmaması ve temel olarak saat frekansından daha hızlı birkaç büyüklük sırası olabilecek bir yanıt gerektirmesidir. Sistem sadece 1 Mhz'de çalışsa bile, nanosaniye genişliğinde bir darbeye ihtiyacımız olduğunu görebiliriz. O zaman temiz, keskin, yeterince uzun nanosaniye genişliğinde bakliyatları 1 Mhz için tasarlanmış bir otobüse dağıtma problemimiz var.

Bu durumda bir sonraki mantıksal adım, cihazların saat kenarının zaman türevi olarak kendileri için dar darbeyi üretmelerini sağlamaktır. Saat bir seviyeden diğerine geçerken, cihazların kendileri dahili olarak kısa bir darbe üretebilir ve bu da girişlerin örneklenmesine neden olur. Bu darbenin kendisini saat veri yolu üzerinden dağıtmak zorunda değiliz.

Ve böylece temelde her şeyin sonunda seviye tetikli olduğunu düşünebilirsiniz. Kenar tetikleme, cihazların tüm harici geri besleme döngülerinden daha hızlı olan çok ince bir düzey tetikleyici oluşturmasına izin veren, cihazların girişleri hızlı bir şekilde kabul etmesine izin veren ve daha sonra değişen çıkışları girişlerin değerlerini değiştirmeden önce girişi kapatacak bir numaradır. .


"Etkinleştirme" sinyali (seviye tetikli saat) ile hava basıncını tutan bir araç üzerindeki bir kapı arasında bir benzetme de yapabiliriz. Seviye tetikleme, havanın kaçmasına izin veren bir kapı açmak gibidir. Ancak, aynı anda açık olmayan iki (veya daha fazla) kapıdan oluşan bir hava kilidi inşa edebiliriz. Seviye saatini birden fazla aşamaya böldüğümüzde olan budur.

Bunun en basit örneği master-slave flip-flop'tur . Bu, birlikte basamaklandırılmış iki seviye tetikli D flip floptan oluşur. Ancak saat sinyali ters çevrilir, bu yüzden birinin girişi diğeri devre dışı iken etkinleştirilir veya tersi de geçerlidir. Bu bir hava kilidi kapısı gibi. Bir bütün olarak, flip flop, sinyalin serbestçe geçebilmesi için asla açık değildir. Flip-flopun çıkışından girdiye geri dönmesi durumunda, farklı bir saat fazına geçtiği için herhangi bir sorun yoktur. Sonuçta, master-slave flip-flop kenar tetiklemeli davranış sergiler! Master-slave flip-flop'u incelemek yararlıdır, çünkü seviye ve kenar tetikleme arasındaki ilişki hakkında söylenecek bir şey vardır.


1
Seviyeye duyarlı çok fazlı saatler, hiçbir mandal çıkışı farklı bir saat fazında örneklenen bir mandaldan geçmeden girişine geri beslenmezse "kaos" sorununu önler. Bu tür tasarımlar, işlemcileri eşzamansız anılar gibi şeylerle arayüzleştirirken bazı avantajlara sahip olabilir, çünkü bir saat fazının ön kenarı ile bir sonrakinin arka kenarı arasındaki zaman, adresi yönlendirmek ve çıktılamak için gereken zaman, erişim arasında keyfi olarak bölünebilir. RAM zamanı ve işlemcinin veri girişi için kurulum zamanı.
supercat

2
@supercat Bilindik bir örnek olarak, master-slave flip-flop, çok fazlı saat ölçümünün bir örneği olarak düşünülebilir. Efendi ve köle karşıt aşamalardadır ve bu nedenle geri bildirim varsa aynı durum geçerlidir: farklı bir aşamaya gider. Bunu cevaplamak için cevaba eklemeliyim.
Kaz

2
+1 hava kilidi benzetmesi. Hiç kimsenin bunu bu şekilde açıkladığını duymadım ama bu çok mantıklı.
ajs410

@ ajs410: Sevdiğim bir diğer benzetme de saat kaçması. Sarkaç, her biri kaçış dişlisinin serbestçe hareket etmesine izin verebilecek veya belirli bir "faz" a ulaştığında bloke edebilecek iki kola bağlıdır. Düzgün çalışma için kollar, her iki kolun da dişlinin dönmesine izin vereceği zaman kalmayacak şekilde ayarlanmalıdır. Bu kısıtlama olmadan, mekanizma çılgınca kontrolden çıkardı.
22:13

2

Kenar tetikleme, saatler için iyidir, çünkü bir (örneğin yükselen) saat kenarına yanıt olarak bir mandalın çıkış değerinin bir sonraki yükselen saat kenarında ne yapması gerektiğinin hesaplanmasında kullanılmasına izin verir. Bir kişi kenar tetiklemeli mandallar kullanan bir sayaç gibi ardışık bir devre oluşturuyorsa, olası her yol için yayılma süresi eksi alıcı saatin geciktiği miktardan hızlı ve yavaş mantık bileşenlerini keyfi olarak karıştırabilir. gönderenin, alıcının bekletme süresinden daha büyük olacağı garanti edilir ve döngü süresi artı alıcı mandalının saatinin gönderenlere gecikme süresi, yayılma süresi hariç, alıcının kurulum süresinden daha fazladır.

Aksine, kenar tetiklemeli mandallar kullanmadan tek bir girişteki darbeleri saymak için bir devre oluşturmak, devrenin bazı bölümlerinin nispi hızları hakkında belirli garantiler gerektirir. Gelen bir saat (ClkIn) sinyalini örtüşmeyen bir çift saat sinyaline (Phi1 ve Phi2) dönüştürmek için kullanılan genel bir yaklaşım. Phi1, ClkIn yüksek ve garanti edilen minimum süreler boyunca yüksek olduğunda doğrudur . Phi2, ClkIn düşük olduğunda ve garanti edilen minimum süre boyunca düşük olduğunda yüksektir. ClkIn düşükten yükseğe değiştiğinde Phi2, Phi1 yükselmeden önce alçalır; aynı şekilde yüksekten alçağa geçtiğinde. Biri iki adet mandal setine sahip bir sayaç oluşturabiliriz (buna Count1 ve Count2 diyeceğim). Phi1 her yükseldiğinde, Count1, Count2'yi kilitler. Phi2 her yükseldiğinde, Count2 mandalları (Count1 + 1). Phi1 ve Phi2'nin ikisi de aynı anda yükselirse veya aralarında çok az zaman varsa, sayaç değeri belirsizleşir, ancak uygun ayırmanın sürdürülmesi koşuluyla, sayaç çok iyi çalışır. İki fazlı saat sistemleri genellikle çok cömert bir şekilde ayrılır; her şey yeterince hızlı olduğu sürece, bu ayırma saat eğriliği ile ilgili sorunları önleyebilir.

Dahili olarak, kenar tetiklemeli birçok mandal, ana kenar, saat kenardan önceki durumdayken girişi kilitleyecek şekilde bağlanır ve ana, saat saat olduğunda ana aygıtı kilitler. sonra devlet. İki mandalı besleyen sinyallerin uygun bir ilişkiye sahip olmaları gerekir, ancak mandallarla aynı bölgede üretilirlerse, iki saat fazı olsaydı ayırma miktarını neredeyse gerektiği kadar fazla mühendisliğe ihtiyaç duymaz. daha geniş bir alana gönderildi.

Kenar tetiklemenin saatler için iyi olmasına rağmen, bunun daha az iyi olduğu başka amaçlar olduğunu unutmayın. İki olayın aynı kenar tetiklemeli sinyali paylaşmaması şartıyla periyodik olayların kesintiye uğraması bazen avantajlıdır. Kenar tetikleme paylaşılan kesintiler için berbattır ve bazı durumlarda kesme telinin durumunu yoklamanın bir yolu yoksa, paylaşılmamış olanlarla bile sorunlu olabilir. Seviye tetikleme, bir flaşör sinyalinin mandallanması gereken bazı bilgilerle aynı döngüde aktif olacağı, ancak bilginin flaştan daha uzun bir hesaplama yoluna sahip olduğu durumlarda da avantajlı olabilir. Bilgiler, zaman uyumsuz bir bellek yongasının adresi gibi bir şeyse, bir saat döngüsü sırasında bir süre kullanılabilir hale gelmesi, bir sonraki saat döngüsünün başlangıcına kadar beklemesinden daha iyi olabilir.


2

Kenar tetiklemenin neden tercih edildiğini anlamak için, bir kayıt defterine bağlanmış, sürekli olarak kayıt değerine 1 ekleyerek, kaydın etkinleştirme pimine bir düğme ile bağlı olan 8 bitlik bir toplayıcının hayal edin.

Kaydın etkinleştirme pimi düzeye duyarlıysa, kaydın içeriği düğmeye basıldığında sürekli olarak artacaktır. Kaydın bir sonraki durumu, belirli bir düğmeye basıldığında belirleyici olmayacaktır. Bunun nedeni, toplayıcının parmağınızı kaldırmadan önce kaydı birçok kez arttırabilmesidir - başka bir deyişle, geri bildirim kayıttan ayrılır ve çok hızlı bir şekilde toplayıcıya geri döndürür.

Bunun yerine etkinleştirme pimi kenara duyarlı olsaydı, düğmeye ne kadar süre basılırsa basılırsa, girişin içeriği tam olarak bir kez artar (girişin düzgün şekilde kaldırıldığı varsayılarak). Belirli bir belirleyici olmayan davranış için kaydın çıktısının toplayıcıya zamanında geri dönmesi imkansızdır.


1

Diğerlerinin dediği gibi, kenar zaman içinde çok spesifik bir andır. Hepimiz biliyoruz ki dijital devreler, bir girişin yanlış olduğu yerlerde hatalardan geçebilir, çünkü girişlerinden sadece birkaçı ona ulaştı, diğer sinyaller yolda ve daha uzun yol nedeniyle daha uzun sürüyor (elektrik oldukça hızlı gidiyor) ancak yine de 3x10 ^ 8 m / s kabloların etrafında dolaşmak biraz zaman alır). Seviye trigerlenmiş bir ünitemiz varsa, çıktısı aksaklıklardan etkilenecektir. Bir şeyleri kenar tetiklemeyle, zamanın "şeylerin olabileceği" çok dar bir pencereye sahibiz, yani devre sadece durumunu (çıkış dahil olmak üzere devre içindeki farklı kablolardaki değerler) belirli iyi tanımlanmış anlarda değiştirecektir. saati. Lütfen "zaman içindeki anlar" ifadesine dikkat edin

Bu noktada "zamanlama analizi" olarak adlandırılan bir şeyin farkında olmayacaksınız ama biraz açıklayacağım. Dijital devreler yaptığımızda, nasıl davranacaklarını ve bu davranışın yapmasını istediğimiz şeye uyup uymadığını görmek için onları simüle etmek istiyoruz. Zamanlama analizinde, sinyallerin gerekli süre içinde devrede belirli bir noktaya erişip erişemediğini kontrol ederiz. Devreden daha fazla gecikmişlerse devre düzgün çalışmaz. Seviyede tetiklenen yerine kenar tetiklemeli devre blokları kullanarak, zamanlama analizi çok kolay olur, çünkü devrede ne zaman olabileceğini tam olarak biliriz. Bu, devrenin tasarımının da daha kolay hale geldiği anlamına gelir. Gerçek dünyada seviye tetikli mandallarla çok nadir karşılaşacağınızı unutmayın.


1

Diğer yanıtlar sorunuzla ilgili söylenecek hemen hemen her şeyi kapsamasına rağmen, daha açık hale getirmek için birkaç diyagram ve kısa bir açıklama ekledim.

Bir tür geri bildirim içeren bir devre tasarlamak istediğinizi düşünün. Deyin A = A.B(temelde bir geribildirim ile bir AND geçidi). A değerini saklayan basit bir seviyeye duyarlı mandal kullanarak uygularsanız, devreniz şöyle görünecektir resim açıklamasını buraya girin

Bu bir sorun yaratabilir. Saat yüksek olduğunda, mandal şeffaf hale gelir ve AND geçidi yeni değerini hesaplar A and B. Ancak değer mandala geri beslenir ve mandal hala şeffaf olduğundan (CLK hala yüksektir), yeni değeri A AND Bhesaplanır. Sıklıkla bahsettiğiniz aksaklıklar (beklenmedik yüksekler ve çıktılarda düşükler) yaratan bir Yarış Koşulu olarak adlandırılır .

Bu soruna bir çözüm, CLK darbesini çok kısa ve AND geçidinin çıkışı üretildikten sonra, değer tekrar girişe yeniden yükseltilmeden önce mandalın devre dışı bırakılacağı kadar kısa tutmak olacaktır. Bunu başarmanın neden zor olabileceğini görmek sezgisel olmalıdır. Mandalın anahtarlama hızına (son olarak, kombinasyonel kapılardan bir mandal da yapılır), telin uzunluğuna ve yüzlerce başka parametreye bağlı olacaktır.

Daha uygun bir ikinci seçenek de, kenara duyarlı bir eleman (bu durumda bir flip flop) kullanmaktır, bu da temel olarak çok akıllı bir şekilde bağlanmış birkaç mandaldır.

resim açıklamasını buraya girin

Temel olarak, CLKsinyal yüksek olduğunda, U1 mandalı şeffaftır, bu da A girişindeki mantık değerini U1 mandalının çıkışına getirir, CLKsinyal DÜŞÜK olduğunda, U2 mandalı şeffaf olur ve yeni bir değeri A AND Bhesaplanır. Ancak bu değer, VE geçidinin girişine yalnızca U1 mandalı şeffaf olduğunda (CLK YÜKSEK) ve sonuç olarak U1 mandalı şeffaf olduğunda (CLK DÜŞÜK) yayılır. Bu temelde devrenin artık kenara duyarlı olduğunu söylemekle eşdeğerdir (çıkış değeri sadece saatin negatif kenarında değişir).

Bu, daha önce açıklanan Yarış Koşulu problemini önler ve bu nedenle kenar tetiklemeye göre seviye tetikleme tercih edilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.