METODY ZINTEGROWANEGO PROJEKTOWANIA SPRZĘTU I OPROGRAMOWANIA Z WYKORZYSTANIEM NOWOCZESNYCH UKŁADÓW PROGRAMOWALNYCH Arkadiusz Bukowiec mgr inż. Agnieszka Węgrzyn Instytut Informatyki i Elektroniki, Uniwersytet Zielonogórski 1. WSTĘP W ciągu ostatnich lat nastąpił gwałtowny rozwój elektroniki i informatyki. Przyczyniło się on do projektowania coraz bardziej złożonych i skomplikowanych układów cyfrowych. Wraz ze złożonością wykonywanych układów coraz większą rolę w ścieżce projektowej zaczęły odgrywać języki opisu sprzętu. Chociaż zastosowanie tych języków umożliwia zaprojektowanie wyspecyfikowanych procesorów, sterowników oraz różnego zastosowania układów cyfrowych, nie są one w stanie wyprzeć klasycznych rozwiązań, do których można zaliczyć mikroprocesor (np. 8051, 80286) wraz z oprogramowaniem. Coraz częściej jednak języki opisu sprzętu są wykorzystywane do tworzenia układów, które wspólnie z klasycznymi procesorami mają tworzyć większe systemy. Rozwiązanie takie przez długi czas wymagało jednak oddzielnego zaprojektowania układu oraz napisania programu dla mikroprocesora. Ostatnio jednak pojawiły się na rynku układy scalone, które zawierają jednocześnie procesor, jak i bloki konfigurowalne ASIC [1]. Sytuacja taka dotyczy zarówno układów programowalnych maską jak i układów PLD lub FPGA [2]. 2. KLASYCZNA ŚCIEŻKA PROJEKTOWANIA ZINTEGROWANEGO W przypadku klasycznego podejścia do projektowanego sytemu, budowę takiego systemu opierano na mikroprocesorze oraz układzie konfigurowalnym. W zależności od przeznaczenia i złożoności systemu wykorzystywane były układy programowane maską lub FPGA. Mikroprocesor i układ programowalny niezależnie komunikowały się z otoczeniem za pomocą ów ch, natomiast do komunikacji między sobą używały u wewnętrznego (rys. 1). Ponieważ rozwiązanie to wymagało zastosowania kilku układów scalonych, konieczne było również zaprojektowania płytki drukowanej. System taki wymagał więc zastosowania technologii System-On-Board (SoB).
SoB ASIC wewnętrzny µp Rys. 1. Schemat blokowy systemu sprzętowo-programowego Podczas realizacji takiego sytemu we wstępnej fazie projektowania należało dokonać podziału, jaka część systemu będzie realizowana przez specyfikowany układ cyfrowy a jaka przez program procesora (rys. 2). Części te były następnie niezależnie realizowane przez osobne zespoły, a dopiero po zakończeniu obu ścieżek projektowych przystępowano do realizacji prototypu układu i ostatecznej weryfikacji. CZĘŚĆ SPRZĘTOWA układu systemu Zadanie 2. Podział zadań Symulacja prototypu Zadanie 2. Zadanie 4. Testowanie programu CZĘŚĆ PROGRAMOWA Rys. 2. Ścieżka projektowa systemu sprzętowo-programowego Rozwiązanie takie nie zawsze dawało optymalne efekty, gdyż podział zadań we wczesnej fazie projektowej nie zawsze musiał być dokonany poprawnie. Jednocześnie było ono dość kosztowne gdyż wymagało realizacji prototypu w celu weryfikacji komunikacji pomiędzy częścią sprzętową a programową. Jednocześnie testowanie prototypu nie dawało możliwości debugowania, co w przypadku wykrycia błędnego działania systemu nie pozwalało na jednoznaczne ustalenie gdzie tkwi błąd. 3. ŚCIEŻKA PROJEKTOW Z WYKORZYSTANIEM NOWOCZESNYCH UKŁADÓW PROGRAMOWALNYCH Mając na celu skrócenie czasu i ułatwienie projektowania systemów cyfrowych, producenci układów ASIC opracowali układy z osadzonymi (ang. embedded)
mikroprocesorami (rys. 3). Ze względu na różne zastosowania układów programowalnych maską jak i układów FPGA rozwiązania te różnią się między sobą, jednak umożliwiają one zastosowanie tej samej ścieżki projektowej. Najczęściej wykorzystywanymi procesorami wraz z układami programowalnymi maską są 32-bitowe procesory ARM [3] i MIPS [4] o architekturze RISC. Procesory te mogą być umieszczone w układach ASIC niezależnie od ich producenta, gdyż zostały zaprojektowane przez odrębne firmy. W przypadku układów FPGA sytuacja jest nieco odmienna. W tym przypadku to producenci układów FPGA opracowują mikroprocesory, które będą wykorzystywane tylko w jego układach FPGA. W tej dziedzinie prekursorem na rynku jest firma Atmel, która zaprojektowała 8-bitowy mikroprocesor AVR [5], również o architekturze RISC. SoC ASIC µp Rys. 3. Schemat układu scalonego z osadzonym procesorem Przy zastosowaniu takiego układu zauważa się dużo większy związek pomiędzy obiema ścieżkami projektowymi w trakcie realizacji systemu (rys. 4). W sytuacji takiej podział zadań podczas projektowania układu, pomiędzy części sprzętową i programową, jest traktowany jedynie jako propozycja i może zostać zmieniony w trakcie realizacji systemu. CZĘŚĆ SPRZĘTOWA układu systemu Zadanie 2. Podział zadań Modyfikacja podziału zadań koweryfikacja prototypu Zadanie 2 Zadanie 4 programu CZĘŚĆ PROGRAMOWA Rys. 4. Ścieżka projektowa systemu z wykorzystaniem układu z osadzonym procesorem
W rozwiązaniu tym na uwagę również zasługuje fakt, że wspólna weryfikacja części sprzętowej i programowej następuje jeszcze przed wykonaniem prototypu układu, co znacznie skraca czas testowania, jaki i koszty realizacji systemu. Bardzo ważnym faktem jest to, że w trakcie ko-weryfikacji można przeprowadzić debugowanie zarówno części sprzętowej jak i programu. Sytuacja taka umożliwia bardzo szybkie wykrycie, w którym miejscu występuje błąd i natychmiastowe jego usunięcie. Ponieważ rozwiązanie to jest realizowane w technologii System-On-Chip (SoC), znacznemu uproszczeniu ulega płytka drukowana, na której zostanie umieszczony projektowany system. Jednocześnie prędkość działania takiego układu może ulec zwiększeniu. Rozwiązanie takie wymaga jednak innego podejścia projektantów do realizowanego zadania. W klasycznym rozwiązaniu obie ścieżki były realizowane niezależnie w tym przypadku tak nie jest. Powoduje to, że oba zespoły (realizujące program i sprzęt) muszą ze sobą ściśle współpracować. Jednocześnie wymaga to od nich lepszej znajomości sposobów realizacji zadań drugiego zespołu. Tak, więc inżynierowie pracujący w takich zespołach muszą posiadać wszechstronną wiedzę, gdyż wraz z zanikiem podziału na dwie ścieżki projektowe zaczyna zanikać podział na programistów i projektantów sprzętu. 4. REALIZACJA PROGRAMOWALNEGO STEROWNIKA LOGICZNEGO W układzie porgramowalnego sterownika logicznego zastosowano dwuprocesorową budowę master-slave. Slave przetwarza dane według algorytmów zapisanych w formie bloków funkcyjnych zgodnych z normą IEC 1131-3 [6], natomiast master steruje przepływem danych i inicjuje procesor slave do wykonywania obliczeń. Ponieważ master jest układem specjalizowanym, zdecydowano się na jego realizację z wykorzystaniem struktury programowalnej FPGA. Natomiast w przypadku procesora slave zastosowanie układu FPGA wydawało się nieekonomiczne, ponieważ do realizacji każdego bloku funkcyjnego wymagane jest wykorzystanie kilku bloków logicznych układu FPGA. W sytuacji, gdy slave realizuje tylko jedną funkcje w danym momencie, zdecydowano się na napisanie programu realizującego bloki funkcyjne i wykorzystanie mikroprocesora do realizacji slavea. Układ sterownika został zrealizowany na dwa, niezależne sposoby. W pierwszym podejściu (rys. 5a) zdecydowano się na zastosowanie układu FPGA XC4005 firmy Xilinx do realizacji procesora master oraz mikroprocesora 8051 do realizacji procesora slave. W drugim podejściu (rys 5b) zdecydowano się natomiast na zastosowanie układu FPGA AT94K40 z osadzonym mikroprocesorem AVR firmy Atmel. Po zrealizowaniu obu sterowników systemy posiadały zbliżone parametry czasowe, jednak realizacja pierwszego układu wymagała znacznie większych nakładów czasu. W układzie tym najwięcej problemów stworzyła realizacja u do przesyłania danych pomiędzy masterem i slavem. Interfejs ten musiał być testowany dopiero na prototypie, co znacznie utrudniało wykrycie miejsca, w którym występuje błąd w kodzie źródłowym, a wprowadzenie jakichkolwiek zmian wymagało przeprogramowywania układów.
XC4005 8051 master wewnętrzny slave Wejścia Wyjścia a) Sterownik realizowany w technologii System-On-Board AT94K40 AVR master slave Wejścia Wyjścia b) Sterownik realizowany w technologii System-On-Chip Rys. 5. Schemat programowalnego sterownika logicznego W przypadku drugiego systemu, dzięki dostarczonemu oprogramowaniu przez firmę Atmel, możliwa była ko-symulacja kodu procesora master napisanego w VHDL u oraz kodu procesora slave napisanego w asemblerze porcesora AVR. Ponieważ oprogramowanie to dawało możliwość debugowania obu kodów wykrycie miejsca, w którym występuje błąd było dużo łatwiejsze. Dodatkowo pisanie programu dla procesora AVR zostało ułatwione poprzez możliwość użycia specjalnego u umożliwiającego wymianę danych pomiędzy procesorem a strukturą FPGA. Udogodnienia te spowodowały, że czas realizacji drugiego układu był prawi o połowę krótszy. 5. PODSUMOWANIE W referacie przedstawiono sposób realizacji systemów cyfrowych z wykorzystaniem układów reprogramowalnych z osadzonym procesorem oraz ukazano przewagę tego rozwiązania nad standardowym, wykorzystującym osobne układy dla mikroprocesora oraz struktury reprogramowalnej. Podkreślono również dużą przewagę ko-weryfikacji nad weryfikacja z wykorzystaniem prototypu. Przedstawiona technologia została opracowana w ramach prac Koła Naukowego fantasic. Do prac zostały wykorzystane płytki demonstracyjne firmy Atmel z układem AT94K40 oraz firmy Xilinx z układem z układem XC4005EPC84. Dalsze prace będą miały na celu zastosowanie tego lub podobnych układów w rzeczywistych systemach cyfrowych.
LITERATURA I MATERIAŁY 1. W. Majewski, Układy logiczne, Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa, 1998 2. T. Łuba, K. Jasiński, B. Zbierzchowski, Specjalizowane układy cyfrowe w strukturach PLD i FPGA, Wydawnictwa Komunikacji i Łączności, Warszawa, 1997 3. http://www.arm.com 4. http://www.mips.com 5. http://www.atmel.com 6. International Electrotechnical Commission, International standard IEC 1131-3, Programmable Controllers, Part 3: Programming Languages, Geneva, 1992