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