Z artykułu w Wikipedii Metastabilność w elektronice :
Metastabilność w elektronice to zdolność cyfrowego systemu elektronicznego do utrzymywania się przez nieograniczony czas w niestabilnej równowadze lub stanie metastabilnym. W stanach metastabilnych obwód może nie być w stanie osiągnąć stabilnego poziomu logicznego „0” lub „1” w czasie wymaganym do prawidłowego działania obwodu. W rezultacie obwód może działać w nieprzewidywalny sposób i może prowadzić do awarii systemu.
To wydaje się być dobra definicja, ale co to oznacza w aplikacji?
Z punktu widzenia projektanta elektroniki, jakie są przykłady tego, kiedy może się to zdarzyć i gdzie powinien być problem tego typu awarii?
Czy istnieje bardziej pragmatyczna lub stosowana definicja - coś bardziej szczegółowego?
Odpowiedzi:
Szybka odpowiedź: jeśli naruszysz konfigurację i przytrzymasz czas na wejściu przerzutnika, wyjście będzie nieprzewidywalne przez pewien czas. Ten nieprzewidywalny wynik nazywany jest metastabilnością (lub metastabilnością).
Długa odpowiedź: gdy wynik jest nieprzewidywalny, to znaczy, że jest nieprzewidywalny. Może być wysoki, może być niski, może być gdzieś pośrodku lub może oscylować. Po tym metastabilnym okresie wynik będzie wysoki lub niski, ale nie wiemy, w którą stronę pójdzie, dopóki się nie wydarzy.
Czas, który jest nieprzewidywalny, jest jednak dość przewidywalny. Długość dwóch metastabilnych okresów determinują dwa główne czynniki: szybkość przerzutu i czas „zbliżony do krawędzi”.
Większość metastabilnych czasów jest dość krótka, chociaż prawdopodobieństwo długiego czasu jest niezerowe. Teoretycznie możesz mieć metastabilny czas rzędu sekund, chociaż szanse na to są niezwykle rzadkie. Wraz ze wzrostem prędkości przerzutu zmniejsza się średni czas metastabilności - wszystkie inne rzeczy są równe.
W flip-flopie występuje „wyimaginowany” czas względem krawędzi zegara, w którym jesteś najbardziej podatny na problemy z metastabilnością. Dokładnie wtedy, gdy jest to zależne od wielu czynników, takich jak temperatura, napięcie, proces, faza księżyca, ofiary ze zwierząt i z jaką partią polityczną należysz. Ilekroć jest ten czas, im bliżej tego czasu znajduje się zbocze wejściowe danych, tym dłuższy będzie czas metastabilności.
Najlepszym sposobem radzenia sobie z metastabilnością jest zsynchronizowanie całej logiki i nienaruszanie czasu konfiguracji i wstrzymania. Jest to oczywiście trudne lub niemożliwe dla obwodów o dowolnej złożoności. Więc staramy się ograniczyć miejsca, w których metastabilność może być problemem, a następnie zająć się tymi miejscami.
Normalną metodą byłoby „podwójne zegarowanie” danych. Oznacza to, że mają dwa przerzutniki D połączone szeregowo z wyjściem pierwszego zasilającym wejście drugiego. Mamy nadzieję, że jeśli pierwszy flip-flop stanie się metastabilny, okres metastabilności skończy się, zanim naruszy on czas ustawienia / wstrzymania drugiego. W praktyce działa to całkiem dobrze. W aplikacjach o bardzo krytycznym znaczeniu może występować „potrójny taktowanie”.
źródło
Stan metastabilny jest podobny do niestabilnej równowagi. Typowym przykładem niestabilnej równowagi jest odwrócone wahadło . Jeśli potrafisz wyważyć wahadło w pozycji pionowej, jest to stan stabilny. Jeśli jednak cokolwiek popchnie dźwignię w którąkolwiek stronę (na przykład prądy powietrza lub wibracje gruntu), wahadło nie powróci do pozycji pionowej, spadnie. Kontrastuj ze zwykłym wahadłem, które po przesunięciu na bok ostatecznie ustabilizuje się z powrotem w pionie.
Stabilne równowagi są stosowane w systemach elektrycznych do tworzenia elementów magazynowych. Niestabilne equlibria nie tworzą dobrych elementów do przechowywania (ponieważ łatwo tracą swój stan), ale często istnieją jako stan pasożytniczy.
Wspólnym cyfrowym elementem pamięci jest para falowników sprzężonych krzyżowo:
Element magazynujący ma dwa stabilne stany, jeden, w którym węzeł po lewej stronie znajduje się pod napięciem zasilającym, a węzeł po prawej stronie znajduje się na ziemi, a drugi w odwrotnym stanie. Istnieje również stan niestabilny, w którym każdy węzeł jest pod napięciem pośrednim.
Aby lepiej zrozumieć, jak powstaje stan niestabilny, przywołaj funkcję przenoszenia falownika. Wykres funkcji przenoszenia pokazuje napięcie wyjściowe falownika dla danego napięcia wejściowego.
Falownik jest nieliniowy; jednym prostym sposobem na uzyskanie przybliżonego rozwiązania obwodu nieliniowego jest wykreślenie charakterystyki obwodu; punktami przecięcia wykresów są rozwiązania, czyli innymi słowy, punkty, w których właściwości elektryczne wszystkich elementów obwodu są spełnione. Zwykle odbywa się to za pomocą wykresów iv, jak w tym przykładzie diod na Wikipedii . Jednak w przypadku falowników zrobimy to z wykresami vv. Nakładanie drugiej funkcji przenoszenia falownika na wykres (z zamienionymi osiami, ponieważ drugi falownik jest odwrócony:
Istnieją trzy przecięcia wykresów: jeden przy (0, Vs), jeden przy (Vs, 0) i jeden przy (Vs / 2, Vs / 2). Stan (Vs / 2, Vs / 2) jest metastabilny. Po niewielkim zaburzeniu któregoś z węzłów obwód prawie zawsze ustabilizuje się w jednym ze stabilnych stanów, zamiast wracać do (Vs / 2, Vs / 2).
Sposobem na zapisanie wartości do elementu pamięci z podwójnym falownikiem jest wymuszenie jednego z węzłów do pożądanej wartości za pomocą sterownika, który jest silniejszy niż falowniki. Jednym z powszechnych sposobów na to jest tranzystor pass:
Jeśli podłączysz bramkę tranzystora przejściowego do zegara, otrzymasz zatrzask D (pomijam strukturę wyjściową). Gdy zegar jest wysoki, umożliwiając tranzystor przejściowy, zatrzask jest przezroczysty - wejście przechodzi bezpośrednio na wyjście. Gdy zegar jest niski, zatrzask przechowuje poprzednią wartość. Metastabilność powstaje w momencie, gdy próbki zatrzasku. Jeśli na wejściu jest stabilne wysokie lub niskie napięcie, gdy próbka zatrzasku pobiera próbki, będzie działać poprawnie. Jeśli jednak wejście znajduje się wokół punktu Vs / 2, gdy próbki zatrzasku próbkują, istnieje możliwość, że zatrzask skończy się w stanie metastabilnym (Vs / 2, Vs / 2). Gdy znajdzie się w stanie metastabilnym, może pozostać tam w nieskończoność (zakładając, że zatrzask nie jest taktowany ponownie), ale ponieważ jest to niestabilna równowaga, coś zwykle dzieje się stosunkowo szybko, aby wybić go ze stanu metastabilnego.
Kiedy martwić się o metastabilność
Jeśli twoje elementy pamięci stają się metastabilne, to tracisz przynajmniej część budżetu czasowego dla logiki niższego rzędu. Logika nie może wykonać żądanej oceny, dopóki stan metastabilny nie zostanie rozwiązany. W najgorszym przypadku stan metastabilny utrzymuje się lub propaguje za pomocą logiki, a elementy pamięci masowej niższego rzędu również stają się metastabilne lub wiele powiązanych elementów pamięciowych przechwytuje niespójne wartości.
Prawidłowo zaprojektowana i działająca logika synchroniczna nie ma problemów z metastabilnością. Okres taktowania jest dłuższy niż czas oceny dla logiki, wszystkie wejścia flip-flop są stabilne przy następnym zboczu zegara (spełnione są wymagania konfiguracji) i wszystkie ładują prawidłową wartość.
Niektóre z typowych sytuacji, w których problemem jest metastabilność, to:
źródło
Sygnał metastabilny to taki, który może przez dowolnie długi czas wydawać się wysoki lub niski w dowolnym dowolnym wzorze. Jeśli sygnał zasila wiele bramek bezpośrednio lub pośrednio , możliwe, że niektóre z nich „zobaczą” go wysoko, a inne - niskiego. Paskudne rzeczy.
W systemach z jednym zegarem często można sobie radzić z sygnałami metastabilnymi, przechodząc przez dwa zatrzaski. Trudniejszy problem pojawia się przy bramkowaniu zegarów. Istnieje wiele obwodów (szczególnie przy użyciu zatrzasków RS), które działałyby wspaniale, gdyby metastabilność nie była możliwa, ale które, jeśli wystąpi metastabilność, mogą w końcu generować impulsy zegara runt (co z kolei może powodować metastabilność w dół).
Nawiasem mówiąc, kolejna ważna kwestia dotycząca metastabilności: czas propagacji zatrzasku wskazuje, kiedy, jeśli zostaną spełnione czasy próbkowania i wstrzymania , wynik będzie stabilny na nowej wartości. Jeśli czasy ustawiania i wstrzymania nie są spełnione, nie ma gwarancji, czy lub kiedy wyjście zostanie przełączone, czy nie, aż do momentu, gdy zatrzask otrzyma prawidłowe zdarzenie taktowania. Nawet jeśli wyjście „wydaje się” przełączać czysto, nie ma gwarancji, że nie spontanicznie się przełączy.
źródło
Klasyczny przypadek polega na tym, że naruszasz czasy konfiguracji / wstrzymania synchronicznego zatrzasku i jest to problem, o którym musisz pamiętać przy projektowaniu układów FPGA (jestem pewien, że Xilinx i Altera będą miały na ten temat przypisy). Jeśli sygnał może nadejść w dowolnym momencie losowym, nigdy nie możesz być pewien, że po jego taktowaniu nie zmienia się on w ramach okna ustawień / czasu wstrzymania. To, co może się zdarzyć, to zamiast wyjścia wysokiego lub niskiego poziomu zatrzasku w określonym czasie po zboczu taktowania, może chwilę się rozejrzeć, zanim ustabilizuje się. Normalnym sposobem uniknięcia tego jest użycie 2-stopniowego zatrzasku, z tym samym zegarem lub zegarem opóźnionym lub niefazowym, w zależności od równowagi między wymaganiami dotyczącymi opóźnienia i prawdopodobieństwem metastabilności. Umożliwia to ustabilizowanie się czasu pierwszego zatrzasku, zanim drugi zatrzask zatrzaśnie stan stabilny. Nawiasem mówiąc, jest to coś, z czym mikrokontrolery mają do czynienia wewnętrznie, ponieważ zewnętrzne sygnały we / wy są zwykle asynchroniczne z zegarem procesora, więc porty we / wy często mają podwójne ustawienia zatrzasków, aby uniknąć problemów, a oprogramowanie nie musi się tym martwić . Nieokreślone wspomnienie przeczytane wiele lat temu o problemie z 6502, w którym odczyt magistrali danych, które zmieniły się poza specyfikacją czasu ustawiania / wstrzymania, może spowodować rozgałęzienie na adres, który nie był ani celem rozgałęzienia, ani następną instrukcją, jak niektóre wewnętrzne stan przeszedł w metastabilność. Ten film pokazuje kilka przykładów: Nieokreślone wspomnienie przeczytane wiele lat temu o problemie z 6502, w którym odczyt magistrali danych, które zmieniły się poza specyfikacją czasu ustawiania / wstrzymania, może spowodować rozgałęzienie na adres, który nie był ani celem rozgałęzienia, ani następną instrukcją, jak niektóre wewnętrzne stan przeszedł w metastabilność. Ten film pokazuje kilka przykładów: Nieokreślone wspomnienie przeczytane wiele lat temu o problemie z 6502, w którym odczyt magistrali danych, które zmieniły się poza specyfikacją czasu ustawiania / wstrzymania, może spowodować rozgałęzienie na adres, który nie był ani celem rozgałęzienia, ani następną instrukcją, jak niektóre wewnętrzne stan przeszedł w metastabilność. Ten film pokazuje kilka przykładów:http://www.youtube.com/watch?v=tKHCwjWMMyg
Analogią jest, jeśli rzucisz komuś piłkę - przeważnie albo łapie ją, albo upuszcza / tęskni, więc po pewnym czasie od rzucenia, będzie ją trzymała lub nie. Ale od czasu do czasu będą się grzebać, zanim je złapią lub upuszczą, więc ich stan nie trzyma się ani nie upuszcza - jest to stan metastabilny!
źródło