1.
LICZNIKI CYFROWE
1.1.
WIADOMO
ŚCI OGÓLNE
Licznikiem nazywamy sekwencyjny układ cyfrowy służący do zliczania i zapamiętywania liczby impulsów zero –
jedynkowych, podawanych w określonym przedziale czasu na jego wejście zliczające. Licznik cyfrowy jest zbudowany z
odpowiednio ze sobą połączonych przerzutników TTL.
Ogólnie biorąc, licznik posiada wejścia dla impulsów zliczających, wejście ustawiające (zerujące) jego stan
początkowy asynchronicznie względem impulsów zliczanych lub synchronicznie z nimi.
Ustawienie wszystkich przerzutników, wchodzących w skład licznika, w stan 0 nazywa się zerowaniem. Symbol
graficzny licznika pokazano na rys. 7.1, na którym zaznaczono wejście impulsów zliczanych, wejście ustawiające stan
początkowy oraz wyjścia.
Rys. 7.1 Symbol graficzny licznika.
Na podstawie stanu wyjść można określić ile impulsów pojawiło się na wejściu układu od chwili, kiedy licznik był ostatnio w
stanie początkowym.
Każdy licznik posiada określoną pojemność (zwana długością cyklu), tzn. może zliczyć określoną liczbę impulsów,
co odpowiada liczbie stanów układu przyjmowanych przez licznik w jednym pełnym cyklu.
Licznik jest układem sekwencyjnym, zbudowany z przerzutników i układu kombinacyjnego zapewniającego takie ich
sterowanie, aby pod wpływem impulsu wejściowego przeszły do kolejnego stanu działania. Licznik posiada s – stanów, a kolejne
stany licznika są ponumerowane liczbami: 0, 1, 2,... s – 2, s – 1. Każdemu określonemu stanowi licznika odpowiada jedna, ściśle
określona kombinacja stanów przerzutników, z których jest on zbudowany. Jeden przerzutnik może być w dwu stanach, dwa
przerzutniki mogą dać kombinację 2
⋅
2 = 2
2
= 4 stanów, a n przerzutników może opisać 2
n
stanów. Dlatego do utworzenia
licznika o s stanach potrzeba n przerzutników:
(2
n-1
≤ s ≤ 2
n
)
Pojemność zależy od liczby przerzutników wchodzących w skład licznika.
Ze względu na długość cyklu liczniki można podzielić na:
1.
Liczniki o stałej długości cyklu,
2.
Liczniki o nastawionej długości cyklu.
Ze względu na sposób powtarzania cyklu liczniki można podzielić na:
§
Liczniki modulo s (dzielnik liczby lub częstotliwości impulsów przez s),
§
Liczniki do s.
Licznikiem modulo s nazywamy licznik posiadający s wyróżnialnych stanów, przez które przechodzi cyklicznie
(powtarza cykl) pod wpływem impulsów wejściowych.
Licznikiem do s nazywamy licznik posiadający s wyróżnialnych stanów, przez które przechodzi jednokrotnie. Jeśli
licznik do s, po osiągnięciu ostatniego stanu cyklu, ma mieć ponownie s wyróżnialnych stanów, to należy sprowadzić go do
stanu początkowego.
Ze względu na kierunek zliczania liczniki dzielimy na:
1.
Liczniki jednokierunkowe:
- zliczające w przód, jeśli liczby reprezentujące zawartość informacyjną licznika wzrastają w trakcie liczenia kolejnych
impulsów,
- zliczające wstecz, jeśli liczby reprezentujące zawartość informacyjną licznika maleją w trakcie liczenia kolejnych
impulsów,
2.
Liczniki dwukierunkowe
Liczniki dwukierunkowe (rewersyjne) są to liczniki zliczające impulsy zarówno w przód jak i wstecz.
Ze względu na sposób oddziaływania impulsów zliczanych na stan przerzutników licznika, liczniki można
sklasyfikować następująco:
1.
Liczniki asynchroniczne (szeregowe),
2.
Liczniki synchroniczne (równoległe).
W liczniku asynchronicznym impulsy zliczane są podawane tylko na jedno z wejść zegarowych przerzutników
licznika.
Wyjścia
…
…
W
ej
śc
ia
Układ
sekwencyjny
s - stanowy
Impulsy zliczane
Impuls zerujący
(ustawiający)
W liczniku synchronicznym impulsy zliczane są podawane na wejścia zegarowe wszystkich przerzutników
jednocześnie wchodzących w skład licznika.
Układ asynchronicznego licznika jest układem szeregowym (połączenie szeregowe). Natomiast układ
synchronicznego licznika jest układem równoległym. Dlatego liczniki asynchroniczne są nazywane licznikami szeregowymi, a
liczniki synchroniczne – licznikami równoległymi.
Układ równoległy zapewnia jednoczesność zmian stanów przerzutnika, a więc najkrótszy czas propagacji i największą
częstotliwość impulsów wejściowych.
1.2.
LICZNIKI ASYNCHRONICZNE
W licznikach asynchronicznych (szeregowych) zmiana stanu kolejnego przerzutnika odbywa się pod wpływem
zmiany stanu przerzutnika poprzedniego. Najprostszym przykładem licznika szeregowego jest kaskada n szeregowo połączonych
przerzutników.
Liczniki szeregowe realizujemy najczęściej na przerzutnikach typu T lub JK o zwartych wejściach informacyjnych.
Algorytm projektowania liczników szeregowych:
1.
Ustalić liczbę przerzutników niezbędnych do realizacji licznika (w zależności od pojemności licznika 2
n
).
2.
Na wejścia informacyjne T lub JK (zwarte) – podać „1”.
3.
Jeżeli licznik liczy w przód – połączyć wejścia zegarowe następnego przerzutnika z wyjściem „Q” poprzedniego.
Przykład 7.1:
Na rys. 7.2 przedstawiono schemat logiczny licznika szeregowego zbudowanego z trzech przerzutników JK, zliczającego w
przód.
a)
b)
We
Q
0
Q
1
Q
2
0
1
2
3
4
5
6
7
8
0
1
0
1
0
1
0
1
0
0
0
1
1
0
0
1
1
0
0
0
0
0
1
1
1
1
0
c)
Rys. 7.2 Licznik szeregowy zliczający w przód o pojemności 8:
a) schemat logiczny, b) tablica stanów, c) przebiegi czasowe.
We
Q
0
Q
1
Q
2
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
0
J
0
Q
0
C
K
0
Q
0
„1”
J
1
Q
1
C
K
1
Q
1
Q
0
Q
1
Q
2
J
2
Q
2
C
K
2
Q
2
„1”
„1”
We
Wejścia synchroniczne przerzutników JK są przyłączone do jedynki logicznej. Czasami mogą być one nie użyte, co
jest równoznaczne z przyłączeniem ich do jedynki logicznej.
Impuls zliczany We jest wprowadzony na wejście zegarowe pierwszego przerzutnika. Wejścia zegarowe kolejnych
przerzutników są połączone z wyjściem Q poprzednich przerzutników. Zmienna Q
0
reprezentuje wagę 2
0
– czyli 1, waga
zmiennej Q
1
wynosi 2
1
– czyli 2, a zmiennej Q
2
– 2
2
, czyli 4.
W chwili początkowej wszystkie przerzutniki są w stanie 0 (Q
0
= Q
1
= Q
2
= 0). Jeśli na wejście zegarowe pierwszego
przerzutnika zostanie podany impuls, to powoduje on zmianę stanu jego wyjścia Q
0
z 0 na 1. Stan drugiego przerzutnika nie
ulegnie zmianie, ponieważ na wejściu zegarowym przerzutnika Q
1
nie wystąpiła zmiana sygnału z 1 na 0.
Pod wpływem drugiego impulsu pierwszy przerzutnik zmieni stan z 1 na 0. Ta zmiana stanu powoduje zmianę stanu
drugiego przerzutnika z 0 na 1.
Pod wpływem trzeciego impulsu pierwszy przerzutnik zmieni stan z Q
2
na 1. Ta zmiana nie powoduje zmiany stanu
przerzutnika drugiego.
Czwarty impuls zmieni stan przerzutnika pierwszego z 1 na 0. Zmiana ta powoduje zmianę stanu z 1 na 0 przerzutnika
drugiego, a ta z kolei zmianę stanu z 0 na 1 przerzutnika trzeciego.
Przed pojawieniem się ósmego impulsu wszystkie przerzutniki licznika są w stanie 1. Po ósmym impulsie pierwszy
przerzutnik zmieni stan z 1 na 0. Ta zmiana powoduje zmianę stanu z 1 na 0 drugiego przerzutnika, a ta z kolei zmianę stanu z 1
na 0 przerzutnika trzeciego.
Przedstawiony licznik charakteryzuje się więc ośmioma stanami. Przerzutnik pierwszy tego licznika zmienia swój
stan za każdym razem pojawienia się zmiany impulsu wejściowego z 1 na 0, a więc dzieli częstotliwość impulsów wejściowych
przez 2. Drugi przerzutnik zmienia swój stan za każdym pojawieniem się zmiany stanu z 1 na 0 przerzutnika pierwszego, a więc
na wyjściu Q
1
otrzymuje się impulsy o częstotliwości cztery razy mniejszej, niż częstotliwość impulsów wejściowych. Natomiast
trzeci przerzutnik zmieni swój stan, jeśli poprzednie przerzutniki zmieniają swój stan z 1 na 0, otrzymując impulsy o
częstotliwości osiem razy mniejszej (pojawia się jeden impuls na osiem impulsów wejściowych).
Uzyskano w ten sposób kaskadę trzech przerzutników asynchronicznych pracująca zgodnie z przebiegami czasowymi
z rys. 7.2c.
Jeśli licznik ma liczyć w tył (odejmować) – wejścia zegarowe łączymy z wyjściem poprzedniego.
Przykład 7.2:
Na rys. 7.3 przedstawiono przykład licznika szeregowego odejmującego, który pomniejsza swój stan w takt impulsu zliczanego
oraz przebiegi czasowe.
a)
b)
Rys. 7.3 Szeregowy licznik odejmujący: a) schemat połączeń,
b) przebiegi czasowe.
Jeżeli chcemy zaprojektować licznik a s nie jest równe s = 2
n
.
Tworzymy licznik o większej liczbie stanów takiej, że s = 2
n
, ale jednocześnie s > 2
n-1
. Do takiego licznika dołącza
się bramki NAND lub AND w zależności od tego, na co reagują wejścia asynchroniczne przerzutników (NAND – gdy na „0”).
Bramki te służą do ograniczania impulsów zliczanych przez licznik.
Na bramkę podajemy z wyjść przerzutników impuls przy którym nastąpi zerowanie licznika. Natomiast wyjście
bramki łączymy z wejściami ustawiającymi.
Przykład 7.3:
Q
0
C
Q
0
Q
1
C
Q
1
Q
0
Q
1
Q
2
Q
2
C
Q
2
We
We
Q
0
Q
1
Q
2
1
2
3
4
5
6
7
7
6
5
4
3
2
1
8
0
Na rys. 7.4 przedstawiono licznik pracujący w dwóch kierunkach. Jest on połączeniem liczników z rys. 7.2 i 7.3. Zmiany
kierunku zliczania dokonuje się za pomocą sygnału K. Zmiana wartości K może spowodować wyzwolenie przerzutnika. Z tego
powodu po zmianie kierunku zliczania należy ustawić warunek początkowy, od którego licznik zaczyna swoją pracę.
Rys. 7.5 Licznik szeregowy rewersyjny.
K – zmienna programująca kierunek zliczania.
Przykład 7.4:
Na rys. 7.5a przedstawiono licznik modulo 3. Do określenia liczby przerzutników zastosujemy zależność (2
n-1
≤ s ≤ 2
n
). Liczba n
spełniająca ten warunek wynosi 2.Tworzymy więc licznik binarny złożony z dwóch przerzutników.
a)
b)
Rys. 7.5 Licznik modulo 3: a) schemat połączeń,
b) przebiegi czasowe.
Zerowanie licznika nastąpi, gdy pojawi się impuls odpowiadający liczbie 3, czyli 11
2
. Na wejścia bramki podajemy B
= A = 1, a na wyjściu bramki pojawi się stan niski („0”) zerujący wszystkie przerzutniki licznika.
Jeśli stanem początkowym jest stan 0 (stan wyjść BA = 0), pod wpływem impulsu wejściowego wyjście A przechodzi
do stanu 1. Na wejściu bramki NAND są wówczas sygnały: 1, 0, a na jej wyjściu stan 1 (rys. 7.4b). Pod wpływem drugiego
impulsu wejściowego licznik przechodzi do stanu 2. Na wejściu bramki NAND są wówczas sygnały: 1, 0, a na jej wyjściu stan 1.
Pod wpływem następnego impulsu wejściowego na wyjściu licznika pojawi się stan 3. Wówczas na wyjściu bramki NAND, a
więc i na wejściu R pojawi się sygnał 0, który spowoduje wyzerowanie licznika, czyli powrót do stanu 0. Licznik ten ma trzy
stany, przez które przechodzi cyklicznie. Jest to więc licznik modulo 3.
Przykład 7.5:
Na rys. 7.6 pokazano licznik zliczający od 3 do 13 włącznie. Do zapisania liczb w zakresie od 3 do 13 w kodzie dwójkowym
potrzebne są cztery bity, czyli cztery przerzutniki. Na bramkę NAND podajemy z wyjść przerzutników impuls przy którym
następuje zerowanie licznika, czyli impuls 14, Q
3
Q
2
Q
1
Q
0
= 1110.Natomiast wyjście bramki łączymy z wejściami ustawiającymi,
J
0
Q
0
C
K
0
Q
0
1
J
1
Q
1
C
K
1
Q
1
Q
0
Q
1
We
1
R
R
3
We
Q
0
Q
1
R
1
2
3
1
1
2
0
0
K
X
C
C
C
Q
1
Q
2
Q
0
Q
Q
Q
s
s
s
r
r
r
Q
Q
Q
Z
czyli początek zliczania zaczyna się od 3, Q
3
Q
2
Q
1
Q
0
= 0011. Jeżeli jest 0, łączymy wyjście bramki z wejściem zerującym
r
,
jeśli 1 – z wejściem
s
.
Rys. 7.6 Licznik zliczający od 3 do 13.
Odmianą liczników są tzw. dzielniki częstotliwości tzn. układy, które po określonej liczbie impulsów zliczanych
generują jeden impuls wyjściowy.
Największy zakres zastosowań spośród wszystkich liczników asynchronicznych mają tzw. dekady liczące, tj. dzielniki
przez 10. Zwykle jest to połączenie dwójki liczącej z dzielnikiem przez 5. Przykładem takiego rozwiązania jest licznik
asynchroniczny 7490 przedstawiony na rys. 7.7a. Jest to licznik modulo 2 i licznik modulo5 z oddzielnymi wejściami i
wyjściami. Może on pracować jako dzielnik przez 10 zliczający w kodzie BCD (wyjście Q
0
połączone z wejściem Q
1
Q
3
), lub
jako licznik modulo 10 z symetrycznym przebiegiem wyjściowym (wyjście Q
3
połączone z wejściem Q
0
), o przebiegach
czasowych przedstawionych na rys. 7.7b.
a)
b)
T Q
C
Q
s
r
C
„1”
T Q
C
Q
s
r
„1”
0
Q
0
1
Q
1
1
Q
2
1
Q
3
T Q
C
Q
s
r
C
„1”
T Q
C
Q
s
r
„1”
1
1
0
0
J Q
C
K Q
s
r
We
Q
0
1
J Q
C
K Q
s
r
Q
0
Q
1
Q
2
Q
3
J Q
C
K Q
s
r
1
J
s
Q
C
K
r
Q
1
1
We
Q
0
Q
3
R9(1) R9(2) R0(1) R0(2)
We Q
1
Q
3
Q
1
Q
2
Q
3
, We Q
0
1
2
3
4
5
6
7
8
9
10
1
Q
1
R9(1) = 0 R9(2) = 0 R0(1) = 0 R0(2) = 0 WeQ
0
= 0
Rys. 7.7 Scalony licznik asynchroniczny 7490: a) schemat połączeń,
b) przebiegi czasowe.
Licznik ten posiada dwa wejścia sterujące:
§
R9(1) i R9(2) – ustawia (w dwójkową reprezentację liczby 9),
§
R0(1) i i – zerowania.
Aby wyzerować wyjścia tego licznika, należy na oba wejścia R0(1) i R0(2) podać sygnał 1, natomiast aby ustawić
jego wyjścia w dwójkową reprezentację liczby 9, należy na oba wejścia R9(1) i R9(2) podać sygnał 1.
Zadanie:
1.
Zaprojektować licznik liczący od 3 do 14 w przód (zerowanie przy impulsie 15).
2.
Zaprojektować licznik liczący od 7 do 3 w przód (zerowanie przy impulsie 4).
3.
Zaprojektować licznik liczący od 9 do 4 w tył (zerowanie przy impulsie 3).
1.3.
LICZNIKI SYNCHRONICZNE
Liczniki synchroniczne (równoległe) są budowane z na dowolnym typie przerzutników w oparciu o siatki Karnaugha .
Zmiany stanów poszczególnych przerzutników odbywają się jednocześnie w takt impulsów zegarowych X wprowadzanych
równolegle na każdy z przerzutników.
Wartość zmiennej wyjściowej Q
i
określają wartość zmiennych wejściowych synchronicznych, określanych przez
kombinacyjny układ programujący (UP).
Rys. 7.8 Schemat blokowy licznika synchronicznego.
UP – Kombinacyjny Układ Programujący.
Na rys. 7.8 przedstawiono schemat blokowy licznika synchronicznego, w którym układ tworzą niezależne
przerzutniki. Przejście licznika z jednego stanu do drugiego odbywa się na podstawie zadanych wzbudzeń zmiennych
informacyjnych. Wektor A reprezentuje dodatkowe zmienne programujące, pozwalające zmienić sposób pracy licznika.
W rozdziale 4 przedstawiono tablice ilustrujące działanie przerzutników synchronicznych. Przy projektowaniu
liczników synchronicznych należy wziąć pod uwagę tablice wzbudzeń. Zadane są przejścia przerzutników, bo zadany jest
program pracy licznika, natomiast należy ustalić wzbudzenia przerzutników dla zapewnienia tych przejść.
Tablice wzbudzeń wszystkich przerzutników synchronicznych przedstawiono na rys. 7.9.
Q
i
t
→
Q
i
t+1
T
t
J
t
K
t
D
t
S
t
R
t
0
→
0
0
→
1
1
→
0
1
→
1
0
1
1
0
0
1
-
-
-
-
1
0
0
1
0
1
0
1
0
-
-
0
1
0
Rys. 7.9 Tablica wzbudzeń przerzutników synchronicznych.
Układ programujący (UP) zawiera funkcje kombinacyjne określające wartości zmiennych informacyjnych
poszczególnych przerzutników w takcie t, które wymuszą zadaną wartość Q
i
w takcie t + 1, po przejściu impulsu taktującego.
Liczniki równoległe projektujemy następująco:
1.
Ustalić liczbę przerzutników w zależności od pojemności licznika.
J
0
Q
0
C
K
0
Q
0
J
1
Q
1
C
K
1
Q
1
J
2
Q
2
C
K
2
Q
2
A
UP
Q
1
Q
0
Q
3
Q
2
Q
1
Q
0
Q
3
Q
2
2.
Ustalić i wykonać tabele stanów licznika (uwzględniając tabele wzbudzeń przerzutników, na których realizujemy licznik).
Polega to na rozpisaniu kolejności następujących po sobie stanów i odpowiadającym im stanów przerzutnika, czyli
wypełnienie tablicy stanów, a następnie na podstawie tablicy wzbudzeń przerzutnika wypełnia się tablicę Karnaugha,
osobno dla poszczególnych wejść informacyjnych każdego przerzutnika.
3.
Zaprojektować układ kombinacyjny ograniczający zliczanie.
Przykład 7.6:
Zaprojektować licznik równoległy zliczający od 5 do 14 na przerzutnikach JK.
Do zapisania liczb od 5 do 14 w kodzie dwójkowym potrzeba czterech bitów, czyli cztery przerzutniki.
5 = 0101 = Q
3
Q
2
Q
1
Q
0
14 = 1110 = Q
3
Q
2
Q
1
Q
0
W tablicy stanów (rys. 7.10b) zapisujemy stany jakie będą występowały od 5 do 14 w kodzie dwójkowym. Stany
wyjściowe odpowiadają stanom przerzutników, które wyznaczamy na podstawie tablicy wzbudzeń (rys. 7.10a).
a)
Q
n
Q
n+1
J
K
0
0
0
-
0
1
1
-
1
0
-
1
1
1
-
0
b)
8
4
2
1
Stany
Q
3
Q
2
Q
1
Q
0
J
3
K
3
J
2
K
2
J
1
K
1
J
0
K
0
5
0
1
0
1
0
-
-
0
1
-
-
1
6
0
1
1
0
0
-
-
0
-
0
1
-
7
0
1
1
1
1
-
-
0
-
1
-
1
8
1
0
0
0
-
0
0
1
0
-
1
-
9
1
0
0
1
-
0
0
-
1
-
-
1
10
1
0
1
0
-
0
0
-
-
0
1
-
11
1
0
1
1
-
0
1
-
-
1
-
1
12
1
1
0
0
-
0
-
0
0
-
1
-
13
1
1
0
1
-
0
-
0
1
-
-
1
14
1
1
1
0
-
1
-
0
-
1
1
-
Rys. 7.10 Licznik równoległy zliczający od 5 do 14:
a) tablica wzbudzeń przerzutnika JK,
b) tablica stanów.
Na przykład dla Q
3
mamy (rys. 7.11):
Q
3
J
3
0
0
0
0
0
1
1
-
1
-
1
-
1
-
1
-
1
-
1
-
Rys. 7.11 Stany wyjściowe J
3
.
Aby otrzymać stan J
3
– 5 łączymy stan 5 i 6 Q
3
sygnału wyjściowego i mamy: 00 – daje nam (z tablicy wzbudzeń dla
J) 0, 00 – daje nam również 0, 01 – otrzymujemy 1. Jako końcowy stan dla J
3
, łączymy ostatni stan 14 z pierwszym 5.
Na podstawie tablicy stanów sporządzamy tablice Karnaugha dla wejść informacyjnych poszczególnych
przerzutników (J
n
K
n
) (rys. 7.12a, b, c), a na podstawie tablic Karnaugha wyznaczamy funkcje sterujące dla wejść
informacyjnych.
00
01
11
10
00
01
11
10
00
-
-
-
-
00
-
-
-
-
01
-
0
1
0
01
-
-
-
-
11
-
-
-
-
11
0
0
-
1
10
-
-
-
-
10
0
0
0
0
J
3
= Q
1
Q
0
K
3
= Q
2
Q
1
00
01
11
10
00
01
11
10
00
-
-
-
-
00
-
-
-
-
01
-
-
-
-
01
-
0
0
-
11
-
-
-
1
11
0
0
-
0
10
0
0
-
0
10
1
0
-
-
J
2
= Q
2
K
2
=
2
0
Q
Q
⋅
00
01
11
10
00
01
11
10
00
-
-
0
0
00
-
-
-
-
01
-
1
1
1
01
-
-
1
0
11
-
-
-
-
11
-
-
-
1
10
-
-
-
-
10
-
-
1
0
J
1
= Q
2
K
1
= Q
3
Q
2
+ Q
0
J
0
= „1”
K
0
= „1”
J
0
Q
0
C
K
0
Q
0
C
„1”
J
1
Q
1
C
K
1
Q
1
Q
0
Q
1
Q
2
Q
3
J
2
Q
2
C
K
2
Q
2
J
3
Q
3
C
K
3
Q
3
Q
0
Q
1
Rys. 7.12 Synchroniczny licznik zliczający od 5 do 14: a), b), c), tablice Karnaugha dla poszczególnych wejść informacyjnych
przerzutników JK,
d) schemat połączeń.
Na podstawie funkcji sterujących projektujemy układ kombinacyjny ograniczający zliczanie (rys. 7.12d).
Przykładowo dla przerzutnika drugiego, w pole 0101 w tablicy J
0
wpisujemy „-”, a w tablicy K
0
wpisujemy 1. Licznik
jest w stanie 0101 to następnym jego stanem jest stan 0110, czyli stan na wyjściu Q
0
zmieni się z 1 na 0, co zapewnia kombinacja
J
0
K
0
= - 1. Podobnie w pole 1110 w tablicy J
0
wpisujemy 1, a w tablicy K
0
„-”.Licznik jest w stanie 1110, to następnym stanem
jest 0101, czyli na wyjściu Q
0
stan zmieni się z 0 na 1, co zapewnia kombinacja J
0
K
0
= 1 -.
…:::nobody the fallen one:::..