Przerzutnik
Z Wikipedii
Przerzutnik (z ang. flip-flop) jest to 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 bajtu informacji.
Spis treści |
[edytuj] Zastosowanie
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:
- Pamiętania stanu układu, zobacz: Maszyna stanów skończonych (ang. FSM od Finite State Machine)
- Przechowywania obecnie przetwarzanego słowa danych, zobacz: rejestr, akumulator, ALU
- Implementacji liczników
- Implementacji rejestrów przesuwnych
- Implementacji rejestrów przesuwnych z liniowym sprzężeniem zwrotnym (ang. LFSR od Linear Feedback Shift Register)
[edytuj] Typy przerzutników
Wśród monolitycznych (scalonych) przerzutników wyróżnia się:
- Przerzutnik typu RS,
- Przerzutnik typu D (popularnie zwany 'latch', czyli zatrzask, ze względu na zatrzaskiwanie wejścia na wyjściu),
- Przerzutnik typu T,
- Przerzutnik typu JK,
- Przerzutnik typu JK-MS (MS od Master i Slave).
Wszystkie, z wyjątkiem przerzutnika typu D, mogą występować w wersji asynchronicznej (wtedy są oznaczane małymi literami, np. rs, t) oraz w wersji synchronicznej (oznaczane wielkimi literami). 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ć wszystkie inne.
[edytuj] Opis wyprowadzeń
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.
[edytuj] Przerzutniki typu D
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 pół, 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 Schmitt-a, 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.
[edytuj] Przerzutniki typu Latch
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.
[edytuj] Przerzutniki typu JK-MS
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.
[edytuj] Tablica wzbudzeń w/w przerzutników
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 |
[edytuj] Budowa wewnętrzna
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.
[edytuj] CMOS zamiast TTL
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).
[edytuj] Przerzutniki stosowane w układach ASIC
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 przetwarzana 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 elementach 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 sygnal 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).
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.
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.