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.

Podobne dokumenty