Pierwsze kroki w cyfrówce – część 14
W poprzednich odcinkach cyklu zapoznałeś się z przerzutnikami. W tym odcinku zapoznasz się bliżej z rejestrem i poznasz niebezpieczeństwa związane z sygnałem zegarowym.
Rejestr przesuwny
Teraz już nie będziesz miał wątpliwości, jak działa rejestr przesuwny. Nie bój się tej nazwy. W sumie każdy rejestr przesuwny działa na tej samej prostej zasadzie, a poszczególne układy scalone zawierające rejestry różnią się liczbą wejść, wyjść oraz pewnymi dodatkami. O tym porozmawiamy później. Teraz podstawy.
Rejestr przesuwny otrzymamy łącząc kilka przerzutników D w układzie z rysunku 1. To wszystko!
Czy masz jakiekolwiek wątpliwości, jak pracuje rejestr? Mam nadzieję, że nie.
Znów można powiedzieć, że prawidłowa praca rejestru związana jest z opóźnieniami, które omawialiśmy w poprzednim artykule. Gdy na wszystkich wejściach zegarowych w jednej chwili pojawia się aktywne (ostre) zbocze, wtedy do każdego przerzutnika rejestru wpisywany jest stan wyjścia poprzedniego przerzutnika (a do pierwszego – stan panujący aktualnie na jego wejściu D). Jeśli w przerzutnikach nie byłoby żadnego opóźnienia sygnału, to nie wiadomo, jak zachowałby się taki rejestr – być może informacja z wejścia A podczas jednego jedynego zbocza zegara zdążyłaby „przelecieć” przez cały rejestr. Dzięki opóźnieniu sygnału (o te nasze nanosekundy pokazane na rysunku 5b w poprzedniej części) podczas jednego taktu zegara informacja jest przenoszona tylko „o jeden stopień”, czyli do następnego przerzutnika. Generalna zasada jest więc podobna jak w układzie przerzutnika T z rysunku 5a w poprzedniej części.
Nie masz chyba wątpliwości, że informacja z wejścia rejestru jest pod wpływem impulsów zegarowych przesuwana przez kolejne komórki, czy stopnie tego rejestru, pojawiając się na kolejnych wyjściach rejestru oznaczonych: Q1, Q2, Q3, itd. (albo O1, O2, O3…). Zauważ jeszcze, iż informacja z ostatniego rejestru jest podczas każdego taktu po prostu tracona. Czasami tworzymy pętlę między wyjściem a wejściem rejestru, i informacja w postaci pewnej sekwencji stanów logicznych krąży sobie w takim pierścieniu.
Choć w amatorskiej praktyce rejestry nie są używane tak często, jak na przykład liczniki, to jednak powinieneś dokładnie poznać ich działanie. Zajmiemy się tym w jednym z następnych odcinków.
A teraz mam pytanie: czy z przerzutników JK też można zbudować rejestr?
Pomyśl uważnie. Sam spróbuj narysować stosowny układ.
Wymagania dotyczące sygnału zegarowego
Rysunek 5b w poprzedniej części wyjaśnia też inną sprawę. Do tej pory podawałem ci bez uzasadnienia, że sygnał zegarowy przerzutników, liczników i rejestrów powinien mieć bardzo strome zbocza. Kiedyś przy okazji omawiania bramek dowiedziałeś się, że przy zbyt wolnych zmianach bramka, która w istocie jest wzmacniaczem, może się wzbudzić i na wyjściu powstaną pasożytnicze drgania. Tym razem nie o to chodzi. W takim razie o co? Co się stanie, jeśli aktywne zbocze sygnału zegarowego będzie trwało długo, dłużej niż czas opóźnienia przerzutnika?
Taka sytuacja przedstawiona jest na rysunku 2.
No właśnie! Zazwyczaj nie znamy szczegółów wewnętrznej budowy przerzutnika (i nie potrzebujemy znać), a tym samym nie potrafimy precyzyjnie określić, co będzie się dziać w jego wnętrzu przy zbyt łagodnych zboczach. Ale już jeden rzut oka nasuwa wniosek, że jeśli w czasie trwania zbocza przerzutnik D zachowywałby się jak latch, czyli byłby przezroczysty, to z przerzutnika otrzymamy generator. Ten „generator” będzie uruchamiany tylko na czas trwania zbyt łagodnych zboczy sygnału zegarowego. W każdym razie nie będziemy w stanie przewidzieć, jaki stan pojawiłby się na wyjściu po takim zbyt łagodnym zboczu zegarowym.
Ale przerzutnik podczas obecności aktywnego zbocza wcale nie musi zachowywać się jak latch, czyli być przez chwilę przezroczysty. Może zachowywać się inaczej, na przykład wpisywać dane z wejścia na wyjście jednorazowo, w momencie gdy sygnał na wejściu zegarowym osiągnie określone napięcie. Przy takim jednorazowym wpisywaniu nie trzeba się obawiać, że przerzutnik zamieni się na chwilę w generator.
Nie zmienia to jednak wymagania, że zbocza na wejściu zegarowym zawsze powinny być ostre!
I tu przechodzimy do najczystszej praktyki. Wielu konstruktorów zapomina często o tym jakże ważnym wymaganiu na stromość zboczy sygnału zegarowego. Niektórzy chcą sterować pracą dwójki liczącej, pracującej w charakterze wyłącznika załącz/wyłącz za pomocą obwodu z przyciskiem, pokazanego na rysunku 3a.
To jest oczywiście bez sensu, przede wszystkim ze względu na drgania styków – wskutek drgań zmiana stanu wystąpi od kilku do kilkudziesięciu razy po jednorazowym uruchomieniu przycisku. Inni wiedząc o tych drganiach, „przezornie” dodają obwód RC likwidujący te drgania. Oczywiście popełniają błąd, podając na wejście zegarowe sygnał o bardzo wolnym czasie narastania.
Tu muszę ci powiedzieć w zaufaniu, że choć z punktu widzenia „rasowego” konstruktora połączenia takie jak na rysunku 3b są nie do przyjęcia, to w niektórych przypadkach taki niepoprawny układ mimo wszystko pracuje poprawnie! Tylko nikomu o tym nie mów!
Czy to znaczy, że powinieneś wypróbować taki układ? Nie radzę! Może się bowiem zdarzyć, że po wymianie kostki na egzemplarz innego producenta, przy zmianie temperatury lub przy zmianie napięcia zasilającego, układ przestanie poprawnie działać. Nie ucz się więc takiej „partyzantki” i od początku trzymaj się zdrowych zasad. Jeśli chcesz sterować przerzutnikiem T za pomocą przycisku, to powinieneś zastosować układ z rysunku 4 z bramką Schmitta, wyostrzającą zbocza.
Może to być na przykład bramka 40106, 4093, układ z dwóch bramek NAND lub NOR, albo możesz przekształcić w bramkę Schmitta jeden z przerzutników kostki 4013.
Na marginesie podam ci informację, że niektóre liczniki mają wejście fabrycznie wyposażone w układ Schmitta. Nie boją się one łagodnych zboczy. W takim przypadku często na tym wejściu możemy i często stosujemy układ opóźniający RC. O tym porozmawiamy bliżej przy okazji omawiania liczników.
Inne zagrożenia
Zanim rozstaniemy się z przerzutnikami podam ci jeszcze inny przykład zagrożeń. Mamy złożony układ zawierający wiele przerzutników sterowanych wspólnym sygnałem zegarowym. Załóżmy, że użyte przerzutniki mają na wejściu zegarowym układ Schmitta. Wydawałoby się, że wtedy nie ma żadnego zagrożenia i sygnał zegarowy nie musi mieć ostrych zboczy. Przeanalizujmy więc działanie prostego rejestru przesuwnego, jaki pokazałem ci na rysunku 5.
Czy tu mogą wystąpić jakieś nieprzewidziane problemy?
Mogą! Jeśli nawet wejścia zegarowe wyposażone są w układ Schmitta, to musimy pamiętać, że każdy układ logiczny ma pewne progi przełączania, czyli graniczne poziomy napięć, które traktuje jako przejście ze stanu wysokiego do niskiego i takie, które traktuje jako przejście ze stanu niskiego do wysokiego. Może się zdarzyć i naprawdę się zdarza (z powodu niedoskonałości procesu technologicznego i nieuniknionych rozrzutów), że różne przerzutniki mają nieco inne progi przełączania. Nie są to różnice duże, ale na przykład jeden przerzutnik wpisuje na wyjście stan swego wejścia gdy napięcie na wejściu zegarowym wynosi 3,5 V, inny, gdy to napięcie wynosi 4,0 V, jeszcze inny przy 3,6 V, kolejny przy 4,3 V.
Na rysunku 5 pokazałem ci, co się będzie działo w rejestrze przy sygnale zegarowym o małej stromości zboczy, czyli o długim czasie narastania, gdy progi przełączania wejść zegarowych kolejnych przerzutników nie będą jednakowe, tylko takie, jak podałem wyżej. Przypuśćmy, że wcześniej na wyjściach Q1…Q4 występowały stany: L, H, L, H, a na wejściu w czasie trwania zbocza utrzymuje się stan wysoki.
Po nadejściu aktywnego zbocza zawartość rejestru powinna przesunąć się o jeden stopień w prawo, a do pierwszego przerzutnika powinien zostać wpisany stan wejścia. Na wyjściach: Q1…Q4 powinniśmy otrzymać kolejno: H, L, H, L.
Pamiętamy, że na wejściach zegarowych przerzutników jest układ Schmitta, więc nie grożą nam żadne pasożytnicze drgania z powodu zbyt łagodnych zboczy sygnału zegarowego. Ale rejestr mimo wszystko nie może pracować poprawnie, bo z uwagi na te niby drobne różnice w progowych napięciach przełączania, poszczególne przerzutniki będą wpisywać informacje ze swego wejścia na wyjście w różnych momentach. Jeśli różnice w czasach wpisywania są większe niż wspomniane wcześniej nanosekundowe opóźnienia, to rejestr nie ma szans na poprawną pracę.
Na rysunku 5 zaznaczono łagodne zbocze sygnału zegarowego, na nim napięcia progowe poszczególnych przerzutników i dodatkowo czerwonymi liniami momenty wpisywania informacji do poszczególnych przerzutników. Dodatkowo zaznaczono czasy opóźnienia T (przyjęto, że są jednakowe dla wszystkich przerzutników, co może nie być prawdą).
Przeanalizuj to dokładnie. Zamiast oczekiwanych stanów: H, L, H, L, otrzymamy na wyjściach Q1….Q4 stany: H, L, H, H. A co otrzymamy po następnym aktywnym zboczu zegarowym? Spróbuj to określić sam.
Tak się złożyło, że pierwsze trzy stopnie naszego rejestru pracują poprawnie, ale błędnie pracuje czwarty stopień. Zbyt łagodne zbocze zegarowe wpisuje na wyjście Q4 „nowy” stan wyjścia Q3, czyli stan wyjść Q3 i Q4 jest zawsze taki sam.
Może się wydawać, że w tym przykładzie przejaskrawiłem trochę problem rysując tak łagodne zbocze sygnału zegarowego, ale pamiętaj, że w grę wchodzą tu nanosekundy, czyli miliardowe części sekundy. Niebezpieczeństwo zasygnalizowane na rysunku 5 grozi nie tylko w układach z wejściem Schmitta, ale też we wszystkich układach synchronicznych (przerzutnikach, rejestrach i niektórych licznikach). Wbij to sobie do mózgownicy raz na zawsze i zawsze dbaj o strome zbocza sygnałów logicznych zwłaszcza zegarowych. W literaturze mówi się często o hazardach czasowych. Właśnie tu masz przykład takiego hazardu: jeśli masz szczęście i akurat trafisz na układy o jednakowych progach przełączania (lub przypadkowo trafisz właściwą kolejność przerzutników), to układ będzie pracował poprawnie także przy niezbyt ostrych zboczach sygnału zegarowego. Jeśli twojemu koledze, budującemu identyczny układ, szczęście nie dopisze i trafi na przerzutniki o różnych progach przełączania (i ustawi je w nieszczęśliwej kolejności), to będzie „bujał się” z układem i dziwił, dlaczego jego układ zbudowany ze sprawnych elementów nie chce działać, a twój działa. Dojdzie do wniosku, że elektronika to jakaś magia tylko dla wtajemniczonych, i że zdarzają się tu zjawiska niewytłumaczalne. Tak właśnie rodzą się mity, pokutujące od dawna wśród elektroników.
Tymczasem w elektronice naprawdę nie ma nic z magii. Wszystkie zjawiska wynikają z niepodważalnych praw i zasad, a tym samym mają swoje logiczne wyjaśnienie. Potrzebna jest tylko rzetelna wiedza.
Właśnie w tym odcinku łykasz taką wiedzę. Jeśli więc przytrafi ci się coś takiego z przerzutnikami, wiedz iż nie masz szans znaleźć przyczyny za pomocą prostego oscyloskopu. Tylko pamiętanie o powyższych rozważaniach pomoże ci znaleźć przyczynę i drogę ratunku, a będzie nią po prostu wyostrzenie zboczy sygnału zegarowego.
Oczywiście nie jestem ci w stanie przedstawić wszystkich tego typu niespodzianek, jakie na ciebie czekają w cyfrówce. Nie omówiliśmy tu do końca sprawy opóźnień. W rejestrach są one błogosławieństwem, ale w wielu układach pracujących przy dużych częstotliwościach są przekleństwem. Nie będę męczył cię tą sprawą, bo rzadko daje ona o sobie znać, jeśli częstotliwości pracy nie są większe niż 1 MHz. A ty na razie będziesz miał do czynienia z takimi, niezbyt szybkimi układami. W każdym razie w przypadku bardziej skomplikowanych układów cyfrowych nastaw się, że nie obejdzie się tu bez doświadczeń i (nie)licznych nieudanych prób.
Nie wspomniałem ci do tej pory o tak zwanych szpilkach. Są to bardzo krótkie impulsy, trwające kilkanaście do kilkuset nanosekund, czyli tak krótko, że nie masz szans wykryć ich za pomocą prostego oscyloskopu czy nawet prostego analizatora układów logicznych. Szpilki te mogą pojawiać się na szynach zasilających (tak!) oraz po prostu w układzie.
Szpilki w obwodach zasilania wynikają z dwóch przyczyn. Jak już wiesz, w momencie przełączania, zarówno bramki jak i inne układy przez krótki ułamek sekundy pobierają znaczny prąd. Trzeba pamiętać, że po pierwsze ścieżki płytki drukowanej mają pewną rezystancję. Wspomniane impulsy prądowe wywołują spadek napięcia na tej rezystancji, czyli właśnie szpilki (zmiany napięcia), mogące zakłócić pracę układu.
Po drugie ścieżki mają pewną indukcyjność. Choć indukcyjność ta jest mała, poniżej 1 mikrohenra, to jednak przy bardzo szybkich impulsach prądowych, na indukcyjnościach ścieżek pojawiają się znaczne napięcia samoindukcji.
Jedynym ratunkiem jest tu blokowanie zasilania, czyli dołączenie kilku niewielkich (10…100 nF) bezindukcyjnych kondensatorów (zwykle ceramicznych) między szyny zasilające, w pobliżu układów scalonych.
Zjawisko to nie jest szczególnie groźne w stosunkowo powolnych układach CMOS rodziny 4000. W amatorskich konstrukcjach kostki CMOS4000 często pracują bez jakichkolwiek kondensatorów odsprzęgających szyny zasilania i nic złego się nie dzieje. Ale w przypadku najszybszych układów (F, ACT, AC) jest to istotny problem.
Oczywiście inne szpilki też nie pojawiają się bez przyczyny. Przyczyny mogą być różne. Prawie zawsze wynika to z jakiegoś błędu konstruktora (ale zakłócenia indukują się także pod wpływem obcych, zewnętrznych pól elektromagnetycznych).
Trudno wymienić wszystkie możliwe przyczyny, ale skorzystanie ze wskazówek podanych w tym odcinku pozwoli uniknąć większości przykrych niespodzianek.
Wnioski
Aby uniknąć problemów, dmuchaj na zimne i zawsze stosuj kondensatory odsprzęgające zasilanie (ceramiczne lizaczki 100 nF); umieść przynajmniej jeden taki kondensator w urządzeniu z kostkami CMOS4000.
Generalnie powinieneś zwracać baczną uwagę na stromość zboczy sygnałów, w szczególności zegarowych. Nie musisz się niczego obawiać, jeśli sygnał (zegarowy) wytwarzany jest przez bramki, przerzutniki czy liczniki, czyli przez inne typowe układy logiczne. Ale wszędzie tam, gdzie mogą zdarzyć się niespodzianki, gdzie sygnały przychodzą z innych źródeł i mogłyby nie mieć krótkich czasów narastania (poniżej jednej mikrosekundy), lepiej przezornie zastosuj wspomnianego „szmita” na wejściu. Wtedy będziesz spał spokojnie, nie obawiając się, że w jakiś skrajnych warunkach pracy układ odmówi posłuszeństwa właśnie ze względu na zbyt łagodne zbocza sygnałów, związane z tym hazardy czasowe oraz możliwość powstania pasożytniczych drgań.
No i co? Czy aby nie przestraszyłem cię i nie zniechęciłem tymi informacjami?
Pociesz się: projektowanie układów cyfrowych i tak jest dużo, dużo łatwiejsze od projektowania układów analogowych, zwłaszcza sprzętu pomiarowego i wyższej klasy układów audio.
Znakomitym ćwiczeniem w wykorzystaniu omówionych właśnie układów jest próba skonstruowania prostego i funkcjonalnego układu alarmowego: do samochodu, domku czy garażu. Układ powinien pobierać w spoczynku jak najmniej prądu. Ewentualne elektrolity powinny w spoczynku pozostawać pod napięciem. Zachęcam do takich prób!
W następnym odcinku zajmiemy się licznikami.
Piotr Górecki