PTiWT nr 7 2008

Transkrypt

PTiWT nr 7 2008
Danuta OJRZEŃSKA-WÓJTER*, Krzysztof JASIŃSKI*
Projektowanie układów cyfrowych
w strukturach FPGA
Niniejszy artykuł stanowi kontynuację tematu wykorzystania
układów programowalnych FPGA do efektywnego projektowania
i implementacji zintegrowanych systemów cyfrowych (SOPC –
System On Programmable Chip) przy użyciu narzędzi komputerowej syntezy logicznej i optymalizacji ([5]). Jego przedmiotem
jest nowe podejście do projektowania systemów cyfrowych, realizowanych w architekturach układów programowalnych. Charakterystyczną cechą nowej metody projektowania jest koncepcja systemu wbudowanego i wirtualnych funkcji (rdzeni) IP cores.
Punktem wyjścia rozważań jest model procesu projektowania, wykorzystujący ideę systemu wbudowanego i rdzeni IP.
SYSTEMY WBUDOWANE
Projektowanie systemów wbudowanych z użyciem FPGA wymaga zdefiniowania funkcji, które mogą być zrealizowane
w sprzęcie lub implementowane jako program wykonywany przez
procesor wbudowany. Z powodu wielowątkowego charakteru
systemy wbudowane wymagają użycia konstrukcji z zakresu systemów cyfrowych, architektur komputerów, oprogramowania
i projektowania mikroprocesorów. Ponadto implementacja systemów wbudowanych z użyciem FPGA wymaga wiedzy i umiejętności z zakresu układów programowalnych oraz języków opisu
sprzętu HDL (np. AHDL, VHDL lub Verilog) i narzędzi do ich projektowania.
Zagadnienia te zostały poruszone w niniejszym artykule
w ograniczonym zakresie, gdyż uwzględnienie wszystkich aspektów przekracza ramy tego opracowania. Warto zaznaczyć, iż
gruntowna wiedza w każdym z tematów nie jest niezbędna nawet projektantowi tych systemów. Artykuł zawiera podstawowe informacje potrzebne do zrozumienia procesu projektowania złożonych systemów wbudowanych i rdzeni IP.
Projektowanie systemu wbudowanego, który stał się nowym
trendem, posiłkuje się wbudowanymi rdzeniami i procesorami jako komponentami systemu cyfrowego. Projektant stosuje do specyfikacji połączenie programów wysokiego poziomu i opisu na
poziomie RTL (Register Transfer Language). Komunikacja pomiędzy różnymi częściami systemu stała się ważnym problemem
i musi być odpowiednio rozwiązana.
Z punktu widzenia współczesnych zadań projektowania złożonych systemów wyraźnie widać, że dotychczas stosowane opisy
na poziomie RTL stały się zbyt szczegółowe i obszerne. Aby tworzyć efektywne i niezawodne projekty, jest niezbędne przejście na
wyższy poziom abstrakcji – Electronic System Level (ESL). W tym
języku projektanci opisują komponenty na bardzo wysokim poziomie funkcjonalnym i za pomocą narzędzi projektowych tłumaczą te opisy na bardziej szczegółowy poziom RTL lub bramek logicznych. Ze wzrostem złożoności projektów i ich różnorodności
połączenia między komponentami stają się bardziej złożonymi interfejsami. Przechodząc od modelu bramkowego do poziomu
RTL, połączenia między komponentami stają się bardziej złożonymi magistralami. Uwzględniając taką tendencję, już dziś widać,
że połączenia wewnątrz systemu stają się równie złożone, jak
komponenty na poziomie RTL i przyjmują formę inteligentnych
magistral systemowych, które mogą obsługiwać transfery bloków
danych, mechanizmy arbitrażu i komunikacji typu master-slave.
Umiejętność rozwiązania tego zagadnienia jest niezwykle istotna
dla projektantów systemów. Podstawowymi wymaganiami stawianymi projektantom systemów sprzętowych są dziś: umiejętność
tworzenia programów realizujących funkcje w sprzęcie, zrozumienie architektur procesorów wykonujących te programy, projektowanie sprzętu na poziomie RTL i tworzenie opisu połączeń między komponentami systemu.
Elementy projektu systemu wbudowanego
System cyfrowy jest systemem wbudowanym, jeżeli co najmniej jeden jego komponent to procesor realizujący funkcje
sprzętowe. Taki procesor jest nazywany procesorem wbudowanym. Systemy wbudowane dają projektantom możliwość stosowania programów w języku C/C++ do specyfikacji i implementacji projektów złożonych funkcji sprzętowych. Programy na
wysokim poziomie abstrakcji umożliwiają zastąpienie znacznie
bardziej szczegółowych specyfikacji sprzętowych, zapisanych
w kodzie HDL jako specjalizowanych funkcji lub gotowych elementó bibliotecznych. Warto zauważyć, że projekt systemu wbudowanego, zdefiniowanego powyżej, nie różni się zasadniczo od
analogicznego projektu dla zwykłych mikrokontrolerów. Również
sposób podejścia do projektowania jest w obu przypadkach niemal jednakowy. Cechą wyróżniającą systemy wbudowane jest
znacznie większa elastyczność i możliwość wyspecjalizowania
projektów. Narzędzia do projektowania systemów wbudowanych
są wyposażone w metody syntezy na wyższym poziomie abstrakcji, które umożliwiają efektywną integrację procesorów wbudowanych z innymi komponentami.
Wykorzystanie możliwości i zalet systemów wbudowanych wymaga opanowania nowej metodyki projektowania sprzętu. Jej
podstawą jest tworzenie warstwy sprzętowej i programowej systemu przy użyciu tego samego zintegrowanego środowiska projektowego. W dalszej części artykułu będzie skoncentrowana
uwaga na elementach projektu wbudowanego. Zostaną poruszone takie zagadnienia, jak metodologia, rola oprogramowania, rola języków opisu sprzętu (HDL), integracja systemowa sprzętu
i oprogramowania oraz dostępne narzędzia i środowisko do projektowania systemów wbudowanych.
Poziomy abstrakcji
Projektowanie systemów cyfrowych na początku historii było
oparte na modelach sieci tranzystorów i ewoluowało na poziom
sieci bramek, a następnie na poziom opisu RTL przy użyciu języków HDL. Chociaż dostępne obecnie języki HDL i biblioteki konfigurowalnych megafunkcji są wystarczające do realizacji większości typowych projektów, to tworzenie bardzo złożonych
systemów sprzętowych wymaga stosowania modeli na wyższym
poziomie abstrakcji.
Od tranzystorów do programów
* Instytut Telekomunikacji Politechniki Warszawskiej,
e-mail: [email protected], [email protected]
878
Pierwsze projekty układów cyfrowych wykorzystywały do realizacji funkcji sprzętowych sieci logiczne zbudowane z pojedyn-
czych tranzystorów. Taka ręczna metoda implementacji projektu
polegała na rozmieszczeniu ad hoc tranzystorów o wybranych
rozmiarach i wytyczeniu dróg połączeniowych, tak aby osiągnąć
parametry optymalne dla zadanej funkcji. Wzrost złożoności projektowanych układów spowodował konieczność zmiany modelu,
tak aby umożliwić efektywne projektowanie znacznie większych
systemów. W rezultacie ewolucji model sieci tranzystorów został
zastąpiony modelem bramkowym. Przejście na wyższy poziom
abstrakcji pociągnęło za sobą problemy optymalizacji rozwiązań,
które wymagały kompromisu pomiędzy częściowo sprzecznymi
ze sobą parametrami, jak opóźnienia, użycie zasobów logicznych
i pobierana energia. Nowe narzędzia do projektowania zostały wyposażone w odpowiednie mechanizmy optymalizacji i weryfikacji oraz transformacji wynikowych schematów na poziom sieci
tranzystorów, które fizycznie realizują funkcje systemu.
Następny etap ewolucji to przejście na poziom abstrakcji, który operuje modelem bardziej zintegrowanym (zwięzłym), niż model bramkowy. W tym modelu główna uwaga jest skupiona na
mechanizmach transferu danych pomiędzy rejestrami, modułami logicznymi i magistralami. Stąd pochodzi nazwa RTL – języka
przesłań międzyrejestrowych. Narzędzia do projektowania systemów na poziomie RTL są wyposażone w zaawansowane funkcje
tworzenia specyfikacji projektu, optymalizacji, weryfikacji i symulacji oraz transformacji na poziom sieci bramkowych.
Analogiczny mechanizm wymusił ewolucję w projektowaniu na
wyższy stopień abstrakcji niż RTL, poziom systemowy – ESL. Na
poziomie systemowym projektant zajmuje się jedynie warstwą
funkcjonalną projektowanego systemu i opisuje algorytm, który
zamierza implementować. Algorytm jest opisywany przy użyciu
języka proceduralnego podobnego do języka C. Opis na tym poziomie nie zawiera zegara ani relacji czasowych jak w modelu
bramkowym.
pilowaniu opisu systemowego do postaci programu wykonywanego przez dany procesor. Powyższa metoda jest istotą tego, co
rozumiemy pod określeniem projektowanie systemu wbudowanego. W odniesieniu do pierwszej metody jest używane również
określenie C syntezy lub syntezy systemowej [2].
Nakreślona powyżej ewolucja metod projektowania i modele
opisu stosowane na kolejnych jej etapach ilustruje rys. 1.
ŁĄCZENIE POZIOMÓW OPISU
Choć projektowanie na wyższym poziomie jest łatwiejsze i lepiej wspomagane przez bardziej wyrafinowane narzędzia, to projektanci często stosują mieszane metody na różnych poziomach
abstrakcji. Wybór takiej strategii jest uzależniony od uwarunkowań konkretnego projektu i jego pracochłonności. W szczególnych przypadkach, gdy jest konieczna optymalizacja projektu na
poziomie komórek, projektant może ingerować w jego strukturę
na poziomie tranzystorów. Najczęściej stosowany jest wariant łączenia różnych poziomów w jednym projekcie, gdy do opisu
z użyciem konstrukcji RTL są niezbędne niestandardowe funkcje
na poziomie RTL, budowane z pojedynczych bramek logicznych.
Projekty na poziomie systemowym w ogólnym przypadku są konstruowane jako połączenie komponentów opisanych i realizowanych w procesorach wbudowanych z komponentami sprzętowymi definiowanymi w języku RTL. Komponenty na poziomie RTL
są konstruowane ręcznie w większym zakresie, niż procesory
wbudowane, a w związku z tym są lepiej optymalizowane
z uwzględnieniem najważniejszych kryteriów: zajmowanej powierzchni układu scalonego, opóźnień i szybkości działania oraz
zużywanej energii.
Projektanci sprzętu na poziomie systemowym powinni mieć
możliwości stosowania strategii mieszanej z użyciem komponentów RTL i procesorów wbudowanych. Ten postulat jest już realizowany w dostępnych dziś narzędziach wspomagających, w które są wyposażane środowiska do projektowania, oferowane przez
producentów układów FPGA (ALTERA, XILINX).
Specyfikacja projektu
Sposób specyfikacji zależy od poziomu abstrakcji zastosowanego modelu – na poziomie tranzystorów i bramek podstawową
formą wprowadzania projektu jest opis za pomocą schematu logicznego lub blokowego. Ta metoda specyfikacji projektu jest dostępna w większości środowisk do projektowania. Na poziomie
RTL stosuje się języki opisu sprzętu, zapewniające jednoznaczność i zwartość (zwięzłość) specyfikacji projektu i jego sprzętowej implementacji. W specyfikacji systemu do opisu połączeń
między komponentami stosuje się formę schematową, typową dla
niższego poziomu reprezentacji systemu.
Na poziomie systemowym typowym środkiem specyfikacji projektu jest język C/C++, przy czym do opisu połączeń między
komponentami jest stosowana forma graficzna.
Proces projektowania systemu wbudowanego
Rys. 1. Poziomy abstrakcji modeli systemów cyfrowych
Narzędzia do projektowania systemowego obejmują takie funkcje, jak: specyfikacja i wprowadzanie projektu, symulacja i generacja (synteza) funkcji sprzętowych. Ta ostatnia funkcja może być
wykonana na dwa sposoby. Pierwszy sposób wymaga przetłumaczenia opisu systemowego w języku C-podobnym na poziom
RTL, na którym odbywa się generowanie struktur sprzętowych.
Drugi sposób jest realizowany bezpośrednio i polega na skom-
PRZEGLĄD TELEKOMUNIKACYJNY
ROCZNIK LXXXI
nr 7/2008
Schemat ilustrujący etapy procesu projektowania systemu
wbudowanego pokazano na rys. 2. Zawiera on dwie ścieżki implementacji funkcji sprzętowych: przy użyciu opisu HDL i języka
programowania, których wyniki w kolejnym etapie są integrowane w jednolitej formie sprzętowej.
Dekompozycja sprzętowo-programowa systemu
Pierwszy krok w projektowaniu systemu wbudowanego polega na określeniu, które jego części będą implementowane jako
komponenty sprzętowe specyfikowane w języku HDL lub w formie sieci bramek, a które będą realizowane w postaci programów
wykonywanych przez procesor wbudowany. Ten etap projektowania jest określany terminem podziału albo dekompozycji sprzę-
879
Specyfikacja połączeń między blokami systemu
Środkowa część diagramu (rys. 2) reprezentuje specyfikację
bloku zależności pomiędzy częścią sprzętową i programową systemu. Blok ten może być prostą wiązką połączeń, magistralą danych lub złożoną strukturą komunikacyjną. Zwykle środowiska do
projektowania systemów wbudowanych mają własną strukturę
magistralową. Takie magistrale mogą realizować różne operacje,
związane z przekazywaniem danych, takie jak: uzgadnianie przekazu (handshaking), realizacja warunków czasowych, transfer bloków danych i inne funkcje. Z punktu widzenia wysokiego poziomu takie magistrale są przezroczyste dla projektanta systemu,
który nie musi ingerować w sposób ich realizacji.
Symulacja sprzętowo-programowa
Rys. 2. Schemat procesu projektowania systemu wbudowanego
towo-programowej. Czynność ta jest zwykle przeprowadzana bez
wspomagania narzędziami komputerowymi i stanowi chyba najtrudniejszą fazęą procesu projektowania. Część sprzętową tworzony się z bloków sprzętowych opisanych w języku HDL lub predefiniowanych modułów dostępów jako elementy biblioteczne
środowiska projektowego. Część programowa jest specyfikowana w postaci programów w języku C/C++, które po kompilacji
są wprowadzane do pamięci procesora wbudowanego, który je
wykonuje.
W fazie poprzedzającej realizację części sprzętowej, programowej oraz bloku połączeń systemowych należy przeprowadzić
funkcjonalno-czasową weryfikację projektu we wspólnym środowisku symulacyjnym. Część sprzętowa jest symulowana na poziomie opisu RTL, zaś część programowa na poziomie instrukcji.
Środowiska do projektowania systemu są wyposażone w symulatory HDL do symulacji na poziomie RTL oraz symulatory ISS (Instruction Set Simulators) do symulacji programu. Środowiska do
projektowania systemów wbudowanych umożliwiają weryfikację
komponentów całego systemu we wzajemnym powiązaniu.
Synteza sprzętowa
Sprzętowa część systemu, opisana za pomocą języka VERILOG (lub VHDL) lub w formie schematów bramkowych, jest w procesie syntezy transformowana na sieć bramek (netlista) i prostych
elementów logicznych. Program syntezy wymaga określenia dostępnych dla implementacji zasobów logicznych i ich specyfikacji (rys. 3).
Część sprzętowa systemu
Część sprzętowa (ścieżka po prawej stronie rys. 2) projektowanego systemu może być połączeniem komponentów opisanych
w języku VERILOG (VHDL) lub w formie schematów bramkowych.
Wybór i użycie tych środków specyfikacji do opisu komponentów, niezależnie od środowiska projektowego, jest dokonywane
przez projektanta według reguł i intuicyjnych przesłanek, opartych
na jego własnych doświadczeniach. W środowiskach projektowych obecnie dostępnych w coraz większym zakresie są oferowane wirtualne funkcje, tzw. IP cores, które projektant może wykorzystywać w swoich projektach w sposób analogiczny jak
konfigurowalne makrofunkcje, pochodzące z własnych bibliotek
i realizujące standardowe funkcje sprzętowe.
Część programowa systemu
Implementację programowej części systemu pokazano na
rys. 2 (ścieżka po lewej stronie). Tę część projektu realizuje się
w postaci programu w języku wysokiego poziomu, który po kompilacji jest programem w języku procesora wbudowanego. Alternatywne rozwiązanie polega na stworzeniu programu w asemblerze lub bezpośrednio w kodzie maszynowym procesora.
Komercyjne wersje procesorów wbudowanych są zwykle wyposażone w niezbędne narzędzia programowe i kompilatory oraz
programy do weryfikacji (debugger); w większości tych rozwiązań do opisu algorytmów sprzętowych jest stosowany język
C/C++. W przypadku, gdy projektant stosuje rdzeń procesora
własnej konstrukcji, musi sam stworzyć program tłumaczący algorytmy w języku wysokiego poziomu na kod maszynowy, realizujący funkcje sprzętowe. Niezależnie od sposobu wykonania
część programowa projektu może być traktowana tak jak inne
bloki sprzętowe, zdefiniowane przy użyciu języka HDL.
880
Rys. 3. Synteza sprzętowa
Zasoby te są uzależnione od wyboru techniki implementacji
(np. FPGA lub ASIC).
W procesie syntezy logicznej jest generowana lista powiązań
między komponentami, należącymi do biblioteki środowiska, które zwykle są opisane w języku netlist, VHDL, VERILOG lub innego formatu. Lista powiązań wraz ze szczegółami specyfikacji dostępnych zasobów tworzy pełny opis sprzętu po syntezie
logicznej.
Kompilacja programu
Podobnie jak przy syntezie części sprzętowej należało określić
specyfikację zasobów, tak w przypadku części programowej systemu jest konieczne określenie użytego procesora wbudowanego.
Dla wybranego procesora dokonuje się kompilacji, w wyniku której otrzymuje się program w języku maszynowym tego procesora.
Program ten wraz z architekturą sprzętową procesora tworzy kompletną implementację części programowej projektowanego systemu. Schemat procesu kompilacji przedstawiono na rys. 4.
PRZEGLĄD TELEKOMUNIKACYJNY
ROCZNIK LXXXI
nr 7/2008
Rys. 4. Kompilacja programu
Sprzętowa realizacja powiązań miedzy komponentami
Połączenie między częściami programową i sprzętową systemu realizuje blok powiązań. Jak wspomniano wcześniej, blok ten
może być elementem bibliotecznym środowiska do projektowania systemowego i jest wygenerowany automatycznie. Problem
może powstać, kiedy korzysta się z własnego procesora wbudowanego nieobsługiwanego przez standardowe środowisko. Wówczas blok powiązań musi być zaprojektowany i zrealizowany analogicznie jak pozostałe sprzętowe bloki funkcjonalne.
Integracja projektu
Ostatnią fazą projektowania systemu wbudowanego jest scalenie elementów, występujących w różnorodnych formatach
w części: sprzętowej, programowej i struktury powiązań. Moduł
integratora, pokazany na rys. 2, generuje kompletną listę połączeń między komórkami dedykowanego układu, np. FPGA. Lista
ta, wraz z zawartościami pamięci procesora wbudowanego, jest
odwzorowywana w dedykowanym układzie, będącym fizyczną realizacją systemu wbudowanego [3].
SOPC – INNE SPOJRZENIE
NA SYSTEM W FPGA
Pojawienie się układów programowalnych FPGA o dużej pojemności, które oprócz elementów logicznych (komórek) i wyspecjalizowanych funkcji sprzętowych (PLL, DSP, interfejsy transmisyjne) zawierają bloki pamięci wbudowanej (od kilkunastu do
nawet kilkuset bloków po 4 kbity), stworzyło projektantom systemów cyfrowych nowe możliwości. Szczególnie atrakcyjnym
i ważnym kierunkiem wykorzystania tych środków jest rozwój
techniki wirtualnych komponentów IP, dostarczanych wraz z kompletnymi środowiskami do projektowania systemów i ich zastosowanie do realizacji kompletnego systemu w jednym układzie
programowalnym – SOPC (System on a Programmable Chip).
W najnowszej literaturze przedmiotu termin SOPC jest używany
równolegle z określeniem systemu wbudowanego, a zakresy definicji obu terminów w znacznej części się pokrywają. Koncepcja
SOPC obejmuje jednoukładowe realizacje systemu cyfrowego,
zbudowanego z komponentów typu IP core i konfigurowalnych
bloków funkcji standardów przemysłowych. Ważną rolę w strategii rozwoju zintegrowanych systemów cyfrowych odgrywają implementacje zawierające procesory wbudowane. W dalszej części artykułu zostanie skupiona uwaga na omówieniu konkretnych
rozwiązań komercyjnych w zakresie tworzenia aplikacji z użyciem
firmowych rdzeni procesorów w środowiskach projektowych, dostarczanych przez ich producentów.
Rdzenie procesorów wbudowanych
Rdzenie procesorów wbudowanych występują w dwóch odmianach technologicznych: wersji hardcore i softcore. Te określe-
PRZEGLĄD TELEKOMUNIKACYJNY
ROCZNIK LXXXI
nr 7/2008
nia odnoszą się do własności przypisywanych tym obiektom –
elastyczności i konfigurowalności. Procesor w wersji hardcore jest
procesorem wbudowanym w fizyczne podłoże krzemowe układu scalonego i stanowi składnik jego zasobów, zintegrowany z innymi elementami funkcjonalnymi za pomocą programowalnych
połączeń. Połączenie procesora z elementami logicznymi w jednym układzie FPGA stanowi hybrydową konstrukcję, której parametry aplikacyjne są kompromisowe w porównaniu z osiąganymi w rozwiązaniach tradycyjnych – FPGA i ASIC. Układy programowalne z wbudowanym fizycznie procesorem są oferowane
przez kilku producentów. Jednym z pierwszych była firma ALTERA, która zaproponowała rdzeń procesora typu ARM, wbudowany do układów z rodziny APEX 20KE, o nazwie firmowej EXCALIBUR [6]. Z kolei firma XILINX wyposażyła swoje układy FPGA
z rodziny VIRTEX-II Pro [7] w rdzeń złożony nawet z kilku procesorów typu PowerPC (do 4). Innym przykładem implementacji procesora wbudowanego na podłożu układu FPGA jest, oferowany przez firmę Cypress Semiconductor, układ o nazwie
PSoC, w którym rdzeń procesora M8C został scalony z konfigurowalnymi blokami logicznymi o wyspecjalizowanych funkcjach,
jak: konwertery analogowo-cyfrowe i cyfrowo-analogowe, liczniki, timery i interfejsy UART.
Procesor w wersji softcore jest procesorem istniejącym wirtualnie, podobnie jak rozmaite funkcje konfigurowalne zdefiniowane
w językach opisu sprzętu, który dopiero po kompilacji i zaprogramowaniu układu FPGA przyjmuje fizyczną postać procesora wbudowanego. Taki procesor jest skonstruowany z elementów logicznych i pamięci wbudowanej standardowego układu FPGA.
Przykładami najbardziej popularnych rdzeni procesorów wbudowanych softcore są: NIOS II (ALTERA) [6] i MicroBlaze (XILINX) [7].
Tabela 1. Charakterystyka komercyjnych procesorów softcore dla
FPGA
Własności
Ścieżka danych
Poziomy przetwarzania
(potokowego)
Częstotliwość
Liczba bramek
Rejestry
Długość instrukcji
Cache
Sprzętowe mnożenie
i dzielenie
NIOS II 5.0
32 bity
MicroBlaze 4.0
32 bity
1–6
3
do 200 MHz
26 000 ÷ 72 000
32 ogólnego
przeznaczenia
6 specjalnego
32 bity
opcja
do 200 MHz
30 000 ÷ 60 000
32 ogólnego
przeznaczenia
32 specjalnego
32 bity
opcja
opcja
opcja
W tabeli 1 scharakteryzowano oba bogato wyposażone i elastyczne procesory, mające konfigurowalną architekturę i parametry modyfikowalne w procesie kompilacji, np. rozmiary pamięci
i jej pojemność, funkcje jednostki ALU, liczbę i typy urządzeń peryferyjnych itp. Te zalety procesorów softcore są opłacone pogorszeniem szybkości działania i większym poborem energii w porównaniu z równoważnymi funkcjonalnie odpowiednikami
w wersji hardcore.
Do każdego procesora wbudowanego są dostarczane specjalizowane narzędzia wspomagające proces projektowania systemu
na etapie konfigurowania funkcji i parametrów takich jak: liczba
i rozmiary rejestrów, długość słowa, sprzętowe operacje mnożenia
i dzielenia, sprzętowa arytmetyka zmiennoprzecinkowa oraz układy we/wy. Takie narzędzia syntetyzują architekturę procesora, której wejściowa specyfikacja jest wyrażona w języku VHDL lub VERILOG. Również etap tworzenia oprogramowania danego
procesora wbudowanego jest wspomagany narzędziami dostarczonymi przez producenta, które zwykle umożliwiają weryfikację
i kompilację programów zapisanych w języku C lub C++.
881
Narzędzia i proces projektowania systemu
SOPC
Tradycyjnie proces projektowania systemów cyfrowych, realizowanych w układach FPGA, przy użyciu komercyjnych narzędzi wspomagających, prowadzi ścieżką: od opisu funkcjonalnego w języku HDL lub graficznej formy schematu blokowego, przez
kompilację, która obejmuje syntezę i optymalizację logiczną oraz
syntezę topologiczną place and route, następnie weryfikację symulacyjną, na programowaniu fizycznym układu programowalnego kończąc.
Rys. 5. Schemat i narzędzia do projektowania systemu SOPC
Rozwinięty schemat procesu projektowania SOPC, uwzględniający procesor stosowania softcore i związane z nim narzędzia, jest
pokazany na rys. 5. Dla uproszczenia przyjęto, że pamięć programu i pamięć danych są zrealizowane przy użyciu zasobów pamięci wbudowanej układu FPGA. Standardowymi narzędziami,
realizującymi wymienione wcześniej etapy projektowania systemu w FPGA, są oferowane przez głównych producentów środowiska projektowe QUARTUS II (ALTERA) i ISE (XILINX).
Obecnie, oprócz oferty komercyjnej procesorów softcore są dostępne bezpłatne tzw. predefiniowane procesory softcore, które
można importować ze stron internetowych kilku organizacji, zrzeszających projektantów takich procesorów. Procesory dostarczane przez producentów układów FPGA są zwykle ręcznie optymalizowane dla określonych rodzin układów i są znacznie efektywniejsze niż niekomercyjne rozwiązania, np. realizacje projektów
studenckich. Słabą stroną takich niekomercyjnych produktów jest
brak odpowiednich narzędzi wspomagających projektowanie,
w szczególności kompilatorów wysokiego poziomu i programów
do konfiguracji architektury tych procesorów. W przypadku produktu np. firmy ALTERA środowisko wspomagające projektowanie jest wyposażone w moduł konfiguracji z przyjaznym interfejsem graficznym (GUI), który umożliwia projektantowi kształtowanie architektury i parametrów procesora odpowiednio do wymagań konkretnego projektu. Za pomocą interfejsu konfiguracyjnego można programować takie funkcje i parametry, jak: szerokość
ścieżki danych, rozmiary pamięci i przestrzeni adresowej, obsługę urządzeń peryferyjnych (w tym dowolne definiowanie rejestrów
I/O ogólnego przeznaczenia), interfejs UART, kontrolery eternetu, pamięci kontrolerów etc. Po skonfigurowaniu procesora jest
generowany moduł procesora w postaci pliku HDL. W dalszym
etapie ten plik jest dołączony i zintegrowany z pozostałymi komponentami, tworzącymi kompletny projekt sprzętowy, a następnie poddawany tradycyjnemu przetwarzaniu realizującemu syntezę i optymalizację logiczną oraz syntezę topologiczną place and
route. W ostatniej fazie procesu projektowania warstwy sprzęto-
882
wej systemu są generowane pliki z danymi dla programatora, które służą do zaprogramowania pamięci konfiguracyjnej układu
FPGA zawierającego system SOPC.
Następnym krokiem jest tworzenie części programowej systemu SOPC. Zgodnie ze schematem działania, pokazanym na rys.
5 (prawa strona), faza ta polega na stworzeniu programu w języku C /C++, który w formie programu źródłowego jest poddawany kompilacji. Do kompilacji są niezbędne również informacje
o konfiguracji sprzętowej procesora, dostarczane do kompilatora w postaci plików, w tym plików nagłówkowych C. Kompilator
C/C++, dostosowany do danego procesora, generuje program
wynikowy w formie kodu binarnego, który w kolejnej fazie jest ładowany do pamięci programu i pamięci danych procesora. Ładowanie programu i danych do pamięci może być wykonane
w różny sposób, w zależności od dostępnej pamięci. W przypadku niezbyt dużych programów aplikacyjnych można wykorzystać
bloki pamięci wbudowanej (on-chip) układu FPGA. Inicjalizacja
programu następuje po zaprogramowaniu pamięci konfiguracyjnej i jest wykonywana przy użyciu standardowego środowiska
projektowego, np. QUARTUS II (ALTERA) czy ISE (XILINX).
W przypadku tworzenia prototypu systemu program aplikacji
jest często modyfikowany. W związku z tym jest konieczne wyposażenie projektanta w odpowiednie narzędzie do przekazywania kodu programu z komputera PC do pamięci procesora. Funkcja ładowania pamięci (bootloader lub boot monitor) może być
implementowana w postaci programowej lub sprzętowej. Bootloader zawiera kod programu, który jest ładowany do pamięci on-chip i uruchamiany po włączeniu zasilania. Podstawową funkcją
programu umieszczonego w pamięci on-chip jest odebranie kodu aplikacji (plik binarny) przez port szeregowy (lub inny interfejs
PC) i załadowanie go do zewnętrznej pamięci procesora, a następnie uruchomienie procesora z tą aplikacją. Metoda ta umożliwia zapisanie nowych programów aplikacji do pamięci zewnętrznej w trakcie działania systemu bez konieczności zmiany pamięci
konfiguracyjnej układu FPGA. Przykładowo firma Altera do wyposażenia procesora NIOS II dołącza bootloader o nazwie GERMS.
Sprzętowa implementacja bootloadera realizuje podobne funkcje, jak wersja programowa. Taka implementacja korzysta z zasobów dostępnych w ramach rdzenia procesora. Zwykle wykonanie funkcji bootloadera wiąże się ze wstrzymaniem pracy
procesora, aby umożliwić bezpośredni dostęp do pamięci lub rejestrów w ścieżce danych procesora. Sprzętowy bootloader może uruchomić i zatrzymać prace procesora, a także sterować ładowaniem programu przez interfejs szeregowy do wskazanej
pamięci lub wybranych jej obszarów. Sprzętowy bootloader w procesorze Nios II jest umieszczany w module JTAG i używa jego
interfejsu do odbioru kodu aplikacji, który następnie zapisuje do
odpowiedniej pamięci. Ostatnią czynnością bootloadera w procesorze Nios II jest ustawienie jego licznika programu w pozycji adresu początkowego załadowanego kodu aplikacji i ponowne uruchomienie procesora.
Kod programu aplikacji może być przechowywany w zewnętrznej pamięci EEPROM, Flash lub innej pamięci trwałej. Pamięć programu może być zapisana bezpośrednio lub przy użyciu bootloadera. Rozwiązanie z użyciem zewnętrznej pamięci programu jest
stosowane do aplikacji, w których szybkość ich działania nie jest
istotna. Jeżeli jest wymagana duża szybkość działania, do reali-
Rys. 6. System SOPC z zewnętrznymi pamięciami
PRZEGLĄD TELEKOMUNIKACYJNY
ROCZNIK LXXXI
nr 7/2008
zacji można wykorzystać pamięć on-chip i dwie pamięci zewnętrzne (rys. 6). Mechanizm zwiększający szybkość działania polega
na wykorzystaniu szybkiej pamięci ulotnej (SDRAM) do wykonywania programu procesora. W fazie początkowej do pamięci tej
jest zapisywany program aplikacji, pierwotnie przechowywany
w pamięci nieulotnej (Flash lub EEPROM). Bootloader znajdujący się w pamięci on-chip układu FPGA, inicjalizuje system, odczytuje program z pamięci nieulotnej i przenosi go do szybkiej pamięci ulotnej, z której jest uruchamiany. Opisany mechanizm
zapewnia wykorzystanie zalet pamięci trwałej, większą szybkość
działania i łatwą modyfikację programu aplikacji. Jedynym minusem tego rozwiązania jest koszt dodatkowej pamięci ulotnej.
IMPLEMENTACJE SYSTEMÓW
CYFROWYCH – PORÓWNANIE
RÓŻNYCH TECHNIK
Implementacja systemu cyfrowego według koncepcji SOPC ma
zarówno zalety jak i wady w porównaniu z dotychczasowymi realizacjami: techniką ASIC i procesorami scalonymi (tabela 2). Najsilniejszą stroną implementacji SOPC jest rekonfigurowalność,
elastyczność i krótki cykl projektowania. Te zalety są okupione
kompromisem w postaci obniżonych 'osiągów', wyższych kosztów jednostkowych przy produkcji i relatywnie większego poboru energii.
Istotne korzyści wynikające z elastycznej struktury polegają
Tabela 2. Porównanie implementacji systemów SOPC, ASIC i procesora scalonego
Cecha
Elastyczność programowa
Elastyczność sprzętowa
Rekonfigurowalność
Czas/koszt opracowania
Koszt peryferiów
Osiągi
Koszt produkcji
Efektywność zasilania
Ocena jakości:
– dobra;
SOPC
ASIC
Procesor scalony
o
o
o
o
o
o
o
– średnia (przeciętna); o – niska
między innymi na możliwości modyfikowania projektu w trakcie
pełnego cyklu tworzenia. Taka ingerencja może być spowodowana potrzebami rozszerzenia funkcji systemu, zmiany protokołów
lub specyfikacji wynikających z aktualizacji standardów, np. USB
2.0. W tradycyjnych technikach (ASIC, procesory scalone) tego
rodzaju zmiany mogą spowodować poważne konsekwencje
w projektowaniu układu ASIC, wyborze procesora i płyty obwo-
du drukowanego. Ponieważ architektura sprzętowa jest zwykle
definiowana we wczesnej fazie procesu projektowania, dokonywanie zmian w dalszych etapach powoduje zwykle opóźnienie
ostatecznej realizacji i często zwiększenie łącznych kosztów.
Elastyczna infrastruktura systemu SOPC może przynieść znaczące korzyści w postaci wydłużenia czasu życia produktu. Rekonfigurowalność struktury funkcjonalnej systemu umożliwia takie zaprojektowanie płyty PCB, która umożliwiałaby różnicowanie
produktów np. powszechnego użytku, bez konieczności zmian
sprzętowych.
***
Intencją autorów było przedstawienie najnowszych tendencji
w projektowaniu zintegrowanych systemów cyfrowych. Istotą zachodzących obecnie przemian w podejściu do realizacji systemów sprzętowych w strukturach FPGA jest uwzględnienie roli implementacji programowych. Ta koncepcja przyjęła formę modelu
systemu wbudowanego lub systemu zintegrowanego w jednym
układzie scalonym (SOPC), którego co najmniej jednym z komponentów jest procesor. Istnieją dwa sposoby realizacji takich procesorów: wirtualny – tzw. softcore i fizycznie wbudowany – hardcore. Z dotychczasowych doświadczeń aplikacyjnych można
sądzić, że dalszy rozwój tej techniki należy wiązać przede wszystkim z wykorzystaniem procesorów softcore. Uzasadnieniem tej
prognozy jest możliwość elastycznego kształtowania ich struktury i dostosowywania do konkretnych wymagań funkcjonalnych
przy jednoczesnej eliminacji niewykorzystanych elementów architektury.
LITERATURA
[1] Navabi Zainalabedin: VHDL: Modular Design and Synthesis of Cores
and Systems, McGraw-Hill, 2007
[2] Navabi Zainalabedin: Embedded Core design with FPGAs, McGrawHill, 2007
[3] Hamblen J. O., Hall T. S., Furman M. D.: Rapid Prototyping of Digital
Systems SOPC Edition, Springer, 2008
[4] Ojrzeńska-Wójter D., Jasiński K.: Nowe tendencje w układach FPGA
i ich wykorzystaniu, Intertelecom Łódź, 8–9 kwiecień 2008
[5] Ojrzeńska-Wójter D., Jasiński K.: Układy FPGA – możliwości powszechnego zastosowania, Przegląd Telekomunikacyjny i Wiadomości Telekomunikacyjne, 2–3 2007
[6] http: //www. altera. com – materiały i noty katalogowe, noty aplikacyjne, seminaria firmowe, program uniwersytecki
[7] http: //www. xilinx. com – noty katalogowe, noty aplikacyjne, white
paper
[8] http: //pld. zpt. tele. pw. edu. pl
Artykuł recenzowany
(Artykuł nadesłano do red. – maj 2008)
Prosimy pamiętać o prenumeracie
Przeglądu Telekomunikacyjnego
i W iadomości Telekomunikacyjnych
w 2008 roku
PRZEGLĄD TELEKOMUNIKACYJNY
ROCZNIK LXXXI
nr 7/2008
883

Podobne dokumenty