3. Bramki dynamiczne i przerzutniki

3.3. Przykład: kombinacyjne bramki dynamiczne typu DOMINO

Dobrym przykładem układów dynamicznych są dość często stosowane w praktyce dynamiczne bramki kombinacyjne zwane bramkami typu DOMINO. Przykładowa bramka typu DOMINO pokazana jest na rysunku 3-1.

Rysunek 3 1. Schemat przykładowej bramki typu DOMINO i przebiegi napięć w funkcji czasu (przy założeniu, że na wejściach B i C są cały czas zera)

 

Bramka składa się z dwóch części: bloku logicznego, w którym odpowiednie połączenia szeregowe i równoległe tranzystorów nMOS określają wykonywaną funkcję kombinacyjną, oraz dwóch dodatkowych tranzystorów: dolnego nMOS i górnego pMOS, które są okresowo na zmianę włączane i wyłączane sygnałem zegara CLK. Działanie bramki odbywa się w dwóch fazach: wstępnego ładowania (gdy zegar CLK jest w stanie „0”) i ewaluacji (gdy zegar CLK jest w stanie „1”). W fazie wstępnego ładowania włączony jest górny tranzystor pMOS, a dolny tranzystor nMOS jest wyłączony. Niezależnie od stanów wejść A, B i C pojemność C_l obciążająca węzeł wyjściowy X ładuje się ze źródła zasilania do napięcia V_{DD} reprezentującego „1”. Gdy stan zegara zmienia się z „0” na „1”, zaczyna się faza ewaluacji. Górny tranzystor pMOS zostaje wyłączony, a włącza się dolny tranzystor nMOS. Teraz stan na wyjściu zależy od stanów wejść A, B i C. Jeśli tranzystor A jest włączony, pojemność C_l rozładowuje się. To samo dzieje się, gdy włączone są równocześnie tranzystory B i C. W tych przypadkach na wyjściu pojawia się (po upływie czasu potrzebnego na rozładowanie pojemności C_l) zero. Jeśli stany wejść są takie, że pojemność nie może się rozładować, na wyjściu pozostaje stan „1”. Rysunek 3-1 pokazuje działanie przykładowej bramki. Po pierwszej fazie wstępnego ładowania tranzystor A jest włączony, więc w fazie ewaluacji na wyjściu pojawia się „0”. Po dwóch następnych fazach wstępnego ładowania wszystkie trzy tranzystory A, B i C są wyłączone, więc na wyjściu w fazach ewaluacji utrzymuje się „1”.

Bramka omawianego typu ma kilka istotnych zalet:

  • przy liczbie wejść większej od 2 mniej tranzystorów niż w bramkach statycznych,
  • zawsze tylko jeden tranzystor pMOS,
  • nie ma potrzeby utrzymywania określonej proporcji wymiarów tranzystorów nMOS i pMOS, w wielu przypadkach tranzystor pMOS może mieć mniejszą szerokość kanału, niż tranzystory pMOS w bramkach statycznych,
  • możliwość zmniejszenia zajętej powierzchni w stosunku do bramek statycznych,
  • tylko jeden tranzystor dołączony do każdego wejścia logicznego, stąd mniejsza pojemność wejściowa obciążająca poprzednią bramkę i potencjalnie większa szybkość działania
  • pojemność C_l, niezbędna do działania bramki, nie wymaga wykonania w postaci odrębnego elementu – wystarczają "naturalne" pojemności dołączone do węzła X, takie jak pojemności złącz p-n drenów tranzystorów.

Przy umiejętnym zaprojektowaniu bramki dynamiczne są najszybciej działającymi bramkami kombinacyjnymi CMOS. Bywają więc spotykane w kluczowych dla szybkości działania blokach układów takich, jak np. mikroprocesory.

Projektowanie układów z bramkami dynamicznymi jest bardziej skomplikowane niż w przypadku bramek statycznych. Wynika to przede wszystkim z konieczności ścisłego przestrzegania zależności czasowych między zegarem, a sygnałami logicznymi. I tak, sygnały na wejściach mogą się swobodnie zmieniać tylko podczas fazy wstępnego ładowania, natomiast muszą być stabilne w fazie ewaluacji. Sygnały wyjściowe mają prawidłową wartość tylko podczas fazy ewaluacji (po upływie czasu ewentualnego rozładowania pojemności C_l).

Dodatkowym utrudnieniem jest to, że wyjść bramek dynamicznych takich, jak pokazano na rysunku 3-1, nie wolno łączyć bezpośrednio z wejściami bramek tego samego rodzaju. Skąd to ograniczenie? Bierze się ono stąd, że w układzie kombinacyjnym typu DOMINO wszystkie bramki taktowane są tym samym sygnałem zegara. Wobec tego fazy ewaluacji zaczynają się we wszystkich bramkach w tym samym momencie. Problem powstaje stąd, że w chwili rozpoczęcia fazy ewaluacji wyjścia wszystkich bramek są w stanie „1”. Spójrzmy na rysunek 3-2, pokazujący dwie bramki typu DOMINO, przy czym druga z nich otrzymuje wejściowy sygnał logiczny wprost z wyjścia pierwszej.
 

Rysunek 3 2. Bramka typu DOMINO sterująca drugą podobną bramkę

 

Gdy zaczyna się faza ewaluacji, na wyjściu X1 mamy zawsze stan „1”. Zatem w tym momencie tranzystor drugiej bramki połączony z jej wejściem A2 jest włączony i pojemność C_{l2}  zaczyna się rozładowywać. Dopiero po upływie pewnego czasu, potrzebnego na rozładowanie pojemności C_{l1}, stan X1 zmieni się, być może, na „0” (zależy to, oczywiście, od stanów logicznych na wejściach A1, B1 i C1). Ale w tym momencie pojemność C_{l2} może być już rozładowana do tego stopnia, że na wyjściu X2 będziemy mieli „0” lub stan nieokreślony pomiędzy „0”, a „1”, a nie jedynkę. Zatem układ da nam wynik błędny.
Można tego uniknąć w prosty sposób rozdzielając bramki typu DOMINO statycznymi inwerterami - patrz rysunek 3-3.
 

Rysunek 3 3. Bramka typu DOMINO sterująca drugą podobną bramkę poprzez inwerter

 

Inwerter powoduje, że na wejście A2 drugiej bramki na początku fazy ewaluacji podawane jest zawsze „0”, a nie „1”. Dopiero po ustaleniu się właściwego stanu wyjścia X1 stan wejścia A2 zmieni się, być może, na „1”. Nie ma niebezpieczeństwa błędnych zadziałań, ponieważ w kolejnych stopniach układu bramki „czekają”, aż w poprzednich stopniach ustalą się docelowe, prawidłowe stany. Stąd zresztą pochodzi nazwa „domino”. Każdy układ kombinacyjny zbudowany z bramek dynamicznych rozdzielonych inwerterami działa w taki sposób, że w czasie trwania fazy ewaluacji właściwe poziomy logiczne ustalają się stopniowo w kolejnych, coraz dalszych od wejściach bramkach. Twórcom tego sposobu realizacji układów kombinacyjnych skojarzyło się to z dziecięcą zabawą polegającą na pionowym ustawieniu jeden za drugim klocków domina, a następnie pchnięciu pierwszego klocka, który przewracając się popycha i przewraca drugi, ten przewraca następny i w końcu cały wąż klocków się kładzie.

Dodatkowe inwertery oczywiście wprowadzają pewne opóźnienia, ale nawet z nimi układ typu DOMINO może działać szybciej od układu z bramek statycznych. Pojawia się jednak pewne dodatkowe, często kłopotliwe ograniczenie - nie ma inwertera typu DOMINO, a bramki (z uwzględnieniem statycznych inwerterów) realizują tylko funkcje nie zawierające nigdzie negacji. Mówiąc ściśle, negacje (w postaci dodatkowych statycznych inwerterów) są możliwe na wejściu i na wyjściu bloku kombinacyjnego zbudowanego z bramek DOMINO, ale nie mogą występować wewnątrz tego bloku. Komplikuje to projekt logiczny. Istnieją inne wersje układów dynamicznych, w których stosowanie inwerterów statycznych rozdzielających poszczególne stopnie nie jest potrzebne. Nie będziemy ich tutaj omawiać.

Dla uniknięcia nieporozumień trzeba zwrócić uwagę, że pod względem realizowanej funkcji logicznej układy z rysunków 3-2 i 3-3 nie są równoważne. Projekt logiczny układu przeznaczonego do realizacji w technice bramek dynamicznych musi być dostosowany do rodzaju użytych bramek. Wadą bramek dynamicznych jest mniejsza od bramek statycznych odporność na zakłócenia. Impuls zakłócający, którego amplituda jest większa od napięcia progowego tranzystorów w bloku logicznym, a czas trwania dostatecznie długi, może spowodować fałszywe rozładowanie pojemności C_l, a tym samym błąd w działaniu bramki. Inną słabą stroną bramek dynamicznych jest dodatkowy pobór mocy wynikający z obecności sygnału zegarowego. Bramki dynamiczne są taktowane nawet wtedy, gdy stany na ich wejściach nie zmieniają się. Oznacza to dodatkowy pobór mocy przez generator zegara. 

Biorąc to wszystko pod uwagę widzimy, że stosowanie bramek dynamicznych ma sens tylko wtedy, gdy układ z bramkami statycznymi nie pozwala osiągnąć niezbędnej szybkości działania. Projektowanie układów z bramkami dynamicznymi jest znacznie trudniejsze niż układów z bramkami statycznymi, i z reguły wymaga szczegółowych symulacji elektrycznych. Dodajmy, że w bibliotekach komórek standardowych nie ma bramek dynamicznych. Trzeba je więc projektować w stylu „full custom”.