Zestawy uruchomieniowe dla układów FPGA

| Technika

Efektywne projektowanie systemów bazujących na układach FPGA wymaga od ich twórców nie tylko zdolności programistyczno-projektanckich, ale i możliwości sprawnego testowania urządzenia. Aby ułatwić sobie zadanie, warto skorzystać z dostępnych na rynku zestawów startowych. Stosowanie zestawów uruchomieniowych nabiera coraz większego znaczenia, tak jak i coraz popularniejsze stają się systemy działające w oparciu o układy FPGA. Dobrze dobrany zestaw startowy pozwala nie tylko usprawnić projektowany system, ale i skrócić czas prac nad układem oraz obniżyć koszty związane z produkcją. Dlaczego? Przyczyna leży w prawie, jakie rządzi rynkiem.

Zestawy uruchomieniowe dla układów FPGA

zestawy_1Efektywne projektowanie systemów bazujących na układach FPGA wymaga od ich twórców nie tylko zdolności programistyczno-projektanckich, ale i możliwości sprawnego testowania urządzenia. Aby ułatwić sobie zadanie, warto skorzystać z dostępnych na rynku zestawów startowych.

Stosowanie zestawów uruchomieniowych nabiera coraz większego znaczenia, tak jak i coraz popularniejsze stają się systemy działające w oparciu o układy FPGA. Dobrze dobrany zestaw startowy pozwala nie tylko usprawnić projektowany system, ale i skrócić czas prac nad układem oraz obniżyć koszty związane z produkcją. Dlaczego? Przyczyna leży w prawie, jakie rządzi rynkiem.

Rynkowe uwarunkowania

Nie da się ukryć, że w związku z rosnącą konkurencją na rynku układów elektronicznych, rośnie potrzeba coraz to szybszego wprowadzania do sprzedaży nowych wersji produktów. Jeszcze niedawno czas przez który prowadzono sprzedaż nowoczesnego urządzenia wynosił zazwyczaj od roku do 18 miesięcy, obecne tendencje świadczą o skróceniu tego okresu o ponad połowę, co wymusza częstsze odświeżanie oferowanych linii produktowych. Wszelkie spóźnienia powodują duże straty, które przez ekspertów oceniane są na około 3-4% na każdy tydzień opóźnienia premiery. Ponadto koszt związany z rozwijaniem produktów bazujących na nowoczesnych technologiach jest bardzo duży. Szczególnie istotne okazują się nakłady ponoszone na przygotowanie produkcji układów, których wymiar charakterystyczny procesu technologicznego sięga już 90-130nm, a niekiedy nawet 65nm. Nie tylko większa liczba zastosowanych w układzie tranzystorów wymaga dodatkowego czasu. Duży wpływ na czas i koszty mają kwestie związane z rosnącą komplikacją zjawisk fizycznych, których znaczenie nasila się wraz ze zmniejszaniem wymiaru charakterystycznego wykorzystywanej technologii. Ponadto, bardzo problematyczne staje się przygotowanie nowoczesnych masek do naświetlania płytek krzemowych. Powoduje to, że wszelkie jednorazowe, niewielkie zmiany NRE (Non Reccuring Engineering) są przyczyną ogromnych kosztów i konieczne jest przeciwdziałanie im. Naturalnie, opisane powyżej problemy wpływają na wydłużenie procesów produkcyjnych, co w świetle opisanej na początku kalkulacji zysków jest wielce niekorzystne.

zestawy_2

Jedynym rozwiązaniem, które dosyć skutecznie pozwala uniknąć większości z wymienionych trudności jest zastosowanie układów FPGA. Odzwierciedleniem tego jest rosnąca liczba systemów wielkonakładowych, wykorzystująca właśnie układy programowalne. Okazuje się bowiem, że dodatkowy koszt związany z zakupem FPGA, jak również ograniczenia wydajnościowe są na tyle niewielkie, że wielkość wolumenu produkcyjnego, od którego opłaca się produkować układy ASIC stale rośnie. Ponadto, wysoka wydajność obecnie dostępnych FPGA, produkowanych nierzadko w technologii 65nm pozwala na dosyć dokładne przybliżenie wydajności, z jaką będzie pracował gotowy układ i przetestowanie go w odpowiednim środowisku testowym zanim pełnosprawny ASIC zostanie wdrożony do produkcji. Chyba nie trzeba wspominać, jak wielkie znaczenie będzie mieć szansa poprawienia ewentualnych błędów w projekcie na etapie poprzedzającym realizację fizyczną. Zaoszczędzone w ten sposób środki, które normalnie zużyte byłyby na wykonanie zmian NRE, nie tylko pokryją koszty dodatkowych układów testowych FPGA, ale i pozwolą na sfinansowanie kampanii reklamowej, bądź rozwój kolejnych produktów.

Wielkość wolumenu produkcyjnego, od którego opłaca się produkować układy ASIC stale rośnie.

Czym jest Development Kit?

Opisane dotąd zalety wykorzystania układów programowalnych tracą wiele na znaczeniu, w momencie, gdy okazuje się, że aby przetestować FPGA, także konieczne jest przygotowanie środowiska, które zapewni najlepsze odwzorowanie otoczenia, w jakim będzie pracować tworzony układ. Projektowanie dodatkowych płytek, pozwalających na łatwe debuggowanie zaimplementowanych programów, choć nie wymaga tylu starań, co przygotowanie specjalizowanego układu scalonego, także nie jest zadaniem banalnym. Co więcej, wcale nie jest to też tani proces, gdyż wymaga stworzenia dosyć skomplikowanego urządzenia, które będzie wykonane w niewielkiej liczbie sztuk i to najpewniej do jednorazowego użytku. Zadanie to może okazać się dodatkowym projektem, wymagającym zatrudnienia dodatkowego zespołu inżynierskiego i poświęcenia na prace cennego czasu.

Ponieważ jednak rynek nie lubi próżni i tu znajdzie się skuteczne rozwiązanie – najczęściej dostępne bezpośrednio u samego producenta układów programowalnych. Rozwiązaniem tym jest oczywiście tytułowy zestaw uruchomieniowy Development Kit, nazywany czasami także startowym. Jego skład będzie się znacznie różnił, w zależności od producenta i wybranej wersji. Naturalnie, wraz za różnicami technicznymi podążać będzie także cena, a kluczem do sukcesu jest wybór odpowiedniego z dostępnych na rynku zestawów.

Jak wybierać?

Pierwszym krokiem na drodze do wyboru odpowiedniego zestawu startowego powinno być określenie, jakiego typu układ programowalny będzie wykorzystywany. Rozgraniczenie przebiega pomiędzy FPGA z pamięcią stałą i ulotną. O ile te pierwsze z nich w momencie zasilania są gotowe do pracy zgodnie z zadanym programem, to te drugie wymagać będą oddzielnych modułów pamięci, zawierających dane konfiguracyjne. Wpływ na wybór typu układu FPGA powinna mieć nie tylko oczekiwana prędkość działania systemu, ale i wzgląd na zabezpieczenie własności intelektualnej.

Zastosowanie układów z pamięciami ulotnymi wymaga uwzględnienia umieszczenia dodatkowych modułów pamięci trwałej z kodem programu na płytce z FPGA. Określenie kolejnych modułów, mających współpracować z układem programowalnym, jak i portów wejść i wyjść to kolejny krok na drodze do wyboru odpowiedniego zestawu uruchomieniowego. Aby nie stracić ani czasu, ani pieniędzy, należy postarać się wybrać taki model, który wyposażony jest we wszystkie z koniecznych podzespołów lub też pozwalający podłączyć dodatkowe moduły zawierające te elementy, których zestaw był pozbawiony. Warto dobrze przemyśleć kwestię ewentualnego rozwoju projektu i zaopatrzyć się w płytkę uruchomieniową, wykraczającą nieco poza stawiane na obecnym etapie projektu wymagania. Ponadto, należy uwzględnić ewentualne poprawki, które mogą wymagać dodatkowych rozszerzeń, takich jak dotąd nieużywane porty.

Wpływ na wybór typu układu FPGA powinna mieć nie tylko oczekiwana prędkość działania systemu, ale i wzgląd na zabezpieczenie własności intelektualnej.

Co można dostać?

O ile dotąd podane wskazówki mogą wydawać się niektórym oczywiste, nabierają one znaczenia w momencie przeglądania dostępnych na rynku zestawów startowych. W skład typowego zestawu, wchodzi nie tylko płytka uruchomieniowa, ale także dodatkowe moduły programowe, poczynając od gotowych bloków IP (Intelectual Property), a kończąc na specjalistycznym oprogramowaniu. Ponadto często dostępne są także specjalne samouczki, nierzadko pozwalające na znaczne przyspieszenie prac nad projektowanym układem i usprawnienie procedur przeprowadzanych testów.

zestawy_5
Rys. 1. Płytka ML310 z układem Xilinx Virtex-II Pro XC2VP30

Wśród udostępnionych modułów IP znaleźć można różne bloki, w zależności od typu i przeznaczenia wybranego zestawu. Dostępne są zarówno komplety przystosowane do pracy np. w systemach DSP, w otoczeniu sieciowym, jak i wspierające komunikację po magistralach typu PCI czy CAN. Będą one najprawdopodobniej pasowały do projektowanej aplikacji, ze względu na zbieżność przeznaczenia nabywanej płytki z przeznaczeniem dołączonych bloków funkcjonalnych.

Druga, już nie tak uporządkowana część zestawu, to wspomniane oprogramowanie dodatkowe. Jego różnorodność podyktowana jest mnogością producentów zestawów startowych oraz stopni zaawansowania zestawu. Producenci oprogramowania chętnie dołączają wersje testowe lub limitowane czasowo swoich programów, co ma zapewnić im nowych klientów na pełne wersje tychże pakietów w przyszłości. W zestawie można znaleźć zarówno oprogramowanie do generowania kodu programującego, pakiety deweloperskie przeznaczone do tworzenia i testowania programów w językach opisu sprzętu, takich jak VHDL, Verilog, czy AHDL, czy nawet programy do projektowania płytek drukowanych. Oczywiście, ponieważ stworzenie kompletów z różnymi pakietami oprogramowania praktycznie nic nie kosztuje producentów tychże zestawów, na rynku dostępne są wersje pakietów różniące się jedynie liczbą dołączonych programów.

A co ze sprzętem?

Wymieniając wszystkie dodatki nie można zapomnieć o najistotniejszym elemencie zestawu, czyli płytce uruchomieniowej. Jest to zazwyczaj kilkuwarstwowy układ, którego stopień zaawansowania będzie się różnić, w zależności od modeli FPGA i częstotliwości, z jakimi system ma pracować. Bardzo często płytki te mają zintegrowane układy programowalne. Wynika to z faktu, że zaawansowane układy produkowane są w obudowach BGA, których ręczny montaż na gotowej płycie nie byłby możliwy. Ponadto wlutowane są dodatkowe moduły takie jak procesory DSP, które także wymagają często lutowania maszynowego. Na rynku dostępne są także płytki wyposażone w gniazda na układy FPGA i pamięci, które mogą pracować z całymi rodzinami układów. W tej sytuacji dobór odpowiedniego FPGA leży już po stronie projektanta, który umieszcza lub wlutowuje tenże układ ręcznie. Ostatecznie, istnieją takie modele, które współpracują z kartami rozszerzeń, na których to wlutowuje się dowolnie zaawansowany układ programowalny, a wszystkie sygnały przenoszone są na złącze krawędziowe, które przekazuje je dalej do reszty podzespołów płytki.

zestawy_3
Rys. 2. Zestaw DBC2C20 firmy DBC2C20

Wśród innych istotnych elementów znajdujących się na płytkach startowych, warto wymienić złącza takie jak RJ-45, czy DB-9, które mogą znacznie ułatwić pracę z zestawem. Ponadto, bywają egzemplarze wyposażone w przetworniki analogowo-cyfrowe lub odwrotne, mające swoje zastosowanie wszędzie tam, gdzie projektowany układ będzie współdziałał z sygnałami analogowymi. Jakość tychże przetworników także będzie się wahać pomiędzy poszczególnymi konstrukcjami.

Kolejnym elementem często umieszczanym w ramach zestawów startowych są wszelkiego rodzaju złącza, replikujące sygnały z wejść i wyjść portów FPGA. Ponadto dostępne są także moduły JTAG pozwalające nie tylko na programowanie układu, ale i na testowanie już zaprogramowanych FPGA. Dzięki temu, nabyty zestaw może być przydatny nie tylko podczas projektowania, ale i w fazie produkcji, jako narzędzie testów gotowych systemów.

Ostatnimi z rzeczy, które znaleźć można wlutowane w płytki uruchomieniowe, to wszelkiego rodzaju sygnalizatory i przyciski sterujące. Pozwalają one zarówno na wygodne wprowadzanie danych do układu, jak i wyświetlanie odpowiedzi uzyskanej na wyjściach FPGA. Są to najczęściej diody i alfanumeryczne wyświetlacze LCD, a także pokrętła i przełączniki. Ich znaczenie jest nie do przecenienia, gdyż to najłatwiejszy i najszybszy sposób na podgląd aktualnego stanu wyjść i kontrolę wejść układu programowalnego.

Czas na przykłady

Aby stać się właścicielem zestawu uruchomieniowego wystarczy poszukać odpowiedniego kompletu na stronach internetowych producenta układów programowalnych. Firmy takie jak Xilinx czy Altera zamieszczają w Internecie listy zestawów ułatwiających korzystanie z ich układów FPGA. Przykładem takiego produktu jest kosztująca niecałe 2500 dol. płytka deweloperska o oznaczeniu ML310 (rys. 1). Zintegrowano w niej układ Xilinx Virtex-II Pro XC2VP30, a cała płyta jest zgodna ze standardem ATX co sprawia, że wyglądem przypomina ona komputerową płytę główną. Ponadto, na płycie umieszczono cztery gniazda PCI, złącze pamięci RAM DDR DIMM, interfejsy dysków twardych IDE, kontroler sieci Ethernet, dwa porty USB i interfejs JTAG. Zastosowano także alfanumeryczny wyświetlacz LCD. W zestawie dołączone są między innymi 256MB RAM, karta CompactFlash 512MB i zasilacz.

zestawy_4
Rys. 3. Rozmieszczenie typowych elementów zestawu uruchomieniowego

Nieco innym produktem jest oferowany przez firmę EBV Elektronik zestaw startowy DBC2C20 (rys. 2). Ten, jak i inne układy firm produkujących na potrzeby FPGA Altery wymienione są na stronie producenta FPGA. DBC2C20 kosztuje nieco ponad 600 dolarów i przeznaczony jest dla tych projektantów, którzy planują wykorzystywać środowisko programistyczne .NET Framework w aplikacjach przemysłowych. Na niewielkiej płytce umieszczono przemysłowe interfejsy, takie jak CAN, RS-485, RS-232, Profibus i Interbus-S oraz LVDS, dzięki któremu system może być podłączany do wyświetlaczy TFT. Ponadto DBC2C20 został wyposażony w dwucyfrowy wyświetlacz diodowy i przyciski sterujące. Głównym elementem systemu jest układ programowalny Cyclone II, który współpracuje z 16MB pamięci SDRAM, 1MB pamięci SRAM i 8MB Flash. W zestawie dołączane jest oprogramowanie Quartus II Web Edition.

Oprócz projektów ze stron producentów FPGA, istnieją jeszcze różnorakie płytki wspomagające programowanie, które zostały wykonane przez studentów uczelni technicznych. O ile nie zawsze są to dobrze sprawdzone systemy, to niejednokrotnie przewyższają one swoją złożonością układy dostępne w sprzedaży. Niestety, projekty te najczęściej trafiają do archiwum i nie są wykorzystywane w przemyśle.

Marcin Karbowniczek