Projektowanie układów cyfrowych w strukturach FPGA

Podobne dokumenty
Systemy na Chipie. Robert Czerwiński

Systemy wbudowane. Paweł Pełczyński

METODY ZINTEGROWANEGO PROJEKTOWANIA SPRZĘTU I OPROGRAMOWANIA Z WYKORZYSTANIEM NOWOCZESNYCH UKŁADÓW PROGRAMOWALNYCH

Programowanie niskopoziomowe. dr inż. Paweł Pełczyński

Katedra Mikroelektroniki i Technik Informatycznych

Język opisu sprzętu VHDL

Opracował: Jan Front

MIKROKONTROLERY I MIKROPROCESORY

LEKCJA TEMAT: Zasada działania komputera.

Mechatronika i inteligentne systemy produkcyjne. Modelowanie systemów mechatronicznych Platformy przetwarzania danych

Logiczny model komputera i działanie procesora. Część 1.

Wykład I. Podstawowe pojęcia. Studia Podyplomowe INFORMATYKA Architektura komputerów

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

Szybkie prototypowanie w projektowaniu mechatronicznym

WPROWADZENIE Mikrosterownik mikrokontrolery

Bezpieczeństwo informacji oparte o kryptografię kwantową

ZL10PLD. Moduł dippld z układem XC3S200

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

PUKP Programowanie urządzeń kontrolno-pomiarowych. ztc.wel.wat.edu.pl

Elektronika i techniki mikroprocesorowe

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

Architektury akceleratorów kryptograficznych opartych o układy programowalne. Marcin Rogawski

Podstawy Projektowania Przyrządów Wirtualnych. Wykład 9. Wprowadzenie do standardu magistrali VMEbus. mgr inż. Paweł Kogut

Metody optymalizacji soft-procesorów NIOS

Wstęp Architektura... 13

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Historia modeli programowania

Spis treści. Wykaz ważniejszych skrótów Wprowadzenie Rdzeń Cortex-M Rodzina mikrokontrolerów XMC

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

Spis treúci. Księgarnia PWN: Krzysztof Wojtuszkiewicz - Urządzenia techniki komputerowej. Cz. 1. Przedmowa Wstęp... 11

Spis treści 1. Wstęp 2. Ćwiczenia laboratoryjne LPM

Elementy cyfrowe i układy logiczne

Opis efektów kształcenia dla modułu zajęć

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Projektowanie. Projektowanie mikroprocesorów

Lista zadań nr 1. Zagadnienia stosowanie sieci Petriego (ang. Petri net) jako narzędzia do modelowania algorytmów sterowania procesami

PRZEWODNIK PO PRZEDMIOCIE

Projektowanie układów na schemacie

Projektowanie Systemów Wbudowanych

Programowanie sterowników przemysłowych / Jerzy Kasprzyk. wyd. 2 1 dodr. (PWN). Warszawa, Spis treści

PROGRAMOWALNE STEROWNIKI LOGICZNE

Wprowadzenie. Wprowadzenie

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych. Instytut Telekomunikacji Zakład Podstaw Telekomunikacji

Projektowanie z użyciem procesora programowego Nios II

Systemy wbudowane Mikrokontrolery

DLA SEKTORA INFORMATYCZNEGO W POLSCE

Budowa i zasada działania komputera. dr Artur Bartoszewski

2. Architektura mikrokontrolerów PIC16F8x... 13

Zał nr 4 do ZW. Dla grupy kursów zaznaczyć kurs końcowy. Liczba punktów ECTS charakterze praktycznym (P)

POLITECHNIKA WARSZAWSKA Wydział Elektroniki i Technik Informacyjnych Instytut Telekomunikacji Zakład Podstaw Telekomunikacji.

Pamięć wirtualna. Przygotował: Ryszard Kijaka. Wykład 4

Podstawy programowania

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Architektura komputerów

Architektura Systemu. Architektura systemu umożliwia kontrolowanie iteracyjnego i przyrostowego procesu tworzenia systemu.

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Podstawy techniki cyfrowej i mikroprocesorowej - opis przedmiotu

Programowanie Układów Logicznych kod kursu: ETD6203. Szczegóły realizacji projektu indywidualnego W dr inż.

Szkolenia specjalistyczne

Narzędzia uruchomieniowe dla systemów Embedded firmy Total Phase

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

Arduino dla początkujących. Kolejny krok Autor: Simon Monk. Spis treści

Budowa komputera Komputer computer computare

Systemy uruchomieniowe

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

<Nazwa firmy> <Nazwa projektu> Specyfikacja dodatkowa. Wersja <1.0>

Programowanie komputerów

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

System zarządzający grami programistycznymi Meridius

Sposoby projektowania systemów w cyfrowych

Metodyka projektowania komputerowych systemów sterowania

Embedded Solutions Automaticon Efektywne pomiary i sterowanie przy użyciu systemu wbudowanego MicroDAQ

Struktura systemu operacyjnego. Opracował: mgr Marek Kwiatkowski

Systemy operacyjne i sieci komputerowe Szymon Wilk Superkomputery 1

Modułowy programowalny przekaźnik czasowy firmy Aniro.

Liczniki, rejestry lab. 08 Mikrokontrolery WSTĘP

ZL19PRG. Programator USB dla układów PLD firmy Altera

Wykład 4. Przegląd mikrokontrolerów 16-bit: - PIC24 - dspic - MSP430

LITEcompLPC1114. Zestaw ewaluacyjny z mikrokontrolerem LPC1114 (Cortex-M0) Sponsorzy:

Rys. 1. Schemat ideowy karty przekaźników. AVT 5250 Karta przekaźników z interfejsem Ethernet

prowadzący: mgr inż. Piotr Prystupiuk

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Technika mikroprocesorowa. Struktura programu użytkownika w systemie mikroprocesorowym

Organizacja typowego mikroprocesora

Budowa Mikrokomputera

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Elektronika cyfrowa i mikroprocesory. Dr inż. Aleksander Cianciara

Projektowanie z użyciem softprocesora picoblaze w układach programowalnych firmy Xilinx

Rejestr HKEY_LOCAL_MACHINE

Układy logiczne układy cyfrowe

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Podsumowanie wyników ankiety

Vinculum scalony host USB

PROJEKT I OPTYMALIZACJA STRUKTURY LOGICZNEJ DYDAKTYCZNEGO SYSTEMU MIKROPROCESOROWEGO DLA LABORATORIUM PROJEKTOWANIA ZINTEGROWANEGO

PR kwietnia 2012 Automatyka budynkowa, Technologia sterowania Oprogramowanie Strona 1 z 5

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach.

Architektura systemów komputerowych. dr Artur Bartoszewski

Wykorzystanie układów FPGA w implementacji systemów bezpieczeństwa sieciowego typu Firewall

Transkrypt:

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 * Instytut Telekomunikacji Politechniki Warszawskiej, e-mail: dwojter@tele.pw.edu.pl, kjasio@tele.pw.edu.pl 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 Pierwsze projekty układów cyfrowych wykorzystywały do realizacji funkcji sprzętowych sieci logiczne zbudowane z pojedyn- 878

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. 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- Proces projektowania systemu wbudowanego 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. 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. 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. Symulacja sprzętowo-programowa 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 VERI- LOG (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). 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. 880

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- 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 ALTE- RA, która zaproponowała rdzeń procesora typu ARM, wbudowany do układów z rodziny APEX 20KE, o nazwie firmowej EXCA- LIBUR [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 NIOS II 5.0 MicroBlaze 4.0 Ścieżka danych 32 bity 32 bity Poziomy przetwarzania (potokowego) 1 6 3 Częstotliwość do 200 MHz do 200 MHz Liczba bramek 26 000 72 000 30 000 60 000 Rejestry 32 ogólnego 32 ogólnego przeznaczenia przeznaczenia 6 specjalnego 32 specjalnego Długość instrukcji 32 bity 32 bity Cache opcja opcja Sprzętowe mnożenie i dzielenie 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 VE- RILOG. 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- 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 882

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 SOPC ASIC Procesor scalony Elastyczność programowa Elastyczność sprzętowa o o Rekonfigurowalność o o Czas/koszt opracowania o Koszt peryferiów o Osiągi Koszt produkcji Efektywność zasilania o Ocena jakości: dobra; ś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, McGraw- Hill, 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 TelekomunikacyjnegoT i Wiadomości W TelekomunikacyjnychT w 2008 roku 883