7i id 46490 Nieznany (2)

background image

LABORATORIUM - ELEKTRONIKA

TECHNIKA CYFROWA: Wykorzystanie układów scalonych: kodery, dekodery, transkodery; liczniki scalone

1.

Cel ćwiczenia

Celem ćwiczenia jest pokazanie podstawowych rozwiązań scalonych liczników oraz koderów/dekoderów TTL, zasady

ich działania i realizowanych przez nie funkcji, a także ich konfiguracji do działania w określony sposób.

2.

Wstęp teoretyczny

2.1.

Kodery, dekodery, transkodery

Przesyłanie, przetwarzanie i obróbka informacji w systemach cyfrowych jest wykonywana w oparciu o reprezentację

odpowiednich zmiennych w postaci kodów liczbowych. Wybór kodu do zastosowania w danej aplikacji zależy od potrzeb,

szczególnie chodzi o ułatwienie wykonywania operacji na zmiennych w tym układzie oraz zapewnienie ich prawidłowości

przy występowaniu zakłóceń i uszkodzeń w układzie. Przy wyborze kodu umożliwiającego osiągnięcie minimum kosztów

układu realizującego daną operację (np. arytmetyczną) należy również uwzględnić problemy konwersji tego kodu na

inny/inne stosowane w tym systemie. Do tego celu stosuje się właśnie układy koderów, dekoderów i transkoderów które to

układy mają za zadanie przeliczyć dany kod binarny na inny. Innym typowym zastosowaniem tego typu układów jest

przetworzenie informacji w danym kodzie na kod który jest „czytelny z zewnętrz”. Typowym układem tego typu jest używany

w ćwiczeniu układ 7447, który ma za zadanie przeliczać kod BCD na kod wyświetlacza siedmiosegmentowego. Innym

znanym układem scalonym podobnego zastosowania jest układ 7442 przeliczający kod BCD na kod 1 z 10.

2.2.

Liczniki

Licznik scalony jak sama nazwa wskazuje jest układem scalonym służącym do… liczenia. Ilość bitów wyjścia danego

układu definiuje ”do ilu” w danym układzie można liczyć. Najczęściej stosowane są liczniki 4-bitowe, co oznacza, że można

na nich liczyć od 0000 do 1111 (binarnie), czyli od 0 do 15 (dziesiętnie). Spotyka się też liczniki scalone dekadowe, czyli

takie które zliczają od 0000 do 1001, więc od 0 do 9. W ćwiczeniu zajmiemy się jednak licznikiem scalonym 74191 liczącym

w pełnym zakresie 4-bitowym. W programie MultiSIM wygląda on tak jak na rysunku poniżej:

Dobrze, zajmijmy się zatem działaniem tego układu. Widzimy licznik. Ma on 14 widocznych pinów. W MultiSIMie jest

przyjęte że piny „po lewej” to wejścia, piny „po prawej” to wyjścia, więc ten układ ma jak widać 8 wejść i 6 wyjść. Należy

pamiętać, że gdybyśmy używali tego układu w rzeczywistości to ma on jeszcze dwa dodatkowe piny, do których należałoby

podłączyć zasilanie układu scalonego. No ale patrzymy na ten układ i… Jak go używać? No właśnie.

background image

Należy zrobić to co się robi zawsze gdy chcemy zidentyfikować lub użyć jakiegokolwiek układu scalonego. Czyli

szukamy jego noty katalogowej, np. na

www.datasheetcatalog.com

. Znaleziona. Przykładową notę tego układu załączono do

instrukcji. Co w niej można znaleźć?

Na pewno informację, że pin CLK to wejście liczące tego układu. Tu podamy zerojedynkowy sygnał który będzie

zliczany. To podstawa. Podobnie jak fakt, że piny Q

D

, Q

C

, Q

B

i Q

A

to wyjścia licznika. To tu będą się pojawiały kolejno

zliczane liczby. Warto zapamiętać że zasadą jest nazewnictwo takie że Q

A

jest bitem najmniej znaczącym. Aby użyć tego

układu musimy jeszcze zadbać o piny ~CTEN, ~LOAD i ~U/D. Pozostałe możemy na razie zaniedbać. Po kolei:

Pin ~U/D w nocie katalogowej jest opisany jako „up/down input”. Sprawa jest banalna. Tym pinem decydujemy jak

ma liczyć licznik tzn. w górę czy w dół. Falka przy opisie oznacza negację, czyli że aby liczyć w górę (up), na ten pin

należy podłączyć zero, w dół (down) – jedynkę;

Pin ~LOAD jest opisany jako „asynchronous parallel load input”. Jest to zatem wejście decydujące o zerowaniu

licznika, czy też mówiąc ogólniej o narzuceniu licznikowi pewnego stanu (który, jak się przekonamy później –

niekoniecznie musi oznaczać zero). Ma on falkę, co oznacza, że aby wyzerować licznik należy podać tu zero,

natomiast żeby licznik „normalnie” zliczał, powinna być tu podana jedynka.

Pin ~CTEN jest opisany jako „count enable input”. Jest to zatem wejście które „pozwala” liczyć. Też ma falkę, czyli

żeby licznik mógł liczyć, należy tu podać zero.

Wiemy już zatem że licznik skonfigurowany jak na rysunku poniżej będzie licznikiem który będzie zliczał impulsy

podawane na wejście CLK w górę, w zakresie od 0 do 15 i swój aktualny stan pokazywał na wyjściach Q

D

, Q

C

, Q

B

i Q

A

.

A co jeżeli nie chcemy liczyć do 15, a np. do 9? Wtedy właśnie wykorzystamy wejście ~LOAD. Jak już wiemy, podanie

na ten pin logicznego zera wyzeruje układ. A skąd wziąć to zero? Powinno się ono nam pojawić „samo”, automatycznie, w

momencie kiedy licznik doliczy do 10. Do 10, nie do 9, ponieważ licznik nie powinien być zerowany w momencie gdy doliczy

do 9, ale w momencie gdy „przekroczy” 9. Czyli pozwalamy mu zliczyć 9, a gdy chce przeskoczyć na 10, wykrywamy to i go

zerujemy.

Zatem wykrywamy dziesiętną 10 czyli binarnie 1010. 1010 które pojawia się na pinach Q

D

, Q

C

, Q

B

i Q

A

. Wiemy że Q

A

jest bitem najmniej znaczącym, czyli wykrywamy następujący stan Q

D

Q

C

Q

B

Q

A

=1010. Jak to zrobić?

Pomyślmy logicznie, dosłownie i w przenośni. Wykrywamy jeden konkretny stan – 1010. Zerujemy układ dokładnie w

momencie gdy Q

D

=1

i Q

C

=0

i Q

B

= 1

i Q

A

=0. Kluczem jest spójnik „i”. Skoro go tam wstawiłem to chcę tam wykonać operację

logiczną I czyli AND. Zatem wstawię do układu czterowejściową bramkę AND która wykryje ten stan.

background image

No, prawie, zapomnieliśmy o jednym. Bramka AND daje na swoim wyjściu jedynkę gdy na jej wejściach są jedynki. A

my mamy na pinie zerującym LOAD „falkę”, czyli zerowanie nie następuje w wyniku podania tam jedynki, lecz zera. Zatem

musimy jeszcze odwrócić (zanegować) wyjście tej bramki. Czyli albo negujemy jej wyjście bramką NOT albo zamiast bramki

AND wstawiamy bramkę NAND (NAND = NOT AND). To już wszystko, układ liczący od 0 do 9 wygląda tak:

Na wejścia bramki NAND podaliśmy bezpośrednio wyjścia licznika Q

D

i Q

B

, bo na tych wyjściach zgodnie z tym co

opisano wyżej wykrywamy jedynki, natomiast wyjścia Q

C

i Q

A

podaliśmy przez bramki NOT, bo tu wykrywamy zera.

Dobrze, nauczyliśmy się zerować licznik w dowolnym momencie. Co jeszcze można z tym licznikiem zrobić? Wiemy jak

skończyć liczenie w dowolnym momencie. A jak zacząć w dowolnym? Jeśli np. chcemy liczyć nie od 0, a od 5? Do tego

służą piny D, C, B i A. Jeżeli chcemy liczyć od 5 to na te piny muszę podać binarne 5 czyli DCBA=0101. Układ wygląda tak:

Piny D i B są podłączone do masy, czyli do logicznego zera, natomiast piny C i A podłączone są do V

CC

= 5 [V], czyli do

logicznej jedynki. Układ liczy w zakresie 5-9.

background image

To już właściwie wszystko, wiemy jak użyć licznika scalonego 74191 do liczenia w dowolnym zakresie, w górę lub w

dół. Warto jednak jeszcze wspomnieć o pinach MAX/MIN i ~RCO. Pin MAX/MIN przechodzi w stan wysoki w momencie gdy

licznik jest w stanie 1111, czyli doliczył do końca. Pin ~RCO („ripple clock output”) działa odwrotnie, czyli gdy licznik doliczy

do końca przechodzi w stan niski (logiczne zero), cały pozostały czas jest w stanie wysokim. Pin ~RCO jest używany gdy

chcemy liczyć dalej niż do 15. Wtedy podłączamy go do wejścia CLK następnego licznika i zamiast liczyć na 4 bitach,

liczymy na 8, zatem zamiast liczyć maksymalnie do 15 możemy liczyć do 255. Układ dwóch liczników skonfigurowanych do

liczenia w zakresie 0-255 pokazano na rysunku poniżej:

Oczywiście cały czas obowiązują te same zasady co poprzednio. Czyli taki układ jak powyżej możemy spokojnie

skonfigurować do liczenia w zakresie np. od 34 do 134. Różnica jest tylko taka, że zerujemy oba liczniki jednocześnie i

wykrywamy stan na wyjściach obu jednocześnie.

Wszystko jasne?

Dla treningu przeanalizujmy układ z rysunku poniżej:

background image

OK. Mamy układ. Licznik jest jeden.

Widzimy że jest w nim zerowanie, bo na wejście ~LOAD jest podane wyjście bramki NAND.

Widzimy też że układ nie liczy od 0 bo mamy skonfigurowane wejścia DCBA. No to od tego zacznijmy. Na wejścia

DCBA podano stan 1000, czyli dziesiętnie 8. Od tej liczby zacznie liczyć ten układ.

Idziemy dalej. Patrzymy na pin ~U/D, jest na niego podana logiczna jedynka. Aha, zatem licznik liczy w dół.

Zostało nam sprawdzić „do ilu” liczy ten układ, czyli jaką liczbę wykrywa bramka NAND. Patrzymy na bramkę NAND –

na jej wejścia podano bezpośrednio wyjścia Q

D

i Q

C

, czyli tu wykrywamy jedynki. Natomiast wyjścia Q

B

i Q

A

podano przez

bramkę NOT zatem tu wykrywamy 0. Dobra, składamy z tego słowo i wychodzi nam: Q

D

Q

C

Q

B

Q

A

=1100 czyli dziesiętnie 12.

No to liczymy.

Start.

Zaczyna się od 8.

Liczymy w dół, zatem dalej, po 8: 7, 6, 5, 4, 3, 2, 1, 0…

Co po zerze? Licznik liczy w „kółko”, zatem po 0 jest: 15, 14, 13…

Co po 13? Po 13 powinno być 12, ale 12, jak wcześniej sprawdziliśmy, jest wykrywana bramką NAND i zeruje układ.

Zatem po 13 jest 8 (bo jak wiemy od 8 układ zaczyna).

Podsumujmy zatem, licznik w tym układzie liczy: 8, 7, 6, 5, 4, 3, 2, 1, 0, 15, 14, 13, 8, 7, 6… i tak w kółko…

Znów zapytam… Wszystko jasne? Teraz już na pewno :)

Skoro tak, to zastanów się w jakim zakresie liczą liczniki skonfigurowane jak na rysunku poniżej:

Jeśli z analizy układu wyszło że od 24 do 100 - gratulacje, umiesz konfigurować i analizować działanie liczników scalonych,

przynajmniej kawałek kolokwium nie powinien być dla Ciebie straszny :)

background image

3.

Przebieg ćwiczenia

W ćwiczeniu nie będziemy się zajmować licznikiem ‘191 lecz licznikiem ‘193. Jest to także licznik scalony liczący w

pełnym zakresie 4-bitowym, konfiguruje się go w sposób bardzo podobny. Spójrzmy:

Piny D, C, B i A oraz Q

D

, Q

C

, Q

B

i Q

A

mają dokładnie takie same funkcje jak w liczniku ‘191, czyli te pierwsze

decydują gdzie zacząć liczyć, te drugie pokazują aktualny stan licznika. Inaczej decyduje się o kierunku zliczania, w liczniku

‘193 po prostu podajemy sygnał na odpowiednie wejście UP lub DOWN, drugie pozostawiając wolnym. Wejście CLR (czyli

clear) służy do zerowania licznika (nie ma ono „falki” zatem zerowanie następuje poprzez podanie tam jedynki), natomiast

wejście ~LOAD również resetuje licznik przy czym zaczyna on wtedy liczyć nie od zera (jak przy zerowaniu przez CLR) ale

od liczby podanej na wejścia DCBA.

3.1.

Zacznijmy w końcu liczyć. Bierzemy licznik ‘193 i podłączamy mu zasilanie (+5[V] i masę).

3.2.

Co będziemy zliczać? Zera i jedynki z generatora. Powiedzmy że chcemy liczyć w górę zatem na wejście UP

licznika podłączamy wyjście TTL output generatora częstotliwości. Mamy zatem taki prosty układ (na CLR podane

jest zero, bowiem nie podanie sygnału to tak jak podanie jedynki i układ permanentnie by się zerował):

3.3.

Niby wszystko gra, no ale skoro chcemy zobaczyć jak układ liczy to musimy gdzieś to wyświetlić. Użyjmy zatem

wyświetlacza siedmiosegmentowego:

background image

Wyświetlacz siedmiosegmentowy jest układem w którym za zaświecenie każdego segmentu odpowiada jedno

wejście. Do sterowania takim wyświetlaczem służy układ scalony ’47, którego jedynym zadaniem jest „przetłumaczyć” kod

binarny 8421 na kod tego wyświetlacza (więcej o tego typu układach w innym ćwiczeniu). Skoro tak, to użyjmy go by

„przetłumaczyć” wyjścia licznika na wejścia wyświetlacza. Nasz układ wygląda teraz tak:

3.4.

Montujemy i można włączać. Zasilanie i generator. Na generatorze oczywiście należy ustawić częstotliwość taką

„że widać jak liczy”, czyli najlepiej kilka Hz.

3.5.

OK, liczy. Można zobaczyć że układ tak zmontowany zlicza impulsy sygnału z generatora w kółko, w zakresie od 0

do 15. Warto sprawdzić jak zachowuje się układ gdy pin CLR odłączymy od zera, albo gdy podamy zero na pin

~LOAD.

3.6.

Przerysować do protokołu sposób wyświetlania poszczególnych liczb - w zakresie od zera do 15. Widać w tym

momencie jak działa układ ’47.

3.7.

Następnie należy zaprojektować i zrealizować na tym liczniku układy zliczające w zadanych przez prowadzącego

zakresach… Powodzenia.

Sposób konfiguracji licznika scalonego do liczenia w zadanym zakresie opisano we wstępie do ćwiczenia.

Potrzebne do tego celu bramki logiczne NAND i NOT są w zestawie kostek ćwiczeniowych (7404 i 7420).

Zaprezentować prowadzącemu poprawność zliczania zadanych układów.

background image

4.

Opracowanie wyników

4.1.

Zaprojektować na dwóch licznikach ‘191 układ zliczający w dół w zakresie od B do A, gdzie: A – dzień miesiąca w

którym wykonano ćwiczenie, B = 255 - A.

4.2.

Na podstawie przerysowanego sposobu wyświetlania liczb z użyciem dekodera ’47 wypełnić tabelę:

wyjścia

wejścia

dziesiętnie

a

b

c

d

e

f

g

D

C

B

A

0

0

0

0

0

1

0

0

0

1

2

0

0

1

0

3

0

0

1

1

4

0

1

0

0

5

0

1

0

1

6

0

1

1

0

7

0

1

1

1

8

1

0

0

0

9

1

0

0

1

10

1

0

1

0

11

1

0

1

1

12

1

1

0

0

13

1

1

0

1

14

1

1

1

0

15

1

1

1

1

Sprawdzić prawidłowość działania tego układu (na podstawie porównania z notą katalogową (do pobrania z [7]) –

NIE załączać noty do sprawozdania!).

4.3.

Zaprojektować układ czterobitowego konwertera naturalnego kodu dwójkowego (BCD) na kod wyświetlacza

siedmiosegmentowego (czyli układ realizujący układ według powyższej tabeli), lecz z poprawionym wyświetlaniem

liczb 6 i 9, wykorzystując wyłącznie bramki NAND.

4.4.

Zaprojektować układ trzybitowego konwertera naturalnego kodu dwójkowego (BCD) na kod dwójkowy refleksyjny

(Graya) z wykorzystaniem wyłącznie bramek NOR.

4.5.

Zaprojektować układ czterobitowego konwertera kodu 6421 na naturalny kod dwójkowy (BCD, czyli 8421) z

wykorzystaniem dowolnych bramek logicznych.

4.6.

Mile widziane dodatkowe wnioski i przemyślenia.

background image

5.

Co trzeba wiedzieć na temat liczników?

Jak skonfigurować licznik scalony do liczenia w dowolnym zakresie w górę lub w dół. Czyli trzeba umieć

rozwiązać zadanie typu:

Dany jest licznik ‘191. Skonfiguruj go tak, by liczył w dół w zakresie od 11 do 4:

Jak i ile liczników należy ze sobą połączyć by zwiększyć zakres zliczania. Czyli zadanie jak powyżej w wersji

z więcej niż jednym licznikiem. Np.:

Zbuduj na licznikach 74191 układ zliczający od 10 do 110.

Oczywiście zamiast licznika 74191 w zadaniu może być licznik 74193.

6.

Co trzeba wiedzieć na temat koderów/dekoderów/transkoderów?

Jak stworzyć tabelę i następnie na jej podstawie zbudować dowolny układ konwertujący między sobą zadane

kody binarne (np. BCD, Graya, 1 z 10, 6421, 5421...).

7.

Literatura

[1] Filipkowski A., „Układy elektroniczne analogowe i cyfrowe”, WN-T, Warszawa 1978

[2] Głocki W., Grabowski L., „Pracownia podstaw techniki cyfrowej”, WSiP, Warszawa 1998

[3] Górecki P., „Układy cyfrowe, pierwsze kroki”, Wydawnictwo BTC, Warszawa 2004

[4] Kalisz J., „Cyfrowe układy scalone w technice systemowej”, WMON, Warszawa 1997

[5] Pieńkos J., Turczyński J., „Układy scalone TTL w systemach cyfrowych”, WKiŁ, Warszawa 1986

[6] Sasal W., „Układy scalone serii UCA64/UCY74, parametry i zastosowania”, WKiŁ, Warszawa 1985

[7] www.datasheetcatalog.com

Opracowanie ćwiczenia: Seweryn Lipiński


Wyszukiwarka

Podobne podstrony:
analizaf 7I id 61960 Nieznany (2)
Abolicja podatkowa id 50334 Nieznany (2)
4 LIDER MENEDZER id 37733 Nieznany (2)
katechezy MB id 233498 Nieznany
metro sciaga id 296943 Nieznany
perf id 354744 Nieznany
interbase id 92028 Nieznany
Mbaku id 289860 Nieznany
Probiotyki antybiotyki id 66316 Nieznany
miedziowanie cz 2 id 113259 Nieznany
LTC1729 id 273494 Nieznany
D11B7AOver0400 id 130434 Nieznany
analiza ryzyka bio id 61320 Nieznany
pedagogika ogolna id 353595 Nieznany
Misc3 id 302777 Nieznany
cw med 5 id 122239 Nieznany

więcej podobnych podstron