Instrukcja

Transkrypt

Instrukcja
Technika Cyfrowa i Układy Programowalne
Przerzutniki
Instrukcja do laboratorium
AGH w Krakowie
Katedra Elektroniki
Ernest Jamro
1. Rodzaje przerzutników
Podłącz 4 wyjścia BNC płytki z układem FPGA do oscyloskopu, ustaw przełącznik S1
w pozycję OFF oraz synchronizację oscyloskopu na kanał ch4. Zaprogramuj układ FPGA
plikiem ff.bit, który znajduje się w katalogu C:/tc/ff (jeśli nie ma tam plików to ściągnij
materiały ze strony www.fpga.agh.edu.pl/tc oraz rozpakuj je do tego katalogu). W zależności
od ustawień przełączników SW(7:0) otrzymujemy różne typy przerzutników oraz sygnałów
wymuszających. Na początek ustaw wszystkie przełączniki SW(7:3) w stan Lo (diody LED są
zgaszone). W zależności od ustawień przełączników SW(2:0) otrzymujemy następujące
przerzutniki:
SW(2:0)
000 (0)
001 (1)
010 (2)
011 (3)
100 (4)
101 (5)
110 (6)
111 (7)
Rodzaj przerzutnika
Przerzutnik RS asynchroniczny
Przerzutnik JK
Przerzutnik D latch
Przerzutnik D z asynchronicznym resetem
Przerzutnik D z synchronicznym resetem
Przerzutnik D z Clock Enable (CE)
Przerzutnik T
Przerzutnik D, D<=Q (D połączone z Q)
synchroniczny Set, asynchroniczny Reset
ch1
R
clk
C
clk
clk
clk
clk
clk
ch2
S
J
D
D
D
D
T
S
ch3
Qnot
K
X
Ra
R
CE
X
Ra
ch4
Q
Q
Q
Q
Q
Q
Q
Q
Zarejestruj i przeanalizuj przebiegi dla wszystkich powyższych kombinacji przełączników
SW(2:0).
Następnie należy poprosić prowadzącego o podanie 5 różnych zestawów ustawień
przełączników SW(7:0), dla których przynajmniej jeden przełącznik SW(7:3) jest w stanie Hi.
Spowoduje to zaszyfrowanie, który przerzutnik z opisanych powyżej jest aktualnie wybrany
(funkcje poszczególnych kanałów nie zostają zmienione). Zadaniem osób wykonujących
ćwiczenie jest określenie jaki przerzutnik jest obserwowany dla tych wskazanych ustawień
przełączników SW(7:0). Uwaga: często odpowiedz nie jest jednoznaczna, w takim wypadku
należy podać wszystkie możliwe poprawne odpowiedzi.
2. Wyścig na sygnale clk i D dla przerzutnika typu D
Zaprogramuj układ FPGA plikiem race_ce.bit. Ustaw przełączniki SW(2:0) w pozycję Lo.
Schemat wewnętrzny układu FPGA został przedstawiony na Rys. 1. Na kanale ch1
generowany jest sygnał zegarowy. Kanał ch2 stanowią wejście sygnału zegarowego. Kanał
ch3 stanowi wejście sygnału informacyjnego D. Do oscyloskopu podłączony jest kanał ch4
(wyjście przerzutnika typu D) oraz odpowiednio opóźniony sygnał generatora. Uwaga: należy
połączyć sygnały dokładnie tak jak na schemacie, czyli rozdzielacz BNC należy umieścić
przy kanale ch2 oraz przy oscyloskopie − opóźnienia sygnałów na kablu BNC mają
znaczenie.
Zaobserwuj stan wyjścia Q przerzutnika dla dwóch przypadków:
1) umieść rozdzielacz BNC przy kanale ch2 (czyli sygnał z generatora szybciej pojawi się na
wejściu clk - ch2 niż na wejściu D − ch3.
2) umieść rozdzielacz BNC przy kanale ch3 (czyli sygnał z generatora później pojawi się na
wejściu clk - ch2 niż na wejściu D − ch3.
Czy można w prosty sposób projektować płytki PCB szybkich układów cyfrowych skoro
długość połączeń odgrywa tak duże znaczenie? Jak nazywa się to zjawisko?
W niektórych sytuacjach przerzutnik reaguje na narastające i opadające zbocze zegara, jest to
spowodowane odbiciem sygnału zegarowego na linii długiej (czyli przy opadającym zboczu
sygnału generatora występuje krótkotrwały sygnał narastający).
FPGA + płytka
D
Q
clk
ch1
ch2
ch3
ch4
do oscyloskopu
Rys. 1. Schemat konfiguracji FPGA dla obserwacji wyścigu na sygnale clk i D
3. Wyścig na sygnale zezwolenia zegara
Rys. 2 pokazuje schemat połączeń logiki zezwolenia zegara przy SW1 = Hi, SW0=Lo. Logika
związana z przerzutnikiem Q0 steruje bramkowaniem zegara ch3 przerzutnika Q1. Jaki
powinien być poprawny przebieg na kanale ch3? Zaobserwuj przebiegi. Następnie ustaw
przełącznik SW0 = Hi, co spowoduje wprowadzenie opóźnienia na sygnale ch1. Zobacz
i uzasadnij zmianę. W jaki sposób powinno się zmodyfikować wspomniany układ aby
wyeliminować zjawisko wyścigu?
FPGA
D
Q0
D
clk
ch1
Q1
clk
ch2
ch3
ch4
Rys. 2. Schemat połączeń dla logiki zezwolenia zegara
W niektórych przypadkach na kanale zegarowym ch3 powstaje zjawisko odbicia na linii
długiej (pojedyncze zbocze zegara jest rejestrowane dwa razy przez przerzutnik Q1). Aby
2
uniknąć odbicia należy odłączyć kabel od kanału ch3 − niestety nie można wtedy oglądać
tego kanału.
4. Reset asynchroniczny i synchroniczny
Zaprogramuj układ FPGA plikiem asynch.bit oraz ustaw przełączniki SW(7:0) w stan Lo.
W wyniku tej konfiguracji otrzymamy licznik synchroniczny modulo 3 przestawiony na Rys.
3. Zaobserwuj przebieg sygnałów.
FPGA
D
Q0
D
clk
ch1
Q1
clk
ch2
ch3
ch4
Rys. 3. Schemat licznika synchronicznego modulo 3
Następnie przełącz przełączniki w stan SW(2:0) = 1 (SW0= Hi). Spowoduje to wprowadzenie
sztucznego opóźnienia na ścieżce sygnału zegarowego przerzutnika Q1. Opóźnienie to
występuje np. w przypadku dłuższej ścieżki połączeń lub też dodatkowej logiki na tym
sygnale i jest nazywane w języku angielskim clock skew. Zaobserwuj przebiegi. Kanał ch2 to
wyjście bramki, która wykrywa stan "01" tego licznika. Wytłumacz otrzymane wyniki.
Następnie przełącz przełączniki w stan SW(2:0) = 010 (2). Schemat wewnętrzny dla tej
konfiguracji przedstawia Rys. 4. W przeciwieństwie do Rys. 3 zastosowano tutaj wzorzec
licznika synchronicznego modulo 2M (tutaj modulo 4) oraz reset asynchroniczny w momencie
kiedy stan licznika wynosi N = 3, gdzie N − licznik modulo N. Czy licznik działa poprawnie,
jeśli nie to przyczyną jest hazard na sygnale asynchronicznego resetu, w wyniku którego
pojawia się krótkotrwały impuls na sygnale resetu. Jest on jednak tak krótki, że nie jest
obserwowany na kanale ch2. Dlatego w przypadku automatów asynchronicznych (również
logiki resetu asynchronicznego) używa się kodowania w kodzie Gray'a.
Następnie ustaw przełącznik w stan SW(2:0) = 3, dla którego dla celów dydaktycznych
sztucznie zwiększono czas propagacji bramki AND (ch2). Zaobserwuj i wytłumacz
otrzymane przebiegi sygnałów. Widoczne są przebiegi przejściowe, które powodują, że reset
asynchroniczny zmniejsza maksymalną częstotliwość pracy układu.
FPGA
D
Q0
D
clk R
ch1
ch2
Q1
clk R
ch3
ch4
Rys. 4. Schemat licznika modulo 3 z asynchronicznym resetem
3
5. Licznik synchroniczny i asynchroniczny
Ustaw przełącznik SW(2:0) w stan 4, w wyniku otrzymamy licznik synchroniczny modulo 8
(zob. Rys. 5). Zaobserwuj działanie tego licznika.
FPGA
D
Q0
D
clk
Q1
D
clk
ch1
Q2
clk
ch2
ch3
ch4
Rys. 5. Schemat licznika synchronicznego mod 8
Następnie przełącz przełączniki SW(2:0) w stan 5, w wyniku czego zamiast stosować
standardowe bramki wyjściowe zastosowano bramki z otwartym drenem (OD) i rezystorami
podciągającymi do napięcia zasilania lub masy. Bramki wprowadzają dodatkowe duże
opóźnienie. Oszacuj czas propagacji licznika od sygnału zegarowego dla najgorszego czasu
propagacji.
Następnie ustaw przełączniki w stan SW(2:0) = 6, dla którego otrzymujemy licznik
asynchroniczny (zob. Rys 6). Krótko zaobserwuj przebieg - praktycznie nie różni się on od
licznika synchronicznego. Następnie ustaw przełączniki w stan SW(2:0)= 7, dla którego
wprowadzono dodatkowe opóźnienie w postaci bramek OD. Oszacuj czas propagacji licznika
od sygnału zegarowego do wyjścia Q2 dla najgorszego czasu propagacji i porównaj go z
licznikiem synchronicznym (SW(2:0)=5).
FPGA
D
Q0
clk
ch1
D
Q1
clk
ch2
D
Q2
clk
ch3
ch4
Rys. 6. Schemat licznika asynchronicznego mod 8
4