W poprzednich rozdziałach omówiono różnorodne techniki analizy układów cyfrowych, w tym algebrę Boole’a, tabele prawdy, mapy Karnaugh oraz wykresy stanów. Diagramy stanów są szczególnie przydatne przy przedstawianiu działania układów sekwencyjnych, takich jak liczniki czy rejestry przesuwne. Zasadniczo diagram stanów to rodzaj grafu skierowanego, w którym stany reprezentowane są przez okręgi, a przejścia między stanami przez strzałki. W każdym okręgu zapisany jest kod binarny, który wskazuje, w jakim stanie znajduje się maszyna.

Przejścia między stanami są również kierowane i oznaczają możliwe zmiany stanu, które mogą nastąpić w wyniku zmiany zmiennych wejściowych. Każde przejście zawiera informacje o wymaganych wartościach wejściowych, które muszą zostać spełnione, aby zmiana stanu miała miejsce. Przejścia zachodzą na każdej krawędzi zegara, gdzie maszyna opuszcza bieżący stan i wchodzi w stan następny. W przypadku niektórych maszyn, ze względu na określone warunki wejściowe, konieczne może być, aby maszyna pozostała w jednym stanie. Tego rodzaju stan jest reprezentowany przez strzałkę, która wychodzi z danego stanu i ponownie do niego wraca.

W przykładzie dotyczącym rejestru stanów z trzema przerzutnikami (flip-flopami) pokazano, że jeśli rejestr stanu zawiera wartość „000”, to pozostanie w tym stanie, gdy zmienna wejściowa A wynosi „0” na następnej krawędzi zegara. W przeciwnym razie, jeśli A wynosi „1”, stan zostanie zmieniony. Podobnie, w przypadku innych układów, np. drzwi, które mogą tylko się otwierać i zamykać, diagram stanu pokazuje dwie główne fazy: „otwarte” i „zamknięte”. Zamiast pełnych „pozostających” stanów, które zazwyczaj przedstawia się za pomocą „pętli samoczynnych”, można je po prostu pominąć, zakładając, że stan pozostaje bez zmiany, gdy nie zachodzą żadne przejścia.

W diagramie stanów dla przełącznika zmieniającego stan (tzw. T flip-flop) pokazano działanie układu, który zmienia stan z „0” na „1” i odwrotnie. Możemy zobaczyć, jak działa typowy układ przerzutnika, w którym stan wyjściowy Q zależy od poprzedniego stanu Qn oraz wartości zmiennych wejściowych. Na podstawie tabeli prawdy można wyznaczyć, jaki będzie stan Q po zegarze, w zależności od wartości wejść. Wartość Qn+1 jest określana przez kombinację wartości wejść i poprzedniego stanu.

Zastosowanie diagramów stanów w analizie układów cyfrowych pozwala na wizualizację logicznych zależności między stanami układu i ułatwia projektowanie maszyn stanowych. Diagramy stanów są również pomocne w identyfikacji błędów w układach sekwencyjnych, zwłaszcza w przypadku liczników czy innych układów, które muszą przejść przez określoną sekwencję stanów. Dla przykładu, przy analizie liczników, często zdarza się, że w wyniku niewłaściwego połączenia przerzutników pojawia się błąd w przejściu między stanami. Zastosowanie dodatkowej logiki pozwala na skorygowanie tych błędów, co pokazuje przykład dodawania logiki do liczników z przerzutnikami JK.

Przykład liczby stanów w diagramach, jak w przypadku licznika Johnsona (4-bitowego), wymaga analizy tabeli prawdy, mapy Karnaugh oraz wykresu stanów, aby zoptymalizować projekt układu i zminimalizować błędy logiczne. W przypadku bardziej zaawansowanych układów sekwencyjnych, takich jak liczniki z dodatkowymi przerzutnikami, można zastosować metodę analizy krok po kroku, sprawdzając poprawność przejść między stanami i wyeliminować błędy logiczne.

Zatem przy projektowaniu i analizowaniu układów cyfrowych, diagramy stanów pełnią kluczową rolę w przedstawianiu działania układów sekwencyjnych i identyfikacji błędów w ich funkcjonowaniu. Stanowią one niezastąpione narzędzie zarówno w nauce, jak i w praktyce inżynierskiej.

Jak działają przerzutniki: od SR po T Flip-Flop

Przerzutniki stanowią fundamenty nowoczesnych układów cyfrowych, będąc podstawowymi elementami pamięci. W tym rozdziale przyjrzymy się działaniu kilku rodzajów przerzutników, zaczynając od najprostszych – przerzutnika SR, aż po bardziej zaawansowane układy, takie jak przerzutnik T.

Przerzutnik SR (Set-Reset) to najprostszy układ bistabilny, który charakteryzuje się dwoma wejściami i dwoma wyjściami, które są wzajemnie komplementarne. Zasadniczo jest to urządzenie, w którym impuls na jednym z wejść powoduje, że wyjście przyjmuje określoną logikzną wartość, która pozostaje w tym stanie do momentu, aż na drugie wejście zostanie podany kolejny impuls. Zmiana na jednym z wejść zmienia stan wyjścia na przeciwny, ale wyjście utrzymuje ten stan do momentu, gdy na wejście podany zostanie sygnał zmieniający stan.

W przerzutniku SR mamy dwa wejścia: Set (ustawiające stan) i Reset (resetujące stan). W układzie bazującym na bramkach NAND, jeśli oba wejścia Set i Reset są ustawione w stan logiczny 1, wyjście Q pozostaje w stanie 0. Zmiana stanu Resetu lub Setu powoduje odpowiednią zmianę na wyjściu Q. Warto zauważyć, że jeśli oba wejścia są ustawione na 0, stan wyjścia staje się nieokreślony, co sprawia, że takie ustawienie jest niezalecane, gdyż może prowadzić do nieprzewidywalnych rezultatów. Dlatego projektując układy z przerzutnikami SR, należy unikać jednoczesnego ustawiania obu wejść na 0.

Alternatywą dla układu opartego na bramkach NAND jest wykorzystanie bramek NOR, które również tworzą bistabilny układ. W tym przypadku, gdy jedno z wejść Set lub Reset jest w stanie 1, stan wyjścia Q pozostaje w pierwotnej wartości. Zmiana jednego z tych wejść zmienia stan wyjścia, podobnie jak w przypadku poprzedniej konfiguracji. Jednak, podobnie jak w układzie NAND, jeśli oba wejścia Set i Reset są jednocześnie ustawione na 0, układ staje się nieokreślony.

Kolejnym rodzajem układu jest przerzutnik zwany "latch", który różni się od przerzutnika SR tym, że działa na poziomach logicznych, a nie na krawędziach zegara. Latch jest sterowany bezpośrednio przez stan logiczny wejścia zegara. W przypadku, gdy zegar jest aktywny (wysoki), latch przyjmuje wartość wejścia. Latchy są często używane w sytuacjach, gdzie wymagane jest równoczesne wyprowadzenie wszystkich stanów po osiągnięciu stabilnego warunku, jak ma to miejsce w konwerterach kodu Gray'a na kod binarny.

Przerzutniki D są odmianą przerzutników SR, w których jedno z wejść jest zawsze ustawione w odwrotności do drugiego, co eliminuje nieokreślony stan, który występował w przerzutnikach SR. Przerzutnik D działa jak przełącznik, który przenosi dane z wejścia D na wyjście Q, gdy zegar jest aktywny. Przerzutnik D jest znany również jako "przezroczysty latch", ponieważ w stanie aktywnym (wysoki zegar) dane na wejściu są natychmiast przenoszone na wyjście. Ten układ jest powszechnie stosowany w cyfrowych układach rejestrów, a także w bardziej skomplikowanych układach, jak np. synchronizatory w systemach cyfrowych.

Innym rodzajem przerzutnika jest przerzutnik T (Toggle), który zmienia swój stan za każdym razem, gdy na wejście zegara podawany jest impuls narastający. Jest to podstawowy element wykorzystywany w licznikach cyfrowych oraz dzielnikach częstotliwości. Przerzutnik T jest szczególnie użyteczny, ponieważ jego stan zmienia się tylko przy narastającym zboczu impulsu zegarowego, co czyni go niezastąpionym w wielu układach, które wymagają synchronizacji w czasie. Można go uzyskać na bazie innych typów przerzutników, takich jak przerzutnik JK lub D, poprzez odpowiednie połączenie ich wejść.

Wszystkie wymienione przerzutniki są niezbędnymi elementami w budowie układów cyfrowych. Warto zatem zwrócić uwagę na to, że dobór odpowiedniego typu przerzutnika zależy od wymagań danego układu. Na przykład, gdy wymagane jest zapisywanie stanów logicznych w sposób jednoznaczny, odpowiedni będzie przerzutnik D. W przypadku potrzeby zmiany stanu tylko przy wybranych impulsach zegara, lepszym wyborem będzie przerzutnik T.

Każdy z tych przerzutników ma swoje unikalne zastosowanie, a ich zrozumienie i umiejętność implementacji w projektach elektronicznych stanowi podstawową wiedzę każdego inżyniera zajmującego się elektroniką cyfrową.