Чому спрацьовування крайових переваг переважає над рівнем спрацьовування?


18

Я намагаюся зрозуміти, чому крайове спрацьовування кращого перед рівнем запуску. У моїй книзі це не пояснено чітко. Після пошуку в Інтернеті я дізнався, що спрацьовування краю нечутливе до глюків, тоді як рівень спрацьовування чутливий. Що це означає?

Також я не в змозі зрозуміти наступне: "Якщо годинник чутливий до рівня, новий може проскочити логічну мережу і змінити вихід. Щоб уникнути цього, нам потрібен короткий імпульс, щоб захопити вихід і утримувати його постійним. Але такий короткий імпульс створити непросто, тому ми підемо на спрацювання ребер. Проблема зворотного зв’язку вирішена, оскільки недостатньо часу, щоб новий вихід повертався до входу протягом тривалості одного зростаючого краю "Qн

Я не розумів, чому вихід не буде поспішати при запуску рівня і чому нам потрібен короткий імпульс, щоб утримувати вихід.

По-друге, проблема зворотного зв’язку, оскільки тривалість запуску рівня довша порівняно з запуском краю, у випадку колишнього, вихід буде повернутий знову на вхід, і він буде робити це до тих пір, поки годинник активний . Яка проблема зворотного зв’язку?

Але як це буде вирішено при крайовому запуску? Якщо час падіння або підйому дуже короткий, яким чином вихід зможе поширюватися по всіх воротах? Це як, коли застосовано запускання краю, вихід буде розповсюджуватися через усі ворота, а наступні входи розглядаються лише на наступному краю годинника?


1
"Після того, як буде застосовано запуск краю, вихід буде розповсюджуватися через усі ворота, а наступні входи розглядаються лише на наступному краю годинника" - bullseye !!
Wouter van Ooijen

Відповіді:


12

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

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

тт+1

Перше очевидне рішення, яке пропонує собі скоротити рівень до того, що неможливо виникнути небажаного зворотного зв’язку (і тримати рівень "увімкнено", навіть якщо ми довільно сповільнюємо тактовий період). Припустимо, що ми імпульсуємо годинник від 0 до 1 і повертаємося до 0 дуже швидко, так що пристрої, що синхронізуються, приймають свої входи, але виходи не мають достатньо часу, щоб перейти через цикл зворотного зв'язку, щоб змінити ці входи. Проблема в цьому полягає в тому, що вузькі імпульси ненадійні і в основному вимагають відповіді, яка може бути на кілька порядків швидшою, ніж тактова частота. Ми можемо виявити, що нам потрібен імпульс, який є наносекундою в ширину, хоча система працює лише в 1 МГц. Тож у нас виникає проблема розподілу чистих, гострих, досить високих наносекундних імпульсів по шині, розрахованій на 1 МГц.

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

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


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

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


1
Багатофазні синхронізовані годинники уникають проблеми "хаосу", якщо жоден вихід засувки не повертається на вхід, не проходячи через засувку, яка відбирається на іншій тактовій фазі. Такі конструкції можуть мати певні переваги при взаємодії процесорів з такими речами, як асинхронні запам'ятовування, оскільки час між передовим краєм однієї тактової фази та кінцевим краєм наступного може бути довільно розділений між часом, необхідним для маршрутизації та виведення адреси, доступу час оперативної пам’яті та час налаштування для введення даних процесора.
supercat

2
@supercat Як відомий приклад, тригер-майстер-підлеглий може вважатися прикладом багатофазного тактового функціонування. Господар і раб знаходяться на протилежних фазах, і тому така ж умова виконується, якщо є зворотній зв'язок: вона переходить до іншої фази. Я повинен додати це до відповіді, щоб закруглити його.
Каз

2
+1 аналогія повітряного блокування. Я ніколи не чув, щоб хтось пояснював це таким чином, але це має ідеальний сенс.
ajs410

@ ajs410: Ще одна аналогія, яка мені подобається, - це втеча за годинниковим механізмом. Маятник з'єднаний з двома руками, кожна з яких може дозволити вільному руховому механізму вільно переміщатися або блокувати його наступного разу, коли він досягне певної "фази". Для правильної роботи, руки повинні бути відрегульовані так, щоб не було часу, коли обидві руки дозволяли б зачепити редуктор. Без цього обмеження механізм би дико відкрутився поза контролем.
supercat

2

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

Навпаки, побудова схеми для підрахунку імпульсів на одному вході без використання засувок, що спрацьовують край, вимагала б певних гарантій щодо відносних швидкостей деяких частин схеми. Загальний підхід використовувався для перетворення вхідного сигналу тактової частоти (ClkIn) у синхронізовані парні тактові сигнали (Phi1 та Phi2). Phi1 вірно, коли ClkIn є високим і якийсь високий протягом гарантованого мінімуму . Phi2 є високим, коли ClkIn низький і низький протягом деякого гарантованого мінімального часу. Коли ClkIn переключиться з низького на високий, Phi2 знизиться, перш ніж Phi1 підніметься; так само, коли він переходить від високого до низького. Можна було побудувати лічильник, маючи два набори засувок (які я назву Count1 та Count2). Всякий раз, коли Phi1 високий, Count1 замикає Count2. Всякий раз, коли Phi2 високий, Count2 засуває (Count1 + 1). Якби Phi1 і Phi2 одночасно піднялися високо, або ж надто мало часу між ними, значення лічильника стане невизначеним, але за умови збереження належного розділення лічильник буде працювати дуже добре. Двофазні системи часто мають досить велику кількість розділення; за умови, що все досить швидко, таке розділення може уникнути проблем із перекосом годинника.

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

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


2

Щоб зрозуміти, чому краща спрацьовування крайок, уявіть 8-бітний суматор, підключений до регістра, постійно додаючи 1 до значення регістру, натискаючи кнопку, підключену до шпильки включення регістра.

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

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


1

Як казали інші, край - це дуже специфічний момент у часі. Всі ми знаємо, що цифрові мікросхеми можуть проходити через глюки, де вихід воріт невірний, оскільки лише кілька його входів дійшли до нього, інші сигнали на шляху і займають більше часу через довший шлях (електроенергія їде досить швидко але все ж 3х10 ^ 8 м / с потребує небагато часу для обходу проводів). Якщо у нас є тригерний блок, його вихід буде здійснюватися глюками. Коли спрацьовує ребро, у нас є дуже вузьке вікно часу, коли "все може статися", іншими словами схема лише змінить свій стан (значення для різних проводів всередині ланцюга, включаючи вихід) у певних чітко визначених моментах у час. Зверніть увагу на фразу "моменти вчасно"

На даний момент ви не будете знати про щось, що називається "хронологічний аналіз", але я трохи поясню. Коли ми робимо цифрові мікросхеми, ми хочемо імітувати їх, щоб побачити, як вони будуть вести себе і чи така поведінка відповідає тому, що ми хочемо. Під час аналізу часу перевіряємо, чи здатні сигнали дійти до певної точки ланцюга протягом необхідного часу. Якщо вони занадто затримані, схема не працюватиме належним чином. Використовуючи блокові ланцюгові тригери замість рівня, що запускається, аналіз часу стає дуже простим, оскільки ми точно знаємо, коли в ланцюзі може статися щось. Це означає, що конструкція схеми також стає легшою. Пам'ятайте, що в реальному світі ви зустрінете засувки, що спрацьовують на рівні, ви зустрічаєтесь дуже рідко.


1

Хоча інші відповіді висвітлювали майже все, що можна сказати про ваше запитання, щоб зробити це більш зрозумілим, я додав кілька діаграм і коротке пояснення.

Уявіть, що ви хочете сконструювати схему, яка містить якийсь зворотній зв'язок. Скажіть A = A.B(в основному ворота І зі зворотним зв'язком). Якщо ви реалізуєте це за допомогою простої чутливої ​​за рівнем засувки, яка зберігає значення A, ваша схема буде виглядати приблизно так введіть тут опис зображення

Це може створити проблему. Коли годинник високий, засувка стає прозорою, а ворота AND обчислює нове значення A and B. Але значення повертається в засувку, і оскільки засувка все ще прозора (CLK все ще висока), нове значення A AND Bобчислюється. Це те, що зазвичай називають перегоном , який створює збою (несподівані максимуми та мінімуми у виході), про які ви згадали.

Одним з варіантів вирішення цієї проблеми було б тримати імпульс CLK дуже коротким, досить коротким, що як тільки буде генерований вихід затвора AND, засувка буде деактивована, перш ніж значення знову буде передано на вхід. Слід зрозуміти, чому цього може бути важко досягти. Це залежало б від швидкості комутації засувки (нарешті, засувка також виготовляється із комбінаційних воріт), довжини дроту та сотень інших параметрів.

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

введіть тут опис зображення

В основному, коли CLKсигнал високий, засувка U1 прозора, що приносить логічне значення на вході A на вихід засувки U1, коли CLKсигнал низький, засувка U2 стає прозорою, і A AND Bобчислюється нове значення . Але це значення поширюватиметься на вхід затвора AND лише тоді, коли засувка U1 стане прозорою (CLK - ВИСОКА), і, отже, засувка U1 стане прозорою (CLK - НИЗЬКИЙ). Що в основному еквівалентно тому, що схема зараз чутлива до краю (вихідне значення змінюється лише на від'ємному краю годинника).

Це дозволяє уникнути проблеми Race Condition, поясненої раніше, і саме тому рівень запуску рівнів є кращим перед крайовим спрацьовуванням.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.