Forum Młodych. OPOLCHESS robot do gry w szachy (1) Oprogramowanie FXChess XF. Potyczki z robotem. Algorytmy i reprezentacja danych.

Podobne dokumenty
THE HARDWARE IMPLMENTATION OF THE PS/2 PROTOCOL ON SPARTAN 3 FPGA DEVICE IMPLEMENTACJA SPRZĘTOWA PROTOKOŁU PS/2 W UKLADZIE FPGA SPARTAN 3

Cyfrowy rejestrator parametrów lotu dla bezzałogowych statków powietrznych. Autor: Tomasz Gluziński

Politechnika Wrocławska

Szybkie prototypowanie w projektowaniu mechatronicznym

LEKCJA TEMAT: Zasada działania komputera.

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Bezzałogowy Statek Powietrzny typu Quadrotor. Emilian Magdziak Łukasz Borkowski

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

Systemy wbudowane. Paweł Pełczyński

MCAR Robot mobilny z procesorem AVR Atmega32

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

projekt przetwornika inteligentnego do pomiaru wysokości i prędkości pionowej BSP podczas fazy lądowania;

Opracował: Jan Front

Technika mikroprocesorowa. Konsola do gier

Aplikacje Systemów. Nawigacja inercyjna. Gdańsk, 2016

dokument DOK wersja 1.0

Układy czasowo-licznikowe w systemach mikroprocesorowych

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

WPROWADZENIE Mikrosterownik mikrokontrolery

WIZUALIZACJA I STEROWANIE ROBOTEM

Sensory i systemy pomiarowe Prezentacja Projektu SYNERIFT. Michał Stempkowski Tomasz Tworek AiR semestr letni

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

- WALKER Czteronożny robot kroczący

Laboratorium Komputerowe Systemy Pomiarowe

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Język opisu sprzętu VHDL

Interfejsy systemów pomiarowych

Rozproszony system zbierania danych.

1. Podstawowe wiadomości Możliwości sprzętowe Połączenia elektryczne Elementy funkcjonalne programów...

STUDENCKIE KOŁO NAUKOWE CHIP

LABORATORIUM TECHNIKA CYFROWA LICZNIKI I REJESTRY. Rev.1.1

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

Architektura komputerów. Układy wejścia-wyjścia komputera

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

PL B1 PRZEDSIĘBIORSTWO BADAWCZO- -PRODUKCYJNE I USŁUGOWO-HANDLOWE MICON SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ, KATOWICE, PL

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

PROGRAMOWALNE STEROWNIKI LOGICZNE

Programowalne Układy Cyfrowe Laboratorium

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

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

Sprawozdanie z realizacji projektu:

1. Cel ćwiczenia. 2. Podłączenia urządzeń zewnętrznych w sterowniku VersaMax Micro

2.1 Porównanie procesorów

Tematy prac dyplomowych w Katedrze Awioniki i Sterowania. Studia: I stopnia (inżynierskie)

interfejs szeregowy wyświetlaczy do systemów PLC

XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej. XXXII Olimpiada Wiedzy Elektrycznej i Elektronicznej

Organizacja pamięci VRAM monitora znakowego. 1. Tryb pracy automatycznej

Laboratorium przedmiotu Technika Cyfrowa

Parametryzacja przetworników analogowocyfrowych

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

Interfejsy komunikacyjne pomiary sygnałów losowych i pseudolosowych. Instrukcja do ćwiczenia laboratoryjnego

Politechnika Wrocławska, Katedra Inżynierii Biomedycznej Systemy Pomiarowo-Diagnostyczne, laboratorium

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

MiniModbus 4DO. Moduł rozszerzający 4 wyjścia cyfrowe. Wyprodukowano dla. Instrukcja użytkownika

Obługa czujników do robota śledzącego linie. Michał Wendland czerwca 2011

Symulacja działania sterownika dla robota dwuosiowego typu SCARA w środowisku Matlab/Simulink.

Uniwersalny Komputer Pokładowy (UKP-3 oraz UKP-PRO)

System czasu rzeczywistego

Programowalne Układy Logiczne. Wykład I dr inż. Paweł Russek

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

Automatyzacja i robotyzacja procesów produkcyjnych

Przemysłowe sieci informatyczne

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

Edukacyjny sterownik silnika krokowego z mikrokontrolerem AT90S1200 na płycie E100. Zestaw do samodzielnego montażu.

UKŁADY MIKROPROGRAMOWALNE

Mechatronika i inteligentne systemy produkcyjne. Aktory

Temat: Projektowanie i badanie liczników synchronicznych i asynchronicznych. Wstęp:

Szczegółowy Opis Przedmiotu Zamówienia: Zestaw do badania cyfrowych układów logicznych

Badanie właściwości wysokorozdzielczych przetworników analogowo-cyfrowych w systemie programowalnym FPGA. Autor: Daniel Słowik

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

Szkoła programisty PLC : sterowniki przemysłowe / Gilewski Tomasz. Gliwice, cop Spis treści

Tematy prac dyplomowych w Katedrze Awioniki i Sterowania Studia II stopnia (magisterskie)

Budowa systemów komputerowych

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

Czujniki obiektowe Sterowniki przemysłowe

Enkoder magnetyczny AS5040.

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

Systemy uruchomieniowe

Sterowanie układem zawieszenia magnetycznego

oznaczenie sprawy: CRZP/231/009/D/17, ZP/66/WETI/17 Załącznik nr 6 I-III do SIWZ Szczegółowy opis przedmiotu zamówienia dla części I-III

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

Teoria przetwarzania A/C i C/A.

Potencjał dydaktyczny Politechniki Rzeszowskiej dla sektora kosmicznego. Paweł Rzucidło

Przetworniki A/C. Ryszard J. Barczyński, Materiały dydaktyczne do użytku wewnętrznego

Konfiguracja parametrów sondy cyfrowo analogowej typu CS-26/RS/U

Ogólne przeznaczenie i możliwości interfejsu sieciowego przepływomierza UniEMP-05 z protokołem MODBUS. ( )

Wyjścia analogowe w sterownikach, regulatorach

W.J WIELICZKA

Proste układy wykonawcze

Kod produktu: MP01105T

Automatyka i Robotyka Opracowanie systemu gromadzącego i przetwarzającego wyniki zawodów robotów.

NX700 PLC

Sterownik momentu obrotowego silnika prądu stałego

PR kwietnia 2012 Mechanika Strona 1 z 5. XTS (extended Transport System) Rozszerzony System Transportowy: nowatorska technologia napędów

Mechatronika i szybkie prototypowanie układów sterowania

Przemysłowe sieci informatyczne

Funkcjonowanie i budowa modelu układu regulacji temperatury. Jakub Rotkiewicz AIR 2018

Projekt i wykonanie robota klasy Micromouse

Transkrypt:

Pomiary Automatyka Robotyka 3/200 OPOLCHESS robot do gry w szachy () Oprogramowanie FXChess XF Krzysztof Gawlik, Radosław Gruszka, Krzysztof Galeczka, Marcin Hnatiuk, Marcin Kupczyk, Michał Tomczewski, Krzysztof Tomczewski SKN Spektrum istoria automatów do gry w szachy sięga XVIII wieku, gdy w 769 r. węgierski inżynier baron Wolfgang von Kempelen skonstruował Turka. Maszyna przedstawiała postać mężczyzny o orientalnych rysach, grającego w szachy. Sławę Turkowi przyniosła niezwykła umiejętność gry w szachy. Turek rozgrywał partie m.in. z Katarzyną Wielką, Benjaminem Franklinem i Napoleonem Bonapartem. Maszyna była urządzeniem genialnym jak na tamte czasy. Dopiero po latach ujawniono prawdę o tym automacie. Zastosowane rozwiązania mechaniczne pozwalały ukryć w nim szachistę. Ta historia intrygowała ludzi przez wiele lat. Dopiero po prawie dwóch stuleciach rozwój nauki i techniki umożliwił budowę automatycznego szachisty. Potyczki z robotem Przełomu w dziedzinie algorytmów gier dokonał Alan Turing, który sformułował algorytm gry w szachy jeszcze przed powstaniem pierwszego komputera. Algorytm przetestował za pomocą kartki papieru i ołówka, a zapis gry zachował się do dzisiaj. Ten pojedynek człowieka z maszyną w ludzkiej postaci odbył się w 952 r. w Manchester [3]. W 950 r. w ośrodku badawczym Los Alamos w USA opracowano superkomputer MANIAC I (Mathematical Analyzer, Numerator, Integrator, and Computer) przeznaczony do badań nad bombą atomową. W ramach testów zaprogramowano go do gry na szachownicy 6 6 pól. W pierwszej partii komputer ten poniósł porażkę z mistrzem szachowym, choć rozpoczął grę z przewagą królowej. W drugiej pokonał przypadkową osobę i było to pierwsze zwycięstwo maszyny nad człowiekiem w grze logicznej [3, 6]. Pierwszy w historii mecz między dwoma komputerami szachowymi rozegrano w 966 r. Był to pojedynek Rosja USA. Wielkim wydarzeniem było zorganizowanie pierwszych w historii Mistrzostw Świata Szachów Komputerowych w 97 r. Przełomowym w rozwoju szachów komputerowych okazał się 9 r., w którym Deep Thought jako pierwszy komputer w historii pokonał arcymistrza szachowego, Benta Larsena. W 997 r. komputer Deep Blue pokonał legendę szachów Garry ego Kasparova. Firma IBM twórca tego komputera nigdy nie zgodziła się na rewanż, a legendarną maszynę rozmontowano i częściowo umieszczono w muzeum. Turek z Opola Historia Turka stała się inspiracją do opracowania programu FXChess XF [] oraz do realizacji projektu OPOLCHESS [, 2, 7] robota do gry w szachy. Autor programu swoją przygodę z szachami komputerowymi rozpoczął od opracowania w 2005 r. wraz z kolegami programu Ultimate Chess na uczelni Ingeniørhøjskolen i Køenhavn w Danii. W ramach wykładu konsultacji udzielał sam arcymistrz szachowy Bent Larsen. W 2006 r. w ramach pracy dyplomowej na Politechnice Opolskiej, realizowanej pod kierunkiem dr hab. inż. Krystyny Macek-Kamińskiej, powstał przewidziany na platformy 6-bitowe program FXChess XF. Celem realizacji projektu jest opracowanie własnego Turka, pierwszego w Opolu robota, który będzie samodzielnie rozgrywał partie szachów. Robot ten ma strukturę RRR z chwytakiem trójpalczastym i do pewnego stopnia przypomina rękę. Obecnie projekt jest w końcowej fazie realizacji. Zarówno program do gry w szachy, jak i robot z układem sterowania i interfejsem komunikacyjnym zostały ukończone. Aktualnie tworzony jest moduł komunikacyjny do programu FXChess XF, którego zadaniem jest zapewnienie komunikacji pomiędzy programem i robotem. Algorytmy i reprezentacja danych Teoria gier klasyfikuje szachy jako grę dwuosobową, skończoną, o sumie zerowej i pełnej informacji. Najprostszym algorytmem stosowanym w grach tego typu jest minimaks. Jego ideą jest minimalizowanie maksymalnej, możliwej do poniesienia straty, a ograniczeniem w stosowaniu jest wykładnicza złożoność obliczeniowa O(a n ) [, 9]. Metodę usprawniono implementując odcięcie alfa-beta. Algorytm minimaks z odcięciami alfa-beta pomija węzły drzewa gry, które nie wpływają na wybór najlepszego ruchu. Po przeszukaniu pierwszej podgałęzi drzewa algorytm zapamiętuje najlepszy wynik. Jeżeli w kolejnej podgałęzi napotka wynik gorszy, to przerywa jej analizę. Im szybciej nastąpi odcięcie, tym większa jest efektywność tego algorytmu. Dlatego jako rozszerzenie algorytmu alfa-beta zastosowano sortowanie ruchów, aby ruchy odcinające występowały jak najszybciej. Podczas gry przeszukiwanie jest ograniczone zadanym czasem wykonania ruchu. Jeśli przeszukiwanie nie zakończyłoby się na czas, to w pozostałej części drzewa mógłby znajdować się niekorzystny ruch. Najczęściej stosowane do rozwiązania tego problemu jest iteracyjne pogłębianie. Polega ono na iteracyjnym przeszukiwaniu drzewa gry na coraz większą głębokość, aż do upływu limitu czasu. Jeżeli przeszukiwanie na jakimś poziomie nie zostanie ukończone przed upływem limitu czasu ruchu, to przyjmowane jest najlepsze rozwiązanie z poprzedniej iteracji. Jednym z kluczowych elementów każdego programu szachowego jest funkcja ewaluacyjna, będąca tajemnicą twórcy. 76

Nr 3/200 Jej zadaniem jest szacowanie, w jakim stopniu zaistniała na szachownicy sytuacja jest korzystna dla gracza. Nawet najszybszy algorytm przeszukiwania drzewa gry, w połączeniu ze źle sformułowaną funkcją ewaluacyjną, może dać kiepski efekt końcowy. Główny problem polega na tym, że funkcja ta jest statyczna i nie uwzględnia dynamiki gry ani strategii graczy, a jej złożoność wpływa na czas obliczeń. W przypadku złożonej funkcji ewaluacyjnej wzrasta czas przeszukiwania drzewa gry, natomiast funkcja zbyt prosta może zwracać błędne wyniki. W początkowej i środkowej fazie gry program bazuje na tej funkcji oraz reprezentacji punktowej bierek i sytuacji na szachownicy. W fazie końcowej, gdy jest już znalezione rozwiązanie prowadzące do zwycięstwa, rozgrywka prowadzona jest zgodnie z odnalezionym wariantem wygrywającym. Ciekawostką jest to, że w początkowej fazie gry, gdy na szachownicy znajduje się duża liczba bierek, gracz człowiek rozpatruje nieliczne warianty gry, lecz głębiej niż robi to komputer. Komputer natomiast rozpatruje wszystkie możliwe ruchy, co zajmuje mu dużo czasu. W trakcie gry sytuacja ta się zmienia. Im mniej bierek pozostaje na szachownicy, tym mniej wariantów jest do sprawdzenia. Tym samym komputer rozpatruje ruchy na coraz większą głębokość. Stąd rada dla grających. Grając z komputerem unikajcie wymiany bierek. Zmniejszając liczbę bierek dajecie przewagę komputerowi. Twórcy programów komputerowych wiedzą o tym i często zachęcają programy do wymian. Najprostszą metodą ewaluacji stanu szachownicy jest porównanie wartości bierek posiadanych przez każdego z graczy. Prowadzone przez wiele lat analizy zakończeń rozgrywek szachowych pozwoliły na określenie wartości poszczególnych bierek. Najczęściej przyjmuje się notację -3-3-5-9, zakładającą: pion, goniec i skoczek 3, wieża 5, hetman 9, król 2 lub więcej. Wartość króla przyjmuje się tak, aby był on cenniejszy od wszystkich pozostałych bierek, ponieważ dopuszczenie do jego zbicia to mat, czyli porażka. W praktyce często stosuje się wielokrotności tych wartości, co pozwala uwzględnić dodatkowe czynniki, jak pozycja bierki, możliwość wykonania roszady itp. [, 9]. W komercyjnych programach do gry w szachy stosuje się bazy tzw. otwarć i końcówek. Są to bazy danych opracowane głównie na podstawie rozgrywek na poziomie arcymistrzowskim. Ich stosowanie ułatwia wyznaczanie ruchów w początkowej i końcowej fazie gry. Program FXChess XF nie wykorzystuje tych baz, ponieważ w większości są one udostępniane odpłatnie. Aby zachęcić program do zdobywania przewagi w środku pola, co jest zgodne ze sposobem rozgrywania partii przez arcymistrzów szachowych, wartości poszczególnych bierek uzależniono od ich pozycji na szachownicy. Przykładowo, ruch pionem ustawionym przed królem, jest ceniony wyżej niż ruch pionem ustawionym przy krawędzi szachownicy. Jednocześnie wartość pionów wzrasta wraz z ich przemieszczaniem do przodu. Ta dodatkowa motywacja ma na celu zdobycie możliwie największego obszaru na szachownicy, szczególnie w jej centrum i zachęcanie programu do promocji pionów, czyli ich zamiany na figury po dojściu do ostatniego rzędu. Podczas przeszukiwania drzewa bardzo często dochodzi do powtarzania się jednakowych pozycji bierek na szachownicy w różnych węzłach drzewa. Jeżeli jakaś sytuacja została już rozpatrzona na odpowiednią głębokość i znany jest wynik tego przeszukiwania, to można zrezygnować z ponownego przeszukiwania tej gałęzi. Powstaje zatem problem zapamiętywania ustawień bierek na szachownicy. W tym celu stosuje się tak zwane hasze (ang. hash code skrót). Najważniejszą a) b) c) d) Tablice bitowe: a) reprezentacja bitowa pól, b) układ bierek na szachownicy, c) pozycje białych bierek, d) pozycje czarnych bierek cechą haszy jest ich unikatowość. Ze względu na ograniczenia czasowe, w praktyce stosuje się hasze krótsze od wymaganych, które nie zapewniają pełnej unikatowości. Dopuszczają one możliwość nadania różnym sytuacjom jednakowego kodu, co grozi błędami w analizie drzewa gry, jednak ryzyko z tym związane jest niewielkie. Najbardziej znaną metodą haszowania jest zaimplementowana w programie metoda Zobrista. Swą popularność zawdzięcza prostocie i wydajności. Polega na tym, że w każdym ruchu można wykonać zmianę stanu maksymalnie jednej bierki każdego z graczy. Najpierw obliczany jest hasz początkowy drzewa gry, a następnie wykonywane są operacje XOR z wartościami hasza dla bierek w aktualnej i poprzedniej pozycji. Taki sposób wykorzystano również w omówionym programie. Dla zwiększenia wydajności programu zastosowano szachownice bitowe (ang. bitboards). Technika ta zyskała największą popularność po wprowadzeniu na rynek maszyn 6-bitowych. Pozwala na stosowanie reprezentacji szachownicy jako szeregu liczb 6-bitowych. Sprawdzanie szacha, możliwości wykonania bicia i generowanie ruchów są operacjami bardzo szybkimi, gdyż sprowadzają się do kilku prostych operacji binarnych. Konstrukcja mechaniczna oraz układ sterowania robota zostaną omówione w kolejnych publikacjach na łamach Forum Młodych. Bibliografia. Gruszka R., Hnatiuk M.: Ramię robota do gry w szachy z układem sterowania. Praca dypl. Politechnika Opolska 2009. 2. Galeczka K., Gawlik K.: Wykonanie chwytaka i modułu komunikacyjnego robota do gry w szachy. Praca dypl. PO 2009. 3. [http://www.chessbase.com] - Friedel F.: A short history of computer chess. 997.. [http://www.frayn.net/beowulf/theory/html]. 5. [http://www.wikipedia.org]. 6. [http://pl.wikipedia.org]. 7. Kupczyk M.: Szachownica robota do gry w szachy z układem rozpoznawania ruchu. Praca dypl. PO 2009.. Tomczewski M.: Implementacja inteligentnych szachów komputerowych z zastosowaniem znanych algorytmów sztucznej inteligencji. Praca dypl. PO 2006. 9. Winston P. H.: Artificial intelligence. Addison Wesley, 992. 77

Pomiary Automatyka Robotyka 3/200 Komputer pokładowy dla bezzałogowych obiektów latających Dariusz Nowak, Tomasz Żabiński SKN ROBO AHRS (Attitude Heading Reference System) Układ Odniesienia Położenia i Kursu dostarcza informacji o położeniu i kursie samolotu. Urządzeniem AHRS wykorzystanym w projekcie samolotu jest 3DM-GX firmy Micro Strain. W skład systemu wchodzą czujniki temperatury, trzyosiowe żyroskoezzałogowy obiekt latający to mechaniczna konstrukcja wykonana z lekkich materiałów, która do lotu nie wymaga obecności człowieka na pokładzie i nie może przewozić pasażerów. Zwykle jest to statek powietrzny o stosunkowo niewielkich wymiarach, sterowany zdalnie przez człowieka lub autonomicznie przez odpowiednio zaprogramowany komputer umieszczony na pokładzie. Może być wykonany jako samolot lub śmigłowiec. Bezzałogowe aparaty latające znalazły zastosowanie w armii i są standardowym wyposażeniem wojsk większości krajów. Wyposażone w przyrządy nawigacyjne i optoelektroniczne mogą wykonywać specjalistyczne zadania: zwiad obrazowy w czasie rzeczywistym, naprowadzanie artylerii, ocenę skuteczności ostrzału, rekonesans i inwigilację, rozpoznanie i klasyfikację celów oraz obserwację pola walki. Dzięki zdalnemu przesyłaniu danych i wykonywaniu zdjęć o dużej rozdzielczości, bezzałogowe aparaty latające mogą być wykorzystywane w monitorowaniu terenu przez służby porządkowe, straż pożarną i naukowców prowadzących badania w dziedzinie nauk przyrodniczych. Obiekt latający może przyjąć lokalizację wyznaczonego punktu w przestrzeni i z tej pozycji wykonywać zdjęcia, które są przydatne w realizacji planów konstrukcyjnych i modeli 3D budynków, map ukształtowania terenu, planów miast itp. Innowacyjnym rozwiązaniem może okazać się latająca stacja meteorologiczna rejestrująca parametry pogodowe za pomocą sprzętu pomiarowego umieszczonego na pokładzie. Zastosowanie urządzeń nawigacyjnych i czujników odległości umożliwia precyzyjne poruszanie się obiektu latającego w ciasnych pomieszczeniach i wykonywanie zadań w miejscach trudnodostępnych i niebezpiecznych dla człowieka. Bezzałogowe aparaty latające o większych rozmiarach mogą przenosić ładunki o masie do 000 kg ułatwiając pracę w budownictwie lub przemyśle. Celem projektu realizowanego w Politechnice Rzeszowskiej przez koła naukowe ROBO i Lotników jest skonstruowanie komputera pokładowego dla obiektów latających. Aktualnie prowadzone są prace nad komputerem pokładowym dla modelu samolotu oraz quadrotora (rodzaj wiropłatu napędzanego czterema silnikami). Projekt zakłada stworzenie uniwersalnej i innowacyjnej platformy komputera pokładowego dla urządzeń mobilnych, nie tylko latających. Skonstruowany system będzie również wykorzystany w robocie typu Johnny 5 oraz inteligentnym wózku dla osób niepełnosprawnych. Autorzy projektu mają nadzieję, że ich prace wzbudzą zainteresowanie polskich firm produkujących bezzałogowe obiekty latające. Samoloty, najpowszechniej wykorzystywane obiekty latające, utrzymują się w powietrzu dzięki sile nośnej wytwarzanej za pomocą nieruchomych względem statku skrzydeł. Aby siła ta mogła być wytworzona, obiekt musi osiągnąć wystarczającą prędkość. Sterowanie prędkością statku powietrznego polega na zmianie prędkości obrotowej silników. Sterowanie wysokością i kierunkiem lotu odbywa się za pomocą tzw. powierzchni sterowych. Są to zewnętrzne, ruchome elementy (lotki, ster wysokości i ster kierunku []) zmieniające kierunek przepływu strumienia powietrza, a w efekcie wartości sił i momentów aerodynamicznych, generując ruch statku wokół własnej osi wzdłużnej, poprzecznej i pionowej. Quadrotor (quadrokopter, wirolot) to obiekt latający należący do wiropłatów, ma cztery umieszczone naprzeciwlegle wirniki napędzane silnikami elektrycznymi. W tej konstrukcji dwa naprzeciwległe śmigła obracają się zgodnie z ruchem wskazówek zegara, a dwa poprzeczne w przeciwną stronę. Poprzez zmianę prędkości obrotowej każdego z nich można sterować wysokością i kierunkiem lotu obiektu. Każdy z czterech wirników wytwarza siłę ciągu o kierunku równoległym do siły grawitacji i o przeciwnym zwrocie (rys. ). Zmiana wartości sił F i F3 powoduje zmianę wartości kątów przechylenia sprzężonych z ruchem bocznym obiektu, a zmiana kątów pochylenia jest efektem modyfikacji wartości sił F i F2 powiązanych z przemieszczaniem się obiektu w przód i w tył [2, 3]. Platforma sprzętowa W ramach projektu realizowane są dwie koncepcje konfiguracji sprzętowej autopilota. Jedna z nich jest przeznaczona dla samolotu, a druga dla obiektu latającego quadrotor. Koncepcje różnią się liczbą oraz typem zastosowanych urządzeń pomiarowych i wykonawczych. Częścią wspólną jest platforma TS-7300 [, 5] kontroler wbudowany z procesorem ARM9 główna jednostka wykonująca obliczenia i algorytmy sterowania. Podstawowe parametry procesora to: częstotliwość pracy 200 MHz, pobór mocy mniej niż 2 W, 32-bitowa architektura, pięciostopniowy potok przetwarzania instrukcji, 6 KB pamięci podręcznej instrukcji. Kontroler może uruchamiać systemy operacyjne Linux i WinCE. Jego interfejsy pozwalają podłączyć zewnętrzne moduły wejścia/wyjścia, co zwiększa elastyczność i niezawodność. Część funkcjonalności kontrolera została zaimplementowana w układzie FPGA, dzięki temu do komputera można podłączyć myszkę, klawiaturę i monitor. Dostęp do 55 wejść/wyjść cyfrowych (DIO) umieszczonych na platformie umożliwia sterowanie i pobieranie danych z różnych urządzeń wykorzystujących komunikację za pomocą interfejsów I 2 C lub SPI []. Pokładowe urządzenia pomiarowe Różnice w budowie i zasadzie działania quadrotora i samolotu zmuszają do stosowania odmiennych urządzeń pomiarowych. Służą one do pomiaru wielkości fizycznych, na podstawie których są wyznaczane parametry lotu: kąty Eulera, wysokość, prędkość, położenie geograficzne, kierunek lotu. Urządzenia pomiarowe samolotu 7

Nr 3/200 py, magnetometry i akcelerometry, multiplexer, szesnastobitowy przetwornik analogowo-cyfrowy, pamięć EEPROM, mikroprocesor filtrujący i przetwarzający dane. Komunikację z urządzeniem umożliwiają zaimplementowane interfejsy RS-232, RS-5 oraz opcjonalnie cztery wyjścia analogowe. Zbieranie danych pomiarowych polega na wysyłaniu do mikroprocesora odpowiedniej komendy, w odpowiedzi na którą odsyłany jest wymagany zestaw danych. Jednostka areometryczna urządzenie realizujące pomiar wysokości i prędkości samolotu dzięki wykorzystaniu czujników ciśnienia atmosferycznego i dynamicznego. Ciśnienie atmosferyczne zmienia się wraz ze wzrostem wysokości i na tej podstawie określana jest wysokość samolotu. Ciśnienie dynamiczne to siła wytworzona przez strugi powietrza napierające na samolot w ruchu, co stanowi podstawę do pomiaru prędkości. Komunikację z urządzeniem umożliwia interfejs I 2 C. Urządzenia pomiarowe quadrotora Żyroskop jednoosiowy służy do pomiaru prędkości kątowej, poprzez całkowanie otrzymuje się wartości kąta obrotu wokół aktywnej osi czujnika i odchylenie statku powietrznego od płaszczyzny rzeczywistego horyzontu. Stosując trzy odpowiednio zamontowane żyroskopy jednoosiowe można mierzyć kąty przechylenia, pochylenia i odchylenia obiektu latającego. Pomiar polega na odczycie napięcia proporcjonalnego do zmiany prędkości kątowej. W projekcie będą wykorzystane trzy żyroskopy mikromechaniczne [2, 3]. Akcelerometr trzyosiowy czujnik przyspieszenia liniowego, służy do pomiaru przyspieszenia wzdłuż osi X, Y lub Z. Umożliwia określanie kierunku poruszania się obiektu latającego. Układ ten inicjacjuje pracę żyroskopów podczas startu - wstępną autokalibrację i nadanie punktu odniesienia po podłączeniu zasilania. Komunikacja z urządzeniem odbywa się przez interfejsy I 2 C oraz SPI [2, 3]. Czujnik ciśnienia statycznego służy do pomiaru wysokości na podstawie zmiany ciśnienia atmosferycznego, które spada wraz ze zwiększaniem się odległości obiektu latającego od powierzchni Ziemi. Może być bezpośrednio podłączony do mikroprocesora za pomocą interfejsu I 2 C. Czujnik magnetyczny czujnik pola magnetycznego Ziemi zostanie wykorzystany do korekcji kąta odchylenia względem osi Z. Jest to dwuosiowy kompas o małych wymiarach z interfejsem komunikacyjnym I 2 C oraz wbudowanym mikroprocesorem wykonującym algorytmy kalibracji danych. Komunikacja z urządzeniem jest realizowana za pomocą komend w postaci ciągu znaków ASCII. Samolot oraz quadrotor będą wyposażone w moduł GPS pobierający dane o położeniu geograficznym, prędkości, wysokości oraz aktualnym czasie. Układ ma wbudowany interfejs komunikacyjny RS-232, dane odebrane z satelity są aktualizowane i wysyłane do komputera pokładowego z częstotliwością 5 Hz za pomocą protokołu NMEA 03 [2, 3]. Pokładowe urządzenia wykonawcze Pokładowe urządzenia wykonawcze umożliwiają kształtowanie parametrów lotu obiektu. W przypadku samolotu są to serwomechanizmy modelarskie oraz silniki trójfazowe z regulatorami prędkości. Sterowanie samolotem wymaga zamontowania pięciu serwomechanizmów oraz dwóch silników trójfazowych. Cztery serwomechanizmy sterują wychyleniem lotek, steru wysokości oraz steru kierunku. Jeden serwomechanizm odpowiada za otwieranie komory spadochronowej podczas lądowania. Silniki trójfazowe z zamontowanymi śmigłami sterują prędkością obiektu []. Na pokładzie quadrotora nie ma potrzeby montowania serwomechanizmów do zmiany parametrów lotu. Służą do tego cztery trójfazowe silniki, a sterowanie odbywa się przez zmianę prędkości obrotowej każdego z nich. Sterowanie serwomechanizmem modelarskim polega na podawaniu na jego wejście impulsu PWM o częstotliwości 50 Hz i wypełnieniu o wartości z przedziału od ms do 2 ms. Kąt wychylenia ramienia serwomechanizmu jest proporcjonalny do wartości współczynnika wypełnienia. Przy współczynniku wypełnienia równym ms, oś serwomechanizmu zostaje wychylona maksymalnie o kąt -90, natomiast przy współczynniku wypełnienia równym 2 ms oś przyjmuje kąt wychylenia maksymalnie 90, położenie zerowe (0 ) jest uzyskiwane przy współczynniku wypełnienia,5 ms. Kontrola prędkości obrotowej silnika trójfazowego realizowana jest za pośrednictwem regulatora prędkości obrotowej. Sterowanie odbywa się za pomocą modulacji PWM. Przy zerowym wypełnieniu silnik nie jest napędzany, w miarę wzrostu współczynnika wypełnienia silnik zwiększa obroty aż do osiągnięcia wymaganej prędkości lub docelowego momentu obrotowego. W modelarstwie stosowane są silniki bezszczotkowe ze względu na ich małą wagę i rozmiary oraz znaczną żywotność. Rys. 3. Projekt platformy quadrotora w 3D Rys.. Konfiguracja platformy quadrotora Rys. 2. Zależność kierunku ruchu od prędkości obrotowej poszczególnych wirników. Wartość prędkości obrotowej jest proporcjonalna do promienia okręgu Rys.. Prototyp quadrotora 79

Pomiary Automatyka Robotyka 3/200 Rys. 5. Schemat platformy sprzętowej komputera pokładowego dla samolotu Urządzenia komunikacyjne Na pokładzie obu obiektów latających zostanie umieszczony radiomodem, którego zadaniem będzie wysyłanie danych o parametrach lotu do stacji naziemnej oraz odbieranie informacji nawigacyjnych. W razie awarii platformy sprzętowej, kontrolę nad obiektem może przejąć człowiek za pomocą aparatury RC podłączonej do mikroprocesora pokładowego. Warstwa programowa komputera pokładowego Aplikacja realizująca funkcje komputera pokładowego działa w systemie operacyjnym Linux Debian 3.. dostarczonym przez producenta platformy sprzętowej na zasadach licencji GNU. Ważną cechą tej dystrybucji jest krótki czas uruchamiania podstawowej wersji systemu (,69 s), czas ten zwiększa się odpowiednio w miarę wzrostu liczby dodatkowych modułów programowych. System operacyjny może pracować jako system o twardych wymaganiach czasowych [], co gwarantuje zastosowany pakiet RTAI (Real Time Application Interface) [5]. Zaletą RTAI jest możliwość realizacji zadań czasu rzeczywistego nie tylko w warstwie jądra, lecz i na poziomie oprogramowania użytkownika. Oprogramowanie komputera pokładowego składa się z trzech ściśle powiązanych elementów: rejestratora parametrów lotu, stabilizatora lotu oraz modułu nawigacji. Zadaniem rejestratora jest pobieranie danych z urządzeń pomiarowych umieszczonych na pokładzie, zapisywanie ich na karcie SD (Secure Digital) komputera i wysyłanie przez radiomodem do stacji naziemnej. Operacja ta powinna być zsynchronizowana, by dane były uaktualniane w sposób ciągły. Wiąże się to z obsługą i kontrolą pokładowych urządzeń pomiarowych, np. wysyłanie komend w określonych odcinkach czasu do modułu AHRS. Na podstawie pobranych informacji wykonywana jest stabilizacja lotu, czyli zapobieganie samowolnym zmianom położenia modelu, niezależnie od przyczyn, które je powodują. Stabilizacja uwzględnia również zamierzone ruchy obiektu latającego - lot w górę, lot w dół, w prawo, w lewo - i koryguje położenie statku podczas wykonywania manewrów. Ze stacji naziemnej do komputera pokładowego wysyłane są dane o zadanych trasach, prędkości i wysokości lotu. Na podstawie tych informacji oraz danych pobranych z GPS, rejestratora parametrów lotu i stabilizatora, komputer pokładowy wyznacza kurs, wysokość i prędkość lotu. Podsumowanie Nadrzędnym celem projektu jest stworzenie w pełni funkcjonalnego statku latającego typu quadrotor z możliwością Rys. 6. Schemat platformy sprzętowej komputera pokładowego dla quadrotora Rys. 7. Schemat budowy urządzenia AHRS 3DM-GX przesyłania obrazu video zarówno z dużych wysokości jak i z ciasnych pomieszczeń. Projekt zakłada wykorzystanie opracowanej platformy komputera pokładowego również dla bezzałogowego samolotu zbudowanego przez Koło Naukowe Lotników Politechniki Rzeszowskiej. Funkcje rejestracji parametrów lotu komputera pokładowego zostały wstępnie przetestowane podczas lotów próbnych modelu samolotu skonstruowanego przez koło Lotników. Obecnie trwają prace nad pomiarem i rejestracją dodatkowych parametrów, stabilizacją lotu oraz modyfikacją platformy sprzętowej (zastosowanie dodatkowych mikroprocesorów). Zaprojektowano i wykonano prototyp konstrukcji quadrototra, pierwsze loty próbne zaplanowano do przeprowadzenia w marcu 200 r. Wykonane prace mogą przyczynić się do upowszechnienia bezzałogowych obiektów latających w zastosowaniach istotnych dla codziennego życia społeczeństwa. Bibliografia [] Gruszecki J. (red.): Bezpilotowe aparaty latające. Systemy sterowania i nawigacji. OW Politechniki Rzeszowskiej, 2002. [2] [http://uavp.ch/moin] [3] [http://mikrokopter.de/ucwiki/] [] [http://www.embeddedarm.com/products/board-detail. php?product=ts-7300] [5] Skiba G., Żabiński T., Bożek A.: Rapid Control Prototyping with Scilab/Scicos/RTAI for ARM-based Embedded Platform. Real-Time Workshop International Multiconference on Computer Science and Information Technology, 200. 0

Nr 3/200 Implementacja sprzętowa protokołu PS/2 w układzie FPGA XILINX Spartan III XC3S000 Szymon Kozień, Wojciech Mysiński - Koło Naukowe Techniki Cyfrowej, WIEiK, Politechnika Krakowska kłady FPGA (Field Programmable Gate Array) mają coraz większą rzeszę zwolenników, również wśród pasjonatów i amatorów techniki cyfrowej. Duża funkcjonalność, malejące ceny, darmowe zaawansowane środowiska programistyczne oraz rozbudowane języki opisu sprzętu skutkują coraz większym zainteresowaniem układami FPGA. Wiele projektów realizowanych w strukturach programowalnych wymaga komunikacji z użytkownikiem przy pomocy przycisków. Zwykle taka potrzeba zachodzi w trakcie weryfikacji działania złożonego układu cyfrowego. Proces ten jest szczególnie ważnym etapem tworzenia oprogramowania i zazwyczaj podzielony jest na kilka części mających na celu zapewnienie, że produkt końcowy będzie wysokiej jakości. Każdy etap testowania polega na poddaniu badanego modułu odpowiednim wymuszeniom oraz obserwacji jego odpowiedzi. W tym celu stosuje się wygodne narzędzie umożliwiające komunikację układu ze światem zewnętrznym. W dostępnych na rynku płytach prototypowych z układami FPGA montowane są przyciski typu microswitch. Ich liczba może być niewystarczająca dla potrzeb projektanta. Ze względu na występowanie drgań zestyków przycisku mechanicznego zachodzi konieczność projektowania dodatkowych układów wewnątrz struktury FPGA. Z drugiej strony niemal każda płyta prototypowa wyposażona jest w interfejs umożliwiający podłączenie do niej standardowej klawiatury komputerowej PS/2. Warto wykorzystać to podczas planowania komunikacji użytkownika z zaprojektowanym układem. Koszt gotowej klawiatury komputerowej jest tak niski, że nie ma sensu projektować jej od początku, lepiej skorzystać z gotowego rozwiązania dostępnego w wielu konfiguracjach i wykonaniach. Przedstawiony moduł w strukturze FPGA może być wykorzystany do projektów większych układów sterowania lub kontroli, gdzie pełna klawiatura będzie zastosowana do wprowadzania danych przez użytkownika. Złącze oraz interfejs klawiatury PC (PS/2) Rys.. Gniazdo złącza PS/2 Złącze PS/2 ma sześć pinów (rys. ), z czego tylko cztery wykorzystane są w interfejsie klawiatury PC. Klawiatura zasilana jest napięciem +5 V. Sygnał danych oraz sygnał zegarowy transmitowane są kolejno poprzez piny oraz 5. Urządzenie zasilane jest z pinu. Masa urządzenia podłączona jest do pinu 3. Pozostałe wyjścia złącza (2 oraz 6) nie są używane przez standardową klawiaturę PC. Protokół PS/2 Transmisja danych w protokole PS/2 odbywa się szeregowo, synchronicznie. Sygnał zegarowy nadawany jest wyłącznie przez urządzenie PS/2 []. Jeżeli następuje jakieś zdarzenie (np. wciśnięcie lub zwolnienie klawisza), urządzenie wysyła do hosta dane zgrupowane w -bitowej ramce (rys. 2). Każda ramka zawiera bit startu (zawsze równy 0), bitów danych, bit parzystości (kontrola nieparzystości) oraz bit stopu (zawsze równy ). Transmisja danych, gdy host wysyła rozkaz do urządzenia, przebiega nieco inaczej (rys. 3). By rozpocząć transmisję danych, host ustawia sygnał zegarowy na poziom niski. Po 00 μs przywraca sygnał zegarowy na poziom wysoki oraz ustawia sygnał danych na poziom niski. Jest to informacja dla urządzenia, by zaczęło nadawać sygnał zegarowy. Przy każdym zboczu opadającym sygnału zegarowego host wystawia na wyjście DATA (pin ) kolejny bit ramki. Po jedenastym zboczu narastającym sygnału zegarowego urządzenie wysyła bit ACK. Kodowanie klawiszy standardowej klawiatury PC Istnieją trzy sposoby kodowania klawiszy, z czego powszechnie używany jest kod nr 2 (obok kodu nr oraz kodu nr 3). W kodzie tym, każdy klawisz ma dwie unikalne -bitowe wartości liczbowe: make code wysyłany w chwili naciśnięcia klawisza, break code wysyłany w chwili zwolnienia klawisza. Klawisze w kodzie nr 2 można podzielić na dwie grupy. Pierwszą stanowią klawisze, których make code mieści się w jednej ramce. Druga grupa zawiera klawisze (tzw. rozszerzone), których make code wymaga wysłania dwóch ramek. Pierwsza ramka klawisza rozszerzonego zawiera zawsze wartość E0. Podczas zwalniania klawisza wysyłany jest break code, co najmniej dwuramkowy i zawiera zawsze ramkę F0. Strukturalny schemat ideowy modułu Moduł sterownika protokołu PS/2 (rys. ) ma wejścia: zegarowe, resetujące, sygnał KB_DATA, KB_. Na wyjściu modułu jest -bitowy kod aktualnie wciśniętego klawisza oraz jednobitowy znacznik kodu rozszerzonego. Układ składa się z pięciu bloków funkcjonalnych: układu sterującego, modułu wejścia/wyjścia, modułu wyjścia, rejestru oraz zespołu komparatorów. Układ sterujący (rys. 5) to typowa maszyna Moore a zrealizowana w oparciu o rejestr PIPO oraz odpowiedni układ kombinacyjny. Rejestr PIPO przechowuje aktualny stan maszyny. Wartości sygnałów sterujących maszyny zależą wyłącznie od jej stanu aktualnego. Układ jest synchronizowany zewnętrznym sygnałem zegarowym o częstotliwości MHz. Moduł REGISTER (rys. 6) pełni funkcję 3-bitowego rejestru przechowującego informacje o aktualnie przychodzącym rozkazie. Zawiera pola określające, czy klawisz, którego kod aktualnie jest odbierany ma być usunięty (F0), jest rozszerzony (E0) oraz czy nastąpiła zmiana w rejestrze PIPO modułu I/O. Stany odpowiednich bitów rejestru zależą od aktualnego stanu rozkazu.

Pomiary Automatyka Robotyka 3/200 REGISTER 0 D Q 0 Rys. 2. Komunikacja urządzenia z hostem REGISTER_IN 0 2 D flip -flop D Q 3 REGISTER_ Rys. 3. Komunikacja hosta z urządzeniem REGISTER_ 3 D flip -flop T Q 2 2 Kody make oraz break wybranych klawiszy (kod nr 2) KB_DATA KB_ RST KEY MAKE BREAK A C F0, C 0 5 F0, 5 UP ARROW E0, 75 E0, F0, 75 KP 75 F0, 75 PS/2 CONTROLLER MODULE I/O BLOCK CHANGE, RST_, SD_COUNT, SD_TIME DATA S PORT_DATA, PORT_, SD_COUNTER_, SD_TIMER_, COUNTER_, PISO_SET, SD_COUNTER_RST, COUNTER_RST COPARATOR DRIVER REGISTER_ KEY_, STATUS_, STATUS_IN, STATUS_MUX_ADDR KEY_MUX_ADDR REGISTER_IN, REGISTER_ PIPO_REGISTER KEY_, REGISTER_() Rys.. Schemat ideowy kontrolera PS/2 STATUS_ PUT BLOCK T flip-flop Rys. 6. Schemat ideowy rejestru I/O MODULE 0x7FEh IN PISO_SET SET KBDATA PISO SIPO KEY_ PORT_DATA IN IN KB GND STATUS_ SIPO PIPO PORT_ COUNTER_ COUNT IN IN T Q COUNTER_RST RST 0xAh IN 2 COUNTER T flip-flop IN SD_COUNTER_ SD_COUNTER_RST RST COUNTER IN 7 SD_TIMER_ COUNTER RST IN PISO_ COUNT_D DATA CHANGE SD_COUNT SD_TIME RST_ DRIVER 5 KEY_, STATUS_, STATUS_IN, STATUS_MUX_ADDR KEY_MUX_ADDR BUTTON_DRIVER Rys. 7. Schemat ideowy modułu I/O 9 ROM IN PREST_STATE NEXT_STATE PIPO REGISTER_IN REGISTER_ Rys. 5. Schemat ideowy układu sterowania 2 3 PORT_DATA, PORT_, SD_COUNTER_, SD_TIMER_, COUNTER_, PISO_SET, SD_COUNTER_RST, COUNTER_RST REGISTER_(0): jeżeli przyszła ramka F0, 0 w przeciwnym wypadku, REGISTER_(): jeżeli przyszła ramka E0, 0 w przeciwnym wypadku, REGISTER_(2): zmienia swą wartość na przeciwną przy każdym przyjściu nowej ramki. Moduł I/O (rys. 7) odpowiada za odbiór i nadawanie danych. Zawiera dwa bufory trójstanowe, które ustalają kierunek transmisji danych. Gdy dane są odbierane, na wyjściu buforów jest stan wysokiej impedancji. W pierwszej kolejności odbierane bity trafiają do rejestru SIPO. Gdy zostaną zliczone wszystkie zbocza zegarowe ramki, zawartość tego rejestru przerzucana jest do rejestru PIPO, dzięki czemu moż- 2

Nr 3/200 S DATA IN 0xE0 IN 2 IN 0xF0 IN 2 IN KEY_ IN 2 SD_TIME IN 7 0x6 IN 2 7 SD_COUNT IN 0xA IN 2 IN 0xC IN 2 REGISTER_ 3 STATUS_ CHANGE RST_ (0) () (2) () (2) () (5) (6) (7) (3) (0) () 9 go modułu (aktualnie wciśniętego). Komponent COMPARA- TORS nadzoruje zmiany w rejestrze PIPO modułu I/O oraz stan liczników służących do wysyłania danych. Moduł wyjścia (rys. 9) zawiera dwa multipleksery (jeden grupowy) dwuwejściowe ustawiające sygnały na wejściu rejestru wyjściowego i przerzutnika typu D. Adresy multiplekserów i sygnały przerzutników ustalane są przez układ sterownia. Podsumowanie Zaprojektowany sterownik protokołu PS/2 zaimplentowano sprzętowo w układzie FPGA Xilinx Spartan III XC3S000 []. Projekt zrealizowano w języku VHDL w środowisku programistycznym Xilinx ISE WebPack.2i [6]. Proces weryfikacji poprawności działania układu rozbity został na dwa etapy. W pierwszym przebadano zachowanie pojedynczych komponentów składowych, oraz całego układu w środowisku symulacyjnym (ModelSim XE III v.6.3.c [5] firmy Mentor Graphics). Drugi etap testowania polegał na sprawdzeniu działania układu w rzeczywistej strukturze FPGA. Wykorzystano w tym celu płytę uruchomieniową LiveDesign Evaluation Board firmy Altium [7], której sercem jest układ FPGA Spartan 3 XC3S000 firmy Xilinx. Weryfikacja zakończyła się sukcesem, a sterownik PS/2 stosowany jest w złożonych projektach jako moduł pomocniczy do wprowadzania danych dla procesu testowania innych struktur logicznych. Rys.. Schemat ideowy zespołu komparatorów PUT BLOCK DATA KEY_MUX_ADDR 0x00h IN IN2 Group MUX KEY_IN IN KEY_ KEY_ PIPO REGISTER_() 0 IN IN2 STATUS_IN D Q STATUS_ STATUS_MUX_ADDR MUX STATUS_ D flip -flop Rys. 9. Schemat ideowy modułu wyjścia liwy jest dalszy odbiór danych w rejestrze SIPO. Gdy dane mają być wysłane, na wyjście bufora danych przekazywany jest sygnał wyjściowy rejestru PISO. Wraz ze zboczem opadającym sygnału zegarowego, każdy kolejny bit przekazywany jest na wyjście układu. Moduł I/O zawiera też układy licznikowe używane podczas wysyłania danych z hosta. Blok BUTTON_DRIVER pełni rolę przerzutnika monostabilnego. Jego obecność wymagana jest ze względu na występowanie drgań zestyków przycisku mechanicznego RST. Moduł S (rys. ) kształtuje sygnał na wejście układu sterowania. Porównywane są odpowiednie sygnały z wartościami stałymi lub innymi sygnałami. Sprawdzane jest, czy wartość sygnału DATA zawiera rozkaz usunięcia (F0) lub kod rozszerzony (E0). Jeżeli aktualnie przetwarzany rozkaz sygnalizuje zwolnienie klawisza, określone zostaje, czy jego kod zgodny jest z kodem klawisza na wyjściu całe- Bibliografia. [www.computer-engineering.org/ps2keyboard/] Chapweske A.: The PS/2 Keyboard Interface, 2003. 2. Skahill K.: Język VHDL. Projektowanie programowalnych układów logicznych. WNT, Warszawa 200. 3. Zwoliński M.: Projektowanie układów cyfrowych z wykorzystaniem języka VHDL. WKiŁ, Warszawa 2007.. [www.xilinx.com/] Xilinx. 5. [www.xilinx.com/ise/mxe3/download.htm] - ModelSim Xilinx Edition III. 6. [www.xilinx.com/tools/webpack.htm] - ISE WebPACK Design Software. 7. [www.altium.com/community/nanoboard-resources/ livedesign-evaluation-boards/en/livedesign-evaluation- -boards_home.cfm] - LiveDesign Evaluation Boards. 3