Instrukcja do ćwiczenia nr 7 - PB Wydział Elektryczny
Transkrypt
Instrukcja do ćwiczenia nr 7 - PB Wydział Elektryczny
Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TZ1A400 028 Ćwiczenie Nr 7 BLOKI ARYTMETYCZNO-LOGICZNE Opracował: dr inż. Marian Gilewski BIAŁYSTOK 2009 1. 2. 3. 4. 5. Informacje wstępne. Bloki parametryzowalne realizujące funkcje arytmetyczne. Badanie bibliotecznych modułów arytmetyczno - logicznych. Badanie własnych projektów. Sprawozdanie. 1.Informacje wstępne. Do klasy elementów arytmetycznych i logicznych występujących w systemie stosowanym w laboratorium należą: modele elementów cyfrowych serii 74XXX, składniki biblioteki megafunkcji oraz bloki parametryzowalne serii lpm. Pod względem funkcjonalnym arytmetyczno-logiczne elementy biblioteczne można podzielić na: - sumatory/subtraktory (8fadd, 7480, 7482, 7483, 74183, 74283, 74385, lpm_add_sub), - mnożniki (mult2, mult24, mult4, tmult4, 7497, 74261, 74284, 74285, lpm_mult), - dzielniki liczb binarnych (divide, lpm_divide), - układy wyznaczające wartość bezwzględną (lpm_abs), - komparatory (8mcomp, 7485, 74518, 74684, 74686, 74688, lpm_compare), - generatory wartości stałych (lpm_constant), - układy wielowejściowych operatorów logicznych (lpm_and, lpm_inv, lpm_or, lpm_xor), - uniwersalne jednostki arytmetyczno-logiczne (74181, 74381, 74382). W systemie projektowym wbudowany jest szczegółowy opis większości jednostek arytmetycznych i logicznych, aktywowany w edytorze graficznym po wskazaniu danego elementu (lewym klawiszem myszy) z podręcznego menu (prawy klawisz myszy) funkcją : Edit Port/Parameters... -> Help on symbol_elementu. W dalszej części instrukcji przytoczony został opis najbardziej złożonych elementów arytmetycznych oraz ALU. Sposób posługiwania się pozostałymi elementami bibliotecznymi jest analogiczny jak w przypadku niżej opisanych 2. Bloki parametryzowalne realizujące funkcje arytmetyczne. 2.1 Parametryzowalny sumator/subtraktor – lpm_add_sub. Układ pełni realizuje funkcje uniwersalnego sumatora/subtraktora, operującego na liczbach binarnych ze znakiem lub bez. Pełny symbol graficzny elementu przedstawiono na rysunku 1. Rys.1. Kompletny symbol elementu lpm_add_sub Po wskazaniu elementu z podręcznego menu (prawym klawiszem myszy) funkcją Edit Port/Parameters..., możliwe są operacje edycji symbolu polegające na doborze wyprowadzeń oraz definiowaniu parametrów. Widok okna edycyjnego przedstawiono na poniższym rysunku. Rys.2. Okno edycyjne elementu lpm_add_sub. Górne menu (Ports) służy do aktywacji bądź wyłączania w widoku elementu (kluczami Used/Unused) wyprowadzeń (portów) symbolu elementu. Znaczenie portów jest następujące: - cin - wejście sygnału przeniesienia z bloku poprzedniego (port opcjonalny), - dataa[ ] - wejście danych składnika/odjemnej (port wymagany), - datab[ ] - wejście danych składnika/odjemnika (port wymagany), - add_sub - wejście selekcji rodzaju operacji arytmetycznej, w stanie high sumowanie, w low odejmowanie (port opcjonalny, domyślnie sumowanie), - clock - wejście sygnału zegarowego przetwarzania potokowego (port opcjonalny, domyślnie nieaktywny), - clken - wejście zezwolenia sygnału zegarowego (port opcjonalny, związane z clock), - aclr - asynchroniczne zerowanie (port opcjonalny, związany z przetwarzaniem potokowym), - result[ ] - wyjście danych wyniku (port wymagany), - cout - wyjściowy sygnał przepełnienia/pożyczki operacji na danych bez znaku (port opcjonalny), - overflow - analog cout dla danych ze znakiem (port opcjonalny). Dolne menu (Parameters) służy do definiowania parametrów elementu, których znaczenie jest następujące: - LPM_WIDTH - liczba bitów danych (wymagany parametr, typu integer), - LPM_DIRECTION - rodzaj operacji - sumowanie/odejmowanie (opcjonalny parametr typu string, domyślnie sumowanie, dopuszczalne wartości to: „ADD”, „SUB”, „UNUSED”), - LPM_REPRESENTATION - reprezentacja danych ze znakiem/bez (opcjonalny parametr typu string, domyślnie SIGNED, dopuszczalne wartości to: „SIGNED”, „UNSIGNED”, „UNUSED”), - LPM_PIPELINE - liczba cykli zegarowych przetwarzania potokowego niezbędnych do wyznaczenia wyniku (opcjonalny parametr, typu integer), - LPM_HINT - parametr niestosowany w laboratorium (stosowany w języku VHDL), - LPM_TYPE - parametr niestosowany w laboratorium (stosowany w języku VHDL), - ONE_INPUT_IS_CONSTANT - deklaracja daneych jednego z wejść jako stałej (opcjonalny parametr, typu string, dopuszczalne wartości to: „YES”, „NO”, „UNUSED”), - MAXIMIZE_SPEED - dyrektywa kompilatora optymalizacji powierzchni lub szybkości pracy (opcjonalny parametr, typu integer, dopuszczalne wartości z przedziału od 0 do 10, wyższe wartości optymalizują szybkość). Menu prawego górnego rogu "Help on nazwa_elementu" zawiera szczegółowy opis elementu bibliotecznego. Prototypowa funkcja wywołująca obsługę elementu w programie języka AHDL przyjmuje postać następującą: FUNCTION lpm_add_sub (cin, dataa[LPM_WIDTH-1..0], datab[LPM_WIDTH-1..0], add_sub, clock, aclr, clkn) WITH (LPM_WIDTH, LPM_REPRESENTATION, LPM_DIRECTION, ONE_INPUT_IS_CONSTANT, LPM_PIPELINE, MAXIMIZE_SPEED) RETURNS (result[LPM_WIDTH-1..0], cout, overflow); 2.2 Układ mnożący - lpm_mult. Parametryczny mnożnik równoległy lpm_mult (rysunek 3) zawiera typową strukturę okna edycyjnego, zbliżoną do struktury przedstawionej na rysunku 2, dlatego szczegóły dotyczące obsługi nie będą przytaczane. Rys.3. Kompletny symbol elementu lpm_mult Element lpm_mult zawiera następujące porty: - dataa[ ] - wejście danych czynnika A (port wymagany), - datab[ ] - wejście danych czynnika B (port wymagany), - sum [ ] - wejście sumy częściowej (port opcjonalny), - clock - wejście sygnału zegarowego przetwarzania potokowego (port opcjonalny), - clken - wejście zezwolenia sygnału zegarowego (port opcjonalny, dostępny w VHDL), - aclr - asynchroniczne wejście zerowania przetwarzania potokowego (port opcjonalny), - result[ ] - wyjście danych wyniku operacji dataa[] * datab[] + sum [ ] (port wymagany). Znaczenie parametrów jest następujące: - LPM_WIDTHA - liczba bitów czynnika A (wymagany parametr, typu integer), - LPM_WIDTHB - liczba bitów czynnika B (wymagany parametr, typu integer), - LPM_WIDTHP - liczba bitów iloczynu (wyznaczany parametr, typu integer), - LPM_WIDTHS - liczba bitów sumy częściowej (wyznaczany parametr, typu integer), - LPM_REPRESENTATION - reprezentacja danych ze znakiem/bez (opcjonalny parametr typu string, domyślnie SIGNED, dopuszczalne wartości to: „SIGNED”, „UNSIGNED”, „UNUSED”), - LPM_PIPELINE - liczba cykli zegarowych przetwarzania potokowego niezbędnych do wyznaczenia wyniku (opcjonalny parametr, typu integer), - LPM_HINT - parametr niestosowany w laboratorium (stosowany w języku VHDL), - LPM_TYPE - parametr niestosowany w laboratorium (stosowany w języku VHDL), - INPUT_A_IS_CONSTANT - deklaracja czynnika A jako stałej (opcjonalny parametr, typu string, dopuszczalne wartości to: „YES”, „NO”, „UNUSED”), - INPUT_B_IS_CONSTANT - deklaracja czynnika B jako stałej (opcjonalny parametr, typu string, dopuszczalne wartości: to„YES”, „NO”, „UNUSED”), - USE_EAB - dyrektywa implementacji mnożnika w bloku EAB FPGA (opcjonalny parametr, typu string, dopuszczalne wartości: „YES”, „NO”, „UNUSED”), - LATENCY - odpowiednik LPM_PIPELINE w starszych wersjach oprogramowania, - MAXIMIZE_SPEED - dyrektywa kompilatora optymalizacji powierzchni lub szybkości pracy (opcjonalny parametr, typu integer, dopuszczalne wartości z przedziału od 0 do 10, wyższe wartości optymalizują szybkość). Prototypowa funkcja wywołująca obsługę elementu w programie języka AHDL przyjmuje postać następującą: FUNCTION lpm_mult (dataa[(LPM_WIDTHA-1)..0], datab[(LPM_WIDTHB-1)..0], sum[(LPM_WIDTHS-1)..0], aclr, clock) WITH (LPM_WIDTHA, LPM_WIDTHB, LPM_WIDTHP, LPM_WIDTHS, LPM_REPRESENTATION, LPM_PIPELINE, LATENCY, INPUT_A_IS_CONSTANT, INPUT_B_IS_CONSTANT, USE_EAB, MAXIMIZE_SPEED) RETURNS (result[LPM_WIDTHP-1..0]); 2.3 Układ dzielący - lpm_divide. Uniwersalny układ dzielący lpm_divie, przedstawiony na rysunku 4 zawiera następujące Rys.4. Kompletny symbol elementu lpm_divide porty wejściowe: - aclr - asynchroniczne wejście zerowania przetwarzania potokowego (port opcjonalny), - clock - wejście sygnału zegarowego przetwarzania potokowego (port opcjonalny), - clken - wejście zezwolenia sygnału zegarowego (port opcjonalny), - denom[ ] - wejście danych mianownika (port wymagany), - numer[ ] - wejście danych licznika (port wymagany), - quotient[ ] - wyjście danych ilorazu (port wymagany), - remain[ ] - wyjście danych reszty z dzielenia (port opcjonalny). Znaczenie parametrów jest następujące: - LPM_DREPRESENTATION - reprezentacja danych mianownika ze znakiem/bez (opcjonalny parametr typu string, domyślnie UNSIGNED, dopuszczalne wartości to: „SIGNED”, „UNSIGNED”, „UNUSED”), - LPM_NREPRESENTATION - rodzaj reprezentacji licznika - ze znakiem/bez znaku (opcjonalny parametr typu string, domyślnie UNSIGNED, dopuszczalne wartości to: „SIGNED”, „UNSIGNED”, „UNUSED”), - LPM_PIPELINE - liczba cykli zegarowych przetwarzania potokowego niezbędnych do wyznaczenia wyniku (opcjonalny parametr, typu integer), - LPM_WIDTHD - liczba bitów mianownika (wymagany parametr, typu integer), - LPM_WIDTHN - liczba bitów licznika (wymagany parametr, typu integer). 2.4 Jednostka arytmetyczno-logiczna 74181. Element jest odpowiednikiem funkcjonalnym układu scalonego UCY74181, będącego uniwersalną jednostką arytmetyczno-logiczną (rysunek 5). Znaczenie poszczególnych pinów jest następujące: - A0N÷ ÷A3N - wejścia liczby A, - B0N÷ ÷B3N - wejścia liczby B, - S0÷ ÷S3 - wejścia kodów sterujących, - M - wejście selekcji funkcji logicznej/arytmetycznej - CN - wejście przeniesienia, - F0N÷ ÷F3N - wyjścia wyniku operacji, - CN4 - wyjście przeniesienia, - GN - wyjście generacji przeniesienia, - PN - wyjście propagacji przeniesienia, - AEQB - wyjście komparatora, Prototypowa funkcja wywołująca obsługę układu w języku AHDL przyjmuje postać: FUNCTION 74181 (s[3..0], m, cn, a3n, a2n, a1n, a0n, b3n, b2n, b1n, b0n) RETURNS (gn, pn, f3n, f2n, f1n, f0n, aeqb, cn4);. W tabelach 1 i 2 zawarto wykaz funkcji logicznych i arytmetycznych, przyporządkowanych poszczególnym kodom sterującym. Rys.5. Symbol elementu 74181 Tabela 1. Tablica działania układu 74181 w trybie logiki zerowej Tabela 1. Tablica działania układu 74181 w trybie logiki wysokiej 2.5 Jednostka arytmetyczno-logiczna 74381. Uproszczoną wersję jednostki arytmetyczno-logicznej, w postaci układu 74381, przedstawiono na rysunku 6. Układ realizuje następujące funkcje arytmetyczne i logiczne: Znaczenie poszczególnych pinów jest następujące: - A0N÷ ÷A3N - wejścia liczby A, - B0N÷ ÷B3N - wejścia liczby B, - S0÷ ÷S2 - wejścia kodów sterujących, - CN - wejście przeniesienia, - F0N÷ ÷F3N - wyjścia wyniku operacji, - GN - wyjście generacji przeniesienia, - PN - wyjście propagacji przeniesienia. Rys.6. Symbol elementu 74381 Prototypowa funkcja wywołująca obsługę układu w języku AHDL przyjmuje postać: FUNCTION 74381 (s[2..0], a[3..0], b[3..0], cin) RETURNS (pn, gn, f[3..0]); 3. Badanie modułów arytmetyczno - logicznych. Realizacja ćwiczenia odbywa się w następującej kolejności: a/ studenci zapoznają się z treścią niniejszej instrukcji oraz przygotowują, określone przez prowadzącego, projekty układów pomiarowych przed przystąpieniem do ćwiczeń, b/ prowadzący weryfikuje poziom przygotowania teoretycznego oraz jakość projektów, c/ przystąpienie do dalszej części ćwiczenia zależy od pozytywnej oceny projektów oraz stopnia przygotowania, d/ w dalszej części należy dokonać badania wybranych (określonych przez prowadzącego) układów z następujących klas: mnożniki, dzielniki, uniwersalne jednostki arytmetycznologiczne oraz układy operatorów logicznych. 4. Badanie własnych projektów. 4.1. Badanie sumatora 4 bitowego. Realizacja ćwiczenia obejmuje kompilację, symulację i opcjonalnie uruchomienie w strukturze FLEX10K70 przygotowanego wcześniej projektu układu. W laboratorium należy przeprowadzić następujące czynności: a/ skompilować projekty do struktury FLEX10K70 i wyprowadzeń modelu laboratoryjnego UP2, b/ dokonać badań symulacyjnych wszystkich wersji 4 bitowego sumatora równoległego, c/ badania dotyczą 4 wersji układu zbudowanego: - z wykorzystaniem elementu lpm_add_sub, - z zastosowaniem własnego modelu opracowanego w języku AHDL, - w postaci struktury iteracyjnej opartej na 1 bitowym sumatorze pełny w języku AHDL, - w postaci iteracyjnej opartej na 1 bitowym sumatorze pełnym z funktorów elementarnych, d/ zmierzyć symulacyjnie (Timing Analyzer) i zinterpretować szybkości pracy (czas ustalania wyniku) poszczególnych wersji sumatora. 4.1. Badanie 3 bitowej ALU. a/ należy uruchomić zaprojektowany układ własnej 3 bitowej jednostki arytmetyczno – logicznej, j/ projekt należy przygotować w sposób umożliwiający zadawanie sygnałów wejściowych w modelu UP2 i obserwację wyników na wyświetlaczu 7 segmentowym, k/ zaprojektowany układ powinien realizować następujące operacje: - logiczną negacji liczby A, - logiczną XOR liczb A i B, - arytmetyczną mnożenia liczb bez znaku, - arytmetyczną podnoszenia do kwadratu liczby B bez znaku. 4.Sprawozdanie. Sprawozdanie powinno zawierać: - stronę tytułową, zgodną ze standardami wymaganymi przez Dziekanat (szczegółowe informacje dostępne w Dziekanacie Wydziału Elektrycznego), - treści zadań projektowych, - schematy układów pomiarowych (zarówno aparaturowych jak i symulacyjnych), - komunikaty kompilatora poszczególnych projektów, - wyniki badań symulacyjnych i/lub aparaturowych projektów, - interpretację wyników i wnioski końcowe.