Przerzutnik: Różnice pomiędzy wersjami

[wersja przejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
źródła -> więcej przypisów, artykuł częściowo już uźródłowiony
Znaczniki: usuwanie dużej ilości tekstu (filtr nadużyć) VisualEditor
Linia 2:
[[Plik:XYZ przerzutnik.jpg|thumb|200px|Podwójny, [[Lampa elektronowa|lampowy]] przerzutnik komputera [[XYZ]] z 1958 r.]]
 
Pżeżutnik xD
'''Przerzutnik''' (ang. ''flip-flop'') – jest to [[układ sekwencyjny]], którego sygnał na wyjściu może zależeć od stanu na jego wejściu lub od jego stanu wewnętrznego. Istnieją trzy rodzaje przerzutników: bistabilne, monostabilne (tzw. uniwibratory) oraz astabilne (tzw. multiwibratory). W układach cyfrowych najczęściej stosowane są przerzutniki bistabilne mogące być stosowane jako układy pamiętające<ref>{{Cytuj książkę | autor = Bogdan Moeschke, Grzegorz Płoszajski | tytuł = Elektronika | wydawca = Wydawnictwo Szkolne i Pedagogiczne | miejsce = Warszawa | rok =1988 | strony =282 | isbn = 83-02-02367-1}}</ref>. Grupa czterech lub ośmiu połączonych ze sobą przerzutników bistabilnych może tworzyć tzw. [[Rejestr (elektronika)|rejestr]], zdolny do pamiętania jednego [[bajt]]a informacji.
*{{przypisy}}
 
== Zastosowanie ==
[[Plik:Transistor Bistable interactive animated EN.svg|thumb|Animowana interaktywna ilustracja multiwibratora bistabilnego na tranzystorach dyskretnych (sugerowane rezystancje: ''R1, R2'' = 1 k&Omega; ''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:
* Pamiętania stanu układu, zobacz: [[Automat skończony|Maszyna stanów skończonych]] (ang. FSM od ''Finite State Machine''),
* Przechowywania obecnie przetwarzanego słowa danych, zobacz: [[Rejestr (elektronika)|rejestr]], [[Akumulator (informatyka)|akumulator]], [[Jednostka arytmetyczno-logiczna|ALU]],
* Implementacji [[licznik (elektronika)|liczników]],
* Implementacji [[Rejestr przesuwający|rejestrów przesuwających]],
* Implementacji rejestrów przesuwających z liniowym sprzężeniem zwrotnym (ang. [[Rejestr przesuwający z liniowym sprzężeniem zwrotnym|LFSR]] od ''Linear Feedback Shift Register'').
 
== Typy przerzutników ==
Wśród monolitycznych (scalonych) przerzutników wyróżnia się:
* [[Przerzutnik typu RS]],
* [[Przerzutnik typu D]],
* [[Przerzutnik typu T]],
* [[Przerzutnik typu JK]],
* [[Przerzutnik typu JK-MS]] (MS od ''Master'' i ''Slave''),
* [[Synchroniczny przerzutnik typu RS]].
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<ref>{{cytuj stronę| url = http://staff.um.edu.mt/vbut1/diplomait/logic2.pdf| tytuł = Computer logic, part 2| data dostępu = 2011-03-18| autor = Victor Buttigieg| opublikowany = University of Malta| język = en}}</ref>.
 
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 [[bramka logiczna|bramek logicznych]] można zrealizować dowolny inny rodzaj przerzutnika.
 
== 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. [[Zegar (generator)|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 <span style="border-top:1px solid black; padding:1px">Q</span>
 
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 ==
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ójka licząca|dwójkę liczącą]]. W tym celu wystarczy połączyć wyjście zanegowane <span style="border-top:1px solid black; padding:1px">Q</span> 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 [[Dwójkowy system liczbowy|kodu dwójkowego]] - podstawowego [[kod]]u wagowego używanego w technice cyfrowej.
 
Stromość zboczy sygnałów zegarowych (wyrażana w nanosekundach), jest parametrem krytycznym w [[układ sekwencyjny|układach sekwencyjnych]]. Przerzutniki nie są tu wyjątkiem, stąd współcześnie wejścia zegarowe spotyka się najczęściej w wykonaniu [[Przerzutnik Schmitta|Schmitta]], charakteryzującym się obecnością tzw. pętli [[Histereza|histerezy]]. Histereza oznacza 2 progi przełączania - inne dla każdego kierunku zmian napięcia na wejściu zegarowym.
 
== 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świetlacz]]u. Dowolny przerzutnik tego typu charakteryzuje się mniejszą [[Odporność na zakłócenia|odpornością na zakłócenia]] od dowolnego przerzutnika wyzwalanego zboczem.
 
== 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.
 
== Tablica wzbudzeń 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ść,
* Q<sub>t</sub> - aktualny stan wyjścia,
* Q<sub>t+1</sub> - stan następny wyjścia.
 
{| class=wikitable
!width=40 bgcolor="#e6e6e6"|Q<sub>t</sub>
!width=40 bgcolor="#e6e6e6"|Q<sub>t+1</sub>
!width=40 bgcolor="#e6e6e6"|D
!width=40 bgcolor="#e6e6e6"|T
!width=40 bgcolor="#e6e6e6"|SR
!width=40 bgcolor="#e6e6e6"|JK
|---
|width=40 align=center|0
|width=40 align=center|0</p>
|width=40 align=center|0</p>
|width=40 align=center|0</p>
|width=40 align=center|0X</p>
|width=40 align=center|0X</p>
|---
|width=40 align=center|0</p>
|width=40 align=center|1</p>
|width=40 align=center|1</p>
|width=40 align=center|1</p>
|width=40 align=center|10</p>
|width=40 align=center|1X</p>
|---
|width=40 align=center|1</p>
|width=40 align=center|0</p>
|width=40 align=center|0</p>
|width=40 align=center|1</p>
|width=40 align=center|01</p>
|width=40 align=center|X1</p>
|---
|width=40 align=center|1</p>
|width=40 align=center|1</p>
|width=40 align=center|1</p>
|width=40 align=center|0</p>
|width=40 align=center|X0</p>
|width=40 align=center|X0</p>
|}
 
== Budowa wewnętrzna ==
Wszystkie przerzutniki w monolitycznych [[Układ scalony|układach scalonych]] zbudowane są w oparciu o [[Bramka logiczna|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 [[tranzystor]]y (wcześniej [[Lampa elektronowa|lampy elektronowe]]) sprzężone pojemnościowo.
 
== CMOS zamiast TTL ==
W dominującej w latach 70. i 80. rodzinie układów cyfrowych [[Transistor-transistor logic|TTL]] (ang. ''Transistor-Transistor Logic'') na przykład dwa przerzutniki D zawierał popularny układ scalony (<span title="Cemi - Polska">UCY</span>|MCY|<span title="Texas Instruments">SN</span>)7474.
 
W nowszej rodzinie układów cyfrowych [[CMOS]] (Complementary MOS) przerzutniki typu D ma układ (<span title="Motorola">MC1</span>|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 (elektronika)|LS]] (ang. Low-power Schottky) znalazły swoje ścisłe, nowocześniejsze zamienniki w serii układów CMOS o oznaczeniu literowym [[HCT (elektronika)|HCT]] (np. CD74HCT74).
 
== 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 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 ==
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.
 
[[Plik:Setup&Hold time 1 pl.svg|frame|center|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.
 
[[Plik:Setup&Hold time 2.png|frame|center]]
 
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}}
 
{{Commons|Flip-flops}}