Що таке метастабільність?


15

З статті Вікіпедії Метастабільність в електроніці :

Метастабільність в електроніці - це здатність цифрової електронної системи зберігатися без обмеженого часу в нестабільному рівноважному або метастабільному стані. У метастабільних станах схема може не в змозі осісти на стабільний логічний рівень '0' або '1' протягом часу, необхідного для належної роботи схеми. Як результат, схема може діяти непередбачуваними способами і може призвести до відмови системи.

Це здається хорошим визначенням, але що це означає в додатку?

З точки зору дизайнера електроніки, які приклади, коли це може статися, і де цей тип несправностей повинен турбувати?

Чи є більш прагматичне чи прикладне визначення - щось конкретніше?


2
Леслі Лампорт (він від $ \ LaTeX $ слави) написав хороший опис метастабільності в цьому документі: research.microsoft.com/users/lamport/pubs/buridan.pdf
markrages

@markrages Блискуче. Це може трапитися і з падаючими кішками та маслянистим тостом .
Іржавий

Відповіді:


15

Швидкий відповідь: Якщо ви порушите налаштування та утримуєте час на вході триггера, то вихід буде непередбачуваним протягом певного часу. Цей непередбачуваний вихід називається метастабільним (або метастабільністю).

Довга відповідь: Коли результат непередбачуваний, я маю на увазі, що це непередбачувано. Він може бути високим, він може бути низьким, може бути десь посередині, або може коливатися. Після цього метастабільного періоду вихід буде високим або низьким, але ми не знаємо, яким шляхом він піде, поки це не відбудеться.

Однак час, який він непередбачуваний, дещо передбачуваний. Є два основні фактори, які визначають тривалість метастабільного періоду: швидкість перекидання та те, як "близько до краю" ви отримали терміни.

Більшість метастабільних часів є досить короткими, хоча ймовірність тривалий час не дорівнює нулю. Теоретично у вас може бути метастабільний час на порядок секунд, хоча шанси на те, що відбувається, надзвичайно рідкісні. Зі збільшенням швидкості обертання, середній час метастабільності зменшується - всі інші речі рівні.

У "шльопанці" є "уявний" час, по відношенню до краю годинника, де ви найбільш чутливі до питань метастабільності. Коли саме це залежить від багатьох факторів, таких як температура, напруга, процес, фаза Місяця, жертвоприношення тварин, а також з якою політичною партією ви є членом. Щоразу, коли цей час наближається до цього часу, тим довше буде час метастабільності.

Найкращий спосіб впоратися з метастабільністю - це зробити всю свою логіку синхронною, а не порушувати будь-яку установку та час утримування. Звичайно, це складно неможливо для схем будь-якої складності. Отже, ми намагаємось обмежити місця, де метастабільність може бути проблемою, а потім вирішувати ці місця.

Нормальним методом було б "подвоєння" даних. Значить, мати два D триггерів послідовно з виходом першого, що подає вхід другого. Сподіваємось, що якщо перший триггер перестане метастабілізувати, то період метастабільності закінчиться, перш ніж він порушить час установки / утримування другого. На практиці це працює досить добре. У надзвичайно критичних додатках може відбуватися деякий "потрійний такт".


3
Якісь залежності від типу жертви тварини?
Іржавий

11

Метастабільний стан схожий на нестабільну рівновагу. Поширений приклад нестабільної рівноваги - перевернутий маятник . Якщо ви можете врівноважити маятник у вертикальному положенні, це стабільний стан. Однак якщо щось штовхає важіль в будь-яку сторону (наприклад, повітряні потоки або коливання землі), маятник не повернеться у вертикальне положення, він впаде вниз. На відміну від звичайного маятника, яке, якщо його натиснути на один бік, врешті-решт повернеться до вертикалі.

Стабільні рівноваги використовуються в електричних системах для створення елементів зберігання. Нестабільні рівноваги не складають хороших елементів зберігання (оскільки вони легко втрачають стан), але часто існують як паразитичний стан.

Поширеним цифровим елементом зберігання є пара перехресно пов'язаних інверторів:

Два перетворювачі, з'єднані в циклі, вихід-вхід

Елемент запам'ятовування має два стабільних стани: один, де вузол зліва знаходиться на напрузі живлення і вузол праворуч знаходиться на землі, а другий у протилежному стані. Існує також нестабільний стан, при якому кожен вузол знаходиться на деякій проміжної напрузі.

Щоб краще зрозуміти, як виникає нестабільний стан, згадайте функцію передачі інвертора. Діаграма функції передачі показує вихідну напругу інвертора для заданої вхідної напруги.

Функція передачі інвертора

Інвертор нелінійний; один простий спосіб отримати приблизне рішення нелінійної схеми - побудувати схему характеристик; перетинами ділянок є розв’язки, або іншими словами, точки, в яких задовольняються електричні характеристики всіх компонентів схеми. Зазвичай це робиться за допомогою діаграм IV, як у цьому прикладі діодів у Вікіпедії . Однак для інверторів ми зробимо це з графіками vv. Накладення другої функції передачі інвертора на графіку (із зміненими осями, оскільки другий інвертор знаходиться назад:

Накладені функції передачі для інверторів "назад до спини"

Існує три перетину ділянок: один на (0, Vs), один на (Vs, 0) і один на (Vs / 2, Vs / 2). Стан (Vs / 2, Vs / 2) є метастабільним. Після невеликого збурення будь-якого вузла ланцюг майже завжди осідає в одному зі стабільних станів, а не повертається до (Vs / 2, Vs / 2).

Спосіб записати значення в елемент зберігання подвійного інвертора полягає в примушуванні одного з вузлів до потрібного значення за допомогою драйвера, який сильніший за інвертори. Один з поширених способів зробити це з прохідним транзистором:

Перехресно пов'язані інвертори з прохідним транзистором

Якщо ви підключите ворота прохідного транзистора до годинника, у вас є засувка D (я виходжу з вихідної структури). Коли годинник високий, що дозволяє пройти транзистор, засувка є прозорою - вхід проходить безпосередньо на вихід. Коли годинник низький, засувка утримує попереднє значення. Метастабільність виникає в момент зразка засувки. Якщо на вході стабільно висока або низька напруга при зразках засувки, то вона буде працювати належним чином. Однак, якщо вхід знаходиться навколо точки Vs / 2, коли зразки засувок є, можливо, засувка опиниться в метастабільному стані (Vs / 2, Vs / 2). Після того, як він перебуває у метастабільному стані, він може залишатися там нескінченно (якщо припустити, що засувка знову не замикається), але оскільки це нестабільна рівновага, зазвичай щось відбувається порівняно швидко, щоб вибити його з метастабільного стану.

Коли турбуватися про метастабільність

Якщо ваші елементи пам’яті збираються метастабільними, то ви принаймні втрачаєте частину бюджету часу для логіки нижче. Логіка не може виконати бажану оцінку, поки метастабільний стан не вирішиться. У гіршому випадку метастабільний стан зберігається або поширюється за допомогою логіки, а елементи зберігання нижче за течією також переходять у метастабільний стан, або кілька пов'язаних елементів зберігання фіксують непослідовні значення.

Правильно розроблена та функціонуюча синхронна логіка не має проблем з метастабільністю. Період тактового сигналу довший, ніж час оцінки для логіки, усі вхідні тригери стабільні на наступному краї тактової частоти (вимога настройки задано), і всі вони завантажують дійсне значення.

Деякі поширені ситуації, коли метастабільність викликає занепокоєння, є:

  • Логічна вибірка зовнішнього входу, наприклад, перемикач на передній панелі або вихід ланцюгів монітора, який може переходити в будь-який час (перенапруга, перегрівання).
  • Логіка з використанням декількох годин, які не мають синхронного зв'язку. Це часто виникає з інтерфейсами вводу-виводу, які мають особливі вимоги до тактових частот, але також виникають внутрішньо, коли різні частини мікросхеми мають різні вимоги до продуктивності. Наприклад, не вся логіка у вашому процесорі 3 ГГц насправді працює на частоті 3 ГГц. (CPU - не чудовий приклад, оскільки багато годин в процесорі є синхронними кратними один одного.)

В основному приємна відповідь, але слід згадати ще одне, що через затримки розповсюдження не існує єдиного метастабільного стану, а ціле їх сімейство, і немає певного способу ідентифікації метастабільних станів. Можна сконструювати схему з тривимірним виходом (високий / низький / метастабільний) і організувати речі так, щоб про "високий" ніколи не повідомлялося, якщо вихід може закінчитися низьким, або навпаки, але немає гарантії виходу не підстрибуватиме між "високим" та "метастабільним" (закінчується "високим") або між "низьким" та "метастабільним" (закінчується "низьким").
supercat

+1 Це хороший матеріал, але він має більше сенсу, прочитавши відповідь @David Kessner. +2 Для графіки.
Іржавий

3

Метастабільний сигнал - це сигнал, який може довільно здаватися високим або низьким у будь-якому довільному шаблоні протягом певного довільного проміжку часу. Якщо сигнал подає кілька воріт прямо або опосередковано , можливо, деякі з цих воріт "побачать" його високим, а інші - низьким. Неприємні речі.

У системах з одним годинником часто можна вирішувати метастабільні сигнали, проходячи через дві засувки. Більш складний питання виникає, коли грає годинник. Існує велика кількість мікросхем (особливо з використанням засувок RS), які б чудово спрацювали, якщо метастабільність була б неможлива, але яка, якщо метастабільність виникає, в кінцевому підсумку генерує тактові імпульси рунта (що, в свою чергу, може спричинити метастабільність вниз за течією).

Між іншим, ще один важливий момент щодо метастабільності: час поширення засувки вказує, коли, якщо будуть дотримані зразки та час утримування , вихід буде стабільним за новим значенням. Якщо час установки та утримування не дотримано, немає гарантії того, що чи коли перехід буде чи не перемикається, до тих пір, поки засувка не отримає дійсну подію зключення. Навіть якщо вихід "здається" перемикатися чисто, немає гарантії, що він не буде мимовільно перемикатися назад.


2

Класичний випадок - якщо ви порушуєте час налаштування / утримування синхронної засувки, і це питання, про яке потрібно знати, розробляючи FPGA (я впевнений, що Xilinx і Altera матимуть додатки щодо цього). Якщо сигнал може надходити в будь-який випадковий час, ви ніколи не можете бути впевнені, що під час годинника він не змінюється в межах специфікації вікна налаштування / утримування часу. Що може статися, це замість того, що вихід засувки буде високим або низьким у вказаний час після краю годинника, він може затухати приблизно на деякий час, перш ніж осісти в стабільному стані. Нормальний спосіб запобігти цьому - використовувати двоступеневу засувку або з тим самим годинником, або із затримкою або поза фазою, залежно від балансу між вашими вимогами затримки та ймовірністю метастабільності. Це дозволяє стабілізувати час першого засувки перед тим, як другий фіксатор замикає стабільний стан. До речі, це те, з чим мікроконтролерам доводиться стикатися всередині, оскільки зовнішні сигнали вводу / виводу зазвичай асинхронні до тактового процесора, тому порти вводу / виводу часто мають подвійну систему фіксації, щоб уникнути проблем, і програмному забезпеченню не потрібно турбуватися про це. . Неясне згадування, прочитане багато років тому про проблему 6502, коли шина зчитування даних, які змінилися поза специфікацією часу встановлення / утримування, може спричинити відгалуження до адреси, яка не була ні ціллю гілки, ні наступною інструкцією, як деякі внутрішні стан перейшов у метастабільний стан. У цьому відео показано кілька прикладів: Неясне нагадування, прочитане багато років тому про проблему 6502, коли шина зчитування даних, які змінилися поза специфікацією часу встановлення / утримування, може спричинити відгалуження до адреси, яка не була ні цілью гілки, ні наступною інструкцією, як деякі внутрішні стан перейшов у метастабільний стан. У цьому відео показано кілька прикладів: Неясне нагадування, прочитане багато років тому про проблему 6502, коли шина зчитування даних, які змінилися поза специфікацією часу встановлення / утримування, може спричинити відгалуження до адреси, яка не була ні цілью гілки, ні наступною інструкцією, як деякі внутрішні стан перейшов у метастабільний стан. У цьому відео показано кілька прикладів:http://www.youtube.com/watch?v=tKHCwjWMMyg

Аналогія - якщо ви кидаєте комусь м'яч - вони здебільшого або ловлять його, або опускають / пропускають, тож через певний час від кидання вони або тримають його, або ні. Але періодично вони будуть коріти деякий час, перш ніж їх ловлять або скидають, тож їх стан не тримається і не падає - це метастабільний стан!


Я все ще працюю з системами на базі 6502 як хобі. Було б непогано знати деякі деталі проблем метастабільності даних шин. Я, безумовно, можу передбачити, що якщо акумулятор містить FF $ і один зчитує значення, яке становить або $ 00, або $ 01, акумулятор може отримати будь-яке можливе значення. Перш ніж можна було взяти будь-яку гілку, я б очікував, що минуло б ще два цикли, під час яких прапори будуть повторно в'язані двічі. Я не уявляю, як метастабільний стан залишається так довго.
supercat

Це було те, що я чув, що це було другою чи третьою рукою, можливо, 20 років тому, але це походить від людей, які абсолютно знали, що вони роблять - це було пов'язано з інтерфейсом Tube на 6502-секундному процесорі для BBC Micro, і читання статусу прапори, і це було колись на синій місяць, але досить часто, що затримувало запуск продукту. Не обов'язково потрібно було б тривати два цикли, оскільки, ймовірно, сигнали внутрішньо застібаються на різних етапах трубопроводу. Я думаю, це був також найшвидший варіант 6502, доступний на той момент - 3 МГц 65C02 ISTR.
mikeselectricstuff

Цікаво. [BTW, чи є спосіб використання пунктуації, не змінюючи StackExchange?] У звичайній поведінці, наприклад, "ADC 0xD000", адреса виводиться на фазі 1 четвертого циклу, а дані будуть зафіксовані в кінці фази 2 цього циклу. Дані будуть надходити в АЛУ на фазі 1-го наступного циклу (що було б виведенням коду для наступної інструкції). Цикл після цього буде операндом. Якби в цьому моменті все ще було метастабільно, система могла б розтанути, але це було б малоймовірним, оскільки динамічні регістри були би відновлені двічі.
supercat

Я не хочу сказати, що метастабільність шини даних не може вплинути на 6502, тому що я знаю, що є деякі інші дивні поведінки, які я не можу пояснити. Наприклад, шина даних фіксується під час 2 фази тактового режиму та діє під час наступної фази 1. Таким чином, не має значення, чи змінюється вона під час фази 2, за умови, що вона стабільна в кінці. Однак є кілька недокументованих інструкцій, на поведінку яких впливає вміст шини даних протягом попередньої частини циклу (демонструється на таких машинах, як C64 та Apple, які отримують відео під час фази 1). Я не знаю, як ...
supercat

... на поведінку цих інструкцій насправді впливає поведінка ранньої шини даних, але я підозрюю, що це якийсь дивний стан перегонів. IIRC, одна з опкодів відповідає шаблонам декодування для LDA #imm, LDX #imm та TAX, тому вихід ALU відображається на його вхід. Дивно.
supercat
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.