Układy Cyfrowe - ćwiczenie 4 Należy zaprojektować układ dzielnika częstotliwości sygnału zegarowego. Wejścia układu: 1. clk - sygnał zegarowy 2. reset...
11 downloads
27 Views
362KB Size
Układy Cyfrowe - ćwiczenie 4 Należy zaprojektować układ dzielnika częstotliwości sygnału zegarowego. Wejścia układu: 1. clk - sygnał zegarowy 2. reset - ustawia stan początkowy automatu sterującego i powoduje zapamiętanie stanu wejścia div 3. div – podzielnik częstotliwości Wyjścia układu: 1. w - wyjście układu dzielnika częstotliwości
Zasada działania układu: 1. Wejście reset pełni dwie funkcje: ustawiania stanu początkowego automatu i zapamiętywania podzielnika częstotliwości. Stan reset=1 jest ignorowany. Natomiast gdy reset=0 następuje: a) asynchroniczne ustawienie stanu początkowego automatu stanów. b) synchroniczne zapamiętanie stanu div w wewnętrznym rejestrze. 2. W stanie początkowym wyjście w=0. 3. Po zmianie sygnału na reset=1, od najbliższego narastającego zbocza clk, na wyjściu w generowany jest przebieg o okresie będącym iloczynem zapamiętanej wartości div i okresu sygnału clk. Wypełnienie przebiegu jest następujące: stan ‘1’ na wyjściu trwa przez 1 takt sygnału clk, a stan ‘0’ przez pozostałą część okresu. A zatem, układ generuje na wyjściu w impuls ‘1’ o długości 1 taktu clk co div taktów clk. 4. Czas trwania okresu przebiegu wyjściowego jest mierzony (w taktach clk) za pomocą wewnętrznego licznika. 5. Minimalna wartość dzielnika, przy której następuje generacja przebiegu, wynosi div=2. Dla mniejszych wartości div układ pozostaje w stanie początkowym. Przykładowe przebiegi
1. Przed rozpoczęciem pracy należy: a) uruchomić program HDL Designer (polecenie w terminalu hds &), b) otworzyć istniejący projekt cw4_model (File→Open→Project...), c) do istniejącej biblioteki cw4_model _lib wczytać (File→Add→Existing Files) trzy pliki: divfreq_tgen.vhd, divfreq_tb.vhd i divfreq.vhd. 2. Napisać model generatora impulsu (uzupełnić plik divfreq.vhd) i sprawdzić jego poprawność wykonując symulację. 3. Wykonać syntezę logiczną opracowanego modelu i usunąć przyczyny ewentualnych błędów. a) otworzyć nowy terminal i przejść do katalogu cw4_synteza (polecenie cd cw4_synteza), b) skopiować plik sterujący dla programu RTL Compiler (polecenie cp /lab/UCYF/CW4…/rtlcomp_cw4.tcl .) c) uruchomić program RTL Compiler komendą: rc -o -f rtlcomp_cw4.tcl d) otworzyć plik rc.log (zawiera kompletny raport) i sprawdzić czy synteza przebiegła prawidłowo (należy poszukać komunikatów takich jak: Error, Latch inferred, sprawdzić komunikaty na etapie elaboracji), e) otworzyć raport divfreq _timing.txt i sprawdzić czy wartość Timing slack nie jest ujemna (ujemna wartość oznacza, że nie udało się osiągnąć założonej szybkości działania), f) w przypadku wystąpienia błędów poprawić model, wykonać jego symulację i ponowić syntezę. 4. Wykonać weryfikację funkcjonalną otrzymanego w trakcie syntezy logicznej układu (powtórzyć symulację zastępując model układu opisem otrzymanym w wyniku syntezy). a) zmienić projekt na cw4_po_syntezie, b) do biblioteki cw4_po_syntezie _lib wczytać (File→Add→Existing Files): • wynik syntezy logicznej (divfreq.v), • oryginalne środowisko symulacyjne (dwa pliki: divfreq_tgen.vhd i divfreq_tb.vhd). c) w pliku divfreq _tb.vhd usunąć deklarację parametrów ogólnych (generic) komponentu divfreq i zmienić odwołania do parametru N na stałe wartości, d) wykonać symulację z uwzględnieniem realnych opóźnień (patrz instrukcja rozdz. 3.5): • ustawić rozdzielczość symulacji na 1ps, • dołączyć plik divfreq.sdf pamiętając o użyciu właściwej nazwy konta (opcja symulatora: -sdfmax /testbench/df=/lab/ucyf.../cw4_synteza/ divfreq.sdf), e) zaobserwować w panelu Transcript czy i kiedy pojawiają się błędy timing violations, f) sprawdzić czy uzyskany w wyniku syntezy logicznej układ działa poprawnie, g) w przypadku wystąpienia błędów poprawić model, wykonać jego symulację i powtórzyć syntezę.
Punktacja: 1. Etap 2- 3 punkty, 2. Etap 3 – 1 punkt, 3. Etap 4 - 1 punkt.