Jaworek Michał grupa 12.
Sprawozdanie
(liczniki)
Wstęp teoretyczny:
Licznik – układ cyfrowy zliczający liczbę impulsów wejściowych . Liczniki buduje się z przerzutników. Najprostszym licznikiem jest tzw.
dwójka licząca. Łatwo ją otrzymać z przerzutnika D albo z przerzutnika JK. Wejście zegarowe przerzutnika jest wejściem dwójki. Idea działania
dwójki liczącej jest przestawiona na poniższym rysunku:
Jak widać sygnał wyjściowy ma dwa razy niższą częstotliwość niż sygnał wejściowy. Podobna zależność występuje w przypadku liczb
zapisanych w systemie BCD – bit zmienia się dwa razy rzadziej niż kolejny młodszy bit (znajdujący się bezpośrednio bo jego prawej stronie). Te dwa
fakty połączono tworząc liczniki. Jeżeli połączymy szeregowo kilka dwójek liczących otrzymamy układ w którym każda następna dwójka licząca
zmienia się dwa razy rzadziej niż poprzednia. Wiec pierwsza dwójka licząca będzie reprezentować najmłodszy bit zaś ostatnia najstarszy. Naszym
celem jest otrzymanie takiego przebiegu:
Zadanie 1
Zbuduj dwójkę liczącą na 4 różne sposoby (przy wykorzystaniu przerzutnika typu T, typu JK oraz typu D)
a) typ T
Przerzutnik typu T to przerzutnik typu JK w którym oba wejścia (J i K) zostały zwarte i nazwane wejściem T. W tym przypadku
wykorzystujemy tę cechę przerzutnika T. Jeżeli na jego wejście będziemy stale podawać stan wysoki przerzutnik będzie zmieniał stan na przeciwny
przy każdym takcie zegara. W takim razie nasza dwójka licząca wygląda następująco:
W powyższym układzie wykorzystałem element JK ze zwartymi wejściami ponieważ program Multimedia Logic nie posiada w swojej palecie
przerzutnika T a powyższe połączenie jest zupełnie równoznaczne.
Powyższy układ dobrze obrazuje idee działania dwójki liczącej zbudowanej na przerzutniku typu T, jednak nie jest w pełni poprawny. Po
uruchomieniu tego układu dioda ciągle wskazuje stan nieokreślony. Jest ponieważ gdy symulacja jest uruchamiana przerzutnik znajduje się w stanie
nieokreślonym Sygnał na wejściu wskazuje mu żeby przerzucił się w stan przeciwny. Ale niestety nie ma czegoś takiego jak stan przeciwny do stanu
nieokreślonego – dlatego nasz układ zawodzi. Rozwiązaniem tego problemu jest użycie elementu z asynchronicznymi wejściami (CLR, PRE). Po
uruchomieniu symulacji możemy dzięki temu nadać przerzutnikowi stan początkowy co sprawi że od tej chwili będzie działał poprawnie.
(Jednorazowe użycie przyciska PUSH owocuje prawidłową pracą układu)
b) typ D
Znając właściwości przerzutnika typu D możemy w łatwy sposób zbudować dwójkę liczącą przy jego pomocy. Przerzutnik typu D przyjmuje
stan jaki jest podany na jego wejście. To znaczy, że jeżeli chcemy aby zmieniał regularnie stan na przeciwny należy na jego wejście wprowadzić stan
przeciwny do jego obecnego stanu. Może to otrzymać wprowadzając na wejście sygnał z wyjścia `Q. Idee przedstawiono na rysunku:
Podobnie jak w poprzednim przypadku powyższy układ dobrze obrazuje idee działania dwójki liczącej zbudowanej na przerzutniku typu D,
jednak nie jest w pełni poprawny. Po uruchomieniu tego układu dioda ciągle wskazuje stan nieokreślony. Jest ponieważ gdy symulacja jest
uruchamiana przerzutnik znajduje się w stanie nieokreślonym Sygnał na wejściu wskazuje mu żeby przerzucił się w stan przeciwny. Ale niestety nie
ma czegoś takiego jak stan przeciwny do stanu nieokreślonego – dlatego nasz układ zawodzi. Rozwiązaniem tego problemu jest użycie elementu z
asynchronicznymi wejściami (CLR, PRE). Po uruchomieniu symulacji możemy dzięki temu nadać przerzutnikowi stan początkowy co sprawi że od tej
chwili będzie działał poprawnie.
(Jednorazowe użycie przyciska PUSH owocuje prawidłową pracą układu)
c) typ JK (wersja 1)
Skoro przerzutnik typu JK zmienia stan na przeciwny gdy ma na wejściach JK jedynki można by podłączyć go tak żeby jedynki podawane z
zegara na wejście C były równocześnie podawane na wejścia JK. Należy jednak zadbać o to żeby użyty przerzutnik był aktywny w momencie kiedy
zegar podaje wartość jeden. W bibliotece elementów programu Multimedia Logic przerzutnik JK wywoływany jest stanem niskim więc konieczne było
użycie inwertera jak na rysunku.
Podobnie jak w poprzednim przypadku powyższy układ dobrze obrazuje idee działania dwójki liczącej zbudowanej na przerzutniku typu JK,
jednak nie jest w pełni poprawny. Po uruchomieniu tego układu dioda ciągle wskazuje stan nieokreślony. Jest ponieważ gdy symulacja jest
uruchamiana przerzutnik znajduje się w stanie nieokreślonym Sygnał na wejściu wskazuje mu żeby przerzucił się w stan przeciwny. Ale niestety nie
ma czegoś takiego jak stan przeciwny do stanu nieokreślonego – dlatego nasz układ zawodzi. Rozwiązaniem tego problemu jest użycie elementu z
asynchronicznymi wejściami (CLR, PRE). Po uruchomieniu symulacji możemy dzięki temu nadać przerzutnikowi stan początkowy co sprawi że od tej
chwili będzie działał poprawnie.
(Jednorazowe użycie przyciska PUSH owocuje prawidłową pracą układu)
d) typ JK (wersja 2)
Istnieje jeszcze jedna metoda aby przerzutnik typu JK przeskakiwał do stanu przeciwnego. Jeżeli przerzutnik jest w stanie wysokim jego
wyjścia to:
Q = 1
~Q = 0
Jeśli chcemy ze stanu wysokiego przejść na niski powinniśmy podać na wejścia:
J = 0
K = 1
W takim razie powinniśmy wykonać następujące podstawienie:
J := ~Q
K := Q
Trzeba jednak sprawdzić czy takie podłączenie będzie dobrze sprawdzać się gdy przerzutnik typu JK będzie w stanie niskim. Wówczas:
Q = 0
~Q = 1
Podłączenie
J := ~Q
K := Q
tzn
J := 1
K := 0
sprawi, że przerzutnik przejdzie w stan wysoki.
W takim razie ta koncepcja dwójki liczącej jest dobra. Przedstawiono ją na rysunku:
Podobnie jak w poprzednim przypadku powyższy układ dobrze obrazuje idee działania dwójki liczącej zbudowanej na przerzutniku typu JK,
jednak nie jest w pełni poprawny. Po uruchomieniu tego układu dioda ciągle wskazuje stan nieokreślony. Jest ponieważ gdy symulacja jest
uruchamiana przerzutnik znajduje się w stanie nieokreślonym Sygnał na wejściu wskazuje mu żeby przerzucił się w stan przeciwny. Ale niestety nie
ma czegoś takiego jak stan przeciwny do stanu nieokreślonego – dlatego nasz układ zawodzi. Rozwiązaniem tego problemu jest użycie elementu z
asynchronicznymi wejściami (CLR, PRE). Po uruchomieniu symulacji możemy dzięki temu nadać przerzutnikowi stan początkowy co sprawi że od tej
chwili będzie działał poprawnie.
Zadanie 2
Zbuduj asynchroniczny licznik BCD mod 10
Aby zbudować licznik BCD mod 10 w pierwszej kolejności zbudowałem licznik mod 16. W tym celu użyłem czterech dwójek liczących
zbudowanych na przerzutniku typu JK jak w zadaniu 1c. Schemat wyglądał następująco.
Aby z tego układu uzyskać licznik modulo 10 należało wprowadzić drobne zmiany. Układ powinien zerować się gdy na wyjściach pojawi się
kombinacja reprezentująca 10. 10 w zapisie binarnym to 1010. W takim razie na wejście ~CLR wprowadzimy teraz zanegowana alternatywę sygnału
pochodzącego z przyciska PUSH i zestawy bramek logicznych który będzie zwracać 1 gdy pojawi się kombinacja 1010. Przy ustawianiu bramek
logicznych należy pamiętać że w naszym przypadku przerzutnik po lewo reprezentuje najmłodszy bit a przerzutnik po prawo najstarszy. Jest to
lustrzane odbicie tego do czego przywykliśmy przy korzystaniu z system binarnego. Układ wygląda następująco:
Zadanie 3
Zbuduj asynchroniczny licznik BCD mod 13
Podobnie jak poprzednio aby zbudować licznik BCD mod 10 w pierwszej kolejności zbudowałem licznik mod 16. W tym celu użyłem czterech
dwójek liczących zbudowanych na przerzutniku typu JK jak w zadaniu 1c. Schemat wyglądał następująco.
Aby z tego układu uzyskać licznik modulo 13 należało wprowadzić drobne zmiany. Układ powinien zerować się gdy na wyjściach pojawi się
kombinacja reprezentująca 13. 13 w zapisie binarnym to 1101. W takim razie na wejście ~CLR wprowadzimy teraz zanegowana alternatywę sygnału
pochodzącego z przyciska PUSH i zestawy bramek logicznych który będzie zwracać 1 gdy pojawi się kombinacja 1101. Przy ustawianiu bramek
logicznych należy pamiętać że w naszym przypadku przerzutnik po lewo reprezentuje najmłodszy bit a przerzutnik po prawo najstarszy. Jest to
lustrzane odbicie tego do czego przywykliśmy przy korzystaniu z system binarnego. Układ wygląda następująco:
Wnioski:
–
Dzięki asynchronicznym wejściom przerzutników możemy realizować liczniki modulo n dla dowolnej liczby n.
–
Przerzutniki bez wejść asynchronicznych czytelniej obrazują idee działania układów jednak nie działają poprawnie w symulacji. (w przypadku
układów które oczekują określonego stanu na początku)
–
Należy pamiętać, że przerzutniki reprezentują najmłodsze bity licząc od lewej, a nie jak przy napisie binarnym od prawej. Pominięci tego fakty
przy budowie licznika modulo powoduje stworzenie innego licznika niż oczekiwany.