Pobierz streszczenie
Transkrypt
Pobierz streszczenie
Wstęp Pojęcia podstawowe Pojęcie czasu rzeczywistego ma wiele znaczeń i funkcjonuje w takich dziedzinach, jak: nauki humanistyczne, matematyka, informatyka, technika. W technice, a zwłaszcza w inżynierii systemów sterowania, systemem czasu rzeczywistego jest taki system komputerowy, w którym obliczenia są prowadzone równolegle z przebiegiem zewnętrznego procesu i mają na celu nadzorowanie, sterowanie lub terminowe reagowanie na zachodzące w procesie zdarzenia [23, 87]. System czasu rzeczywistego charakteryzuje się zatem określonymi wymaganiami, dotyczącymi dopuszczalnego czasu wykonania obliczeń oraz dopuszczalnych czasów reakcji na zdarzenia zewnętrzne. Naruszenie tych wymagań prowadzi najczęściej do skokowego i nieakceptowalnego wzrostu strat, np. awarii urządzenia [23, 87]. Systemy czasu rzeczywistego są budowane w oparciu o określone rozwiązania sprzętowe, które definiują strukturę systemu komputerowego współpracującego z danym procesem zewnętrznym. Struktura sprzętowa (rodzaj i liczba urządzeń obliczeniowych, sposób prowadzenia obliczeń, rodzaj i liczba sygnałów wejściowych i wyjściowych itp.) zależy bardzo ściśle od rodzaju procesu zewnętrznego i jest dostosowana do jego wymagań. W celu podkreślenia zależności struktury sprzętowej systemów czasu rzeczywistego od procesu sterowanego systemy takie nazywa się systemami wbudowanymi [23]. Systemem wbudowanym jest zatem taki system czasu rzeczywistego, który jest częścią większego systemu komputerowego, wykonuje istotną część jego funkcji oraz ma strukturę sprzętową dostosowaną do wymagań sterowanego procesu. Przykładem systemu wbudowanego może być komputer pokładowy samolotu lub komputer sterujący szybką koleją miejską [23]. W niniejszym podręczniku zaprezentowano wybrane systemy wbudowane, a mianowicie sterowniki czasu rzeczywistego tworzone w programowalnych układach logicznych PLD i FPGA. Układy programowalne PLD (ang. programmable logic device) i FPGA (ang. field programmable gate array) są to takie cyfrowe układy scalone, których struktura wewnętrzna, a co za tym idzie – właściwości funkcjonalne, są ustalane (programowane) przez końcowego użytkownika, a nie przez producenta tych układów. W odróżnieniu od mikroprocesorów układy te umożliwiają tworzenie 1 2 Spis treści algorytmów obliczeniowych na poziomie sprzętowym, przez wykonanie programowalnych połączeń elektrycznych pomiędzy określonymi, sprzętowymi jednostkami obliczeniowymi (takimi jak: bramki logiczne, sumatory, bloki mnożące, rejestry), definiowanymi wewnątrz układu programowalnego. Układy programowalne są programowane w językach opisu sprzętu (ang. hardware description language), takich jak: język VHDL, język Verilog. W układzie programowalnym można wybrać (zaprogramować) nie tylko rodzaj jednostek obliczeniowych, ale także sposób prowadzenia obliczeń – czy będą to obliczenia na liczbach stało- czy zmiennoprzecinkowych, czy będą to obliczenia prowadzone sekwencyjnie, potokowo, systolicznie, czy też w pełni równolegle [12]. Dzięki temu, że obliczenia są wykonywane na poziomie sprzętowym, przy odpowiednio dobranym sposobie ich organizacji (np. potokowo lub równolegle), szybkość obliczeń może być kilkadziesiąt lub nawet kilkaset razy większa niż przy obliczeniach prowadzonych za pomocą mikroprocesorów, w tym także procesorów sygnałowych DSP (ang. digital signal processor ). Przykładowo, sygnały wyjściowe kilkukanałowego cyfrowego regulatora PID (ang. proportionalintegral-derivative) utworzonego w układzie FPGA mogą być obliczane i aktualizowane z częstotliwością rzędu kilkudziesięciu lub nawet kilkuset MHz. Tak duże częstotliwości przetwarzania sprawiają, że sterowniki budowane w układach programowalnych mogą być stosowane do sterowania szybkich procesów, charakteryzujących się bardzo krókimi stałymi czasowymi. Dzięki temu mogą one w wymaganym czasie generować wyniki obliczeń oraz reagować na zdarzenia zachodzące w procesie sterowanym. Spełniają zatem podstawowe wymagania dotyczące sterowników czasu rzeczywistego szybkich procesów zewnętrznych. Zastosowania programowalnych układów logicznych Głównym zastosowaniem programowalnych układów logicznych PLD i FPGA jest szeroko pojęte cyfrowe przetwarzanie sygnałów, przebiegające w czasie rzeczywistym. W praktyce chodzi najczęściej o wykonywanie operacji logicznych lub arytmetycznych z bardzo wysokimi częstotliwościami przetwarzania. Poniżej podano tylko wybrane, najpopularniejsze zastosowania programowalnych układów logicznych PLD i FPGA. Obejmują one takie dziedziny nauki i techniki, jak [79, 135]: • automatyka i robotyka, w tym: – regulatory cyfrowe, np. regulatory PID [56, 88], regulatory ślizgowe [56], regulatory odporne [65, 66], regulatory ułamkowe [78], regulatory rozmyte [93, 103], regulatory predykcyjne [112], – programowalne sterowniki logiczne PLC (ang. programmable logic controller ) [75, 76, 84, 115], – układy sterowania robotów [57, 61, 67, 73], Spis treści 3 – układy sterowania obrabiarek [80, 111], – układy sterowania aktywnych łożysk magnetycznych [59, 65, 66, 88, 91] – układy przetwarzania sygnałów i obrazów, np. filtry o skończonej odpowiedzi impulsowej FIR (ang. finite impulse response), układy obliczania szybkiej transformaty Fouriera [37], układy obliczania transformaty falkowej [97], filtry Kalmana [68], sieci neuronowe [90], układy analizy spawów [77], układy radarowe [98], układy analizy ruchu [49, 81, 82, 105], układy rozpoznawania mowy [83], układy kompresji obrazu [32, 62]; • energoelektronika, w tym: – układy sterowania silników elektrycznych [34, 71, 78, 93, 112], – układy przekształcania energii elektrycznej [38, 39, 48, 89]; • lotnictwo, technika satelitarna i kosmiczna, technika wojskowa, w tym: – układy awioniki pokładowej samolotów i innych statków powietrznych [33, 36, 47, 86], – układy łączności wojskowej, – układy sterowania pocisków, torped, rakiet, samolotów [113], – układy sterowania, komunikacji, szyfrowania danych satelitów i statków kosmicznych [54, 74, 94, 104, 107]; • biologia i medycyna, w tym: – modelowanie procesów biologicznych, np. modele sieci neuronowych w badaniach choroby Parkinsona [114], – układy analizy genomu [40, 44], układy analizy sekwencji białek i nukleotydów [31], – biometria, np. rozpoznawanie odcisków palców [52], rozpoznawanie twarzy [69], rozpoznawanie sposobu poruszania się człowieka [55], – układy diagnostyki medycznej, np. układy przetwarzania sygnałów elektrokardiograficznych ECG (ang. electrocardiography) [42, 45, 102], układy przetwarzania obrazów w radiologii i tomografii [41, 70, 95], diagnostyka endoskopowa [106], – układy sterowania narzędzi chirurgicznych w endoskopii [58]; • informatyka, w tym: – kryptografia i układy szyfrowania danych [43, 50, 51, 60, 63, 64, 85, 100], – obliczenia równoległe i rozproszone [8, 27, 92, 72, 110, 132, 133] 4 Spis treści – akceleratory sprzętowe urządzeń sieciowych [108, 109, 131], – akceleratory sprzętowe baz danych [99, 101]; • telekomunikacja, w tym: – układy komunikacji bezprzewodowej [1, 53, 64], – przetwarzanie i szerokopasmowa transmisja wizji [35, 96, 116, 117], – przetwarzanie i szerokopasmowa transmisja dźwięku; • urządzenia pomiarowe, np. oscyloskopy, analizatory sygnałów dynamicznych; • elektronika użytkowa, np. telefony komórkowe, telewizory, ramki cyfrowe do zdjęć, odtwarzacze multimedialne, konsole do gier. Czytelnik zainteresowany szczegółami konkretnych zastosowań układów PLD i FPGA powinien sięgnąć do bogatej literatury. Każdego roku na świecie ukazuje się kilkaset artykułów i opracowań naukowych o tej tematyce. Przykłady najnowszych pozycji literaturowych podano wyżej. W celu zaciekawienia czytelnika poniżej przedstawiono wybrane zastosowania układów programowalnych w Laboratorium Satelitarnych Aplikacji Układów FPGA Centrum Badań Kosmicznych Polskiej Akademii Nauk [130]. W laboratorium tym projektowane są zaawansowane układy cyfrowe w układach FPGA: komputery i sterowniki pokładowe, układy sterowania matrycami elementów światłoczułych CCD (ang. charge coupled device) i CMOS (ang. complementary metal oxide semiconductor ), układy przetwarzania obrazów uzyskiwanych z tych matryc, układy DSP pozwalające na przetwarzanie sygnałów o częstotliwości ponad 1 GHz oraz zasilacze satelitarne. Układy te wykorzystano między innymi jako elementy aparatury pomiarowej w programach badawczych Europejskiej Agencji Kosmicznej ESA (ang. European Space Agency): Integral, Mars-Express, Herschel, Bepi-Colombo oraz w eksperymencie ASIM na Międzynarodową Stację Kosmiczną ISS (ang. International Space Shuttle). W laboratorium prowadzony jest obecnie projekt budowy pierwszego polskiego satelity naukowego BRITE-PL. W ramach tego projektu powstają następujące elementy satelity, projektowane w układach FPGA: główny komputer pokładowy, komputer ACS (ang. attitude control system) do sterowania orientacją satelity, komputer teleskopu, układ nadajnika i odbiornika komunikacyjnego, układ kontroli zasilania pokładowego oraz układ kontroli ładowania baterii. Organizacja podręcznika Podręcznik składa się z dwóch części. W części pierwszej (rozdz. 1-3) omówiono budowę, działanie i podstawowe bloki funkcjonalne układów programowalnych PLD i FPGA oraz płyt prototypowych wykorzystanych w części drugiej. Część druga (rozdz. 4-8) zawiera przykłady projektów sterowników opisanych w języku VHDL i uruchomionych w układach PLD i FPGA firmy Xilinx. Spis treści 5 Przykłady z rozdziałów 4-6 mają charakter wprowadzający i są uruchamiane na płycie prototypowej XC2-XL (zob. rozdz. 3.1) w środowisku graficznym oprogramowania ISE Design Suite. Obejmują one projektowanie sterowników logicznych z wykorzystaniem: układów kombinacyjnych, układów synchronicznych, automatów stanu, prostego procesora ośmiobitowego. Przykłady z rozdziałów 7-8 są uruchamiane na płycie prototypowej Spartan3 Starter Kit Board (zob. podrozdz. 3.2) w środowisku wsadowym oprogramowania ISE Design Suite. Głównym celem tych zadań jest opanowanie umiejętności projektowania regulatorów o działaniu ciągłym, tworzonych w układach FPGA. Regulatory wykonują obliczenia na liczbach stałoprzecinkowych (stałopozycyjnych) z wykorzystaniem bloków mnożących dostępnych w układach FPGA Spartan-3. Każdy projekt zawiera opis słowny działania układu, kod źródłowy w języku VHDL oraz niezbędne wyjaśnienia, a także opis testowania w symulatorze programowym oraz opis uruchomienia w układzie programowalnym. Podano pełne kody źródłowe programów w języku VHDL: wszystkich jednostek projektowych, wymaganych komponentów i trudniejszych jednostek testujących, a także plików powiązań układów PLD i FPGA znajdujących się na płytach prototypowych. Zamieszczono niezbędne wyjaśnienia dotyczące użytych konstrukcji języka VHDL, trudniejszych fragmentów kodu itp. W rozdziałach 4.1 i 7.1 podano także skrócone opisy obsługi oprogramowania projektowego ISE Design Suite firmy Xilinx (w wersji interakcyjnej – graficznej i w wersji nieinterakcyjnej – wsadowej). W rozdziałach 7 oraz 8 wykorzystano przybornik Fixed Point Toolbox programu MATLAB do projektowania i testowania wersji zmiennoi stałoprzecinkowej (stałopozycyjnej) algorytmu regulatora PID oraz dyskretnego przekształcenia Fouriera. Podano niezbędne opisy i wyjaśnienia, a także pełne kody źródłowe wykorzystanych skryptów programu MATLAB. W rozdziale 7 zawarty jest również krótki opis programu ChipScope Pro, służącego do testowania układów utworzonych w docelowym układzie programowalnym. Zamieszczone przykłady charakteryzują się narastającym stopniem trudności. Czytelnicy znający podstawy automatyki, teorii sygnałów, układów cyfrowych oraz programowania w języku VHDL i w programie MATLAB nie powinni mieć trudności ze zrozumieniem podanych treści. Osoby zainteresowane pełnym kursem języka VHDL powinny sięgnąć do literatury, np. do [2, 3, 5, 7, 9, 13, 14, 19, 25, 30]. Podstawy języka MATLAB można znaleźć na przykład w [22, 26]. Kody źródłowe przykładowych projektów omawianych w niniejszym podręczniku są dostępne na stronie: http://wm.pb.edu.pl/podreczniki.