Metastabilite nedir?


15

Wikipedia makalesinde Elektronikte metastabilite :

Elektronikte ölçülebilirlik, dijital bir elektronik sistemin kararsız bir dengede veya yarı kararlı bir durumda sınırsız bir süre devam edebilmesidir. Metastabil durumlarda, devre düzgün devre çalışması için gereken süre içinde kararlı bir '0' veya '1' mantık seviyesine yerleşemeyebilir. Sonuç olarak, devre öngörülemeyen şekillerde hareket edebilir ve bir sistem arızasına yol açabilir.

Bu iyi bir tanım gibi görünüyor, ama bir uygulamada ne anlama geliyor?

Elektronik tasarımcının bakış açısından, bunun ne zaman meydana gelebileceğine dair bazı örnekler nelerdir ve bu tür bir arıza nerede endişe edilmelidir?

Daha pragmatik veya uygulamalı bir tanım var mı - daha spesifik terimlerle mi?


2
: Leslie Lamport (o bir $ \ LaTeX $ ünü) iyi bu yazıda metastability açıklamasını yazdı research.microsoft.com/users/lamport/pubs/buridan.pdf
markrages

@markrages Brilliant. Bu, düşen kediler ve tereyağlı ekmek ile de olabilir .
Paslı

Yanıtlar:


15

Hızlı Yanıt: Bir flip flop girişindeki kurulum ve tutma süresini ihlal ederseniz, çıkış bir süre için tahmin edilemez olacaktır. Bu öngörülemeyen çıktıya meta-kararlı (veya metastabilite) denir.

Uzun cevap: Çıktı öngörülemez olduğunda, yani öngörülemez olduğu anlamına gelir. Yüksek olabilir, düşük olabilir, arada bir yerde olabilir ya da salınabilir. Bu metastabil dönemden sonra çıktı yüksek veya düşük olacaktır, ancak gerçekleşene kadar hangi yoldan gideceğini bilmiyoruz.

Bununla birlikte, öngörülemediği zaman miktarı biraz tahmin edilebilir. Metastabil periyodun uzunluğunu belirleyen iki ana faktör vardır: Flip-flopun hızı ve "kenara yakın" zamanlamayı nasıl aldınız.

Metastabl sürelerin çoğu oldukça kısadır, ancak uzun zaman geçirme olasılığı sıfır değildir. Teorik olarak, saniyeler içinde ölçülebilir bir zaman geçirebilirsiniz, ancak bunun olasılığı inanılmaz derecede nadirdir. Parmak arası terlik hızı arttıkça, ortalama metastabil zaman azalır - diğer tüm şeyler eşit olur.

Flip-flopta, metastabilite sorunlarına en duyarlı olduğunuz saat kenarına göre "hayali" bir zaman var. Tam olarak ne zaman sıcaklık, gerilim, süreç, ayın evresi, hayvan kurbanları ve hangi siyasi partiye bağlı olduğunuz gibi birçok faktöre bağlıdır. Bu süre ne zaman olursa, veri giriş kenarınız o zaman ne kadar yakınsa, metastabilite süresi o kadar uzun olur.

Metastabilite ile başa çıkmanın en iyi yolu, tüm mantığınızı senkronize etmek ve kurulum ve bekleme sürelerinizi ihlal etmemektir. Bu, elbette, herhangi bir karmaşıklığın devreleri için imkansızdır. Yani yaptığımız şey, metastabilitenin sorun olabileceği yerleri sınırlamak ve sonra bu yerlerle uğraşmak.

Normal yöntem, verileri "çift-saat" yapmaktır. Yani, iki D Flip-Flop'u seri olarak besleyin ve ikincisinin girişini besleyin. Umut, eğer ilk flip-flop metastabil hale gelirse, metastabil dönem ikincinin kurulum / tutma zamanını ihlal etmeden biter. Uygulamada bu oldukça iyi çalışıyor. Süper kritik uygulamalarda bazı "üçlü saatler" devam edebilir.


3
Kurban edilen hayvan türüne bağımlılık var mı?
Paslı

11

Metastabil bir durum, dengesiz bir dengeye benzer. Dengesiz bir dengenin yaygın bir örneği, ters çevrilmiş bir sarkaçtır . Sarkacı dikey konumda dengeleyebiliyorsanız, bu kararlı bir durumdur. Bununla birlikte, herhangi bir şey kolu her iki tarafa da iterse (örneğin hava akımları veya toprak titreşimleri), sarkaç kendisini dikey konuma geri getirmeyecek, düşecektir. Bir tarafa itildiğinde, sonunda tekrar dikey konuma gelecek olan normal bir sarkaç ile kontrast.

Stabil dengeler, elektrik elemanlarında depolama elemanları oluşturmak için kullanılır. Kararsız dengeler iyi depolama öğeleri yapmazlar (çünkü durumlarını kolayca kaybederler), ancak genellikle parazit bir durum olarak bulunurlar.

Ortak bir dijital depolama elemanı, bir çift çapraz bağlı invertördür:

Bir döngüye bağlı iki invertör, çıkıştan girişe

Depolama elemanı, biri soldaki düğümün besleme voltajında ​​ve sağdaki düğümün toprakta, diğeri zıt durumda olduğu iki kararlı duruma sahiptir. Ayrıca, her bir düğümün bir ara voltajda olduğu kararsız bir durum vardır.

Kararsız durumun nasıl ortaya çıktığını daha iyi anlamak için, bir invertörün transfer fonksiyonunu hatırlayın. Transfer fonksiyonunun grafiği, belirli bir giriş voltajı için sürücünün çıkış voltajını gösterir.

İnvertör transfer fonksiyonu

İnverter doğrusal değildir; doğrusal olmayan bir devrenin yaklaşık bir çözümünü elde etmenin basit bir yolu, devre karakteristiklerini çizmektir; arazilerin kesişimleri, devrenin tüm bileşenlerinin elektrik özelliklerinin karşılandığı çözümler veya diğer bir deyişle noktalardır. Normalde bu, Wikipedia'daki bu diyot örneğinde olduğu gibi iv grafikleri ile yapılır . Ancak, invertörler için bunu vv grafikleri ile yapacağız. Çizimdeki ikinci bir invertör aktarım fonksiyonunun üzerine bindirme (ikinci invertör geriye doğru olduğu için eksenler değiştirilerek:

Arka arkaya inverterler için üst üste bindirilmiş aktarım fonksiyonları

Arsaların üç kesişimi vardır: biri (0, Vs), biri (Vs, 0) ve diğeri (Vs / 2, Vs / 2). (Vs / 2, Vs / 2) durumu yarı kararlı. Her iki düğümün de küçük bir pertürbasyonundan sonra, devre (Vs / 2, Vs / 2) yerine geri dönmek yerine her zaman kararlı durumlardan birine yerleşecektir.

Çift invertör depolama elemanına bir değer yazmanın yolu, invertörlerden daha güçlü bir sürücü kullanarak düğümlerden birini istenen değere zorlamaktır. Bunu yapmanın yaygın bir yolu bir geçiş transistörüdür:

Geçiş transistörlü çapraz bağlı invertörler

Geçiş transistörünün kapısını saate bağlarsanız, bir D mandalınız vardır (çıkış yapısını dışarıda bırakıyorum). Saat yüksek olduğunda, geçiş transistörünü etkinleştirerek, mandal şeffaftır - giriş doğrudan çıkışa geçer. Saat düşük olduğunda, mandal önceki değeri tutar. Metastabilite, mandal örnekleri olduğu anda ortaya çıkar. Mandal örneklendiğinde giriş sabit bir yüksek veya düşük voltaj ise, düzgün çalışır. Bununla birlikte, mandal numuneleri girildiğinde giriş Vs / 2 noktasının etrafındaysa, mandalın metastabil (Vs / 2, Vs / 2) durumunda bitmesi olasılığı vardır. Metastabil hale geldiğinde, süresiz olarak orada kalabilir (mandalın tekrar saatlenmediğini varsayarsak), ancak kararsız bir denge olduğundan, genellikle metastabil durumdan çıkarmak için nispeten hızlı bir şey olur.

Metastabilite hakkında ne zaman endişelenmelisiniz

Depolama öğeleriniz düzensiz hale geliyorsa, en azından aşağı akış mantığı için zamanlama bütçesinin bir kısmını kaybedersiniz. Mantıksal durum çözülene kadar mantık istenen değerlendirmeyi yapamaz. En kötü durumda, metastabil durum devam eder veya mantık yoluyla yayılır ve akış aşağı depolama elemanları da metastabil hale gelir veya birden fazla ilgili depolama elemanı tutarsız değerleri yakalar.

Düzgün tasarlanmış ve çalışan senkronize mantık, metastabilite ile ilgili problemlere sahip değildir. Saat periyodu mantığın değerlendirme süresinden daha uzun, tüm flip-flop girişleri bir sonraki saat kenarında sabit (kurulum gereksinimi karşılandı) ve hepsi geçerli bir değer yüklüyor.

Metastabilitenin endişe verici olduğu bazı genel durumlar şunlardır:

  • Harici bir girişi, örneğin ön paneldeki bir anahtarı veya herhangi bir zamanda geçiş yapabilen monitör devrelerinin çıkışını (düşük gerilim, aşırı sıcaklık) mantık örnekleme.
  • Eşzamanlı ilişkisi olmayan birden çok saat kullanan mantık. Bu genellikle belirli saat gereksinimlerine sahip G / Ç arabirimlerinde ortaya çıkar, ancak çipin farklı bölümlerinin farklı performans gereksinimleri olduğunda dahili olarak da oluşur. Örneğin, 3 GHz CPU'nuzdaki tüm mantık aslında 3 GHz'de çalışmıyor. (Bir CPU harika bir örnek değildir, çünkü CPU'daki saatlerin çoğu birbirinin senkron katlarıdır.)

Çoğunlukla güzel bir cevap, ancak belirtilmesi gereken başka bir şey, yayılma gecikmeleri nedeniyle tek bir metastabil durumun değil, bütün bir ailenin ve metastabil durumların tanımlanmasının belirli bir yolu olmadığıdır. Üç-durumlu çıkışlı (yüksek / düşük / metastabil) bir devre tasarlanabilir ve çıktılar düşebilirse veya bunun tersi olursa "yüksek" asla rapor edilmeyecek şekilde düzenlenebilir, ancak çıkışın garantisi yoktur. 'yüksek' ve 'metastabil' ('yüksek' biten) veya 'düşük' ve 'metastabil' ('düşük' biten) arasında sıçramaz.
supercat

+1 Bu iyi bir şey ama @David Kessner'in cevabını okuduktan sonra daha anlamlı. +2 Grafikler için.
Paslı

3

Metastabil bir sinyal, herhangi bir keyfi şekilde herhangi bir keyfi şekilde yüksek veya düşük görünebilen bir sinyaldir. Eğer sinyal doğrudan veya dolaylı olarak birden fazla kapı besliyorsa , bu kapıların bazıları yüksek "görürken" diğerleri düşük görür. Kötü şeyler.

Tek bir saati olan sistemlerde, metastabil sinyaller genellikle iki mandaldan geçirilerek ele alınabilir. Saatler açarken daha zor bir sorun ortaya çıkıyor. Metastabilite mümkün değilse harika çalışan çok sayıda devre (özellikle RS mandalları kullanarak) vardır, ancak metastabilite meydana gelirse, runt saat darbeleri üretebilir (bu da aşağı yönde metastabiliteye neden olabilir).

Bu arada, metastabilite ile ilgili yapılması gereken bir başka önemli nokta: bir mandalın yayılma süresi, numune ve tutma sürelerinin karşılanması durumunda çıktının yeni değerinde stabil olacağını gösterir. Kurulum ve tutma süreleri karşılanmazsa, mandalın geçerli bir saatli ölçüm olayı alana kadar çıkışın değişip değişmeyeceği veya değişmeyeceği konusunda hiçbir garanti yoktur. Çıktı temiz bir şekilde değişiyor gibi görünse bile, kendiliğinden geri dönmeyeceğinin garantisi yoktur.


2

Klasik durum, senkron bir mandal için kurulum / tutma sürelerini ihlal ediyorsanız ve FPGA'ları tasarlarken bilmeniz gereken bir konudur (eminim Xilinx ve Altera'nın bu konuda notları olacaktır). Bir sinyal herhangi bir rastgele zamanda gelebiliyorsa, saatinizi ayarlarken kurulum / tutma süresi penceresi özelliklerinde değişmediğinden asla emin olamazsınız. Olan şey, mandal çıkışının saat kenarından sonra belirtilen zamanda yüksek veya alçak olması yerine, kararlı bir duruma geçmeden önce bir süre taklidi yapabilir. Bunu önlemenin normal yolu, gecikme gereksinimleriniz ile metastabilite olasılığı arasındaki dengeye bağlı olarak, aynı saatle veya gecikmeli veya faz dışı bir saatle 2 aşamalı bir mandal kullanmaktır. Bu, ikinci mandal kararlı bir duruma mandallanmadan önce ilk mandallama süresinin stabilize olmasını sağlar. Bu arada, bu, harici I / O sinyalleri genellikle CPU saatiyle senkronize olmadığından mikrodenetleyicilerin dahili olarak uğraşması gereken bir şeydir, bu nedenle I / O portları genellikle sorunları önlemek için çift mandallama düzenlemesine sahiptir ve yazılımın endişelenmesine gerek yoktur . Yıllar önce, kurulum / bekletme süresi spesifikasyonunun dışında değişen verilerin bir veri yolu okumasının, bir şubenin ne şube hedefi ne de bir sonraki talimat olan bir adrese neden olabileceği 6502 ile ilgili bir sorun hakkında belirsiz bir şekilde hatırlama devlet metastabil oldu. Bu videoda bazı örnekler gösterilmektedir: Yıllar önce, kurulum / bekletme süresi spesifikasyonunun dışında değişen verilerin bir veri yolu okumasının, bir şubenin ne şube hedefi ne de bir sonraki talimat olan bir adrese neden olabileceği 6502 ile ilgili bir sorun hakkında belirsiz bir şekilde hatırlama devlet metastabil oldu. Bu videoda bazı örnekler gösterilmektedir: Yıllar önce, kurulum / bekletme süresi spesifikasyonunun dışında değişen verilerin bir veri yolu okumasının, bir şubenin ne şube hedefi ne de bir sonraki talimat olan bir adrese neden olabileceği 6502 ile ilgili bir sorun hakkında belirsiz bir şekilde hatırlama devlet metastabil oldu. Bu videoda bazı örnekler gösterilmektedir:http://www.youtube.com/watch?v=tKHCwjWMMyg

Bir benzetme, birisine bir top atarsanız - çoğunlukla ya yakalar ya da düşürür / kaçırırlar, bu nedenle fırlatmadan belirli bir süre sonra, ya tutarlar ya da tutmazlar. Ama bazen yakalamadan ya da düşürmeden önce bir süre fışkırırlar, bu yüzden devletleri ne tutuyor ne de düşüyor - bu metastabil durum!


Halen 6502 tabanlı sistemlerle hobi olarak çalışıyorum. Veriyolu verilerindeki metastabilite problemlerinin bazı özelliklerini bilmek güzel olurdu. Akümülatör $ FF tutarsa ​​ve biri 00 veya 01 $ değerinde bir değer okursa, akümülatörün olası herhangi bir değerle sonuçlanabileceğini kesinlikle tahmin edebilirim. Yine de, herhangi bir dal alınmadan önce, iki döngünün daha uzun süre geçmesini beklerdim, bu sırada bayraklar iki kez bağlanırdı. Bu kadar uzun süre kalan metastabil bir durumu hayal edemiyorum.
supercat

Bu ikinci veya üçüncü elden belki 20 yıl önce duyduğum bir şeydi, ancak ne yaptığını kesinlikle bilen insanlardan kaynaklandı - BBC Micro için 6502 ikinci işlemcideki Tüp arayüzü ve durumun okunmasıyla ilgiliydi. bayraklar ve bir zamanlar na-blue-moon bir olaydı, ancak ürün lansmanını geciktirecek kadar sıktı. Sinyaller muhtemelen boru hattının çeşitli aşamalarında dahili olarak mandallandığından, 2 devrenin sürmesi gerekmezdi. Bence o zaman mevcut olan en hızlı 6502 varyantı - 3MHz 65C02 ISTR.
mikeselectricstuff

İlginç. [BTW, noktalama işareti kullanmadan herhangi bir yolu var mı? Bu döngünün 2'si. Veriler, bir sonraki döngünün 1. fazında ALU'ya beslenir (bu, aşağıdaki talimat için opcode getirme olacaktır). Bundan sonraki döngü işlenen getirme olacaktır. O noktada işler hala metastabilerse, sistem eriyebilirdi, ancak dinamik kayıtlar iki kez ilişkilendirileceği için bu pek olası görünmüyordu.
supercat

Veri yolu metastabilitesinin 6502'yi etkilemesinin imkansız olduğunu söylemek istemiyorum, çünkü açıklayamadığım başka garip davranışlar olduğunu biliyorum. Örneğin, veri yolu saatin 2. fazı sırasında mandallanır ve bir sonraki faz 1 sırasında harekete geçer. Bununla birlikte, davranışı döngünün ilk bölümünde veri veri yolunun içeriğinden etkilenen birkaç belgelenmemiş talimat vardır (1. aşamada video getiren C64 ve Apple gibi makinelerde gösterilebilir). Nasıl bilmiyorum ...
Supercat

... bu talimatların davranışı aslında erken veri yolu davranışından etkileniyor, ancak bunun bir çeşit garip yarış durumu olduğundan şüpheleniyorum. Opcodlardan biri olan IIRC, LDA #imm, LDX #imm ve TAX için kod çözme desenleriyle eşleşir, böylece ALU'nun çıkışı girişine geri eşlenir. Tuhaf.
supercat
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.