AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk...

29
AUTOREFERAT dr inż. Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska Rzeszów, wrzesień 2018

Transcript of AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk...

Page 1: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

AUTOREFERAT dr inż. Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika Rzeszowska

Rzeszów, wrzesień 2018

Page 2: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

2

1. Imię i nazwisko Zbigniew Hajduk

2. Posiadane dyplomy i stopnie naukowe

2006 - dyplom uzyskania stopnia doktora nauk technicznych w dyscyplinie informatyka i specjalności systemy cyfrowe. Tytuł rozprawy doktorskiej: "Sprzętowa implementacja rozmytych sieci Petriego jako układów sterowania". Uniwersytet Zielonogórski, Wydział Elektrotechniki, Informatyki i Telekomunikacji. Promotor: dr hab. inż. Jacek Kluska, prof. PRz. Recenzenci: prof. dr hab. inż. Marian Adamski, prof. dr hab. inż. Leszek Rutkowski. Praca doktorska obroniona z wyróżnieniem,

1998 - dyplom ukończenia studiów magisterskich (z wyróżnieniem) na kierunku

elektrotechnika w zakresie aparatura elektroniczna. Politechnika Rzeszowska, Wydział Elektryczny,

1993 - świadectwo ukończenia technikum elektronicznego w Rzeszowie

o specjalności elektronika ogólna (z wynikiem celującym).

3. Informacja o dotychczasowym zatrudnieniu w jednostkach naukowych

2006 do chwili obecnej: adiunkt w Katedrze Informatyki i Automatyki Politechniki

Rzeszowskiej, 1999 - 2006: asystent w Katedrze Informatyki i Automatyki Politechniki

Rzeszowskiej, 1997 - 1998: asystent stażysta w Zakładzie Systemów Cyfrowych Politechniki

Rzeszowskiej.

4. Wskazanie osiągnięcia naukowego Jako osiągnięcie wynikające z art. 16 ust. 2 ustawy z dnia 14 marca 2003 r. o stopniach naukowych (Dz. U. 2016 r. poz. 882 ze zm. w Dz. U. z 2016 r. poz. 1311.) chciałbym przedstawić cykl 10 publikacji powiązanych tematycznie.

a) tytuł osiągnięcia Zaawansowane metody projektowania systemów cyfrowych z układami FPGA oraz ich zastosowanie.

Page 3: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

3

b) wykaz publikacji stanowiących osiągnięcie naukowe Publikacje wyszczególniono w porządku tematycznym. Wartości współczynnika wpływu (IF) podano zgodnie z rokiem opublikowania z wyjątkiem pozycji wskazanych odpowiednim przypisem. Liczbę punktów MNiSW podano na podstawie „Listy czasopism punktowanych MNiSW" właściwej dla danego roku publikacji.

[1] Z. Hajduk, Wprowadzenie do języka Verilog, Wydawnictwo BTC, 2009. (monografia, 319 stron, 12 pkt. MNiSW)

[2] Z. Hajduk, An FPGA embedded microcontroller, Microprocessor and Microsystems,

Vol. 38, No. 1, pp. 1-8, 2014. (IF1=0.598; 15 pkt. MNiSW) [3] Z. Hajduk, J. Sadolewski, B. Trybus, FPGA-based Execution Platform for IEC 61131-

3 Control Software, Przegląd Elektrotechniczny (Electrical Review), No. 8, pp. 187-191, 2011. (IF=0.242; 13 pkt. MNiSW)

Mój wkład w powstanie tej pracy polegał na opracowaniu i zrealizowaniu wszystkich rozwiązań sprzętowych dla FPGA, łącznie z zaprojektowaniem i wykonaniem prototypu sterownika oraz przygotowaniem i wykonaniem testów szybkości działania opracowanego sterownika FPGA, a także przygotowaniem tekstu dotyczącego implementacji FPGA. Mój udział procentowy szacuję na 60%.

[4] Z. Hajduk, B. Trybus, J. Sadolewski, Architecture of FPGA Embedded Multiprocessor

Programmable Controller, IEEE Transaction on Industrial Electronics, Vol. 62, No. 5, pp. 2952–2961, 2015. (IF=6.383; 50 pkt. MNiSW)

Mój wkład w powstanie tej pracy polegał na opracowaniu i zrealizowaniu wszystkich rozwiązań sprzętowych dla FPGA, łącznie z zaprojektowaniem i wykonaniem prototypu sterownika, oraz opracowaniem i wykonaniem testów porównawczych szybkości działania wieloprocesorowego sterownika FPGA z wybranymi sterownikami przemysłowymi. Przygotowałem również większość tekstu artykułu (wyjątek stanowi sekcja dotycząca architektury oprogramowania CPDev), łącznie z wykonaniem przeglądu literatury. Mój udział procentowy szacuję na 75%.

[5] Z. Hajduk, FPGA-based communication interface for persons with motor neuron diseases, Biomedical Signal Processing and Control, Vol. 27, pp. 51-59, 2016. (IF=2.214; 20 pkt. MNiSW)

[6] Z. Hajduk, Simple method of asynchronous circuits implementation in commercial

FPGAs, Integration, the VLSI Journal, Vol. 59, pp. 31-41, 2017. (IF=0.906; 20 pkt. MNiSW)

1 Ze względu na brak danych w bazie dla roku publikacji, przyjęto wartość IF z roku poprzedzającego (2013) w którym to artykuł był już dostępny w wersji elektronicznej.

Page 4: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

4

[7] Z. Hajduk, High accuracy FPGA activation function implementation for neural networks, Neurocomputing, Vol. 247, pp. 59-61, 2017. (IF=3.241; 30 pkt. MNiSW)

[8] Z. Hajduk, Hardware implementation of hyperbolic tangent and sigmoid activation

functions, Bulletin of the Polish Academy of Sciences, Technical Sciences, Vol. 66, No. 5, 2018 (artykuł zaakceptowany do publikacji - ukaże się w numerze 5 Biuletynu). DOI: 10.24425/124272 (IF2=1.156; 20 pkt. MNiSW)

[9] Z. Hajduk, Reconfigurable FPGA implementation of neural networks,

Neurocomputing, Vol. 308, pp. 227–234, 2018. (IF=3.241; 30 pkt. MNiSW) [10] J. Kluska, Z. Hajduk, Hardware Implementation of P1-TS Fuzzy Rule-Based Systems

on FPGA, Artificial Intelligence and Soft Computing, Lecture Notes in Computer Science, Vol. 7894, pp. 282-293, 2013. (10 pkt. MNiSW)

Mój wkład w powstanie tej pracy polegał na opracowaniu i wykonaniu wszystkich rozwiązań sprzętowych dla FPGA, a także przygotowaniu tekstu prezentującego część dotyczącą implementacji FPGA. Mój udział procentowy szacuję na 60%.

c) opis badań naukowych

W ciągu ostatniej dekady można zaobserwować szczególnie intensywny rozwój układów programowalnych FPGA oraz ich zastosowań. Układy te wykorzystywane są m. in. w takich dziedzinach jak cyfrowe przetwarzanie sygnałów w tym przetwarzanie obrazów oraz sekwencji wideo, obliczenia o wysokiej wydajności, informatyka medyczna, centra danych, przemysł kosmiczny i obronny, elektronika konsumencka, kryptografia, prototypowanie specjalizowanych układów ASIC i innych. Podstawową cechą aplikacji z układami FPGA w odniesieniu do realizacji opartych na mikroprocesorach jest większa szybkość działania wynikająca z możliwości równoległego wykonywania wielu operacji. Do zalet aplikacji FPGA można zaliczyć również większą niezawodność. Aplikacje realizowane z wykorzystaniem mikroprocesorów często angażują wiele abstrakcyjnych warstw oprogramowania w celu odpowiedniego podziału zadań i przydziału zasobów sprzętowych. Sposób działania systemów operacyjnych wprowadza ryzyko niewykonania w określonym czasie pewnych zadań krytycznych czasowo. Aplikacje realizowane sprzętowo z wykorzystaniem układów FPGA dzięki rzeczywistemu zrównolegleniu operacji i ich wykonywaniu w sposób deterministyczny minimalizują wspomniany problem. Warto również wspomnieć o tym, że w porównaniu z komputerami o dużej wydajności, aplikacje z układami FPGA realizujące te same algorytmy obliczeniowe, pozwalają na znaczącą redukcję całkowitego zużycia energii elektrycznej, i to przy często większej szybkości obliczeń. Z kolei zaletami aplikacji z układami FPGA w porównaniu z aplikacjami wykorzystującymi specjalizowane układy ASIC jest ich mniejszy koszt dla małych serii produkcyjnych, krótszy czas wprowadzenia gotowych produktów na rynek oraz możliwość łatwej zmiany funkcjonalności aplikacji poprzez zmianę konfiguracji układu FPGA.

Aplikacje z układami FPGA posiadają również pewne wady. Przede wszystkim zaliczyć do nich można istotnie bardziej złożony proces projektowania, wymagający od projektanta

2 Ze względu na brak danych w bazie dla lat 2017/2018 w momencie tworzenia zestawienia, przyjęto ostatnią podaną wartość z roku 2016.

Page 5: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

5

dużego nakładu pracy oraz pochłaniający znacznie więcej czasu, a także mniejszą elastyczność w odniesieniu do rozwiązań programowych wykorzystujących mikroprocesory. Dlatego też zastosowanie układów FPGA jest szczególnie uzasadnione w przypadku realizacji zadań krytycznych czasowo, natomiast jest kłopotliwe i często nieopłacalne w niektórych innych obszarach, takich jak np. implementacja interfejsu użytkownika, gdzie dobrze sprawdzają się rozwiązania programowe z typowymi mikroprocesorami. W odniesieniu do układów specjalizowanych ASIC aplikacje z układami FPGA charakteryzują się mniejszą szybkością działania wynikającą ze znacząco mniejszych częstotliwości taktowania które są możliwe do osiągnięcia w układach FPGA. Warto jednak zauważyć, że metodyka projektowania aplikacji FPGA i zarazem układów ASIC jest zbieżna dla kilku początkowych etapów takich jak specyfikacja w języku opisu sprzętu oraz symulacja funkcjonalna. Projekt pierwotnie przeznaczony dla układów FPGA można więc w razie potrzeby przenieść do realizacji za pomocą specjalizowanych układów ASIC, zyskując w ten sposób większą szybkość działania jednak kosztem elastyczności.

Wybranym aspektom metodyki projektowania systemów cyfrowych z wykorzystaniem struktur FPGA oraz ich zastosowaniom poświęcony został monotematyczny cykl publikacji. Rozważane w ramach tego cyklu zagadnienia można pogrupować następująco:

zastosowanie języka Verilog HDL w projektowaniu systemów cyfrowych z układami FPGA,

projektowanie "miękkich" implementacji mikroprocesorów i mikrokontrolerów, realizacja wbudowanego w układzie FPGA wieloprocesorowego sterownika

programowalnego (PLC) zgodnego z normą IEC61131-3, wykorzystanie struktur FPGA w inżynierii biomedycznej – w szczególności do

budowy układu wspomagającego komunikację z otoczeniem dla osób niepełnosprawnych z zanikiem mięśni,

projektowanie asynchronicznych układów potokowych z wykorzystaniem komercyjnych struktur FPGA,

sprzętowa realizacja funkcji aktywacji dla sieci neuronowych, rekonfigurowalna implementacja sieci neuronowych typu wielowarstwowy

perceptron, przeznaczona dla układów FPGA, zastosowanie narzędzi automatycznego generowania kodu w językach HDL do

projektowania układów cyfrowych w strukturach FPGA, wykorzystanie układów FPGA do budowy tzw. sprzętu rozmytego (fuzzy hardware) –

w tym w szczególności realizacja rozmytego systemu regułowego typu P1-TS. Projektowanie współczesnych systemów cyfrowych, implementowanych zarówno

z wykorzystaniem układów programowalnych FPGA jak i specjalizowanych ASIC, realizowane jest głównie w oparciu o języki opisu sprzętu (Hardware Description Languages, HDL). Chociaż tworzenie kodu w językach HDL przypomina w pewnym sensie programowanie z użyciem typowych języków programowania, to jednak zadania języków opisu sprzętu są znacznie bardziej złożone niż języków programowania. Języki HDL umożliwiają opis struktury oraz przede wszystkim opis zachowania projektowanego systemu cyfrowego. Uwzględniają również aspekty związane z kontrolą czasu wykonywania instrukcji języka oraz współbieżnością. Kod napisany w dowolnym języku programowania przekształcany jest przez kompilator do postaci ciągu instrukcji maszynowych, charakterystycznych dla danego mikroprocesora, które w typowym przypadku są wykonywane w sposób sekwencyjny, instrukcja po instrukcji. Z kolei kod utworzony w języku HDL narzędzia syntezy przeznaczone dla układów FPGA przekształcają do postaci skomplikowanej struktury połączeń bardzo wielu elementów takich jak generatory funkcji

Page 6: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

6

kombinacyjnych - tablice LUT (Look-Up Table), oraz przerzutniki flip-flop typu D. Efektywne projektowanie systemów cyfrowych z wykorzystaniem języków HDL, szczególnie gdy stosowany jest behawioralny sposób opisu projektowanego układu cyfrowego, wymaga od projektanta wiedzy jakiego typu struktura układu zostanie wywnioskowana przez narzędzia syntezy na podstawie tworzonego kodu. Dodatkowo wśród dostępnych konstrukcji językowych w ramach danego języka HDL dostępne są takie, które przeznaczone są wyłącznie do weryfikacji (opisu otoczenia projektowanego układu) oraz konstrukcje które można wykorzystać zarówno do celów syntezy jak i weryfikacji. Wszystkie te czynniki sprawiają, że skuteczne projektowanie systemów cyfrowych, uwzględniające również takie aspekty jak minimalizacja zapotrzebowania na zasoby logiczne docelowego układu FPGA oraz maksymalizacja szybkości działania projektowanego systemu, wymaga od projektanta bardzo dobrej znajomości semantyki i dostępnych konstrukcji języka HDL, właściwego doboru technik opisu dla danego przypadku jak również pewnego doświadczenia.

Obecnie dominującymi językami opisu sprzętu są Verilog oraz VHDL. Językowi Verilog poświęcona została monografia [1], która jest jedną z dwóch i zarazem pierwszą książką dostępną na polskim rynku wydawniczym tak obszernie opisująca zagadnienia projektowania układów cyfrowych z wykorzystaniem języka Verilog (w ciągu niespełna dziewięciu lat książka została sprzedana w ok. 600 egzemplarzach). Oprócz prezentacji elementów języka w monografii omówiono również strukturalny i behawioralny sposób opisu układów cyfrowych, modelowanie układów kombinacyjnych i sekwencyjnych, w tym modelowanie procesów współbieżnych, zaprezentowano zagadnienia związane z symulacją oraz przedstawiono szereg przykładowych projektów począwszy od stosunkowo prostych aż po bardziej złożone takie jak sprzętowa obsługa magistrali jednoprzewodowej 1-wire oraz realizacja zintegrowanych systemów cyfrowych (SoC) wykorzystujących tzw. miękkie implementacje 8-bitowych mikrokontrolerów.

Zagadnieniom projektowania wspomnianych miękkich implementacji mikroprocesorów i mikrokontrolerów, istniejących w postaci wirtualnych komponentów (Intellectual Property Cores, IP Cores, czyli bloków funkcjonalnych, które nie są dostępne w postaci fizycznej jako np. bloki ASIC, lecz ich funkcjonalność lub struktura opisana jest w języku HDL albo za pomocą specjalnej listy połączeń, i które to bloki mogą być zaimplementowane z wykorzystaniem zasobów logicznych układu FPGA) poświęcono zarówno dość dużo miejsca w monografii [1] jak i oddzielny artykuł [2]. Wykorzystanie miękkich implementacji mikrokontrolerów, jako wybranych elementów składowych projektowanego systemu cyfrowego, pozwala połączyć zaletę szybkości działania rozwiązań sprzętowych z łatwością i elastycznością realizacji niektórych zadań w sposób programowy z użyciem typowych języków programowania. Dodatkowo miękkie implementacje mikrokontrolerów mogą być wyposażane w specjalizowane sprzętowe bloki peryferyjne oraz mogą dysponować specjalną listą instrukcji zoptymalizowaną do potrzeb konkretnej aplikacji.

W monografii [1] omówiono szczegółowo, sposób projektowania abstrakcyjnego mikroprocesora o architekturze RISC oraz podano kompletne kody zaprojektowanych wirtualnych komponentów dwóch 8-bitowcyh mikrokontrolerów kompatybilnych odpowiednio z mikrokontrolerami z rodziny Microchip PIC16F87x (ASIC) oraz mikrokontrolerem Xilinx PicoBlaze (wirtualny komponent). Obydwa zaprojektowane wirtualne komponenty mikrokontrolerów charakteryzują się ulepszoną architekturą w stosunku do swoich pierwowzorów, pozwalającą na realizację cyklu maszynowego trwającego dokładnie 1 takt zegara (dla porównania: cykl maszynowy mikrokontrolerów PIC16F87x trwa 4 takty zegara, a mikrokontrolera PicoBlaze - 2 takty). Dodatkowo, w przeciwieństwie do mikrokontrolerów Microchip PIC16F87x dla których realizacja instrukcji skoków wymaga 2 cykli maszynowych (8 taktów zegara), zaprojektowany wirtualny komponent odpowiednika tego mikrokontrolera potrzebuje w takim przypadku

Page 7: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

7

tylko jednego cyklu maszynowego. Stąd też miękka implementacja zaprojektowanego mikrokontrolera będącego odpowiednikiem rodziny PIC16F87x, przy tej samej częstotliwości taktującej jest 4-krotnie szybsza od swojego pierwowzoru dla regularnych instrukcji oraz 8-krotnie szybsza dla instrukcji skoków. Z kolei zaprojektowana implementacja wirtualnego komponentu mikrokontrolera PicoBlaze jest 2-krotnie szybszy od pierwowzoru dla tej samej częstotliwości taktowania. Warto również wspomnieć, że oryginalny wirtualny komponent mikrokontrolera PicoBlaze istnieje wyłącznie w postaci opisu strukturalnego wykorzystującego elementy biblioteczne charakterystyczne dla konkretnej rodziny układów programowalnych i praktycznie nie może być wykorzystany w przypadku użycia układów FPGA innego producenta niż Xilinx. Zaprojektowany wirtualny komponent odpowiednika tego mikrokontrolera istnieje w postaci opisu behawioralnego w języku Verilog, dzięki czemu jest bardziej uniwersalny i może być zaimplementowany w układach FPGA dowolnego producenta.

Przedstawiony w monografii [1] wirtualny komponent mikrokontrolera z rodziny PIC16F87x realizuje co prawda cykl maszynowy trwający 1 takt zegara ale wykorzystuje w tym celu obydwa (narastające i opadające) zbocza sygnału zegarowego. W pracy [2] rozważane są dodatkowo dwie inne wersje tego mikrokontrolera różniące się nieco przyjętym sposobem taktowania. Obydwie wersje wymagają już tylko jednego zbocza sygnału taktującego. Dla pierwszej z nich cykl maszynowy trwa 2 takty zegara zaś dla drugiej - 1 takt. Pomimo, że wersja mikrokontrolera z cyklem maszynowym trwającym 2 takty zegara charakteryzuje się najwyższą możliwą do osiągnięcia częstotliwością taktowania (z kolei wersję wykorzystującą obydwa zbocza cechuje najniższa maksymalna częstotliwość taktowania), to jednak najkrótszy czas realizacji programu testowego (wyliczanie liczb pierwszych izolowanych z pewnego zakresu), a tym samym najwyższą wydajność osiąga wersja mikrokontrolera z cyklem maszynowym trwającym 1 takt zegara i wykorzystująca pojedyncze zbocze sygnału zegarowego. Tabela 1. Porównanie cech opracowanego wirtualnego komponentu mikrokontrolera z innymi rozwiązaniami (FPGA Xilinx Spartan-3A)

Nazwa Odpowiednik

ASIC

Liczba bajtów RAM

Liczba poziomów

stosu

Liczba taktów zegara: instr.

regularne/skoki

Liczba bloków

logicznych Slice

Maksymalna częstotliwość taktowania

[MHz] MINIRISC PIC16C57 72 4 1/4 347 81.9

RISC8 PIC16C57 72 2 1/2 292 64.1 16F84 PIC16F84 128 8 4/8 568 69.7 PPX16 PIC16F84 68 8 1/2 511 62.0 CQPIC PIC16F84 68 8 4/8 498 99.0

RISC16F84 PIC16F84 192 16 2/4 461 102.5 PIC16_8ZH PIC16F87x 192 16 1/1 571 55.8

Zamieszczone w tabeli 1 porównanie cech implementacji zaprojektowanego wirtualnego

komponentu mikrokontrolera z rodziny PIC16F87x (ostatni wiersz w tabeli) z innymi podobnymi opracowaniami pokazuje, że realizacja instrukcji skoków w ciągu pojedynczego taktu zegara jest jego unikalną cechą. Przeprowadzone testy wydajności pokazują również, że pomimo niemal dwukrotnie mniejszej częstotliwości taktowania (55MHz vs 100MHz) w porównaniu z jednym z istniejących podobnych wirtualnych komponentów (RISC16F84), czas realizacji programu testowego był 27% krótszy dla opracowanego wirtualnego komponentu mikrokontrolera z rodziny PIC16F87x (436.995ms vs 553.839ms).

Oprócz opracowanych wirtualnych komponentów dwóch różnych mikrokontrolerów zaprojektowano również wirtualne komponenty specjalnych bloków sprzętowych ułatwiających proces uruchamiania oprogramowania dla tych mikrokontrolerów. Bloki te

Page 8: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

8

zostały opisane zarówno w monografii [1] jak i pracy [2]. Kod programu dla mikrokontrolerów przechowywany jest w blokach pamięci Block RAM dostępnych wewnątrz układów FPGA. Zmiana zawartości tej pamięci wymaga w typowych przypadkach ponownej syntezy i implementacji całego projektu lub też dość kłopotliwej wymiany zawartości części pliku konfiguracyjnego dla układu FPGA, odpowiadającej za dane znajdujące się w konkretnych blokach pamięci Block RAM. Częsta wymiana kodu programu dla wbudowanego mikrokontrolera, mająca miejsce podczas fazy uruchamiania projektowanego systemu cyfrowego, realizowana z wykorzystaniem standardowych technik wymiany zawartości pamięci Block RAM jest zatem dość kłopotliwa i czasochłonna. Specjalnie opracowane wirtualne komponenty sprzętowych bloków, które na czas uruchamiania oprogramowania należy zintegrować z całym projektem realizowanego systemu, umożliwiają prostą wymianę kodu programu dla wbudowanych mikrokontrolerów z wykorzystaniem transferu danych poprzez zwykły port szeregowy. Wymiana kodu programu może odbywać się podczas pracy całego systemu. Opracowane bloki sprzętowe bezpośrednio interpretują i rozmieszczają w pamięci Block RAM dane zawarte w przesyłanym pliku tekstowym w formacie Intel HEX, generowanym przez typowe kompilatory. Dzięki temu możliwa jest prosta i sprawna wymiana kodu programu dla wbudowanego mikrokontrolera.

Z zagadnieniami projektowania miękkich implementacji mikroprocesorów związane są również kolejne opracowania przedstawione w publikacjach [3] oraz [4]. Są to implementowane w układzie FPGA sterowniki programowalne (PLC) w wersji jedno oraz wieloprocesorowej, programowane za pomocą pakietu inżynierskiego CPDev, zgodnego z normą IEC61131-3. Pakiet CPDev jest opracowaniem niewielkiego zespołu programistów z Katedry Informatyki i Automatyki Politechniki Rzeszowskiej. Jego zasadniczym składnikiem jest kompilator języka ST (programy napisane w innych językach normy są najpierw tłumaczone na język ST), generujący uniwersalny kod pośredni, który po stronie sterownika wykonywany jest przez maszynę wirtualną. Maszyna ta jest z kolei programem napisanym w języku ANSI C, dedykowanym dla konkretnej platformy mikroprocesorowej w oparciu o którą zbudowany jest sterownik programowalny. Wadą takiego rozwiązania jest dość duży narzut czasowy związany z procesem interpretacji kodu pośredniego przez maszynę wirtualną. Czas interpretacji kodu pośredniego może być jednak znacząco zredukowany poprzez zastosowanie opracowanej maszyny sprzętowej będącej w istocie specjalizowanym mikrokontrolerem, którego lista rozkazów tożsama jest z listą instrukcji uniwersalnego kodu pośredniego. Zaprojektowano dwie wersje takiego 32-bitowego mikrokontrolera (maszyny sprzętowej), mianowicie: podstawową i rozszerzoną, które przedstawiono w pracy [3]. Wersja podstawowa nie wymaga żadnych zmian w kompilatorze języka ST. Podążając za pierwotną architekturą pakietu CPDev wersja ta wykorzystuje 8-bitowe magistrale danych pamięci operacyjnej oraz pamięci programu, chociaż jednostka arytmetyczno-logiczna jest 32-bitowa. Dla wersji rozszerzonej szczególny nacisk położono na optymalizację czasu wykonywania poszczególnych instrukcji (minimalizację liczby taktów zegara niezbędnych do wykonania danej operacji), wprowadzając również w pełni 32-bitową magistralę danych pamięci operacyjnej oraz 16-bitową magistralę danych pamięci programu. Wersja rozszerzona wymaga pewnych zmian w sposobie działania kompilatora języka ST: kod instrukcji wraz z niezbędnymi operandami musi zawsze zajmować parzystą liczbą bajtów oraz zmienne muszą być alokowane pod adresami będącymi wielokrotnością ich rozmiarów (np. 32-bitowe zmienne muszą być rozmieszczane w komórkach pamięci o adresie podzielnym przez 4).

W tabeli 2 podano porównanie czasów realizacji trzech programów testowych napisanych w języku ST dla sterownika FPGA zbudowanego w oparciu o obydwie opracowane wersje maszyny sprzętowej oraz dwóch innych sterowników wykorzystujących typowe 8 i 32 bitowe

Page 9: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

9

mikrokontrolery. Uwzględniając nawet różnice w szybkości taktowania, sterowniki FPGA okazały się wielokrotnie - nawet kilkadziesiąt razy - szybsze od sterowników wykorzystujących mikrokontrolery ATMega oraz ARM. Dodatkowo sterownik FPGA z rozszerzoną wersją maszyny sprzętowej jest 2...3-krotnie szybszy od sterownika opartego na podstawowej wersji maszyny w przypadku gdy obydwa sterowniki taktowane są maksymalną dopuszczalną częstotliwością (mimo, że maksymalna częstotliwość taktowania sterownika z rozszerzoną wersją maszyny sprzętowej jest znacząco niższa).

Tabela 2. Wyniki testów porównawczych szybkości działania dwóch wersji maszyn sprzętowych z innymi platformami wykorzystującymi maszynę wirtualną CPDev (czasy podano w ms)

Typ testu FPGA wersja podstawowa

@75MHz

FPGA wersja rozszerzona @50MHz

SMC ATMega128 @14.7 MHz

ARM AT91SAM7S @18.4 MHz

Liczby pierwsze 1538 757 118 281 35 772 Liczby doskonałe 1488 729 122 045 34 847 Konwersje binarno-dziesiętne

1533 520 118 548 40 269

Bazując na opracowanej maszynie sprzętowej w wersji rozszerzonej, w pracy [4]

przedstawiono z kolei architekturę wieloprocesorowego sterownika programowalnego implementowanego w układzie FPGA. Zasadniczą zaletą takiego sterownika jest możliwość współbieżnego wykonywania pewnej liczby zadań sterujących. Każde zadanie, zapisane jako program w języku normy IEC, jest w takim przypadku wykonywane przez oddzielny procesor sterownika. Umożliwia to w pełni równoległą realizację zadań jakich jak np. szybkie sterowanie logiczne wraz z wymagającym większego nakładu obliczeniowego sterowaniem ciągłym, komunikacją czy obsługą panelu operatorskiego. Gdyby wszystkie te zadania wykonywane były przez pojedynczy procesor sterownika wówczas czas cyklu sterownika musiałby być znacznie dłuższy, w niektórych przypadkach zbyt długi by spełnić wymóg krótkiego czasu odpowiedzi dla jednego z tych zadań, np. szybkiego sterowania logicznego.

Głównym elementem składowym omawianego wieloprocesorowego sterownika programowalnego jest pewna liczba procesorów będących ulepszonymi wersjami omówionej w pracy [3] maszyny sprzętowej w wersji rozszerzonej (liczbę tych procesorów można dość swobodnie dobierać w zależności od potrzeb i dostępnych zasobów wybranego układu FPGA). Zmiany i ulepszenia, które wprowadzono w funkcjonalności wspomnianej maszyny sprzętowej obejmują wprowadzenie mechanizmów komunikacji z innymi takimi jednostkami w systemie poprzez wykorzystanie pamięci globalnej i rejestrów bezpośredniego dostępu, wyposażenie w zmiennoprzecinkową jednostkę arytmetyczną, dodanie interfejsu do omówionych dalej sprzętowych bloków funkcjonalnych, uzupełnienie listy instrukcji o semafory oraz instrukcję oczekiwania na wystąpienie zdarzenia w innym procesorze (WAIT), a także wprowadzenie możliwości odczytu wszystkich zmiennych w czasie pracy systemu i umożliwienie pracy krokowej (on-line debugging). Komunikacja pomiędzy poszczególnymi procesorami sterownika odbywa się za pomocą pamięci globalnej, podobnie jak określa to norma IEC61131-3. Dostęp do wspólnej dla wszystkich procesorów pamięci globalnej realizowany jest z wykorzystaniem specjalnie opracowanego sprzętowego arbitra dostępu. Warto tu wspomnieć, że każdy z procesorów sterownika wyposażony jest we własną pamięć danych i programu, stąd pamięć globalna wykorzystywana jest tylko wówczas gdy wymagana jest wymiana danych pomiędzy procesorami. Pamięć globalna nie jest z kolei angażowana w przypadku użycia rejestrów bezpośredniego dostępu, których odczyt może być realizowany w dowolnym momencie przez dowolny procesor systemu. Skraca to znacząco czas synchronizacji zadań i komunikacji między procesorami.

Page 10: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

10

Opracowany wieloprocesorowy sterownik programowalny posiada również możliwość integracji tzw. sprzętowych bloków funkcjonalnych (Hardware Function Block, HFB) mogących pełnić funkcje np. akceleratorów sprzętowych lub bloków realizujących specyficzne algorytmy obliczeniowe czy też sterujące. Wykorzystanie sprzętowych bloków funkcjonalnych jest sposobem na znaczące skrócenie czasu realizacji określonych zadań. Z punktu widzenia programisty sterownika bloki sprzętowe wywoływane są analogicznie jak instancje zwykłych, programowych bloków funkcjonalnych normy IEC. Sprzętowe bloki funkcjonalne mogą być projektowane przez niezależnych projektantów i integrowane z wirtualnym komponentem wieloprocesorowego sterownika programowalnego na etapie specyfikacji całego systemu dla narzędzi syntezy i implementacji FPGA. Komunikacja pomiędzy sprzętowymi blokami funkcjonalnymi a procesorami sterownika odbywa się za pomocą specjalnie opracowanego interfejsu. Przy czym w systemie wieloprocesorowym możliwe są dwa scenariusze: każdy z procesorów dysponuje dedykowanym zestawem sprzętowych bloków funkcjonalnych lub też kilka procesorów może współdzielić pewną liczbę takich bloków, do których dostęp odbywa się za pomocą sprzętowego układu arbitrażu, podobnie jak to ma miejsce w przypadku pamięci globalnej.

Oprócz opracowania wirtualnych komponentów sterownika programowalnego opisanych w języku Verilog HDL, zaprojektowano również, zmontowano (łącznie z montażem układów FPGA w obudowach typu BGA o 676 wyprowadzeniach) oraz przetestowano prototyp platformy sprzętowej sterownika. Na rys. 1 przedstawiono wykonaną płytę główną sterownika z układem FPGA Xilinx Spartan-3AN (XC3S1400AN-3FGG676), wykorzystywaną do testowania maszyn sprzętowych (jednostek centralnych sterownika) przedstawionych w [3]. Rys. 2 ukazuje z kolei kompletną platformę sprzętową wieloprocesorowego sterownika programowalnego, zawierającą płytę główną z układem FPGA Xilinx Spartan-6 (XC6SLX100-3FGG676), widoczną w lewym dolnym rogu rysunku, oraz moduły wejść-wyjść cyfrowych i analogowych. Ze względu na zastosowanie układów FPGA o dużej liczbie wyprowadzeń i obudowach typu BGA, płyty drukowane PCB modułów głównych sterownika wymagały użycia aż 6 warstw sygnałowych oraz 2 zasilających (łącznie 8 warstw), podczas gdy płyty PCB modułów wejścia-wyjścia projektowane były z wykorzystaniem standardowego laminatu dwustronnego. Zastosowany w module głównym prototypu sterownika układ FPGA o raczej średniej liczbie dostępnych zasobów logicznych pozwolił na implementację sterownika zawierającego maksymalnie 8 procesorów - każdy z procesorów mógł być taktowany maksymalną częstotliwością wynoszącą nieco ponad 40MHz.

Rys. 1. Moduł główny z układem FPGA Xilinx Sprartan-3AN

Page 11: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

11

Rys. 2. Kompletna platforma sprzętowa prototypu wieloprocesorowego sterownika programowalnego

Wykorzystując zbudowany prototyp sterownika z rys. 2 przeprowadzono szereg eksperymentów umożliwiających porównanie szybkości działania opracowanego sterownika z typowymi przemysłowymi sterownikami PLC i PAC, a także pokazujących zalety wykorzystania większej liczby procesorów sterownika oraz zastosowania sprzętowych bloków funkcjonalnych. Wyniki tych eksperymentów przedstawiono w tabelach 3-5. Zastosowano 3 programy testujące napisane w języku ST, mianowicie: realizacja stosunkowo prostego sterowania logicznego (LC), obliczanie wyjścia regulatora PID, którego transmitancja dyskretna opisana jest równaniem różnicowym w dziedzinie czasu, oraz wyliczanie wyjścia 4-wejściowego rozmytego systemu regułowego typu Takagi-Sugeno-Kanga, z liniowymi funkcjami przynależności dla zmiennych wejściowych, który w literaturze w skrócie oznaczono jako P1-TS. Dwa ostatnie wymienione algorytmy wykorzystują obliczenia zmiennoprzecinkowe. Widoczny w tabeli tzw. współczynnik szybkości (Speed Factor, SF) pokazuje ile razy opracowany sterownik FPGA wykorzystujący tylko jeden procesor jest szybszy od pozostałych wymienionych sterowników. Z kolei współczynnik redukcji czasu (Time Reduction Factor, TRF) informuje o ile w ujęciu procentowym czas obliczenia algorytmu testowego przy wykorzystaniu większej liczby procesorów jest krótszy od przypadku gdy wykorzystywany jest tylko jeden procesor.

Jak pokazują wyniki przedstawione w tabeli 3, opracowany sterownik programowalny jest wielokrotnie szybszy od przemysłowych sterowników GE Fanuc i Siemens. Jednak w porównaniu ze sterownikiem Beckhoff opracowany sterownik okazał się znacząco wolniejszy dla algorytmu sterowania logicznego. Dane zawarte w tabeli 4 pokazują z kolei, że istotne skrócenie czasu obliczeń, zwłaszcza w przypadku bardziej złożonych algorytmów dla których istnieje możliwość zrównoleglenia obliczeń, można uzyskać poprzez wykorzystanie kilku procesorów sterownika pracujących współbieżnie.

Page 12: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

12

Tabela 3. Porównanie czasu obliczeń (T) algorytmów testowych oraz współczynnika szybkości (SF) dla sterownika FPGA oraz wybranych sterowników przemysłowych

Algorytm testowy

LC PID P1-TS Sterownik

T[µs] SF T[µs] SF T[µs] SF

GE Fanuc Versa-Max

446.8 38.8 2294 417.1 36700 312.9

Siemens S7-1200

339.8 29.5 122.9 22.3 2383 20.3

Beckhoff CP6607

1.0 0.08 9.4 1.7 139.2 1.2

FPGA 1 CPU

11.5 1 5.5 1 117.3 1

Tabela 4. Zestawienie czasu obliczeń (T) algorytmów testowych oraz współczynnika redukcji czasu (TRF) dla większej liczby procesorów sterownika FPGA

Algorytm testowy

PID P1-TS Liczba procesorów sterownika FPGA

T[µs] TRF[%] T[µs] TRF[%]

1 5.5 0 117.3 0 2 4.8 12.7 63.0 46.3 4 - - 38.7 67.0 8 - - 28.7 75.5

Tabela 5. Porównanie czasu obliczeń (T) algorytmów testowych oraz współczynnika szybkości (SF) dla sterownika FPGA wyposażonego w sprzętowe bloki funkcjonalne (HFB)

Algorytm testowy LC PID P1-TS Sterownik

FPGA T[µs] SF T[µs] SF T[µs] SF

1 CPU 11.5 1 5.5 1 117.3 1

1 CPU + HFB

0.0042 2738 0.44 12.5 10.3 11.4

Innym sposobem przyśpieszenia działania sterownika jest wykorzystanie sprzętowych

bloków funkcjonalnych, co z kolei ilustrują wyniki testów zawarte w tabeli 5. Jednakże w przeciwieństwie do bloków funkcjonalnych normy IEC, sprzętowe bloki funkcjonalne nie mogą być bezpośrednio tworzone przez programistę/użytkownika sterownika, lecz muszą być dostarczone przez projektanta/producenta opracowanego sterownika np. w postaci pliku z konfiguracją dla danego układu FPGA. Wymiana konfiguracji układu FPGA (zmiana zawartości pamięci konfiguracji dla układu FPGA na zawartość dostarczoną przez projektanta/producenta), którą może dokonać użytkownik sterownika jest też stosunkowo prostym sposobem na zmianę funkcjonalności całego sterownika. Na przykład w ramach dostępnej platformy sprzętowej z układem FPGA można zmieniać takie parametry sterownika jak liczba dostępnych procesorów, wielkość pamięci RAM dla każdego procesora, rodzaj i ilość sprzętowych bloków funkcjonalnych itp.

Przeprowadzone testy pokazały, że pewną wadą opracowanego sterownika jest stosunkowo wolna realizacja sterowania logicznego w porównaniu z przemysłowym sterownikiem Beckhoff. W znacznej mierze jest to związane z istniejącą architekturą środowiska CPDev oraz postacią listy instrukcji uniwersalnego kodu pośredniego, pierwotnie przeznaczoną dla programowych maszyn wirtualnych, którą opracowany sterownik z założenia musiał implementować. Warto może w tym miejscu wspomnieć, że prowadzone

Page 13: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

13

są dalsze prace mające na celu opracowanie szybszej jednostki centralnej dla wieloprocesorowego sterownika programowalnego, w szczególności zoptymalizowanej pod kątem realizacji sterowania logicznego. Chociaż wyniki tych prac nie zostały jeszcze nigdzie opublikowane to wstępnie przeprowadzone testy pokazują, że prototypowa wersja nowo opracowanej jednostki centralnej o architekturze RISC z listą instrukcji bezpośrednio opartą na języku IL normy IEC61131-3, wraz z dedykowanymi mechanizmami pozwalającymi na przyśpieszenie sterowania logicznego, jest znacznie szybsza od obecnie wykorzystywanej w prototypie sterownika. Dla tego samego algorytmu sterowania logicznego nowa jednostka centralna realizuje sterowanie blisko 11 razy szybciej (aczkolwiek jednostka nie była jeszcze wyposażona w interfejs dla sprzętowych bloków funkcjonalnych i mechanizmy komunikacji w środowisku wieloprocesorowym, których implementacja niewątpliwie spowodowałaby zmniejszenie maksymalnej częstotliwości taktowania, a tym samym pewne wydłużenie czasu obliczeń danego algorytmu).

Kolejnym zagadnieniem podjętym w ramach omawianego cyklu publikacji jest wykorzystanie układów FPGA w inżynierii biomedycznej. W pracy [5] przedstawiony został, oparty na układzie FPGA, interfejs komunikacyjny dla osób niepełnosprawnych z zanikiem mięśni. Jest on dedykowany szczególnie dla osób o dużym stopniu niepełnosprawności, które nie mogą komunikować się za pomocą mowy, lecz są w stanie poruszać jedynie wybranymi partiami mięśni, np. policzków. Wykrycie faktu poruszenia danym mięśniem i przetworzenie tego zdarzenia na sygnał elektryczny, a w dalszej kolejności na sekwencję znaków alfabetu łacińskiego jest kluczowym zadaniem opracowanego interfejsu komunikacyjnego. W roli detektora ruchu mięśnia zaproponowano wykorzystanie czujników przyśpieszenia MEMS wyposażonych w interfejs cyfrowy. Zaproponowano użycie dwóch takich czujników umieszczonych na dwóch różnych mięśniach, którymi osoba niepełnosprawna może poruszać w sposób niezależny. W szczególności mogą to być np. mięśnie lewego i prawego policzka. Sygnały uzyskane z dwóch czujników mogą być następnie wykorzystane jako dwa znaki alfabetu Morse’a (kreska, kropka) przy pomocy których możliwe jest w dalszej kolejności tworzenie liter alfabetu łacińskiego, a w konsekwencji całych wyrazów i zdań. Sygnały z czujników przyśpieszenia mogą być również wykorzystane jako informacja wejściowa dla oprogramowania tzw. wirtualnej klawiatury za pomocą której możliwe jest wprowadzanie poszczególnych wyrazów oraz zdań (np. pewną odmianą takiej klawiatury posługiwał się znany niepełnosprawny fizyk Stephen Hawking). Dane odczytane bezpośrednio z czujników przyśpieszenia muszą być jednak wcześniej odpowiednio przetworzone, tak aby możliwe było ich dalsze wykorzystanie. Między innymi konieczne jest zredukowanie amplitudy szumów zawartych w sygnale z czujników, usunięcie składowej stałej oraz wytłumienie składowych wolno zmiennych i w końcu detekcja zdarzenia poprzez wykrycie przekroczenia założonych wartości progowych sygnału. Wymienione funkcje realizowane są przez zasadniczy element składowy opracowanego interfejsu komunikacyjnego jakim jest blok przetwarzania sygnału. W celu realizacji dwóch pierwszych wymienionych wyżej operacji zaproponowano wykorzystanie kaskadowego połączenia dwóch filtrów cyfrowych: dolno przepustowego 31 rzędu o skończonej odpowiedzi impulsowej (FIR) oraz prostego filtru górno przepustowego 2 rzędu o nieskończonej odpowiedzi impulsowej (IIR). Ostatnia z wymienionych operacji realizowana jest za pomocą układu prostego komparatora okienkowego. Założono wykorzystanie arytmetyki zmienno przecinkowej dla operacji wykonywanych przez blok przetwarzania sygnału. Dzięki temu możliwe jest bezpośrednie użycie m.in. wartości współczynników dla filtrów cyfrowych, wyznaczonych symulacyjnie w środowisku Matlab.

W omawianej pracy [5] dużo miejsca poświęcono rozważaniom dotyczącym różnych sposobów realizacji bloku przetwarzania sygnału, odpowiednim dla implementacji w układach FPGA. Rozpatrywano m. in. wykorzystanie konwencjonalnego sposobu

Page 14: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

14

projektowania z kodowaniem "ręcznym" w języku opisu sprzętu, użycie wbudowanego mikrokontrolera (nieco lepiej wyposażonej wersji mikrokontrolera z pracy [2]), a także zastosowanie technik projektowania i narzędzi pozwalających na specyfikację systemu cyfrowego w jednym z typowych języków programowania (ostatniemu zagadnieniu nieco więcej miejsca zostanie poświęcone w oddzielnym akapicie niniejszego opracowania).

Rys. 3. Prototyp układu interfejsu komunikacyjnego

W pracy [5] przedstawiono także zaprojektowany i zmontowany prototyp całego urządzenia, pokazany również na rys. 3. Prototyp zawiera niewielką płytę główną z układem FPGA Xilinx Spartan-6 (XC6SLX9-2TQ144), bardzo prosty panel operatorski z alfanumerycznym wyświetlaczem LCD oraz również zmontowane dwie małe płytki znajdujące się w prawym dolnym rogu rysunku, zawierające czujniki MEMS typu LIS331H firmy ST. W lewym górnym rogu rysunku widoczny jest również fragment gotowej płyty pochodzącej od urządzenia typu game-pad (joystick) stosowanego w grach komputerowych i zawierającego interfejs USB. Za pomocą wspomnianej płyty przekazywane są sygnały dla oprogramowania wirtualnej klawiatury zainstalowanego na komputerze PC.

Oprócz generowania sygnałów wejściowych dla oprogramowania wirtualnej klawiatury, za pomocą opracowanego prototypu interfejsu komunikacyjnego można również bezpośrednio pisać tekst na dostępnym wyświetlaczu LCD wykorzystując alfabet Morse'a. Zastosowanie dwóch czujników dla dwóch oddzielnych znaków alfabetu Morse'a ułatwia wprowadzanie kolejnych liter alfabetu - nie jest wymagane rygorystyczne przestrzeganie odpowiednich interwałów czasowych dla poszczególnych znaków alfabetu Morse'a jak byłoby to konieczne w przypadku zastosowania tylko jednego czujnika. Wykorzystanie układów FPGA w konstrukcji interfejsu komunikacyjnego jest również przykładem integracji w pojedynczym układzie programowalnym wszystkich elementów składowych całego systemu oraz ilustracją podziału poszczególnych zadań pomiędzy sprzęt i oprogramowanie pracujące z wykorzystaniem miękkich implementacji mikrokontrolerów.

Warto również dodać, że idea budowy interfejsu komunikacyjnego dla osób niepełnosprawnych wraz z opracowanym rozwiązaniem układowym stały się przedmiotem zgłoszenia patentowego (P.416252) na które w konsekwencji uzyskano patent (PL230180, "Sposób i układ elektroniczny do komunikacji z otoczeniem osób niepełnosprawnych").

Page 15: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

15

Następnym dość istotnym zagadnieniem podjętym w pracy [6] jest opracowanie stosunkowo prostej metody implementacji potokowych układów asynchronicznych z wykorzystaniem typowych, komercyjnie dostępnych układów FPGA. Układy asynchroniczne mogą oferować pewne zalety w odniesieniu do najczęściej stosowanych układów synchronicznych. W szczególności mogą to być: mniejszy pobór mocy, brak problemów z dystrybucją globalnego sygnału zegarowego (clock skew), szybkość działania uzależniona od elementu o średnim czasie wykonywania operacji (dla odmiany w układach synchronicznych szybkość limitowana jest przez najwolniejszy element w systemie), mniejsza emisja zakłóceń elektromagnetycznych, automatyczna adaptacja do warunków pracy (napięcie zasilania, temperatura) oraz łatwość realizacji połączeń pomiędzy systemami taktowanymi sygnałami zegarowymi o różnych częstotliwościach. Układy asynchroniczne mają też pewne wady do których zalicza się znacznie trudniejszy proces projektowania, a także testowania i uruchamiania, konieczność eliminacji zjawisk takich jak hazard i wyścigi oraz brak kompletnych narzędzi wspomagających proces projektowania. Dodatkowe trudności wiążą się z realizacją układów asynchronicznych w typowych, komercyjnie dostępnych strukturach FPGA. Zarówno same układy FPGA jak i narzędzia projektowe dla niech dedykowane, przeznaczone są do realizacji układów typowo synchronicznych. Również wartości opóźnień wnoszonych przez zespoły tablic LUT i elementy połączeniowe wewnątrz układu FPGA znane są dopiero na bardzo późnym etapie implementacji projektu (faza rozmieszczania i planowania połączeń), co mocno utrudnia projektowanie układów asynchronicznych. W układach FPGA nie występują również elementy koordynujące, takie jak C-elementy Müllera, będące podstawowymi komponentami składowymi układów asynchronicznych. W końcu użytkownik posiada bardzo ograniczony wpływ na przebieg procesu rozmieszczania i planowania połączeń wewnątrz układu FPGA.

Mimo tych trudności w literaturze można znaleźć pewną liczbę realizacji wybranych układów asynchronicznych w strukturach FPGA. Jednak realizacje te wymagają od projektanta sporego nakładu pracy oraz stosowania specjalnych technik projektowych. Na przykład, muszą być stosowane specjalnie sformułowane ograniczenia projektowe (user constraints), tworzone sprzętowe makra oraz makra rozmieszczane relacyjnie, użytkownik musi ingerować w utworzony przez narzędzia syntezy opis układu na poziomie listy połączeń lub stosować wyrafinowane metody planowania podłoża dla FPGA itp.

CL2

CLK

R1 R2 R3CL1

a)

D Q

RI

AO

RO

AI

APR1

D Q

RI

AO

RO

AI

APR2CL1

ReqAck

D Q

RI

AO

RO

AI

APR3CL2

ReqAck

b)

Rys. 4. Typowy synchroniczny układ potokowy (a) i jego wersja asynchroniczna (b) wykorzystująca

opracowany moduł APR (CL oznacza układ kombinacyjny)

W przeciwieństwie do istniejących metod realizacji układów asynchronicznych, opracowana metoda jest stosunkowo prosta. Pozwala na implementację asynchronicznych układów potokowych w komercyjnych strukturach FPGA, nie wymagając przy tym żadnych specjalnych zabiegów ze strony projektanta. W uproszczeniu metoda polega na zastąpieniu

Page 16: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

16

standardowych przerzutników typu flip-flop, taktowanych zewnętrznym sygnałem zegarowym, przez specjalnie opracowane moduły asynchronicznych rejestrów potokowych APR (Asynchronous Pipe-line Registers), synchronizowanych lokalnie generowanymi sygnałami koordynującymi (rys. 4). Architektura opracowanego modułu APR ma interesującą właściwość tłumienia (pod pewnymi warunkami) impulsów hazardu potencjalnie mogących wystąpić zarówno w wewnętrznych układach kombinacyjnych, jak również w zewnętrznym, wejściowym układzie kombinacyjnym. Dzięki temu układy kombinacyjne w projektowanym systemie asynchronicznym mogą być standardowo opisywane z użyciem języka opisu sprzętu dokładnie w taki sam sposób jak układy synchroniczne, bez konieczności uwzględniania zjawiska hazardu. Dodatkową cechą modułu APR jest jego niewrażliwość na opóźnienia propagacji wnoszone przez zewnętrzny, wejściowy układ kombinacyjny (moduł może czekać dowolnie długo aż sygnał pojawi się na wyjściu układu kombinacyjnego). Jednakże architektura modułu APR wymaga by w każdym kolejnym cyklu pracy dane dostarczone do wejścia modułu różniły się od tych występujących na jego wyjściu – w przeciwnym przypadku sygnały koordynujące nie będą generowane. Tabela 6. Porównanie szybkości działania oraz zapotrzebowania na zasoby logiczne różnych wersji mikrokontrolera PicoBlaze (FPGA Xilinx Spartan-3A)

Tabela 7. Porównanie zapotrzebowania na zasoby FPGA oraz poboru mocy dla opracowanych wersji mikrokontrolera PicoBlaze w przypadku porównywalnej szybkości działania wersji synchronicznej i asynchronicznej

Wersja Pobór mocy [mW] Czas testu [ms] Liczba

bloków slice/ LUT/flip-flop

Max częstotliwość taktowania [MHz]

Xilinx Spartan-6 synchroniczna

44.0 486.4

@70MHz -/198/72 149.8

Xilinx Spartan-6 asynchroniczna

28.6 486.2 -/227/55 -

Lattice MachXO2 synchroniczna

9.1 1877.3

@17.7MHz 221/-/- 19.7

Lattice MachXO2 asynchroniczna

10.7 1938.1 273/-/- -

Tablela 8. Porównanie poboru mocy, przepustowości, energii i zapotrzebowania na zasoby FPGA dla szybkiego układu mnożącego

Parametr Wersja

asynchroniczna Wersja

synchroniczna

Pobór mocy [mW] 170.9 208.0

Przepustowość [MOPS] 45.5/42.0/41.7/ 43.5/44.6/44.2

43.2/44.0

Energia [nJ] 3.921 4.815

Liczba tablic LUT 2926 1135

Liczba przerzutników 1445 1209

Wersja Czas testu [ms] Liczba

bloków slice Max częstotliwość taktowania [MHz]

Oryginalny Xilinx PicoBlaze

567.5 @120MHz

108 121.2

Synchroniczny PicoBlaze

324.2 @105MHz

183 105.8

Asynchroniczny PicoBlaze

947.1/26.8ºC 931.2/11.5ºC

230 -

Page 17: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

17

W pracy [6] przedstawiono również dwa przykłady implementacji układów asynchronicznych, wykorzystujących opracowane moduły APR. Są to: mikrokontroler bazujący na Xilinx PicoBlaze (w wersji synchronicznej opisany również w monografii [1]) oraz szybki układ mnożący. Dodatkowo obydwie wymienione aplikacje zostały również zrealizowane i przedstawione w synchronicznej wersji implementacyjnej, dzięki czemu możliwe było porównanie właściwości charakteryzujących obydwie wersje implementacji. Wybrane wyniki takiego porównania zestawiono w tabelach 6 - 8.

Jak pokazuje tabela 6 opracowana synchroniczna wersja mikrokontrolera PicoBlaze jest znacząco szybsza, nawet przy niższej częstotliwości taktowania, od oryginału oferowanego przez Xilinx (jako program testowy, służący do oceny szybkości działania mikrokontrolera, zastosowano algorytm wyliczania liczb pierwszych w pewnym zakresie). Jednocześnie opracowana wersja asynchroniczna tego mikrokontrolera okazała się niestety istotnie wolniejsza od wersji synchronicznej (fakt ten zostanie krótko wyjaśniony w dalszej części tekstu). Jednakże w przypadku porównywalnej szybkości działania wersji synchronicznej i asynchronicznej mikrokontrolera, dla implementacji w układach Xilinx Spartan-6, wersja asynchroniczna charakteryzuje się znacząco mniejszym poborem mocy (tabela 7).

W przypadku implementacji mikrokontrolera w układach Lattice z rodziny MachXO2, specjalnie dedykowanych dla aplikacji o małym poborze mocy, wersja asynchroniczna mikrokontrolera pobiera nawet nieco więcej mocy niż wersja synchroniczna. Dla tego typu układów FPGA implementacja asynchroniczna nie stanowi więc alternatywny dla standardowej realizacji synchronicznej. Warto tu jednak zwrócić uwagę, że znacząco mniejsza szybkość działania mikrokontrolera w wersji asynchronicznej wynika wprost z jego architektury, która implementuje 4 połączone kaskadowo moduły APR. Każdy z tych modułów wprowadza pewne opóźnienie, które nie występuje w wersji synchronicznej. Dlatego też bardziej adekwatne porównanie właściwości obydwu wersji implementacyjnych może być dokonane na bazie drugiego przykładu pokazanego w pracy [6]: szybkiego 12-bitowego układu mnożącego (wersja synchroniczna tego układu zawiera 5 stopni potoku, które również występują w wersji asynchronicznej).

Tabela 8 pokazuje wyniki implementacji 6 instancji szybkiego układu mnożącego wykorzystującego układ FPGA Xilinx Spartan-6 (XC6SLX9), uzyskane w przypadku użycia dla narzędzi FPGA strategii optymalizacji szybkości działania. Każda z zaimplementowanych asynchronicznych instancji układu mnożącego pracuje z własną przepustowością, wyrażoną tutaj przez liczbę milionów operacji mnożenia na sekundę, zdeterminowaną przez wewnętrzną topologię połączeń wyznaczoną przez narzędzia syntezy i implementacji FPGA. W przypadku wersji synchronicznej przepustowość zależy wyłącznie od częstotliwości sygnału taktującego (w tabeli podano dwie wartości przepustowości: pierwsza dotyczy przepustowości uzyskanej dla aktualnie zastosowanej częstotliwości taktowania, druga to przepustowość możliwa do uzyskania dla maksymalnej dopuszczalnej częstotliwości zegarowej). Jak pokazują wyniki, przepustowość wersji asynchronicznej układu mnożącego jest porównywalna z wersją synchroniczną (dla niektórych instancji asynchronicznych przepustowość jest lepsza od instancji synchronicznej, dla innych nieco gorsza), przy jednocześnie istotnie mniejszym poborze mocy i ilości energii niezbędnej do wykonania pojedynczej operacji mnożenia w przypadku wersji asynchronicznej. Warto tu odnotować, że proporcje przepustowości i poboru mocy różnią się w przypadku stosowania różnych strategii optymalizacji dla narzędzi FPGA. Jednak w każdym przypadku energia potrzebna do wykonania operacji mnożenia jest mniejsza dla wersji asynchronicznej.

Uzyskane wyniki pokazują również, że zapotrzebowanie na zasoby układu FPGA w przypadku proponowanej metody implementacji układów asynchronicznych jest znacząco większe niż dla synchronicznego pierwowzoru tych układów. Zapotrzebowanie to jest tym większe im więcej potrzebnych jest modułów APR oraz im większa jest szerokość magistral

Page 18: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

18

danych tych modułów. Dodatkowo, jak pokazują wyniki przeprowadzonych eksperymentów, proponowana metoda implementacji nie jest całkowicie niewrażliwa na sposób działania narzędzi syntezy i implementacji FPGA. Stąd też w niektórych przypadkach może być trudno uzyskać poprawnie działający układ asynchroniczny. Jest to jednak cena, którą płaci się za prostotę metody i łatwość jej wykorzystania. Opracowana metoda implementacji układów asynchronicznych w strukturach FPGA może być szczególnie użyteczna w przypadku aplikacji dla których istotny jest niski pobór mocy oraz tam, gdzie zachodzi potrzeba pracy z sygnałami o charakterze asynchronicznym.

Idea realizacji układów asynchronicznych z wykorzystaniem opracowanych modułów APR stała się również przedmiotem zgłoszenia patentowego (P.412575), które zaowocowało uzyskaniem patentu (PL227527, "Sposób asynchronicznego przetwarzania danych cyfrowych i asynchroniczny układ cyfrowy do stosowania tego sposobu, zbudowany zwłaszcza w strukturze FPGA").

Kolejnym zagadnieniem poruszonym bardzo zwięźle w pracy [7] oraz znacząco

rozwiniętym w [8] jest sprzętowa realizacja w układach FPGA nieliniowej funkcji aktywacji dla sieci neuronowych. Funkcja ta stanowi najważniejszy i zarazem najtrudniejszy do realizacji element, mający kluczowy wpływ na szybkość i dokładność obliczeń w przypadku sprzętowej implementacji sieci neuronowych. Dwa najczęściej spotykane typy funkcji aktywacji, które również rozpatrywane są wymienionych pracach [7] i [8] to funkcja sigmoidalna oraz funkcja tangens hiperboliczny. W literaturze można znaleźć różne sposoby sprzętowej realizacji tych funkcji. Między innymi stosowana jest interpolacja liniowa (piece-wise linear, PWL), gdzie aproksymowaną funkcję dziali się na wiele liniowych sekcji, wykorzystywane są również metody dla których wartości funkcji aktywacji przechowywane są w tablicy (pamięci) lub też występuje połączenie metody interpolacji liniowej z metodą tablicowania wartości funkcji, stosuje się metodę aproksymacji wielomianami (np. Czebyszewa, Lagrange’a) oraz wykorzystuje się metodę opartą na algorytmie rotacji współrzędnych (CORDIC). Sprzętowe realizacje funkcji aktywacji wykorzystujące te metody, mimo że niektóre z nich zapewniają krótki czas obliczeń, w większości charakteryzują się jednak stosunkowo ograniczoną dokładnością obliczeń. Istotnym celem do którego dążono opracowując proponowaną metodę implementacji funkcji aktywacji było uzyskanie dużej dokładności obliczeń. Stąd też zaproponowano rodzaj bezpośredniej implementacji z wykorzystaniem arytmetyki zmienno przecinkowej pojedynczej precyzji, dla którego zasadnicza trudność implementacyjna przesunięta została na realizację funkcji eksponencjalnej. W celu realizacji tej funkcji zaproponowano z kolei wykorzystanie aproksymacji szeregiem McLaurina oraz aproksymację Padé. Warto tutaj nadmienić, że mimo iż aproksymacja Padé jest dość szeroko stosowana w obliczeniach inżynierskich, to jej wykorzystanie w realizacjach sprzętowych jest praktycznie niespotykane. Ponieważ obydwie zaproponowane aproksymacje funkcji eksponencjalnej nadają się do stosowania w wąskim przedziale (-1, 1), w przypadku gdy bieżący argument funkcji przekracza wymieniony przedział, wartość tego argumentu rozbija się na część całkowitą i ułamkową. Wartość funkcji eksponencjalnej wylicza się następnie jako iloczyn wartości przechowywanej w tablicy dla części całkowitej argumentu oraz wartości uzyskanej przez aproksymację jedną z wymienionych metod dla części ułamkowej argumentu. Aby ustalić minimalną liczbę wartości funkcji przechowywaną w tablicy dla części całkowitej argumentu (rozmiar tablicy), a także minimalny rząd szeregu McLaurina oraz funkcji wymiernej Padé, pozwalający jednocześnie na uzyskanie maksymalnej dokładności obliczenia całej funkcji aktywacji, wykonano szereg eksperymentów programowych z użyciem pakietu Matlab oraz środowiska Visual Studio, których wyniki przedstawione są w pracy [8]. Dokładność jest tutaj rozumiana w sensie błędu bezwzględnego pomiędzy wartością wyliczoną przy pomocy proponowanej

Page 19: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

19

metody a wartością odniesienia uzyskaną z wykorzystaniem oprogramowania Matlab lub programu napisanego w języku C++ z wykorzystaniem środowiska Visual Studio.

Na podstawie przeprowadzonych eksperymentów programowych zaproponowano odpowiednią architekturę sprzętowego modułu wyliczającego wartości funkcji aktywacji oraz szczegółowo podano sposób jego działania wykorzystując grafy algorytmicznego automatu sekwencyjnego (algorithmic state machine, ASM). Wspomniany moduł sprzętowy, zaprojektowany w kilku nieco różniących się odmianach, zaimplementowano następnie w układzie FPGA Xilinx Spartan-6 wykorzystując zmontowaną wcześniej płytę modułu głównego dla wieloprocesorowego sterownika programowalnego.

Tabela 9. Dokładność sprzętowej implementacji funkcji tangens hiperboliczny

Błąd bezwzględny Błąd względny Wersja

Max Średni Max Średni A 2.384E-07 1.728E-09 3.623E-03 2.414E-08

B 1.788E-07 2.758E-08 3.623E-03 6.102E-08

C 2.384E-07 1.732E-09 3.623E-03 2.416E-08

D 2.384E-07 2.790E-08 3.623E-03 6.173E-08

E 3.576E-07 4.136E-09 3.623E-03 4.067E-08

F 3.576E-07 4.134E-09 3.623E-03 4.067E-08

G 2.384E-07 2.905E-08 3.623E-03 7.270E-08

H 2.384E-07 2.903E-08 3.623E-03 7.247E-08

I 2.384E-07 3.341E-09 2.252E-03 2.269E-08

J 2.384E-07 3.997E-08 8.326E-03 8.842E-08

Tabela 10. Liczba taktów zegara oraz czas obliczeń sprzętowej realizacji funkcji aktywacji (FPGA Xilinx Spartan-6)

Tangens hiperboliczny Funkcja sigmoidalna Wersja

Liczba taktów Czas [ns] Liczba taktów Czas [ns] A 6/77/87 958.0 3/71/81 891.0

B 6/77/87 974.6 3/74/84 940.8

C 6/81/87/94 977.6 3/75/81/85 884.0

D 6/63/69/73/76 974.4 3/60/66/70 707.0

E 6/129/139 1570.7 3/122/132 1491.6

F 6/63/73 751.9 3/56/66 679.8

G 6/63/73 744.6 3/59/69 703.8

H 6/55/61/65/68 700.4 3/51/57/61 628.3

I 6/56/63 648.9 3/57/50 587.1

J 6/44/51 525.3 3/41/48 494.4

Tabela 11. Porównanie błędów bezwzględnych dla różnych metod implementacji funkcji aktywacji

Metoda Funkcja sigmoidalna Tangens hiperboliczny

Interpolacja wielomianem Czebyszewa 1.929E-07

Realizacja CORDIC, 64 bity 9.97E-11 1.695E-07

Realizacja CORDIC, 32 bity 4.77E-05 1.153E-02

Interpolacja liniowa z modyfikacjami 2.18E-05

Interpolacja liniowa 7.470E-03

Proponowana metoda 1.192E-07 1.788E-07

Page 20: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

20

Wraz z modułem sprzętowym wyliczającym wartości funkcji aktywacji w układzie FPGA zaimplementowano również specjalnie przygotowany blok komunikacyjny, umożliwiający wymianę danych pomiędzy modułem sprzętowym a komputerem PC z wykorzystaniem interfejsu szeregowego. Opracowano również prostą aplikację w języku C++ dla komputera PC współpracującą ze wspomnianym blokiem komunikacyjnym, której zadaniem było kolejne przesyłanie wartości argumentów dla modułu sprzętowego (przesyłano 106 równoodległych wartości z przedziału [-10,10]) oraz analiza odpowiedzi tego modułu. W ten sposób wyznaczono dokładność zaproponowanych metod sprzętowej implementacji funkcji aktywacji. Przykładowe wyniki dla funkcji tangens hiperboliczny przedstawione są w tabeli 9. Rozważane wersje implementacji były następujące: A – wersja podstawowe z aproksymacją szeregiem McLaurina, B – wersja podstawowa z wykorzystaniem właściwości symetrii (wyliczane są wartości tylko dla ujemnych argumentów), C – zastosowano ograniczony zakres argumentu funkcji eksponencjalnej do przedziału (-0.5, 0,5) i zredukowany rząd szeregu McLaurina, D – jak wersja C ale z wykorzystaniem właściwości symetrii, E – wersja z nieco zmienionym sposobem wyliczania funkcji eksponencjalnej, F – jak wersja E ale z wykorzystaniem dodatkowego sprzętowego modułu mnożenia zmienno przecinkowego, G – jak wersja F z wykorzystaniem właściwości symetrii, H – jak wersja G z dodanym ograniczeniem zakresu argumentu funkcji eksponencjalnej oraz zredukowanym rzędem szeregu McLaurina, I – wersja z aproksymacją Padé i pojedynczym układem mnożącym i sumującym, J - wersja z aproksymacją Padé oraz podwójnymi układami mnożącymi i sumującymi.

W tablicy 10 pokazano z kolei liczbę taktów zegara potrzebną do wyliczenia wartości funkcji aktywacji dla poszczególnych wersji implementacyjnych (liczba ta zależy od przedziału w którym zawiera się wartość argumentu) a także czas obliczenia danej funkcji aktywacji przy zastosowaniu maksymalnej dopuszczalnej częstotliwości taktowania oraz dla najgorszego przypadku kiedy potrzebna jest największa liczba taktów zegara.

Jak pokazują przedstawione wyniki, najlepszą dokładność w przypadku funkcji tangens hiperboliczny uzyskano stosując podstawową metodę (aproksymacja funkcji eksponencjalnej szeregiem McLaurina 10-tego rzędu) wraz z wykorzystaniem właściwości symetrii. Warto również zauważyć, co ukazuje tabela 11, że uzyskana dokładność jest jedną z lepszych raportowanych w literaturze. Nieznacznie lepszą dokładnością charakteryzuje się jedynie metoda wykorzystująca algorytm rotacji współrzędnych, jednak wymaga ona dwukrotnie większej liczby bitów implementacji (najdokładniejsza metoda CORDIC wykorzystuje arytmetykę stałoprzecinkową z 64 bitową szerokością słowa, podczas gdy proponowana metoda - arytmetykę zmienno przecinkową pojedynczej precyzji ze słowem 32 bitowym). Wadą proponowanej metody implementacji jest stosunkowo długi czas obliczeń (tabela 10). Czas ten może być nieco skrócony poprzez wykorzystanie aproksymacji Padé dla funkcji eksponencjalnej, zwłaszcza w odmianie z podwójnym układem mnożącym i sumującym, dla której większa liczba operacji arytmetycznych może być realizowana współbieżnie. W takim przypadku uzyskuje się jednak nieco gorszą dokładność i większe zapotrzebowanie na zasoby logiczne układu FPGA.

Mając zaprojektowany sprzętowy moduł implementujący funkcję aktywacji w kolejnej pracy [9] przedstawiono kompletną realizację w układach FPGA sieci neuronowych typu wielowarstwowy perceptron. Realizacja ta charakteryzuje się dość unikalną możliwością bardzo łatwej zmiany struktury realizowanej sieci neuronowej poprzez wymianę zawartości pamięci Block RAM, w której znajduje się zarówno opis struktury sieci jak i wartości poszczególnych wag oraz przesunięć dla wszystkich neuronów występujących w sieci. Dzięki temu zmiana struktury sieci (zmiana liczby warstw, liczby neuronów w poszczególnych warstwach itp.) nie wymaga modyfikacji kodu w języku HDL opisującego sieć oraz ponownej

Page 21: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

21

syntezy i implementacji całego projektu dla wybranego układu FPGA. Taka rekonfigurowalna implementacja sieci neuronowych bardzo dobrze nadaje się do wykorzystania np. jako sprzętowy blok funkcjonalny dla opracowanego wieloprocesorowego sterownika programowalnego, pozwalający na znaczące skrócenie czasu obliczeń sieci neuronowych i jednocześnie łatwą zmianę struktury sieci bez użycia narzędzi syntezy dla układów FPGA. Dodatkowo dzięki zastosowaniu sprzętowej realizacji funkcji aktywacji o dużej dokładności obliczeń, sieć neuronowa może być uczona np. z wykorzystaniem pakietu Matlab lub innego oprogramowania, a następnie wyznaczone wartości wag i przesunięć dla poszczególnych neuronów mogą być bezpośrednio użyte przez opracowaną rekonfigurowalną implementację sieci neuronowych.

Opracowano dwie zasadnicze wersje implementacyjne sieci neuronowych: wersję o stosunkowo niedużym zapotrzebowaniu na zasoby logiczne układu FPGA dla której obliczenia realizowane są sekwencyjnie neuron za neuronem oraz warstwa po warstwie, a także wersję z równoległym obliczaniem wszystkich neuronów w danej warstwie, dla której zapotrzebowanie na zasoby logiczne jest wielokrotnie większe. Druga z opracowanych implementacji charakteryzuje się oczywiście znacznie krótszym czasem obliczeń. Dla każdej z wymienionych wersji opracowano również dwie odmiany implementacyjne, które wykorzystują pojedynczą parę układu mnożącego i sumującego oraz dwie takie pary (w przypadku pierwszej wersji implementacji jedna lub dwie takie pary przypadają na cały moduł realizujący sieć neuronową, zaś w przypadku drugiej wersji para lub pary odnoszą się do pojedynczego neuronu).

W tablicy 12 pokazano krótkie porównanie opracowanych wersji implementacji (1 i 2) sieci neuronowych oraz ich odmian (A i B), dokonane pod względem zapotrzebowania na zasoby logiczne układu FPGA. Założono, że dla wersji 1 maksymalna liczba neuronów w warstwie wynosi 32, podczas gdy dla wersji 2 – tylko 16. Warto zwrócić uwagę, że druga wersja implementacji (współbieżne wyliczanie wszystkich neuronów w danej warstwie), dla odmiany z dwoma parami układ mnożący-sumator, wykorzystuje prawie 96% dostępnych zasobów (tablic LUT) układu FPGA, podczas gdy najprostsza wersja zaledwie 4%. Tabela 12. Zapotrzebowanie na zasoby logiczne FPGA oraz maksymalna częstotliwość taktowania dla opracowanych wersji implementacji sieci neuronowych (FPGA Xilinx Zynq XC7Z020)

Wersja Liczba tablic

LUT Liczba

przerzutników

Liczba bloków

DSP

Max częstotliwość zegara [MHz]

1A 2232

(4.2%) 1210

(1.1%) 2

(0.9%) 118.7

1B 3306

(6.2%) 1326

(1.3%) 4

(1.8%) 119.8

2A 41297

(77.6%) 33395

(31.4%) 33

(15.0%) 112.5

2B 51028

(95.9%) 35655

(33.5%) 65

(29.5%) 109.3

Aby ocenić szybkość obliczeń sieci dla poszczególnych opracowanych wersji,

zaimplementowano przykładową 4-ro warstwową auto-asocjacyjną sieć neuronową o 5 wejściach i 5 wyjściach, zawierającą kolejno 16-12-16-5 neuronów w poszczególnych warstwach. W warstwach 1 i 3 zastosowano funkcję aktywacji typu tangens hiperboliczny, zaś w pozostałych warstwach była to funkcja liniowa. Uczenie sieci przeprowadzono z wykorzystaniem pakietu Matlab, a zadaniem samej sieci było proste naśladowanie pewnych wartości dostarczonych do wejścia sieci. Ocena szybkości dotyczyła wyliczenia 1000 wartości wyjść sieci dla zmieniających się w pewnym przedziale wartości wejściowych.

Page 22: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

22

Uzyskane wyniki przedstawiono w tabeli 13. Oprócz zmierzonych czasów obliczeń dla opracowanych realizacji sprzętowych, w tablicy zawarto również czasy obliczeń odnoszące się do realizacji programowych z wykorzystaniem komputera PC, platformy Rasbperry Pi 2 oraz mikroprocesora wbudowanego w układzie FPGA Xilinx Zynq. Otrzymane wyniki pokazują, że nawet najwolniejsza wersja realizacji sprzętowej wykonuje obliczenia szybciej niż platformy mikroprocesorowe (Raspberry Pi 2, Zynq – część mikroprocesorowa). Z kolei wersja sprzętowa realizująca obliczenia w sposób równoległy dla poszczególnych warstw sieci neuronowej okazała się nawet nieco ponad dwa razy szybsza od relatywnie wydajnego komputera PC. Tabela 13. Czas obliczeń przykładowej sieci auto-asocjacyjnej dla różnych platform

Platforma Czas obliczeń

[ms] PC desktop Intel Core i7-950 @ 3.1GHz

8

Raspberry Pi 2 ARM Cortex-A7 @ 900MHz

53.3

Xilinx Zynq (część mikroprocesorowa) ARM Cortex-A9 @ 667MHz

52.7

Xilinx Zynq (część programowalna FPGA) Wersja 1 A @118.2MHz

33.1

Xilinx Zynq (część programowalna FPGA) Wersja 1 B @118.2MHz

24.7

Xilinx Zynq (część programowalna FPGA) Wersja 2 A @112.5MHz

5.7

Xilinx Zynq (część programowalna FPGA) Wersja 2 B @109.1MHz

3.5

Tabela 14. Dokładność obliczeń opracowanych wersji implementacji sieci neuronowych

Wersja Błąd

maksymalny Błąd średni

Błąd MSE

1A 1.847E-6 2.905E-7 1.476E-13 1B 1.549E-6 2.860E-7 1.525E-13 2A 1.847E-6 2.906E-7 1.571E-13 2B 1.430E-6 3.053E-7 1.624E-13

Dokonano również oceny dokładności obliczeń opracowanej sprzętowej realizacji sieci

neuronowych. Uzyskane wyniki, uwzględniające maksymalny błąd bezwzględny, średni błąd bezwzględny oraz błąd średnio-kwadratowy (MSE), pokazane są w tabeli 14. Do ewaluacji błędów wykorzystano tę samą auto-asocjacyjną sieć neuronową, użytą wcześniej do oceny szybkości obliczeń. Otrzymana dokładność obliczeń nie jest co prawda tak dobra jak dokładność obliczeń samej funkcji aktywacji (dokładność spada w przybliżeniu o rząd wielkości), niemniej jednak wciąż jest to dokładność dość duża.

Klasyczne projektowanie systemów cyfrowych – szczególnie realizujących pewne algorytmy obliczeniowe – wykorzystujące typowe techniki kodowania "ręcznego" w jednym z języków opisu sprzętu, jest procesem mocno złożonym. W porównaniu z procesem opracowywania oprogramowania realizującego analogiczne funkcje, pochłania znacznie więcej czasu oraz wymaga od projektanta dużego nakładu pracy. Stosunkowo niedawno stały się jednak dostępne pewne narzędzia umożliwiające automatyczne generowanie kodu w jednym z języków opisu sprzętu na podstawie kodu wyrażonego w typowych językach programowania, takich jak np. język C/C++. Do tego typu narzędzi należą m. in. Matlab HDL Coder oraz Xilinx Vivado HLS. Pakiet oprogramowania Matlab HDL Coder, opracowany

Page 23: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

23

jakiś czas temu przez firmę Math Works, automatycznie tworzy kod w języku opisu sprzętu Verilog lub VHDL na podstawie kodu funkcji napisanych w Matlabie, bloków narzędzia Simulink oraz obiektów systemowych Matlab. Niestety nie wspiera arytmetyki zmienno przecinkowej, ale ułatwia za to automatyczną konwersję kodu zawierającego obliczenia zmienno przecinkowe na kod z arytmetyką stało przecinkową. Drugie z wymienionych narządzi, opracowane przez czołowego producenta układów FPGA – firmę Xilinx, oferuje wsparcie dla konkretnych układów programowalnych, umożliwiając automatyczne wykorzystanie pamięci Block RAM wewnątrz FPGA, wbudowanych bloków DSP, a także pozwala na stosowanie arytmetyki zmiennoprzecinkowej. Umożliwia specyfikację kodu w językach C/C++ oraz System C. Współpracuje jednak wyłącznie z nowszymi rodzinami układów Xilinx FPGA, takimi jak Kintex-7, Virtex-7 itp. Obydwa wymienione narzędzia nie pozwalają jednak na użycie przez projektanta nieco bardziej złożonych funkcji matematycznych, takich jak np. funkcja eksponencjalna, logarytmy czy funkcje trygonometryczne.

Tabela 15. Porównanie różnych metod implementacji bloku przetwarzania sygnału (FPGA Xilinx Kintex-7)

Metoda implementacji Parametr

A B C D E Liczba tablic LUT 1730 465 3157 2155 731

Liczba przerzutników 2663 483 509 905 228

Liczba bloków Block RAM 0 0 0 2 3

Liczba bloków DSP 3 19 0 8 0

Max częstotliwość zegara [MHz]

189.3 139.6 99.8 65.4 132.9

Liczba taktów zegara 151 1 1 231 30140

Czas obliczeń [ms] 0.799 0.0072 0.01 3.532 226.8

Rodzaj arytmetyki zmienno

przecinkowa stało

przecinkowa stało

przecinkowa zmienno

przecinkowa zmienno

przecinkowa

Tabela 16. Porównanie metod implementacji funkcji tangens hiperboliczny z użyciem Matlab HDL Coder oraz kodowania "ręcznego" (FPGA Xilinx Spartan-6)

Metoda Liczba tablic LUT

Liczba prze-

rzutników

Liczba bloków

DSP

Liczba bl. Block RAM

Min. okres zegara [ns]

Liczba taktów

Matlab HDL Coder 6102 763 80 1 227.1 9

Kodowanie ręczne 1885 792 4 0 11.0 6/77/87

Tabela 17. Porównanie metod implementacji funkcji tangens hiperboliczny z użyciem Vivado HLS oraz kodowania "ręcznego" (FPGA Xilinx Kintex-7)

Metoda Liczba tablic LUT

Liczba prze-

rzutników

Liczba bloków

DSP

Liczba bl. Block RAM

Min. okres zegara [ns]

Liczba taktów

Xilinx Vivado HLS 3077 2148 16 0 8.4 6/174/184

Kodowanie ręczne 1852 775 4 0 7.7 6/77/87

Wykorzystanie narzędzi automatycznego generowania kodu w projektowaniu wybranych

komponentów pewnych systemów cyfrowych rozważane było w ramach dwóch omawianych już wcześniej prac [5] i [8]. W pracy [5], m. in. przy użyciu wspomnianych technik, projektowany był blok przetwarzania sygnału składający się z dwóch cyfrowych filtrów - dolno i górno przepustowego, oraz komparatora okienkowego. Porównanie wyników

Page 24: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

24

implementacji tego bloku z wykorzystaniem różnych technik projektowania przedstawiono w tabeli 15. Znaczenie poszczególnych wersji implementacji jest następujące: A – konwencjonalne kodowanie "ręczne", B i C – użycie narzędzia Matlab HDL Coder z włączoną (B) oaz wyłączoną (C) opcją wykorzystania przez narzędzia syntezy sprzętowych układów mnożących wbudowanych w układzie FPGA (bloków DSP), D – użycie Xilinx Vivado HLS, oraz dodatkowo E – użycie miękkiej implementacji mikrokontrolera. Przykład realizacji przy użyciu technik automatycznego generowania kodu HDL nieco bardziej złożonego układu cyfrowego, wyliczającego wartość funkcji tangens hiperboliczny, przedstawiono z kolei w pracy [8]. Wyniki implementacji takiego układu przy użyciu narzędzia Matlab HDL Coder oraz środowiska Xilinx Vivado HLS, jednocześnie z odniesieniem do standardowego kodowania "ręcznego", pokazano w tabelach 16 i 17.

Mając na uwadze zrealizowane przykłady implementacji można poczynić interesujące spostrzeżenie dotyczące narzędzia Matlab HDL Coder. Okazuje się, że wygenerowany przez to narzędzie kod w języku HDL opisuje układ całkowicie kombinacyjny. W niektórych przypadkach gdzie realizowana jest stosunkowo nieskomplikowana funkcja (np. filtr cyfrowy dla wspomnianego wcześniej bloku przetwarzania sygnału) i wykorzystywane są podstawowe operacje arytmetyczne takie jak dodawanie i mnożenie, może być to zaletą. Jak pokazuje tabela 15 metoda wykorzystująca Matlab HDL Coder charakteryzuje się najkrótszym czasem obliczeń, chociaż wymaga stosunkowo dużej liczby zasobów logicznych FPGA - zwłaszcza gdy nie są wykorzystywane wbudowane bloki DSP. Jednak w przypadku realizacji bardziej złożonych funkcji, szczególnie gdy stosowana jest operacja arytmetyczna dzielenia, narzędzie Matlab HDL Coder staje się mało skuteczne. Poprawna implementacja funkcji tangens hiperboliczny przy pomocy narzędzia Matlab HDL Coder (używano wersji Matlab 2012) wymagała na dwóch różnych etapach dwukrotnej istotnej ingerencji projektanta w zawartość kodu generowanego przez to narzędzie, łącznie z użyciem dodatkowego wirtualnego komponentu realizującego operację dzielenia całkowitego z resztą. W rezultacie, jak pokazuje tabela 16, taka implementacja nie tylko wymaga znacznie większej liczby zasobów logicznych FPGA, ale również charakteryzuje się istotnie dłuższym czasem obliczeń (czas ten można wyliczyć jako iloczyn minimalnego okresu zegara oraz wymaganej liczby taktów zegara - dwie ostatnie kolumny w tabeli 16).

Narzędziem, które dobrze radzi sobie z implementacją zarówno stosunkowo prostych funkcji, jak i tych nieco bardziej złożonych okazało się środowisko Xilinx Vivado HLS. W przeciwieństwie do Matlab HDL Coder narzędzie to nie tylko jest w stanie wykorzystać arytmetykę zmienno przecinkową ale również prawidłowo wywnioskować odpowiedni układ sekwencyjny realizujący określoną funkcjonalność zadaną za pomocą klasycznego programu w języku C/C++. Nie jest jednak zaskoczeniem, że w porównaniu z konwencjonalną techniką kodowania "ręcznego" środowisko Xilinx Vivado HLS charakteryzuje się gorszymi wynikami implementacji zarówno pod względem zapotrzebowania na zasoby logiczne FPGA jak i czasu obliczeń (por. tabela 15 i 17). Jest to jednak cena jaką trzeba zapłacić za uzyskanie działającej implementacji projektowanego układu cyfrowego w krótkim czasie i stosunkowo niewielkim nakładem pracy.

Ostatnim zagadnieniem rozważanym w ramach omawianego cyklu publikacji jest zastosowanie układów FPGA w projektowaniu komponentów tzw. sprzętu rozmytego. Temu tematowi poświęcona została publikacja [10], przedstawiająca sprzętową implementację w układach FPGA pewnej klasy rozmytego systemu regułowego typu Takagi-Sugeno-Kanga, z liniowymi funkcjami przynależności dla zmiennych wejściowych, w skrócie oznaczonego jako P1-TS. System ten może być zastosowany np. do optymalnego sterowania nieliniowymi procesami dynamicznymi, czy też w zadaniach nawigacji dla robotów mobilnych etc. Istotnym elementem omawianej pracy jest zaprojektowanie architektury sprzętowej

Page 25: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

25

pozwalającej na rekurencyjną implementację sytemu regułowego P1-TS. Dzięki temu otrzymuje się uniwersalny układ cyfrowy dla którego zapotrzebowanie na zasoby logiczne układu FPGA jest stałe i niezależne od ilości wejść rozmytego systemu regułowego. Według najlepszej wiedzy autora, zaproponowana metodyka projektowania pozwala na niespotykaną dotąd w literaturze realizację sprzętową rozmytego systemu regułowego o tak dużej liczbie zmiennych wejściowych (w pracy [10] pokazano realizację systemu regułowego o 16 wejściach, ale w ogólnym przypadku liczba ta może być większa). Znane z literatury światowej tego typu systemy rozmyte mają co najwyżej 3...4 zmienne wejściowe. Konstrukcja fizyczna systemów o tak dużej liczbie zmiennych wejściowych stała się możliwa do osiągnięcia dzięki bezpośredniemu wykorzystaniu w implementacji cyfrowej FPGA tzw. twierdzenia o rekurencji dla rozmytych systemów regułowych. Warto w tym miejscu zwrócić uwagę, że dla dużej liczby zmiennych wejściowych synteza rozmytych systemów regułowych jak najbardziej ma sens w wielu zastosowaniach. W tym przypadku wykorzystywane są metareguły rozmyte, zamiast zwykłych reguł, co szczegółowo opisuje literatura na temat analitycznych metod projektowania rozmytych systemów regułowych (P1-TS, P2-TS itd.). Tabela 18. Czas obliczeń sprzętowej implementacji rozmytego sytemu regułowego P1-TS dla różnej liczby zmiennych wejściowych (FPGA Xilinx Spartan-6 XC6SLX100 @90MHz)

Liczba zmiennych

Liczba taktów zegara

Czas obliczeń [µs]

2 182 2.02 3 432 4.80 4 932 10.35 5 1932 21.46 6 3932 43.68 7 7932 88.13 8 15932 177.02 9 31420 349.11

10 62906 698.95 11 125878 1398.64 12 251822 2798.02 13 503710 5596.77 14 1007486 11194.28 15 2018036 22422.64 16 4030142 44779.35

Dla proponowanego rekurencyjnego podejścia liczba wejść implementowanego sytemu

jest ograniczona jedynie przez rozmiar pamięci przechowującej wartości następników reguł. Pewną wadą implementacji rekurencyjnej jest z kolei wzrost czasu obliczeń postępujący wraz ze wzrostem ilości wejść. Przeprowadzone eksperymenty, których wyniki przedstawiono również w tabeli 18, pokazują, że zwiększenie o 1 ilości wejść systemu powoduje około dwukrotne zwiększenie czasu obliczeń. Porównanie szybkości działania sprzętowej implementacji systemu P1-TS z rozwiązaniami programowymi (takie zestawienie przygotowano zarówno w ramach pracy [4], gdzie algorytm P1-TS zastosowano do oceny szybkości działania wieloprocesorowego sterownika programowalnego, jak i krótko w omawianej pracy [10]), wskazuje jednoznacznie, że implementacja sprzętowa pozwala znacząco skrócić czas obliczeń.

Realizacja obliczeń dla opracowanej implementacji rekurencyjnej odbywa się z wykorzystaniem arytmetyki zmienno przecinkowej. Dzięki temu unika się m.in. problemów związanych z odpowiednim skalowaniem wartości tak aby mieściły się one w ramach przyjętej długości słowa w przypadku zastosowania arytmetyki stało przecinkowej. W przeciwieństwie do prac dotyczących np. realizacji sieci neuronowych [7-9], gdzie stosowano gotowe komponenty (IP core) dostarczane przez producenta układów FPGA, które

Page 26: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

26

realizują podstawowe operacje arytmetyki zmienno przecinkowej (dodawanie, mnożenie, dzielenie), w omawianej pracy zaproponowano i przedstawiono architektury modułów cyfrowych realizujących operacje zmienno przecinkowego mnożenia dodawania oraz dzielenia. Moduły te wykorzystano następnie do realizacji obliczeń w ramach omawianej sprzętowej implementacji rozmytego sytemu regułowego. Warto tu wspomnieć, że te same opracowane moduły zostały również zastosowane do budowy zmienno przecinkowej jednostki arytmetycznej dla, omawianego wcześniej, wieloprocesorowego sterownika programowalnego. W pracy [10] przedstawiono także dedykowany moduł komunikacyjny przeznaczony do wymiany danych pomiędzy komputerem PC a opracowaną sprzętową implementacją rozmytego systemu regułowego. Podsumowanie

Przedstawione w omawianym cyklu publikacji wybrane implementacje systemów cyfrowych pokazują, że dzięki wykorzystaniu układów FPGA możliwe jest znaczące skrócenie czasu realizowanych funkcji w odniesieniu do konwencjonalnych rozwiązań programowych. W pojedynczym układzie programowalnym, o odpowiednio dużych zasobach logicznych, można zawrzeć kompletny system cyfrowy składający się zarówno z dedykowanych bloków sprzętowych jak i mikroprocesorów/mikrokontrolerów wykonujących pewne zadania - zwłaszcza o mniej rygorystycznych wymaganiach czasowych - w klasyczny sposób programowy, a tym samym znacznie łatwiejszy w realizacji. Wykorzystując układy FPGA, użytkownik otrzymuje możliwość zaprojektowania i implementacji własnego mikroprocesora/mikrokontrolera o unikalnych właściwościach i specyficznej liście instrukcji, odpowiednio dostosowanego do wymogów projektowanej aplikacji. Projektując niektóre komponenty danego sytemu cyfrowego warto również rozważyć wykorzystanie narzędzi syntezy wysoko-poziomowej, zwłaszcza takich jak np. Xilinx Vivado HLS, które pozwalają na specyfikację sytemu cyfrowego z użyciem standardowych języków programowania. Chociaż narzędzia te często dostarczają gorszych wyników implementacji niż konwencjonalne techniki projektowania to jednak niekiedy warto je wykorzystać, zwłaszcza w przypadkach gdy mniej istotne są aspekty kosztów implementacji (zapotrzebowanie na zasoby logiczne FPGA), a priorytetem jest uzyskanie działającego układu cyfrowego lub jednego z jego komponentów w krótkim czasie i stosunkowo niewielkim nakładem pracy. Z kolei pewną alternatywę dla klasycznych systemów synchronicznych mogą stanowić komponenty realizowane z wykorzystaniem zaproponowanej asynchronicznej metody implementacji dla układów FPGA. Komponenty te mogą być szczególnie przydatne tam, gdzie istotny jest niski pobór mocy oraz współpraca z zewnętrznymi sygnałami o charakterze asynchronicznym. Układy FPGA mogą również stanowić uniwersalną platformę dla realizacji sprzętu cyfrowego działającego w oparciu o logikę rozmytą. Dzięki zaproponowanej architekturze sprzętowej, pozwalającej na realizację obliczeń w sposób rekurencyjny, możliwa jest implementacja rozmytego systemu regułowego o dużej liczbie zmiennych wejściowych charakteryzująca się stosunkowo niewielkim zapotrzebowaniem na zasoby logiczne FPGA.

Mimo niewątpliwych zalet, projektowanie systemów cyfrowych z układami FPGA jest procesem bardziej złożonym niż przygotowanie oprogramowania realizującego analogiczne funkcje. Oprócz uwzględniania wielu aspektów typowo związanych ze sprzętem, projektant systemu cyfrowego często musi zmagać się również z realizacją nisko-poziomowych algorytmów, takich jak na przykład implementacja niektórych funkcji matematycznych (np. funkcji eksponencjalnej), których użycie dla programisty jest czynnością zupełnie oczywistą i trywialną. Niemniej jednak są to wyzwania dla których możliwe jest zaproponowanie

Page 27: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

27

skutecznych rozwiązań, co przynajmniej w pewnej mierze zostało zademonstrowane w omawianym cyklu publikacji.

Autor za wkład własny w rozwój dyscypliny naukowej informatyka uważa:

opracowanie architektury i przygotowanie opisu w języku Verilog dwóch 8-bitowych mikrokontrolerów wykonujących poszczególne instrukcje kilkakrotnie szybciej - przy tej samej częstotliwości taktowania - od swoich pierwowzorów dostępnych rynku,

opracowanie metody i przygotowanie wirtualnego komponentu modułu cyfrowego ułatwiającego częstą wymianę kodu programu dla miękkich implementacji mikrokontrolerów,

opracowanie architektury oraz opisu w języku Verilog dwóch 32-bitowych mikroprocesorów/mikrokontrolerów o liście rozkazów tożsamej z listą instrukcji uniwersalnego kodu pośredniego generowanego przez kompilator środowiska inżynierskiego CPDev,

opracowanie architektury, przygotowanie opisu w języku Verilog oraz implementacja w FPGA wieloprocesorowego sterownika programowalnego,

opracowanie i implementacja mechanizmów pozwalających na szybką synchronizację zadań w środowisku wieloprocesorowym (rejestry bezpośredniego dostępu, instrukcja WAIT),

opracowanie interfejsu wraz z protokołem wymiany danych umożliwiającego wykorzystanie tzw. sprzętowych bloków funkcjonalnych dla wieloprocesorowego sterownika programowalnego,

opracowanie i sprzętowa realizacja algorytmów arbitrażu pozwalających na dostęp w środowisku wieloprocesorowym do wspólnej pamięci globalnej oraz wspólnego zestawu sprzętowych bloków funkcjonalnych,

opracowanie i wykonanie prototypów układów elektronicznych wykorzystujących struktury FPGA dla wieloprocesorowego sterownika programowalnego,

opracowanie metody komunikacji z otoczeniem dla osób niepełnosprawnych z zanikiem mięśni oraz zaprojektowanie i wykonanie układu elektronicznego wspomagającego taką komunikację, opartego na układach FPGA,

opracowanie i porównanie różnych metod implementacji w strukturach FPGA toru przetwarzania sygnału dla układu wspomagającego komunikację z otoczeniem dla osób niepełnosprawnych,

opracowanie stosunkowo prostej metody implementacji układów asynchronicznych w typowych, komercyjnie dostępnych, strukturach FPGA,

opracowanie architektury oraz implementacja asynchronicznego mikrokontrolera zgodnego z Xilinx PicoBlaze,

opracowanie metody sprzętowej implementacji funkcji aktywacji neuronu dla sztucznych sieci neuronowych, pozwalającej na uzyskanie dużej dokładności obliczeń,

opracowanie dwóch wersji rekonfigurowalnej implementacji sztucznych sieci neuronowych typu wielowarstwowy perceptron (wersja o niskim zapotrzebowaniu na zasoby logiczne FPGA oraz wersja z równoległymi obliczeniami wszystkich neuronów w ramach danej warstwy), pozwalających na łatwą zmianę struktury realizowanej sieci neuronowej bez konieczności użycia narzędzi syntezy dla FPGA,

opracowanie rekurencyjnej realizacji sprzętowej rozmytego systemu regułowego typu P1-TS, pozwalającej na implementację systemu o znacznie większej liczbie wejść niż rozwiązania dotychczas raportowane w literaturze.

Page 28: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

28

5. Omówienie pozostałych osiągnięć naukowo-badawczych

Od początku mojej pracy w Katedrze Informatyki i Automatyki Politechniki Rzeszowskiej moim zasadniczym obszarem zainteresowań jest realizacja systemów cyfrowych z układami FPGA. Przed uzyskaniem stopnia doktora zajmowałem się głównie sprzętową implementacją układów logiki rozmytej, w szczególności implementacjami rozmytych sieci Petriego, a także realizacją wybranych podsystemów cyfrowych z wykorzystaniem układów mikroprocesorowych. W tym czasie wydana została jedna z dwóch napisanych przeze mnie monografii (Z. Hajduk, "Mikrokontrolery w systemach zdalnego sterowania", Wydawnictwo BTC, 2005) mająca charakter popularyzatorsko-dydaktyczny, której tematyka dotyczyła zastosowań układów mikroprocesorowych w systemach zdalnego sterowania. Badania prowadzone przed doktoratem zaowocowały również uzyskaniem w późniejszym czasie dwóch patentów, których jestem współautorem (J. Kluska, Z. Hajduk, "Asynchroniczny elektroniczny układ sterowania procesami równoległymi", PL 224913, 2017 oraz J. Kluska, Z. Hajduk, "Synchroniczny elektroniczny układ sterowania procesami równoległymi", PL 225020, 2017).

Po uzyskaniu stopnia doktora tematyka moich badań koncentrowała się wokół projektowania wybranych implementacji układów cyfrowych z wykorzystaniem struktur FPGA. W tym w szczególności zajmowałem się projektowaniem miękkich implementacji mikroprocesorów i mikrokontrolerów wraz z układami peryferyjnymi, sprzętową implementacją sieci neuronowych, realizacją elementów sprzętu rozmytego, implementacją układów cyfrowych działających w sposób asynchroniczny, a także sprzętową realizacją systemu diagnostycznego opartego o analizę drgań. Większość z wymienionych wyżej zagadnień rozważana była w ramach publikacji wchodzących w skład osiągnięcia naukowego i zwięźle scharakteryzowana w punkcie 4.c niniejszego opracowania. Wybrane aspekty tych zagadnień prezentowane były również w innych moich publikacjach. Na przykład w ramach tych publikacji szczegółowo została przedstawiona architektura i sposób działania sprzętowego bloku komunikacji dla opracowanego sterownika programowalnego implementowanego w układach FPGA (Z. Hajduk, "Moduł komunikacyjny dla sprzętowej implementacji maszyny wirtualnej", Elektronika - Konstrukcje, Technologie, Zastosowania, nr 5, str. 172-175, 2011), pokazana została architektura zmienno przecinkowej jednostki arytmetycznej (Z. Hajduk, "Zmiennoprzecinkowa jednostka arytmetyczna dla sprzętowej maszyny wirtualnej", Pomiary Automatyka Kontrola, nr 1, t. 57, str. 82-85, 2011), czy też zaprezentowane zostały rozwiązania konstrukcyjne prototypu tego sterownika (Z. Hajduk, "Prototyp programowalnego sterownika logicznego dla sprzętowej maszyny wirtualnej", Elektronika - Konstrukcje, Technologie, Zastosowania, nr 4, str. 114-118, 2011).

Spośród pozostałych opracowań na pewną uwagę zasługuje ostatnie ze wspomnianych wyżej zagadnień dotyczące realizacji systemu diagnostycznego opartego o analizę drgań. System taki został przeze mnie opracowany jako jedno z zadań w ramach projektu NCBiR ("Optymalizacja i nadzór procesu obróbki skrawaniem cienkościennych zespołów silników lotniczych z zastosowaniem metod inteligencji obliczeniowej", INNOTECH-K2/IN2/41/182370) realizowanego we współpracy z rzeszowskim oddziałem firmy Pratt & Whitney (dawniej WSK Rzeszów) - uzyskane wyniki nie zostały jeszcze szerzej opublikowane. W szczególności w ramach realizacji tego systemu zaprojektowałem i wykonałem układ elektroniczny interfejsu pomiarowego dla przemysłowych czujników drgań typu IEPE oraz zaimplementowałem w układzie FPGA tor diagnostyki składający się m.in. z modułu wyliczającego szybką transformatę Fouriera, bloków wyliczających rzeczywistą wartość skuteczną dla kilku konfigurowanych przedziałów widma FFT oraz auto-asocjacyjnej sieci neuronowej. Opracowałem również sprzętowy blok realizujący funkcjonalność tzw. podrzędnego kontrolera EtherCAT, który we współpracy z zewnętrznym

Page 29: AUTOREFERAT - Politechnika Częstochowska · 2018. 11. 22. · AUTOREFERAT dr inż.Zbigniew Hajduk Katedra Informatyki i Automatyki Wydział Elektrotechniki i Informatyki Politechnika

29

modu em zapewniaj cym fizyczn komunikacj w standardzie EtherCAT umo liwia wymian danych ze sterownikami przemys owymi PLC i PAC.

W ramach zagadnie dotycz cych realizacji elementów sprz tu rozmytego, oprócz omówionej ju rekurencyjnej implementacji rozmytego systemu regu owego typu P1-TS, opracowa em równie metod sprz towej implementacji pewnej odmiany rozmytych sieci Petriego wykorzystuj cych rozmyte normy ukasiewicza zamiast typowych norm Zadeha (Z. Hajduk, J. Wojtowicz, "Hardware Implementation of Fuzzy Petri Nets with Lukasiewicz Norms for Modelling of Control Systems", Lecture Notes in Computer Science, Springer Berlin Heidelberg, Vol. 9621, pp. 449-458, 2016). Wykorzystuj c wykonany wcze niej sterownik programowalny implementowany w uk adach FPGA opracowa em równie sprz towo-programow realizacj rozmytej interpretowanej sieci Petriego (L. Gniewek, Z. Hajduk, "Sprz towo-programowa realizacja rozmytej interpretowanej sieci Petriego", Pomiary Automatyka Kontrola, nr 12, str. 1113-1116, 2012). Dla wspomnianej rozmytej interpretowanej sieci Petriego opracowa em tak e ca kowicie sprz tow metod realizacji przeznaczon dla uk adów FPGA - publikacja prezentuj ca otrzymane wyniki jest w a nie przygotowywana.

Na pewne zaakcentowanie zas uguj równie opracowane przeze mnie implementacje wybranych uk adów cyfrowych, których opis w postaci szeregu artyku ów ukaza si w miesi czniku "Elektronika Praktyczna". Opracowania te maj zarówno charakter praktyczny jak i popularyzatorsko-dydaktyczny, prezentuj cy zastosowania uk adów FPGA i wykorzystanie j zyka opisu sprz tu Verilog. W ród tych artyku ów znajduj si m. in.:

Z. Hajduk, "Dekoder RC5 z interfejsem SPI, opisany w j zyku Verilog", EP 12/2004i EP 1/2005,Z. Hajduk, "Konwerter 1-Wire -> SPI opisany w Verilogu", EP 11-12/2005,Z. Hajduk, "Tester monitorów VGA", EP 4-5/2007,Z. Hajduk, "Uniwersalny miernik: cz stotliwo ci, czasu, okresu na FPGA", EP 11-12/2007,Z. Hajduk, "Mikrokontrolery w FPGA: szybszy PicoBlaze i nie tylko dla uk adów PLDXilinx", EP 7/2009,Z. Hajduk, "Sprz towy bootloader dla mikrokontrolerów PicoBlaze", EP 3-4/2010,Z. Hajduk, "Sterownik VGA w uk adzie FPGA", EP 3/2011,Z. Hajduk, "Projektowanie PLD/FPGA z zestawem Lattice MachXO2 PicoDevelopment Kit", EP 11-12/2011.

Sumarycznie jestem autorem lub wspó autorem 53 publikacji (15 przed uzyskaniem stopnia doktora) w tym 2 monografii. Osiem z wymienionych publikacji, opublikowanych g ównie w ci gu ostatnich 5 lat, indeksowanych jest w bazie JCR ( czny wspó czynnik wp ywu dla tych artyku ów wynosi 17.739). W przypadku 6 z 8 publikacji z listy JCR jestem samodzielnym autorem. czna liczba punktów MNiSW uzyskana przeze mnie dla publikacji po uzyskaniu stopnia doktora wynosi 443. Jestem równie wspó autorem i autorem cznie 4 patentów (w tym 2 jako samodzielny autor). Bra em udzia w 4 projektach badawczych (3 po uzyskaniu stopnia doktora), w tym w jednym przypadku jako kierownik. Tylko w ci gu ostatnich 4 lat wykona em cznie 24 recenzje artyku ów dla czasopism mi dzynarodowych (w tym 7 recenzji dla czasopism indeksowanych w bazie JCR) oraz 2 recenzje referatów na konferencj mi dzynarodow . W latach 2006-2017 za osi gni cia naukowe otrzyma em 1 zespo ow i 4 indywidualne Nagrody Rektora Politechniki Rzeszowskiej.