Tajniki (zmiennoprzecinkowej) arytmetyki w FPGA
Środa, 01 Grudzień 2010
Układy FPGA nie są \"same z siebie\" wdzięczną platformą do
wykonywania zaawansowanych - z natury rzeczy - obliczeń
zmiennoprzecinkowych. Nie wynika to jednakże z ich ograniczonych
zasobów logicznych, ale z konieczności \"ręcznego\" budowania
w dostępnych sprzęcie bloków realizujących potrzebne obliczenia.
Problem ten zauważyli inżynierowie z firmy Altera i żeby uprościć
życie konstruktorom udostępnili (bezpłatnie!) w ramach pakietu
Quartus II konfigurowalne biblioteki IP core\'ów, dzięki którym
m.in. realizacja zaawansowanych operacji arytmetycznych przestała
stanowić problem.
66 ELEKTRONIKA PRAKTYCZNA 12/2010
Notatnik konstruktora
Tajniki
(zmiennoprzecinkowej)
arytmetyki w FPGA
Układy FPGA nie są ?same z siebie? wdzięczną platformą do
wykonywania zaawansowanych ? z natury rzeczy ? obliczeń
zmiennoprzecinkowych. Nie wynika to jednakże z ich ograniczonych
zasobów logicznych, ale z konieczności ?ręcznego? budowania
w dostępnych sprzęcie bloków realizujących potrzebne obliczenia.
Problem ten zauważyli inżynierowie z firmy Altera i żeby uprościć
życie konstruktorom udostępnili (bezpłatnie!) w ramach pakietu
Quartus II konfigurowalne biblioteki IP core?ów, dzięki którym
m.in. realizacja zaawansowanych operacji arytmetycznych przestała
stanowić problem.
nomenklaturze Altery są nazywane ?mega-
funkcjami? lub LPM (Library Parametrized
Module). Listę megafunkcji dostępnych bez-
płatnie można przejrzeć otwierając okno
Symbol (pokazane na rysunku 1). W artykule
skupimy się na megafunkcjach związanych
System Quartus II jest zintegrowanym,
łatwym w obsłudze, bardzo przyjaznym na-
rzędziem projektowym, wyposażonym we
wszystkie niezbędne edytory, kompilatory
i syntezery oraz wspomniane na początku
biblioteki z rdzeniami IP, które w oryginalnej
z wykonywaniem obliczeń arytmetycznych,
przede wszystkim zmiennoprzecinkowych,
których nazwy zaczynają się od ALTFP_
(np. ALTFP_MATRIX_INV, ALTFP_EXP czy
ALTFP_LOG).
Wygodne, przejrzyste i bezpłatne
Standardowo w pakiecie Quartus II znaj-
duje się 13 megafunkcji zmiennoprzecinko-
wych (tabela 1), które mogą być przez projek-
tanta w pewnym zakresie modyfikowane, dzię-
ki czemu można je dostosować do wymogów
Dodatkowe informacje:
Testy sprzętowe niezbędne do opracowania
artykułu przeprowadzono na zestawie
Cyclone IV GX Transceiver Starter Kit
udostępnionym przez firmę EBV Elektronik,
tel. 71 342 29 44 oraz 22 640 23 55,
www.ebv.com
Notatnik konstruktora
67ELEKTRONIKA PRAKTYCZNA 12/2010
Tajniki (zmiennoprzecinkowej) arytmetyki w FPGA
zoptymalizowanie zasobów wykorzystywa-
nych przez implementowany moduł funkcjo-
nalny w zależności od rzeczywistych potrzeb
aplikacji ? megafunkcje zawierają wyłącznie
parametryzowane opisy modułów, które są
każdorazowo syntezowane w projekcie. W od-
różnieniu od zapisów w IEEE-754, megafunk-
cje Altery obsługują tylko jeden typ zaokrą-
glania wyników (round-to-nearest-even), naj-
częściej stosowany w typowych obliczeniach
zmiennoprzecinkowych.
Ze względu na stopień skomplikowania
megafunkcji realizujących obliczenia zmien-
noprzecinkowe, są to bloki synchroniczne,
wymagające taktowania sygnałem zegaro-
wym. Wykorzystując możliwości układów
FPGA (duże zasoby logiczne) większość obli-
czeń realizują one równolegle, ale zazwyczaj
liczba taktów zegarowych niezbędnych do
wykonania kompletnego cyklu obliczeniowe-
go jest większa niż 1. Powoduje to pojawienie
się wyniku obliczeń na wyjściach modułu
z pewnym opóźnieniem, które użytkownik
może (jako jeden z parametrów) w pewnym
zakresie modyfikować. Parametryzacji przez
użytkownika podlegają także niektóre wej-
ścia (jak na przykład zerujące, włączające
sygnał taktujący) oraz wyjścia (jak overflow,
zero czy nan), co także pozwala zoptymali-
zować zasoby zajmowane w FPGA przez im-
plementowany blok.
Przykład konfiguracji megafunkcji
Parametryzację prezentowanych mega-
funkcji można przeprowadzić za pomocą
?ręcznego? wywołania funkcji z parametra-
mi podanymi w wywołaniu ? co jest metodą
dość żmudną i błędogenną ? lub za pomocą
kreatora wbudowanego w pakiet Quartus II
(MegaWizard Plug-in Manager). Kreator można
uruchomić ręcznie za pomocą przycisku wi-
docznego w dolnej lewej części rysunku 1 lub
automatycznie (przy zaznaczonej opcji Launch
MegaWizard Plug-in Manager) po wybraniu
megafunkcji, która będzie modyfikowana.
Po wybraniu megafunkcji i zatwierdzeniu
wyboru przyciskiem OK, jest wyświetlane
pierwsze okno kreatora (rysunek 2), w któ-
rym można wybrać język opisu generowanego
bloku oraz lokalizację tego pliku. W kolejnym
kroku (rysunek 3) projektant może ustalić
typ docelowego układu FPGA (jeżeli ma być
inny niż zadeklarowany w projekcie), format
danych wejściowych i wyjściowych, a także ?
opcjonalnie ? liczbę bitów tworzących słowo
wejściowe. Na tym etapie można ustalić także
liczbę taktów zegarowych, po których wynik
pojawia się na wyjściu bloku, co determinuje
także zajmowane przez niego zasoby logiczne
(rysunek 4).
W kolejnym kroku można wybrać dodat-
kowe wejścia i wyjścia implementowanego
bloku, co odbywa się za pomocą wygodnego
w obsłudze menu wyświetlanego w oknie
kreatora (rysunek 5).
Tabela 1. Zmiennoprzecinkowe megafunkcje dostarczane bezpłatnie w pakiecie
Quartus II
Nazwa Opis
Operatory zmiennoprzecinkowe
ALTFP_ADD_SUB Dodawanie i odejmowanie
ALTFP_DIV Dzielenie
ALTFP_MULT Mnożenie
ALTFP_SQRT Pierwiastkowanie stopnia 2
Zaawansowana algebra
ALTFP_EXP Oblicza eksponentę wartości wejściowej
ALTFP_INV Oblicza wartość inwersyjną wartości wejściowej
ALTFP_INV_SQRT
Oblicza wartość inwersyjną pierwiastka stopnia 2 wartości
wejściowej
ALTFP_LOG Logarytm naturalny
Inne działania zmiennoprecinkowe
ALTFP_ABS Oblicza wartość całkowitą wartości wejściowej
ALTFP_COMPARE Porownuje liczby zmiennoprzecinkowe
ALTFP_CONVERT
Konwertuje wartości:
? całkowite do postaci zmiennoprzecinkowej
? zmiennoprzecinkowe do postaci całkowitej
? stałoprzecinkowe do postaci zmiennoprzecinkowej
? zmiennoprzecinkowe do postaci stałoprzecinkowej
? zmiennoprzecinkowe do innych wariantów zmiennoprzecin-
kowych
Operacje na macierzach
ALTFP_MATRIX_INV Oblicza inwersję macierzy o wymiarach do 64×64
ALTFP_MATRIX_MULT Oblicza iloczyn dwóch macierzy
Rysunek 1. Okno Symbol z wykazem dostępnych bibliotek i elementów w nich zawar-
tych
Rysunek 2. Pierwsze okno kreatora z moż-
liwością wyboru języka opisu generowa-
nego bloku
Rysunek 3. Drugie okno kreatora umożli-
wia wybór formatu danych wejściowych
i wyjściowych oraz liczby taktów opóźnie-
nia generowania wyniku (jak na rysunku 4)
pojedynczej-rozszerzonej (szerokość słowa bi-
towego mieści się w przedziale od 43 do 64 bi-
tów). Dzięki takiemu rozwiązaniu możliwe jest
realizowanego projektu. Wszystkie operują na
danych zmiennoprzecinkowych w formacie
IEEE-754 z uwzględnieniem wartości specjal-
nych (w tym Quiet i Signaling NaN), w forma-
tach pojedynczej i podwójnej precyzji, a także
68 ELEKTRONIKA PRAKTYCZNA 12/2010
Notatnik konstruktora
Rysunek 4. Modyfikacja liczby cykli zegarowych znajduje silne odbicie w zasobach
zajmowanych przez implementowany blok
Rysunek 5. W kolejnym kroku pracy kreatora można wybrać dodatkowe wejścia
i wyjścia implementowanego bloku, co skutkuje zmianą wyglądu symbolu graficznego
elementu
Rysunek 6. W przedostatnim kroku działania kreatora można zażądać wygenerowania netlisty, która pozwoli z dość dużą dokładno-
ścią oszacować parametry czasowe implementowanego bloku
Rysunek 7. Skrócony opis cech implemen-
towanego bloku logicznego
Przedostatni krok działania kreatora (ry-
sunek 6) zapewnia wygodny dostęp do do-
kumentacji implementowanej megafunkcji
(przycisk Documentation), jej skróconego
opisu (Abort ? rysunek 7) z wykazem rodzin
FPGA, w których może być ona implemen-
towana. Na tym etapie można zażądać tak-
że wygenerowania netlisty, która pozwoli
z dość dużą dokładnością oszacować para-
metry czasowe (w tym maksymalną często-
tliwość taktowania) bloku zaimplementowa-
nego w wybranym układzie FPGA.
Na rysunku 8 pokazano ostatnie okno
kreatora megafunkcji, w którym wyświetlo-
no podsumowanie wyboru generowanych
plików (niektóre z nich można zmienić), po
69ELEKTRONIKA PRAKTYCZNA 12/2010
Tajniki (zmiennoprzecinkowej) arytmetyki w FPGA
nia za pomocą FPGA na liczbach zmienno-
przecinkowych oraz macierzach takich liczb,
co jest wstępem do zaawansowanej filtracji
i cyfrowej obróbki sygnałów, czego przykła-
dy pokażemy w jednej z kolejnych EP.
Piotr Zbysiński, EP
piotr.zbysinski@ep.com.pl
Listing 1. Sygnały wykreowanego
komponentu w opisie VHDL
altfp_sqrt0_inst : altfp_sqrt0 PORT
MAP (
aclr => aclr_sig,
clk_en => clk_en_sig,
clock => clock_sig,
data => data_sig,
nan => nan_sig,
overflow => overflow_sig,
result => result_sig,
zero => zero_sig
);
Rysunek 8. W ostatnim oknie kreatora
widać podsumowanie wyboru generowa-
nych plików implementacyjnych
Rysunek 9. Widok listy elementów bibliotecznych po wygenerowaniu własnej wersji bloku oraz jego symbol graficzny na planszy
edytora schematów
zatwierdzeniu których w katalogu projektu
tworzony jest nowy blok funkcjonalny (ry-
sunek 9), który można wykorzystać zarówno
w edytorze graficznym jak i w opisie teksto-
wym, dzięki automatycznie wygenerowane-
mu opisowi komponentu (listing 1).
Podsumowanie
Biblioteki z predefiniowanymi opisami
bloków funkcjonalnych są niezwykle wy-
godnym sposobem skrócenia czasu realizacji
projektu w FPGA, podobnie jak ma to miejsce
w przypadku bibliotek wykorzystywanych
przez programistów piszących na mikrokon-
trolery lub systemy mikroprocesorowe. Przy-
kłady megafunkcji pokazanych w artykule
ilustrują łatwość zaawansowanego operowa-
R E K L A M A
Zobacz więcej w kategorii Notatnik konstruktora