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.