4. Modeling Moduły, interfejsy: programista Implementacja Realizacja funkcjonalności Logika Fizyczny podział elementów Wdrożenie Procesy, jednostki wykonawcze Procesy Funkcje użytkownika Przypadki użycia
6. Modeling – podsumowanie Zbudowanie opisowego modelu będącego hipotezą co do sposobu działania i budowania systemów sprzętowych zorientowanych obiektowo . Na podstawie tego modelu można wnioskować teoretycznie (matematycznie, optymalizacje) oraz badać empirycznie (implementacje modelu) różne aspekty przydatności (symulacje), zastosowania...
16. Hardware - obsługa library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity test_add is generic ( width : integer := 17 ); port ( clk : in std_ulogic; reset : in std_ulogic; enable : in std_ulogic; inp1, inp2 : in std_logic_vector ( width downto 0); sum : out std_logic_vector ( (width + 1) downto 0) ); end test_add; ------------------------------------------------------------------------------- -- RTL description. Adds two inputs together (unsigned) into an integer -- of "width + 1" in lenght. ------------------------------------------------------------------------------- architecture rtl of test_add is constant terminal_count : integer := 2**( sum'high + 1 ) - 1; subtype adder_range is integer range 0 to terminal_count; signal sumx, inp1x, inp2x : adder_range; begin -- rtl sum <= std_logic_vector( to_unsigned ( sumx, width + 2 )); inp1x <= to_integer ( unsigned ( inp1 ) ); inp2x <= to_integer ( unsigned ( inp2 ) ); adder : process ( clk, reset ) begin if reset = '0' then sumx <= 0; elsif rising_edge (clk) then if enable = '1' then sumx <= inp1x + inp2x; end if; end if; end process adder; end rtl; class AdderDemo { public static void main(String[] args) { int valA = 0x000F; int valB = 0x2222; System.out.println(valA & valB); } }
22. Język ‘ e ’ Specyfikacja Weryfikacja Synteza e (HDL) eSS Verilog Inne Behavioral Desing Technologia FPGA ASIC Specman Testy w e (testbench) H V L Symulator VHDL C/C++ itp.
23. Język ‘ e ’ – Object Oriented Synthesis Pozwala syntezować obiektowo zorientowany HDL Umożliwia korzystanie z dziedziczenia , polimorfizmu i referencji do obiektów. Jest częścią procesu OOAS. Tworzy obiekt Control Flow Graph (CFG), który stanowi mapowanie obiektów na konkretne dane, przeszukuje typy dla kontekstu danego typu generycznego
24. Język ‘ e ’ - Eksperyment Wyspecyfikowano w Java kilka „obwodów elektronicznych”: kodek JPEG, fuzzy controller i kodek rozmów GSM. Kod został przeprocesowany przez OOAS. Zaobserwowano 15% wzrost szybkości w porównaniu z komercyjnie dostępnymi układami. „ Object Oriented Hardware Synthesis and Verification ”, 2001
26. PODs - Dziedziczenie Dodanie do obecnego obiektu dodatkowej funkcjonalności, obiektów. Zaimplementowane przez komponowanie wielu PODs. Wynika z hierarchii interfejsów. Zawiera modelowy aspekt (software’owy) niż sprzętowy.
27. PODs - Eksperyment Przeprowadzono badania nad budową systemu według modelu PODs. Stworzono obiekt termometra, wyświetlacza, a następnie przetestowano utworzony dziedziczący obiekt Termostatu. Nie tylko sprawdzono tezy modelu, ale wykazano relatywnie szybsze działanie takiego termostatu niż zmontowanego z ASIC. „ Inheritance Models in Object-Oriented Hardware Using Physical Object Devices ”, Department of Computer Science Brigham Young University , March 2004
38. Software ? Zapewnienie integracji środowiska oprogramowania z modułami systemów elektronicznych.
39. Software - Koncepcja H ardware- L ibrary A ccess F unctional- L ibrary A ccess G raphic- L ibrary A ccess dostęp niskopoziomowy – wykorzystanie metod zapisu i odczytu rejestrów dost ę p funkcjonalny – korzystani e z operacji i algorytmów, które stanowi ą funkcj ę komponentu CII dost ę p aplikacyjny – korzysta nie z gotowych aplikacji , budowanie w ł asnych aplikacji z elementów biblioteki Konfiguracja .cii JAVA VHDL HLA FLA GLA … … …
52. Literatura P K Drabik, “Obiektowe środowisko programowania wspierające systemy rekonfigurowalne, implementowane w układach FPGA”, 2008 P K Drabik, K T Poźniak, “Maintaining complex and distributed measurement systems with Component Internal Interface Framework”, 2009 P K Drabik, K T Poźniak, “FPGA Control utility in Java”, 2007 „ Object Oriented Hardware Synthesis and Verification”, 2001 „ S oftware Design Patterns Applied to Physical Object Devices ”, 2003 „ Java Based Object Oriented Hardware Specification and Synthesis ”, 2000
Editor's Notes
1. Określenie tła zagadnienia i wprowadzenie w tematykę 2. Badania – aktualne próby zmagania się z tematyką 3. Opracowywany model 4. Przykład 5. Podsumowanie…
Co to jest model? Model to pewne uproszczenie rzeczywistoci. - dzięki modelowi można wyodrębnić interesujące elementy problemu i zorganizować je w uporządkowany sposób (np. routery, połączenia sieciowe, itp.) • Dlaczego modelujemy? Konstruujemy modele, aby lepiej zrozumie system, który tworzymy. • W czym nam pomaga modelowanie: – w wizualizacji systemu takim jakim jest, bd takim jakim powinien by, – w specyfikacji struktury lub zachowania systemu, – słuy jako wzorzec podczas konstruowania aplikacji, – dokumentuje wyniki prowadzonych prac. • Dlaczego potrzebujemy modeli formalnych (sformalizowanych)? Zunifikowany jzyk ułatwi komunikacj oraz pozwoli opisywac tworzony model w jednorodny sposób .
Modelowanie złożonych systemów jest zadaniem trudnym i angażuje wiele osób o różnym sposobie postrzegania systemu. Usprawniając cały proces wyszczególniono 5 perspektyw modelowania. Oisują wewnętrzną strukturę programu na różnych poziomach abstrakcji i szczegółowości oraz opisuje funkcjonalność systemu widzianą przez jego użytkowników. • Perspektywa przypadków uzycia – opisuje funkcjonalność, jaką powinien dostarczać system, widzianą przez jego uzytkowników. • Perspektywa logiczna – zawiera sposób realizacji funkcjonalności, strukturę systemu widzianą przez projektanta • Perspektywa implementacyjna – opisuje poszczególne moduły i ich interfejsy wraz z zaleŜnościami; perspektywa ta jest przeznaczona dla programisty • Perspektywa procesowa – zawiera podział systemu na procesy (czynności) i procesory (jednostki wykonawcze); opisuje właściwości pozafunkcjonalne systemu i słuŜy przede takŜe programistom i integratorom • Perspektywa wdrozenia – definiuje fizyczny podział elementów systemu i ich rozmieszczenie w infrastrukturze; perspektywa taka słuzy integratorom i instalatorom systemu
W UML zdefiniowano 13 rodzajów diagramów podzielonych na dwie główne grupy: opisujących strukturę systemu i opisujących zachowanie
W kolejnej części wstepu będzie mowa o paradygmacie projektowania zorientowane obiekt. W kontekscie programowania – gdyz jest to najwierniejszy i najszerzej znane medium tego paradygmatu… Poznanie składni jzyka nie jest wystarczajce, aby skutecznie programowa przy pomocy jzyków zorientowanych obiektowo (C++, Java, C#) - „Posiadanie młotka nie czyni z nas od razu architekta”. • Programowanie w tych jzykach staje si efektywne w przypadku poprawnego „mylenia obiektowego”. Std konieczne jest przed przystpieniem do programowania przeprowadzenie analizy i projektowania obiektowego (object-oriented analysis and design – OOA/D). Myslenie obiektowe – w tym hasle chodzi o to że: - Przed przystąpieniem do projektowanie o-o należy przeprowadzić analize projektowania , • Krytycznym i podstawow umiejtnoci OOA/D jest umiejtno przypisywania odpowiedzialnoci (ang. responsability) poszczególnym obiektom, rozstrzyganie w jaki sposób obiekty powinny pozostawa w interakcji midzy sob, okrelanie co poszczególne klasy powinny realizowa. Umiejętność wyodrębniania obiektow, przypisywania im odpowiedzilnosci, wzajemnych relacji i zależności. Wyłuskiwanie funkcjonalności, budowanie abstrakcji i generalnych cech, które można będzie roznorodnie specyfikować
Umiejtność przypisywania odpowiedzialnoci (ang. responsability) poszczególnym obiektom, rozstrzyganie w jaki sposób obiekty powinny pozostawa w interakcji midzy sob, okrelanie co poszczególne klasy powinny realizować Modelowanie wiata rzeczywistego Programowanie zorientowane obiektowo polega na zbudowaniu w programie modeli obiektów ze wiata rzeczywistego. Praca programisty polega na ożywieniu tych obiektów oraz sprawieniu aby zaczeły ze soba współpracowac. • Powtórne uycie kodu (ang. reusablity) Kod raz zapisany moe zostac wykorzystany wielokrotnie. Realizowane jest to dziki dziedziczeniu (metody z nadklasy s dostpne w klasach pochodnych). • Rozszerzalno (ang. extensibility) Dziki polimorfizmowi wprowadzenie nowych klas nie wymaga modyfikowania fragmentów kodu ju raz zapisanego. Metody polimorficzne s odpowiedzialne za wykonywanie czynnoci zwizanych z dan klas. W przypadku wprowadzenia nowych klas wprowadzone zostan odpowiednie metody polimorficzne.
Sterowanie dostepem: Sterowanie dostępem pozwala programiście na ukrycie części typu abstrakcyjnego przed klientem poprzez zadeklarowanie pewnych bytów jako publiczne (public), a innych jako prywatne (private). Weryfikacja typow – zapobiega niebezpiecznym technikom (rzutowania, itp.) kapsulkuje projekt w obiekty uscislajac jakie typy posiadaja jakie metody.
• Wzorce projektowe to zapisany zbiór doswiadczen zaawansowanych projektantów programów zorientowanych obiektowo. • Wzorce projektowe sa zapisany w skodyfikowany sposób pozwalajcy na opisanie pewnego problemu programistycznego i jego rozwizania. Jest algorytmem rozwiazania problemow projektowych. • Najbardziej znane wzorce projektowe (23 wzorce) zostały opracowane przez tzw. Gang Czterech (Gamma, Helm, Johnson i Vlissides): – Adapter, – Factory, – Singleton, – Strategy, – DAO, … “ Structural patterns are concerned with how classes and objects are composed to form larger structures” [GHJV95]. Structural patterns such as the Adapter, Facade, and Decorator enhance object communication and functionality. The Adapter allows a foreign interface to be mapped to the interface used by the system. A Facade provides a common object through which other objects can communicate with a group of related objects managed by the Facade. A Decorator wraps an existing object to add functionality and responsibilities to it without modifying its external interface. “ Behavioral patterns are concerned with algorithms and the [communication and] assignment of responsibilities between objects” [GHJV95]. The Strategy pattern uses objects of a common base class to carry out a specific task in a variety of ways, such as text layout, memory allocation, and integrated circuit routing algorithms. Signals and Slots are used to provide a powerful and flexible event handling system, signals are emitted by an object when an event occurs and each slot pertaining to that signal is executed. Slots are often bound to methods of other objects.[Gre03] “ Creational patterns abstract the instantiation process” [GHJV95]. A common example of a creational pattern is the Singleton class. A Singleton class creates an instance of itself at the first request for instantiation and returns a pointer to it for each subsequent request, sharing the same instance with all objects.
• Wzorce projektowe to zapisany zbiór doswiadczen zaawansowanych projektantów programów zorientowanych obiektowo. • Wzorce projektowe sa zapisany w skodyfikowany sposób pozwalajcy na opisanie pewnego problemu programistycznego i jego rozwizania. Jest algorytmem rozwiazania problemow projektowych. • Najbardziej znane wzorce projektowe (23 wzorce) zostały opracowane przez tzw. Gang Czterech (Gamma, Helm, Johnson i Vlissides): – Adapter, – Factory, – Singleton, – Strategy, – DAO, …
Hardware – na początku był sprzęt. * Historycznie, nauka komputerowa rozpoczeła się od teorii liczenia. By wydajnie i efektywnie liczyc inzynierowie skupili swoja uwage na wytworzeniu urzadzen do przeprowadzania tych operacji. Komputery I, II, III-generacji to urządzenia, których uzytkownik miał duza wiedze z dziedziny elektroniki. *Pozniejsze wprowadzenie mikroprocesorow, mikrokotrolerow zrewolucjonizowało ten porządek rzeczy. Skupiono się na oprogramowaniu. Z wielu racji – chocby wygodzie i szybkosci i latwosci dostepnosci (nie potrzeba znac się na elektronice – wystarczy skladnia jezyka). Wtedy inzynierowie stali się programistami. *Wszystko szło dobrze i wtedy pojawił się problem. Oprogramowanie zaczynało osiągac szczyty wydajności. Obok widziano mikrokontrolery radzące sobie ze skomplikowanymi operacjami wieloktrotnie lepiej. * Programiści osiągają potrzebe interakcji ze sprzętem – bez pośredniczenia systemów operacyjnych. Pojawia się specjalizowany sprzęt – różnych dostawców; różne sterowniki, protokoły, co wybierać, normalizacja standaryzacja… Jedno jest pewne, gdy przechodzimy z oprogramowania do sprzetu tracimy wiele z poziomu abstrakcji jaki uwydatnia programowanie.
ICCs – to zminiaturyzowane układy elektroniczne polaczone w system jedną strukturą np. polprzewodnika. + A pplication S pecific I ntegrated C ircuit) – typ elektronicznych układów scalonych zaprojektowanych do realizacji z góry ściśle określonego zadania Zrewolucjonizowaly swiat (elektroniki). Zostaly odkryte eksperymentalnie. Wielka liczba laczonych tranzystorków osiagała wysoką wydajność niż tyle samo układów składanych ręcznie. Stanowią urządzenia dedykowane przeznaczone do konkretnego celu – lub grupy celów. Controllers – umowżliwiają sterowanie przepływem danych, przez co odpowiednim ich modyfikowaniem. Wymyślone ponad 30 lat temu przemieniły się ze małych rozdystrybuowanych urządzeń (US fabryki samochodów – General Motors) w zintegorwane platformy (ówcześnie sieci czujnikowe, inteligente domy, itp). Microcontr. i –cessors to urządzenia wyposarzne w urządzenia dostarczające dane programu (pamięci, stosy, itd.). Przez co są otwarte na kreaowanie różnej logiki działania (w pewnym zakresie). FPGAs – bezpośrednio programowana macierz bramek wysoce elastyczne w projektowaniu, implementowaniu różnej funkcjonalności. Uzywane używane są w cyfrowym przetwarzaniu sygnałów, lotnictwie i wojsku, jako prototypy układow ASIC. Ostatnio nasi naukowcy i wojskowi zaprojektowali i buduja precyzyjny sprzęt do kompensowania zakłuceń dla robionych zdjęć z samolotów wysokopułapowych. Nowoczesne układy FPGA mają możliwość przeprogramowania 'w locie‘
W pierwszym przypadku chodzi o projekty systemów wbudowanych, rozproszonych. Dzięki powiązaniu pewnych danych z reakcjami urządzeń można modelować logikę całego systemu. (Automaty, IC, ASIC, itp., embeded devices) Jezyki opisu sprzętu (HDL) Verilog, VHDL… są głównie wykorzystywane do definiowania specyfikacji i fizycznych aplikacji Są one dedykowane do specyfikacji na poziomie operacji synchronicznych obwodów cyfrowych (register-transfer level – RTL [4]) oraz poziomie portów I/O. Jednak są słabo dostosowane do wykorzystania na płaszczyźnie algorytmicznej. Poprzez brak czytelności w swoich gramatykach utrudniają weryfikację. Warto zauważyć ze, jako języki opisu sprzętu (Hardware Description Language – HDL), odstają od wzorców i metod stosowanych w językach programowania Języki programowania nie są w stanie sprostać wymaganiom domeny weryfikacji. Języki weryfikacji (Hardware Verification Language – HVL) są przeznaczone do monitorowania poprawności projektu układów elektronicznych. Monitorowanie to polega na przekazywaniu wyników inspekcji w formie raportów (do weryfikacji) na konsole użytkownika. Rolą HVL jest także przekazywanie wyników inspekcji jako sygnałów (do testowania) [11]. Zaawansowanie języków programowania, nakład obliczeniowy jaki towarzyszy tworzeniu oraz operacji na strukturach danych, sprawia że są one często niewydajne dla modeli języków weryfikacji sprzętu. Dlatego dobrymi językami HVL są języki zbliżone do HDL. Należą do nich: OpenVera , e , SystemC , SystemVerilog .
Przykład zbudowania addera w VHDL (po lewej) oraz w Java po prawej Poprzez brak czytelności w swoich gramatykach utrudniają weryfikację.
Techniki konstruowania systemów w dziedzinie obiektowo zorientowanego sprzętu [1 3 ] uwzględniają wymagania dla 4 domen: specyfikacji (definicji), weryfikacji (testowania), syntezy i utrzymania (software)
Należy rozpoczac od poszukiwań cech wspolnych z paradygmatem softwarowym (jest znany). Porownan softu z hard. Podobnymi cechami do ob. softwareowych musi być adaptacja i zdolnosc do wprowadzania wzorcow, dziedziczenie, enkapsulacja, polimorfizm, itp…
Biorąc te porownania pod uwagę badacze rozpoczeli prace nad zorientowaniem obiektowo sprzetu… W rozwoju tematu można wyroznic pewne nurty, plaszczyzny w których rozwijają się dotychczasowe pomysły. Synteza.. Chodzi tu o metody syntezy sprzętu – kod jest bardzo często zbudowany z prostych (list) struktur, istnieje postęp w postaci Object Oriented Hardware Synthesis and Verification – o-o analisys system (OOAS). HDL – jezyk definicji sprzetu w kilku przypadkach spotyka się już zorientowany obiektowo – język ‘e’, w pewnym stopniu - VHDL Hardware Description and Verification Language – HDVL- SystemVerilog potrafi laczyc te plaszczyzny Kompleksowo – są to podejścia zarówno dedykowane sprzętowo jak i modelowo. Sprzętowo – tzn urzadzenia które są wytwarzane w modelu O-O. Modelowo – to projekty aranżujące opis sprzetu, weryfikacji, syntezy w sposób O-O. Poszczególnie te składowe mogą nie być O-O, ale całościowo mają zawierać cechy tego paradygmatu.
Obecnie dostępne są narzędzia łączące syntezę układów, zwłaszcza FPGA, przy pomocy języków programowania. Przykładem może być Java Optimised Procesor (JOP) [6], który pozwala na asemblację maszyny wirtualnej Java i średnio zaawansowanych programów w układzie FPGA. Ponadto istnieją rozwiązania udostępniające rekonfigurację aplikacji w sprzęcie w czasie rzeczywistym (Runtime Reconfiguration – RTR [7-9]). Implementacją tego zagadnienia w języku Java jest środowisko JBits [10].
Pośrednim rozwiązaniem implementacji są parsery języka VHDL w Java [5] – JHDL
Wymogi dla każdej z domen spełnia język e [13], który łączy w sobie specyfikacje, weryfikację oraz syntezę układów. Jest to język zorientowany obiektowo, zaprojektowany w stylu języka Java i rozwinięty o konstrukcje i koncepcje języka weryfikacji HVL. Koncepcje te są wspierane przez dedykowane środowisko Specman [14]. Dzięki temu, język e oferuje projektantom weryfikacyjną platformę projektowania sprzętu, umożliwiającą korzystanie z technik wysokopoziomowego programowania obiektowego. Język e używa metod konstrukcyjnych układów RTL. Dzięki czemu jest wykwalifikowanym językiem do syntezy sprzętu. Proces rozpoczyna się od zdefiniowania jego struktur lub algorytmiczności w specyfikacji napisanej w języku e . Jest ona weryfikowana przez środowisko Specman . Dzięki temu można od razu zbudować warstwę testów (testbench), która również jest napisana w języku e . Może być modyfikowana w dowolnym czasie (np.: zmiana scenariusza testów), a poszczególne struktury mogą być wielokrotnie użyte. Specyfikacja jest dalej procesowana przez „ e Synthesis System” ( eSS ). Wynikiem tego procesu jest plik z prostymi strukturami (już nie obiektowymi), który może być dalej procesowany przez standardowe narzędzia syntezy sprzętu (np.: Verilog). Kod Verilog jest zróżnicowany w zależności od specyfikacji systemu. Jeśli definiowano algorytmy w pliku specyfikacji, zostaje utworzony opis behawioralny układów. W innym przypadku, utworzony opis jest zgodny z HDL na poziomie RTL. Dodatkowo eSS generuje kod Verilog, który wspiera pracę symulatora weryfikacji i testów. Opisy w innych językach programowania, takich jak VHDL lub C/C++, mogą być również wygenerowane przez eSS .
The analysis determines a set of possible objects for each variable within the scope of a statement. Each node of the CFG has one scope table, where all variables in the scope of the node are stored together with a set of objects that may be referenced by this variable. The scope tables are built together with the whole CFG. When a new node is created, the scope table of the parent node is cloned and the set of references (‘reference set’) of each variable changed by the statement is updated. The control data flow analysis applies techniques known from software compiler design [9] to the synthesis of hardware. After the lexical and semantical analysis done by the scanner and parser fore, a static control and data flow analysis is performed on the set of syntax trees for each e object. The result of the analysis is a control flow graph (CFG) where the data flow information is stored in a scope table within each node of the graph. Because of the combination of data and control flow information, no separate data flow graph has to be generated and the analysis traverses the syntax tree only once. The CFG has two different types of nodes. The control flow nodes divide the CFG in multiple sub-trees if a node has multiple children. This is the case for nodes representing, e.g., while loops or if statements. The second type of nodes in the CFG are the data flow nodes, which do not change the control flow, like arithmetic operations or assignments. The main problem of the transformation is the usage of references. Deciding which object is accessed when a method is called on a variable can only be done at runtime. Objects may have several references, or aliases at the same time, so it is hard to tell which statements affect which object.
We’ve specified several circuits in Java (e.g. JPEG codec, fuzzy controler, GSM speech transcodec, etc.). They were processed and transformed to VHDL with the system mentioned above. The results of the high level synthesis showed that the area of the circuits increases by approximately 5% compared to hand written VHDL code. The delay estimated by a commercial register transfer and logic level system increases by approximately 15%.
PODs to jeden z przykładów szukania softwareowego intrefesu do sprzętu, który umozliwia podejscie abstrakcyjne i pozwala go traktowac jako obiekty z oprogramowania. Trwają prace nad uzdolnieniem do dziedziczenia…. Interface h. - jest roznorodnosc POD, dzieki hierarchi – laczenie roznych POD będzie możliwe i kompatybilne Do pracy potrzebna jest komunikacja, zorientowane obiektowo sprzet powinien moc adaptowac wszelkie możliwe warunki pracy – rozne magistrale komunikacyjne -> tu funkcjonuje Driver. Manager – organizuje strukture urzadzen w postaci drzewa, umożliwia komunikacje
The new composite object would have all the members and methods of the base class as well as added functionality from the new members and methods. The advantages of inheritance in hardware are similar to the advantages of inheritance in software. They include: 1. Encapsulation/protection of member PODs 2. Virtual functions to modify subclass POD behavior 3. Better bandwidth usage for inter-member communication Implements… Dzieki niemu strukturyzujemy system, generalizujemy jego funkcje co umozliwia latwe rozbudowanie i modyfikowanie.
Pewna grupa badaczy na uni w Brigham wykonuje dużo badan nad tym modelem. Testowali termometry, wyświetlacze, przekazniki, przełączniki, itp. Obiekty POD. Pracują nad tym od ok. 2003.
Kolejni badacze podchodzili do tematu… OOPic (Object-Oriented Programmable Integrated Circuit) is another set of devices that are meant to allow object-oriented programming with hardware (OOPic, 2001). They are able to network together using I2C and access functions that wrap hardware. (odpowiednik hierarchii interfejsow w POD) However, the only facet of object-oriented programming they offer is encapsulation. They encapsulate all the hardware functions into an object and abstract the details away from the user. This is useful, but again, it lacks in some of the more powerful constructs of object-oriented design
Phidgets (Greenberg, Fitchett, 2001) are another available hardware/software interface. Much like PODs, Phidgets have a software programmable hardware interface. Most of their work has been in applying the ideas of a GUI to hardware. They have met their goal of abstracting the hardware controls into objects a software program can use. Teraz robia samą elektronie i szybkie porty USB.
Lego MindStorms offer another simple solution to the hardware problem. All the parts snap together for simple electrical connections. The interface to the sensors and motors is essentially part of the programming language (it is almost entirely visual, using icons and flow charts to create program control.) As evidence of the simplicity of this solution, MindStorms are designed for ages 12 and up.
Eib – delegacje
Doświadczenia ze stosowania języka e pokazały, że sparametryzowane biblioteki definicji używane do wygenerowania szerokiej gamy implementacji modułów . Taka biblioteka wspiera wiele różnych architektur systemu, poprzez dowolne generowanie konfiguracji układów FPGA. Sparametryzowane definicje modułów w FPGA umożliwiają wykorzystanie tych układów w sposób zorientowany na zastosowania systemu . Projektanci systemów mogą osiągać optymalną wydajność i zajętość zasobów układów, przy małym nakładzie optymalizacji [15]. - > plik definicji Zawartość tego pliku odwzorowuje moduły sprzętowe poprzez listę ich * parametrów i * interfejsów. Na podstawie pliku definicji generowany jest odpowiedni plik konfiguracyjny do syntezy sprzętu, np. w języku VHDL Na bazie tego samego pliku definicji generowane są struktury w warstwie programistycznej, relewantne do struktur sprzętowych Plik definicji określa moduły sprzętowe (1) w systemie, a tym samym zostają określone ich klasy w oprogramowaniu (4). Poprzez interfejs komunikacyjny (2) (np.: Ethernet, VME, itp.), obiekty tych klas mogą się bezpośrednio komunikować (3) z ich sprzętowymi odpowiednikami. W ten sposób zapewniono sterowanie poszczególnymi modułami sprzętowymi poprzez obsługę ich obiektowych odpowiedników w oprogramowaniu Sparametryzowany opis sprzętu jest wydajnym podejściem do zagadnienia obiektowo zorientowanego sprzętu. Prawidłowo zaprojektowane środowisko, bazujące na tym modelu, jest w stanie wspierać : -opis struktur sprzętu, -weryfikacje projektu, -syntezę układów w FPGA (czego przykładem jest język e), -a nawet środowisko oprogramowania tego systemu.
Cii to jeden z przykładów zastosowania sparametryzowanej definicji sprzętu…, umie łączyć często zmieniającą się strukturę FPGA z oprogramowaniem komputerowym.. Idea dzialania component ii. bazuje na wspolnym pliku konfi. Detrminuje strukture sprz. Zrealizowaną W vhdl, a z drugiej stron. umoz skorelowana obsluge tego sprztu realizowaną w jezykach … Dzieki temu powstaja moduly sprzetowe w ukladach fpga, a po stronie oprogramowani obiektty – ich odpowiedniki W ten sposób zapewnia poprawna komuniakcje miedzy sprz. A oprogr..
Przedstawia koncepcję zagadnianie połączenia softu z hardw. Powstają definicje typów komponentów, które wraz z ich wzajemnymi relacjami kreują zastosowania systemu pomiarowego. Pomiędzy fizyczną, a programistyczną warstwą zostaje zapewniona bezpieczna komunikacja – wynika ze spojnego procesu generownia opsiow …
Proces generowania opisów został przedstawiony na tym rysunku… CII zapewnia strukturyzację portów jako logicznej całości
Komponent to struktura portów zamknięta w logicznej całości Posiada interfejsy – rejestry – środki I/O Oraz parametry – cechy (rozróżniające instancje komponentów) (parametr krotności.. Oznacza to, że definiując krotność równą zero , fizycznie usuwa się komponent z systemu, jednak jego formalna definicja pozostaje. Ta cecha pozwala na szybką i efektywną rekonfigurację logiki systemu ) Hierarchiczna struktura i generowanie definicji sprawia że jednokrotna definicja komp. może być wiele razy użyta (instancjowana) dla różnych parametrów wywołania. Dzięki opisanemu podejściu, przykładowe dodanie nowego interfejsu do jednego z modułów, sprowadzi się w praktyce do dodania treści jedynie w definicji komponentu. Zmiany zostaną uwzględnione generycznie, w każdym miejscu, gdzie ten komponent został użyty (instancjowany).
Dostęp do rejestrów w sprzęcie jest zróżnicowany. Klasa CCII_ACCESS_INTERF stanowi nadrzędny typ hierarchii klas dostępowych. Zawiera metody przeznaczone do współpracy z rejestrami FPGA - funkcje odczytu/zapisu. Pobierają one adres rejestru jako jeden z parametrów. Ta klasa jest dziedziczona przez wyspecjalizowane klasy dostępu: CCII_ACCESS_RO, CCII_ACCESS_RW, CCII_ACCESS_RC, CCII_ACCESS_IR, CCII_ACCESS_WO, które oznaczają kolejno: read-only (tylko odczyt), read-write (odczyt i zapis), read-constant (odczyt stałej), read-inner register (odczyt i zapis wewnętrznego rejestru) , write-only (tylko zapis) fizycznych rejestrów. Na schemacie uwidoczniono klasy komponentów wchodzących w skład systemu (CCII_TIMER, CCII_IDENTIFICATOR, CCII_DPM_DAQ, itd.) oraz strukturę definicji systemu CCII_OPTO_cfg_tab
Najczesciej architektura Rozproszonych systemów, rozproszonej funkcjonalności Oparte na układach programowalnych np. FPGA Interakcja użytwkonika Praca z takim systemem wymaga sterowania z poziomu aplikacji komputerowych Zaistniała potrzeba opracowania modelu środowiska oprogramowania, umożliwiającego budowanie oprogramowania zintegrowanego z warstwą sprzętową..
. Plik Konfig systemu dostarcza struktur do podstawowej integracji z zasobami w sprzęcie, Na ich bazie został opracowny model srodowiska zlozony z trzech warstw, którego schemat jest tu pokazany… Dost. Niskopoziom. HLA ma wszystkie procedury które umieją się zintegrować z plikiem konfiguracyjnym – podstawowe procedury połączeniowe, z pliku definicji czerpie podstawowe informacje (takie jak zakres bazowy, szerokosc magistral, itd) . Są to biblioteki podstawowe dostępu do portów I/O sprzętu oraz biblioteki systemów CII składających się z komponentów (odpowiedników modułów w sprzęcie) Dostep funkcjonalny… Dostęp funkcjonalny polega na zautomatyzowanej obsłudze czynności podstawowych, jakimi są akcje I/O, wykonywanymi na rejestrach komponentów CII. Celem tej biblioteki jest dostarczenie operacji i algorytmów pracy dla zapewniania funkcjonalności systemu Dostep aplik... Warstwa GLA to zespół aplikacji graficznych opartych na funkcjonalności (FLA) i charakterystyce (HLA) systemów CII. Są to aplikacje mające na celu zakrywanie informacji o elementarnych strukturach systemu, a uwydatnianie jego ścisłych funkcji Dynamika = Architektura zależności pokazuje, iż każdy system zawiera jedną definicję podstawowych bibliotek komponentów CII, które mogą zapewniać szereg różnych funkcjonalności, a każdą z nich można zaprezentować w aplikacjach użytkownika w dowolny sposób.
Poprzez struktury biblioteki HLA uzytwkonik ma dostęp do interfejsów sprzętowych CII zawartych w strukturach komponentów, ktrore są dostarczane w proecesie generacji. Uzytkownik pracuje z systemem kodując operacje na podstawie obiektow z biblioteki: instancjuje komponenty i wykonuje na nich wlasne funkcje… Jest to niski poziom dostępu i wymaga: Wiedzy o systemie…. … …
Dostęp funkcjonalny polega na zautomatyzowanej obsłudze czynności podstawowych, jakimi są akcje zapisu/odczytu z HLA. Tutaj widzimy przykład pracy z biblioteką: używając FLA uzytkownik nie korzysta z metod HLA tylko z funkcji o charakterze logicznym… Nie pracujemy na poziomie rejestrów i pamięci, ale na poziomie umiejętności tych komponentów.. - Zaleta jest taka, ze nawet kiedy komponent zostanie zmodyfikowany wewnętrznie, ale nie zmieni swojej funkcjonalnosci, na tym poziomie będzie to ukryte i przezroczyste dla uzytkownika Celem tej biblioteki jest dostarczenie operacji i algorytmów pracy dla zapewniania funkcjonalności systemu. Znajomosc logiki – oznacza ze wymagana jest nie tylko wiedza o funkji komponentu, ale również o jego zastosowaniu w calym systemie CII.
Warstwa GLA to zespół aplikacji graficznych opartych na funkcjonalności (FLA) i charakterystyce (HLA) systemów CII. Stanowi struktury do budowy aplikacji mających na celu zakrywanie informacji o elementarnych strukturach systemu, a uwydatnianie jego ścisłych funkcji (nie potrzebna jest wiedza o rejestrach, rodzajach pamięci, a kładzie się nacisk na zastosowanie komponentów systemu). GLA daje możliwości pracy w trybach: deweloperskim – poprzez kodowanie własnych programów graficznych, opartych o struktury biblioteki GLA, aplikacyjnym – wykorzystanie gotowych aplikacji GUI do pracy z komponentami i systemem CII 28:40
Realizacja poszczególnych warstw modeu ilustruje przykład bardzo prostego komponentu CII – identyfikator, jest to komponent autodiagnostyczny - do testowania komunikacji ze sprzętem -Przedstwiono jakie są dostępne rejestry jakie są widzoczne/dostępne w bibliotetece HLA -Tutaj przedstawiono uzyteczne funkcje do obslugi tego komponentu w bibliotece FLA -Następnie pokazano powstale elementy graficzne jakie pozwalają zbudować aplikacje komponentu, pokazano wykorzystanie funkcjonalnosci z FLA.
Z poziomu GLA mamy panel graficzny, w którym widzimy elementy funkcyjne komponentu. Uzytkownik przez ten panel otrzymuje dostęp do poszczególnych interfejsów, może również wykonać zespoloną akcję, która całkowicie sprawdza działanie tego komponentu. Przykład wykorzystania struktury generycznych… GLA zawiera pakiet typów generycznych stanowiących podstawowe komórki w budowie klas graficznych komponentów CII
what is object oriented hardware element ? -control unit (processor core) - receiving, processing object-oriented programing objectcs (like PODs manager) -universal input/output interface - to interact with field element -open bus - to enable processor to communicate with control network Device functions - definable and/or be modeled by executable programing code is an inteligent piece of hardware that may be modeled by software -> hardware container for software objects
Jest to schemat systemu pomiarowego zbudowanego w FPGA płyty Simcon… tutaj w laboratorium.. Schemat jest zbudowany w oparciu o komponenty systemu CII nazwanego : CII_OPTO Są nimi CII_TRANSCIEVER, zlozony z komponentu nadajnika i odbiornika, zamknietymi we wspolny komponent przekaznika Komponent COMP_DAQ, służacy do akumulacji i reprezentacji danych Przedstawiony poprzednio komponnet identyfikatora Oraz komponent timer ? Komponent generator- to wewnetrzna struktura w module FPGA, która generuje sygnał piloksztaltny
Dla przedstawionego schematu przeprowadzono badania podejmując nastepujace kroki: 1 autodiagnoza – w celu sprawdzenia poprawnosci komunikacji i pracy z systemem uzytko CII_IDENTYFIKATOR 2 konfiguracja przekaznika – w ukladzie wystepują opoznienia zwiazane z technicznymi uwarunkowaniami (rodzaje polaczen, dlugosc kabla = latencja), Komponent transciever’a posiada opracowaną funkcje autokalibracji, która porownuje wartosc odbierana z nadawaną dla pewnego zakresu wartosci interfejsu BITS_DATA_DELAY, odpowiedzialnego za synchronizację latencji (wspominac o trybach testu?) 3 wyzwalania zapisu, polega na ustawineiu rejestrowi … wartosci jeden, wtedy dane trafiają do pamiecie comp_dpm_daq 4. Wyzwalanie odczytu, polega na przestawiniu wartosci rejestru … na 0, co umozliwia odczyt pamieci przez intefejsc CII 5. Prezentacja danych, w komponencie COMP_DAQ opracowano strukture danych, wyswietlajaca zawartosc pamieci na wykresie… Zostala odczytane naraztajace zbocze Generowany przebieg piloksztaltnego
A hierarchical, structural decomposition of the design problem reduces the complexity by isolating subproblems and hence makes the global design problem accessible for a solution ziki zwizaniu metod z obiektami nie s moliwe błdy niepoprawnego wywołania funkcji z nieuprawnionymi argumentami (metody operuj na danych zwizanych z obiektem). Minimalizowana jest wic ilo błdów niepoprawnego uycia funkcji. Uzytkownikiem również kontroler – sprzęt = łatwosc rozszerzania, migraci, itp…
Number of different protocols for the control of home digital devices Mobility of the control devices Possibility of the remote control of devices via Internet Possibilities of connecting and disconnecting devices without interrupting and changing system architecture Personalized services access Cheap end-user terminal solutions