Przerzutnik

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacji, wyszukiwania
Podwójny, lampowy przerzutnik komputera XYZ z 1958 r.

Przerzutnik (ang. flip-flop) – podstawowy element pamiętający każdego układu cyfrowego, przeznaczonego do przechowywania i ewentualnego przetwarzania informacji. Przerzutnik współtworzy najniższe piętro struktury układu i zdolny jest do zapamiętania jednego bitu informacji. Grupa czterech lub ośmiu połączonych ze sobą przerzutników tworzy następne, wyższe piętro - tzw. rejestr, zdolny już do pamiętania jednego bajta informacji.

Zastosowanie[edytuj | edytuj kod]

Animowana interaktywna ilustracja multiwibratora bistabilnego na tranzystorach dyskretnych (sugerowane rezystancje: R1, R2 = 1 kΩ R3, R4 = 10 kΩ).

Przerzutniki stosuje się do przechowywania małych ilości danych, do których musi być zapewniony ciągły dostęp. Jest to spowodowane fizycznymi i funkcjonalnymi cechami przerzutników. Są one większe od pojedynczej komórki pamięci, ale pozwalają pozostałym częściom układu na bezpośredni dostęp do przechowywanych danych.

Ze względu na łatwy odczyt i zapis, przerzutniki są szczególnie często stosowane w celu:

Typy przerzutników[edytuj | edytuj kod]

Wśród monolitycznych (scalonych) przerzutników wyróżnia się:

Przerzutniki typu RS mogą być zarówno asynchroniczne (zapisywane są wówczas zwykle małymi literami – rs) jak i synchroniczne, natomiast pozostałe typy przerzutników są wyłącznie synchroniczne[1].

Przerzutniki asynchroniczne przełączają stan wyjść w momencie zmiany na wejściu, a przerzutniki synchroniczne muszą oczekiwać na zmianę sygnału doprowadzonego do ich wejścia zegarowego. W tym momencie należy wyróżnić kolejny podział na przerzutniki wyzwalane zboczem (narastającym lub opadającym) lub wyzwalane poziomem wejścia zegarowego.

Za pomocą każdego przerzutnika i odpowiedniej liczby bramek logicznych można zrealizować dowolny inny rodzaj przerzutnika.

Opis wyprowadzeń[edytuj | edytuj kod]

We wszystkich przerzutnikach synchronicznych można wyróżnić następujące wyprowadzenia:

  • wejście (lub wejścia) informacyjne - np. D (ang. Data)
  • wejście synchronizujące, tzw. zegarowe C (ang. Clock)
  • wejścia asynchroniczne - ustawiające Set i zerujące Reset (odpowiednio: 1 i 0 na wyjściu Q)
  • wyjście proste Q
  • wyjście zanegowane Q

Wejścia R/S mają najwyższy priorytet i służą do wymuszenia określonego stanu wyjść niezależnie (asynchroniczne) od poziomów logicznych panujących na pozostałych wejściach informacyjnych czy zegarowych.

W rodzimej literaturze spotyka się różne określenia (a nawet oznaczenia) tego samego funkcjonalnie rodzaju wejść. Dla przykładu wejście ustawiające bywa nazywane wejściem zapalającym, a wejście zegarowe C (CP, CL, CLK, T) - synchronizującym lub taktującym.

Przerzutniki typu D[edytuj | edytuj kod]

Ten typ przerzutników znajduje najwięcej praktycznych zastosowań. Przerzutniki typu D (flip-flop) należą do zbioru przerzutników wyzwalanych zboczem. Przepisanie stanu wejścia D (informacyjnego) na wyjście Q następuje w czasie zmiany poziomu logicznego na wejściu zegarowym z niskiego na wysoki. Przerzutnik typu D łatwo jest przekształcić w przerzutnik typu T i zrealizować dzielnik modulo 2 - tzw. dwójkę liczącą. W tym celu wystarczy połączyć wyjście zanegowane Q z wejściem D. Pojedyncza "dwójka" dzieli częstotliwość sygnału zegarowego na dwa, przy czym wypełnienie przebiegu na wyjściu wynosi zawsze 50%. Łańcuch kaskadowo połączonych dwójek liczących może być wykorzystany do wytworzenia naturalnego kodu dwójkowego - podstawowego kodu wagowego używanego w technice cyfrowej.

Stromość zboczy sygnałów zegarowych (wyrażana w nanosekundach), jest parametrem krytycznym w układach sekwencyjnych. Przerzutniki nie są tu wyjątkiem, stąd współcześnie wejścia zegarowe spotyka się najczęściej w wykonaniu Schmitta, charakteryzującym się obecnością tzw. pętli histerezy. Histereza oznacza 2 progi przełączania - inne dla każdego kierunku zmian napięcia na wejściu zegarowym.

Przerzutniki typu Latch[edytuj | edytuj kod]

Przerzutnik typu Latch (zatrzask) jest wersją przerzutnika D wyzwalanego nie zboczem, lecz poziomem. W czasie trwania na wejściu zegarowym stanu wysokiego, wyjście Q powtarza stany logiczne wejścia D. W momencie zmiany na wejściu zegarowym stanu wysokiego na niski następuje "zatrzaśnięcie" (zapamiętanie) stanu wejścia D sprzed tej zmiany. Typowym zastosowaniem przerzutnika typu Latch jest zapamiętanie chwilowego stanu szyny danych w celu np. zobrazowania na wyświetlaczu. Dowolny przerzutnik tego typu charakteryzuje się mniejszą odpornością na zakłócenia od dowolnego przerzutnika wyzwalanego zboczem.

Przerzutniki typu JK-MS[edytuj | edytuj kod]

Przerzutniki dwuzboczowe typu Master-Slave mają mniejsze wymagania na stromość zboczy. W ich przypadku wewnętrzny przerzutnik Master zapamiętuje stan wejść informacyjnych JK w momencie wystąpienia narastającego zbocza sygnału zegarowego, a zbocze opadające sygnału zegarowego przepisuje bit informacji z przerzutnika Master do przerzutnika Slave (i na wyjścia). Przerzutnik typu JK-MS można przekształcić w dwójkę liczącą przez podanie stanu wysokiego na oba wejścia J i K. W celu podwyższenia odporności na zakłócenia dwuzboczowych przerzutników MS, w układach praktycznych dąży się do skrócenia czasu trwania stanu wysokiego na wejściu zegarowym.

Tablica wzbudzeń przerzutników[edytuj | edytuj kod]

Tablica wzbudzeń jest sposobem prezentacji sposobu pracy przerzutnika, w którym podaje się, jakie kombinacje sygnałów wejściowych powodują określone zmiany na wyjściach przerzutnika.

Oznaczenia:

  • X - dowolna wartość,
  • Qt - aktualny stan wyjścia,
  • Qt+1 - stan następny wyjścia.
Qt Qt+1 D T SR JK
0 0 0 0 0X 0X
0 1 1 1 10 1X
1 0 0 1 01 X1
1 1 1 0 X0 X0

Budowa wewnętrzna[edytuj | edytuj kod]

Wszystkie przerzutniki w monolitycznych układach scalonych zbudowane są w oparciu o bramki logiczne. Każda bramka składa się z kolei z kilku/kilkunastu tranzystorów. Najprostsze przerzutniki asynchroniczne wymagają tylko dwóch dwuargumentowych (dwuwejściowych) bramek. Bardziej zaawansowane - kilkunastu wieloargumentowych. Jeden przerzutnik synchroniczny może więc zawierać ponad sto tranzystorów.

W tzw. technice dyskretnej, historycznie poprzedzającej erę układów scalonych, do zbudowania najprostszego przerzutnika niezbędne były co najmniej 2 tranzystory (wcześniej lampy elektronowe) sprzężone pojemnościowo.

CMOS zamiast TTL[edytuj | edytuj kod]

W dominującej w latach 70. i 80. rodzinie układów cyfrowych TTL (ang. Transistor-Transistor Logic) na przykład dwa przerzutniki D zawierał popularny układ scalony (UCY|MCY|SN)7474.

W nowszej rodzinie układów cyfrowych CMOS (Complementary MOS) przerzutniki typu D ma układ (MC1|HE|CD)4013B. Z kilku powodów nie stanowi on zamiennika dla poprzednika wykonanego w technologii TTL. Te powody to zbyt mała obciążalność wyjść, odwrotna logika wejść R/S oraz odmienny układ wyprowadzeń.

Ostatecznie, układy TTL w wykonaniu LS (ang. Low-power Schottky) znalazły swoje ścisłe, nowocześniejsze zamienniki w serii układów CMOS o oznaczeniu literowym HCT (np. CD74HCT74).

Przerzutniki stosowane w układach ASIC[edytuj | edytuj kod]

Powyższe informacje odnoszą się głównie do przerzutników dostępnych jako dyskretne komponenty. W przypadku układów ASIC stosuje się głównie dwa typy przerzutników:

  • Przerzutnik typu D aktywny poziomem (zatrzask),
  • Przerzutnik typu D aktywny zboczem.

Przerzutnik D aktywny zboczem jest zwykle implementowany jako kaskadowe połączenie (Master-Slave) dwóch zatrzasków.

Zatrzask (w wersji statycznej) składa się z dwóch inwerterów połączonych przeciwsobnie i sprzężonych bramkami transmisyjnymi. W fazie pamiętania inwertery pracują w dodatnim sprzężeniu zwrotnym zatrzaskując ostatnio przetwarzaną wartość binarną.

Zatrzask (w wersji dynamicznej) jest buforem o wyjściu trójstanowym. Faza pamiętania jest realizowana przez przełączenie wyjścia bufora w stan wysokiej impedancji. Wartość binarna jest przez skończony czas pamiętana w postaci ładunku elektrycznego zmagazynowanego w pojemności pasożytniczej obciążenia bufora.

Ponieważ układy ASIC są zwykle projektowane jako systemy synchroniczne za pomocą automatycznej syntezy z języków opisu sprzętu (HDL), stosuje się niemal wyłącznie statyczne przerzutniki typu D aktywne zboczem.

Układy asynchroniczne i układy dynamiczne używane są w zastosowaniach wymagających dużej szybkości pracy lub niskiego poboru mocy. Wymaga to jednak użycia innych, mniej zautomatyzowanych technik projektowania.

W odróżnieniu od elementów dyskretnych, w przerzutnikach stosowanych w układach ASIC nie stosuje się dodatkowych układów kondycjonujących zbocza sygnałów wejściowych (takich jak wspomniane przerzutniki Schmitta). Bardzo ważne jest natomiast zapewnienie równoczesnego przełączenia wszystkich współpracujących ze sobą przerzutników. W tym celu sygnał zegarowy jest wzmacniany przez wiele buforów połączonych w drzewiastą strukturę i rozprowadzany po powierzchni układu tak by minimalizować różnice opóźnień w dotarciu zbocza zegara do przerzutników. Taka struktura nazywana jest drzewem zegara (ang. clock tree).

Czas ustalania oraz czas podtrzymania[edytuj | edytuj kod]

Dla pewności działania przerzutnika kluczowe są dwa parametry czasowe:

  • czas ustalania (ang. setup time), określający o ile zmiana sygnału wejściowego (D) musi wyprzedzać aktywne zbocze zegara
  • czas podtrzymania (ang. hold time), określający o ile aktywne zbocze zegara musi wyprzedzać zmianę sygnału wejściowego (D). W polskim piśmiennictwie czas podtrzymania jest nazywany także czasem przetrzymania lub utrzymywania.
Czas ustalania i podtrzymania

Czas ustalania oraz czas podtrzymania może zostać oszacowany przez odpowiednią manipulację wzajemnego położenia zbocza zegara i zmiany danych na wejściu powodując zmianę czasu propagacji lub błędny stan na wyjściu. Na poniższym rysunku możemy zaobserwować sytuację obrazującą wzrost czasu propagacji podczas gdy zbocze danych (narastające oraz opadające) zbliża się do aktywnego zbocza zegarowego.

Setup&Hold time 2.png

Czas Dane-Zegar przedstawia odstęp czasu między aktywnym zboczem zegara a sygnałem danych od zbocza narastającego i zbocza opadającego. Gdy zostanie przekroczony minimalny czas propagacji dla danych, można uznać, że czas ustalenia (podtrzymania) został naruszony. Czas propagacji wzrasta wówczas do nieskończoności i może być traktowany jako niewłaściwy stan. Z naruszeniem czasów ustalenia i podtrzymania oraz opóźnieniami w propagacji danych wiąże się zjawisko metastabilności.

O ile czas podtrzymania jest zagrożony głównie nierównomiernością dystrybucji zegara, o tyle zapewnienie prawidłowego czasu ustalania jest bardziej wymagające. W układach synchronicznych minimalny czas trwania cyklu zegara jest określony jako czas propagacji sygnału przez najdłuższą kombinacyjną ścieżkę przetwarzania między przerzutnikami (ang. critical path) zsumowany z czasem ustalania i marginesem na niedokładność okresu cyklu zegara (ang. jitter). Sygnał logiczny wychodzący z przerzutnika (Q) w n-tym cyklu zegara musi przepropagować się przez dołączoną do niego logikę kombinacyjną i dotrzeć na wejście (D) docelowego przerzutnika przed nadejściem (n+1)-go aktywnego zbocza zegara (z wyprzedzeniem określonym przez czas ustalania). Kryteria czasowe mogą być sprawdzone za pomocą analizy statycznej (ang. static timing analysis) lub symulacji z uwzględnieniem rzeczywistych czasów propagacji (ang. SDF delay backannotation).

W technologii CMOS czas propagacji silnie zależy od następujących czynników:

  • napięcia zasilającego (silnie wzrasta przy spadku napięcia),
  • temperatury (wzrasta liniowo ze wzrostem temperatury).

Ponadto zależy on również od parametrów projektowych:

  • długości ścieżki krytycznej,
  • procesu wytwarzania (ang. process corner, process conditions),
  • relacji między impedancją wyjściową bramki i wejściową obciążenia (ang. fan out i fan in),
  • pasożytniczych sprzężeń pojemnościowych między równocześnie przełączanymi sygnałami.

Wszystkie te parametry przekładają się bezpośrednio na minimalną długość cyklu zegara.

Przypisy

  1. Victor Buttigieg: Computer logic, part 2 (ang.). University of Malta. [dostęp 2011-03-18].
Commons in image icon.svg