Problemy Kena wywołały kilka interesujących kwestii. Po pierwsze, nieoczekiwane wyniki symulacji mogą wystąpić w niektórych sytuacjach, gdy dwa lub więcej komponentów jest identycznych, co prowadzi do bardzo specyficznego zachowania obwodu – wyniki te nie są tak naprawdę błędne, ale ich wystąpienie w rzeczywistym obwodzie może być bardzo mało prawdopodobne. To właśnie równe opóźnienia bramek w symulacji Kena stworzyły warunki do oscylacji.
Po drugie, przyglądając się bliżej temu, co może się wydarzyć w obwodzie Kena, zidentyfikowaliśmy możliwość metastabilności w przerzutniku SR. Przerzutnik powinien przechowywać 0 lub 1 (jego stany stabilne) i szybko aktualizować się w razie potrzeby. Metastabilność można traktować jako „niezdecydowanie” typu flip-flop – utknie w połowie drogi między 0 a 1 i zajmie mu znacznie więcej czasu niż zwykle, zanim ostatecznie osiągnie jeden ze stanów stabilnych. Widzieliśmy to w zeszłym miesiącu, w analogowych symulacjach pętli pamięci typu flip-flop w programie LTspice.
Obwód Kena był niezwykły, ponieważ w szczególności próbował utworzyć obwód dzielenia przez dwa bezpośrednio z minimalnej liczby bramek NAND, stosując techniki projektowania asynchronicznego, a nie tylko przy użyciu istniejącego przerzutnika. W zeszłym miesiącu skupiliśmy się na specyfice toru Kena; jednak metastabilność i ogólnie kwestie związane z synchronizacją są ważne, gdy pracujemy ze znacznie bardziej powszechną sytuacją synchronicznych obwodów cyfrowych, zbudowanych z taktowanych przerzutników i większych bloków, takich jak rejestry i liczniki. W tym miesiącu przyjrzymy się taktowaniu i metastabilności w kontekście synchronicznych obwodów cyfrowych. Zaczniemy od przyjrzenia się ogólnej strukturze tych obwodów i warunkom czasowym niezbędnym do zapewnienia ich prawidłowego działania.
Obwody synchroniczne i zegary taktujące
Większość obwodów cyfrowych ma jeden lub więcej zegarów – regularnych ciągów impulsów kontrolujących ogólne taktowanie (tej części) obwodu. Zegar jest jak sierżant musztry, który szczeka „w lewo, w prawo” na grupę żołnierzy, aby wszyscy maszerowali w zsynchronizowany sposób. Obwody, których czas koordynowany jest przez zegar, określa się jako „synchroniczne” – dotyczy to większości obwodów cyfrowych. Często dzielimy większe obwody na mniejsze bloki lub podsystemy, a w najprostszych przypadkach wszystkie będą miały ten sam zegar.