Grzegorz Łabiak Wydział Elektrotechniki, Informatyki i Telekomunikacji Uniwersytet Zielonogórski ul. Podgórna 50, 65-246 Zielona Góra HiCoS akademicki system do projektowania hierarchicznych współbieżnych cyfrowych układów sterowania Słowa kluczowe: CAD, statecharty, układy cyfrowe, sterowanie binarne, hierarchia STRESZCZENIE W referacie przedstawiono specjalistyczny program komputerowy HiCoS (ang. Hierarchical Concurrent System), który stanowi praktyczną weryfikację metod i algorytmów zaproponowanych przez autora referatu. Opracowany system jest przeznaczony do projektowania cyfrowych układów sterowania binarnego. Wejściem do systemu CAD jest plik źródłowy (format SSF), który stanowi tekstową reprezentację diagramów statechart. Wyjściem z systemu jest plik w języku VHDL, opisujący układ na poziomie rejestrów i przesłań między-rejestrowych, który może następnie być poddany komputerowej syntezie w strukturach reprogramowalnych. Jako wewnętrzną reprezentację wyrażeń logicznych w pamięci komputera zastosowano diagramy BDD. Całość zilustrowana jest przykładem. Ponadto referat przedstawia możliwe zastosowania sterowników projektowanych opisaną metodą. 1. WPROWADZENIE Niniejszy referat prezentuje autorski system komputerowego wspomagania projektowania układów cyfrowych. Program komputerowy HiCoS (ang. Hierarchical Concurrent System) stanowi praktyczną implementację wyników badań nad efektywnym wykorzystaniem hierarchii w projektowaniu układów cyfrowych. Układami które znalazły się w obszarze zainteresowań autora są cyfrowe układy sterowania binarnego (w skrócie CUSB), czyli układy reagujące na pobudzenia zerojedynkowe. Metodą klasyczną projektowania takich układów jest metoda wykorzystująca diagram przejść automatu skończonego, dająca w wyniku układ sekwencyjny [1]. Wadą tej metody jest wykładniczy wzrost liczby stanów, postępujący wraz ze złożonością modelowanego układu. Pewnym usprawnieniem podejścia klasycznego jest uwzględnienie w modelu zachowania projektowanego układu współbieżności. W wyniku nowych założeń otrzymano model automatu współbieżnego, którego najbardziej obrazową formą jest równoważna mu sieć Petriego [1][2][3][13]. Układy cyfrowe realizowane tą metodą mogą charakteryzować się większą złożonością. W roku 1987 David Harel opublikował jeden z pierwszych artykułów [5], w którym zaproponował wykorzystanie diagramów statechart do opisu zachowania złożonych systemów. Główną cechą diagramów jest operowanie pojęciem stanu oraz wsparcie dla takich cech jak współbieżność i hierarchia. Układ cyfrowy realizujący zachowanie zamodelowane diagramami, nazywany jest w literaturze hierarchicznym współbieżnym automatem skończonym (ang. Hierarchical Concurrent Finite-State Machine lub w skrócie HCFSM) [4].
Dotychczas powstało bardzo niewiele systemów bezpośrednio wykorzystujących diagramy do projektowania układów cyfrowych, implementowanych w strukturach reprogramowalnych. Pierwszym i najbardziej popularnym jest system Magnum Statemate firmy I-Logix, gdzie zachowanie układu opisane jest w języku HDL (VHDL lub Verilog), z wykorzystaniem m.in. instrukcji case i instrukcji sekwencyjnych (process lub always) [6][7]. Autor w swych pracach skupił się na takim podzbiorze graficznego języka statechart, który zapewnia, że modelowane układy są binarne (operują wartościami binarnymi) oraz są w pełni modularne (brak możliwości realizacji tranzycji przekraczających granice stanów) [8][11]. W odróżnieniu od programu Magnum, autor przyjął metodę bezpośredniej implementacji sprzętowej modelowanego układu. Powstały układ cyfrowy jest opisany na poziomie rejestrów i przesłań międzyrejestrowych (ang. Register Transfer Level). Takie podejście charakteryzuje się nie tylko lepszym wykorzystaniem zasobów układu reprogramowalnego, ale też daje łatwą możliwość analizy formalnej [9] (np. z wykorzystaniem grafu osiągalności) projektowanego układu. Rys. 1 przedstawia schemat blokowy powstałego systemu, realizującego opisane przejście. Wejściem do sytemu jest tekstowa reprezentacja diagramów zapisana w formacie SSF [8]. Statecharty SSF SYSTEM HICOS Równania Logiczne BDD Graf Osiągalności BDD VHDL RTL FPGA 2. ZASTOSOWANIE Rys. 1. Schemat ideowy sytemu HiCoS Pierwszym i podstawowym zastosowaniem diagramów statechart jest opis zachowania złożonych systemów, głównie systemów reaktywnych. Poprzez pojęcie system reaktywny należy rozumieć układ, który prowadzi stałą interakcję ze swoim otoczeniem oraz zmienia swój stan wraz z napływającymi pobudzeniami dochodzącymi z otoczenia, głównie w postaci zdarzeń. Jak widać w takim znaczeniu tego terminu mieści się również pojęcie układu sterowania binarnego (Rys. 2). W systemie HiCoS zdarzenia są reprezentowane przez sygnały. Wartość sygnału 1 oznacza wystąpienie zdarzenia, wartość 0 oznacza jego brak. Wejściem modelowanego układu jest wyróżniony zbiór zdarzeń wejściowych, wyjściem wyróżniony zbiór zdarzeń wyjściowych. Istnieje w systemie możliwość definiowania zdarzeń lokalnych, nie widocznych dla świata zewnętrznego, które mogą być wykorzystane do synchronizacji wewnętrznych procesów współbieżnych. Przykładem zdarzeń wejściowych są sygnały od operatora lub od obiektu, natomiast przykładem wyjściowych mogą być sygnały sterujące przekazywane do obiektu lub sygnały informacyjne dla operatora (Rys. 2). Sygnały od operatora Układ Sterowania Binarnego Sygnały Sterujące Obiekt Wyjścia sygnalizacyjne Rys. 2. Przykład zastosowanie: układ sterowania obiekt sterowany
Innym zastosowaniem układów specyfikowanych diagramami może być model obliczeniowy składający się z części przetwarzającej dane i jednostki sterującej, zarządzającej przetwarzaniem danych (Rys. 3) [3][4]. Model ten znajduje bardzo szerokie zastosowanie między innymi w cyfrowym przetwarzaniu sygnałów (ang. Digital Signal Processing) oraz jest podstawową architekturą procesorów ogólnego przeznaczenia. Danymi wejściowymi jednostki sterującej są sygnały stanu układu przetwarzania danych. Danymi wyjściowymi, natomiast, są sygnały zarządzające obliczeniami oraz sterujące przepływem danych. Zaprojektowanie jednostki sterującej kierującej współbieżnym przetwarzaniem informacji, z udziałem diagramów statechart, pozwala na lepszą analizę zachowania realizowanego układu. Dane Wejściowe Jednostka Sterująca Sterowanie Status Przetwarzanie Danych 3. WEJŚCIE Dane Wyjściowe Rys. 3. Przykład zastosowania: jednostka sterująca ścieżka przetwarzania danych Jak to zostało napisane w części pierwszej referatu, wejście do systemu stanowi plik w autorskim formacie SSF, który jest równoważną tekstową reprezentacją postaci graficznej (Rys. 1). Dla inżyniera projektanta postać tekstowa jest zdecydowanie mniej efektywna niż diagramy, lecz dla celów badawczych, zdecydowano się na mniej atrakcyjną formę wprowadzania danych ale za to tańszą w realizacji i łatwiejsza do szybkiej modyfikacji. W opinii autora, realizacja prostego programu kompilatora jest znacznie mniej pracochłonna niż złożonego realizacja edytora graficznego. Język SSF składa się z 16 słów kluczowych oraz z 27 produkcji, a jego gramatyka jest gramatyką typu LL(1) [8]. Jako przykład wykorzystania opisu języka niech posłuży diagram modelu zachowania prostego pilota telewizyjnego, posiadającego funkcje włączania telegazety, wyłączania dźwięku i przełączania się między dwoma kanałami telewizyjnymi. Rys. 4 przedstawia dwie równoważne postaci opisu: graficzną i tekstową. Po słowie kluczowym port ma miejsce blok deklaracji sygnałów przychodzących do i wychodzących ze sterownika. Podstawowym elementem języka jest specyfikacja automatu sekwencyjnego (np. scsnd), która składa się z jawnego wymienienia stanów automatu (na rys. krągłokąty), ustalenia stanu startowego (na rys. stan ze strzałką dochodzącą, np. CHANNELS) oraz zdefiniowania odwzorowań funkcji tranzycji wraz z predykatami i funkcji wyjściowej (na rys. strzałki z etykietami, w tekście odpowiednio tf i of). Do ustalenia związków współbieżności i hierarchii pomiędzy automatami służą odpowiednio słowa kluczowe and oraz dec by (na rys. automaty w relacji współbieżności są przedzielona linią przerywaną). Na przykład statechart scrm jest automatem współbieżnym składającym się z dwóch automatów scop i scsnd. Ustalenie związków hierarchii polega na przyporządkowaniu stanom automatu sekwencyjnego innych podautomatów. Dokonuje się tego poprzez jawne wyspecyfikowanie odwzorowań funkcji dekompozycji (w przypadku automatu scrm funkcja dekompozycji nazywa się df i jej nazwa jest ustalana po słowie kluczowym by). Stanom które nie są stanami złożonymi przypisuje się słowo kluczowe nodec (ang. no decomposition). Ponadto składnia dopuszcza definiowanie predykatów jako równania logiczne.
H Two*!One*!Txt*!Off Txt*!Off scop CHANNELS CH1 do / Ch1 CH2 do / Ch2 do / Pic TXT do / TelText On ON One*!Two*!Txt*!Off TV*!Off OFF Off SndOff *!Off scsnd SNDON do / Snd SNDOFF SndOn *!Off controller TVRm; port(onn: in; Off: in; SndOff: in; SndOn: in; One: in; Two: in; Txt: in; TV: in; Pic: out; TeleTxt: out; Snd: out; Ch1: out; Ch2:out); scchannels=({ch1,ch2},ch1,tf,ef){ scop=({channels,txt},channels,tf,ef) { dec scop by df { df(channels) = scchannels:h; df(txt) = nodec; scsnd=({sndon,sndoff},sndon,tf,ef) { tf(sndon, SndOff*!Off) => SNDOFF; tf(sndoff, SndOn*!Off) => SNDON; ef(sndon) = do /{Snd scrm=({off,on},off,tf) { tf(off, Onn) => ON; tf(on, Off) => OFF; dec scrm by df { df(off) = nodec; df(on) = and(scop, scsnd); 4. BUDOWA I DZIAŁANIE Rys. 4. Diagram wraz z równoważną postacią tekstową w formacie SSF System HiCoS jest programem komputerowym napisanym w języku C++ w środowisku Microsoft Visual C++ z wykorzystaniem biblioteki MFC. Plik wejściowy w formacie SSF jest poddawany translacji kierowanej składnią, której celem jest stworzenie wewnętrznej reprezentacji danych. Wewnętrzny model danych posiada cechy drzewa hierarchii. Węzły reprezentują stany, krawędzie reprezentują relację stan nadrzędny stan podrzędny. Następnie model wewnętrzny jest zamieniany na opisujący go równania logiczne. Każdemu stanowi jest przyporządkowany jeden przerzutnik, z każdym zdarzeniem jest związany sygnał. Dla przerzutników tworzone są funkcje wzbudzeń, a dla sygnałów funkcje sygnałów i wyjść. Zależności między funkcjami a sygnałami w tworzonym systemie przedstawia Rys. 5. SYSTEM STATECHART X clock reset funkcje sygnałów funkcje wzbudzeń rejestr przerzutników Y Rys. 5. Koncepcja implementacji diagramów
Jako wewnętrzną reprezentację wyrażeń logicznych zastosowano binarne diagramy decyzyjne z pakietu CUDD [12], nie przyjmując żadnych założeń o uporządkowaniu zmiennych w diagramie BDD. 5. WYJŚCIE Główne zadanie jakie zostało postawione autorowi do zrealizowania było sprawdzenie możliwości wykorzystania hierarchicznego modelu automatu współbieżnego w projektowaniu sterowników cyfrowych, przy założeniu, że projektowane układy będą bezpośrednio implementowane w strukturach reprogramowalnych (np. FPGA). Dostępne na rynku komercyjne systemy realizujące syntezę i implementację układów reprogramowalnych (np. Xilinx Foundation, FPGA Express czy Leonardo Spectrum), jako swój główny format danych wejściowych wykorzystują języki HDL. Stąd, aby była możliwa współpraca systemu HiCoS z oprogramowaniem komercyjnym, zdecydowano się, że formatem danych wyjściowych będzie plik zapisany w języku VHDL (Rys. 6). Jak widać z rysunku do budowy pliku został wykorzystany podzbiór języka, który jest niezbędny do deklaracji przerzutników i zdefiniowania przypisań wyrażeń logicznych do sygnałów. Prostota budowy pliku jest konsekwencją przyjętego założenia o bezpośredniej implementacji. Inną korzyścią płynącą z opracowania modelu układu na poziomie RTL, jest łatwość realizacji metod analizy symbolicznej. System HiCoS posiada możliwość wygenerowania i wyświetlenia funkcji charakterystycznej przestrzeni stanów globalnych układu [9]. Dysponowanie przestrzenią stanów układu w postaci symbolicznej, w której zbiór stanów jest symbolicznie reprezentowany przez funkcję charakterystyczną zmiennych stanu (czyli przerzutników), stwarza możliwości dokładniejszej analizy modelowanego układu (np. wykrywanie tranzycji w konflikcie [6]). TVRm.vhd -- część przerzutnikowa library IEEE; use IEEE.std_logic_1164.all; entity FDD is end entity; architecture FDD of FDD is begin process (CLK, CLR) end architecture; -- część sterownikowa library IEEE; use IEEE.std_logic_1164.all; entity TVRm is port( reset : in STD_LOGIC; clock : in STD_LOGIC; Onn: in STD_LOGIC; Snd: out STD_LOGIC; end TVRm; architecture TVRm of TVRm is -- sygały wyjściowe z przerzutników signal scsnd_sndon, ; -- sygnały wejść przerzutników signal f_scsnd_sndon, ; -- funkcje sygnałów signal fsx_sndon, fsx_one, ; component FDD port (); end componnent; begin -- instancjacje komponentu -- przerzutnika FDD FF_SNDON: ffd port map (); -- przypisania funkcji wzbudzeń -- przerzutników zmiennych stanu f_scsnd_sndon <= ; -- przypisania funkcji sygnałów fsy_snd <= ; -- przypisanie sygnałów wyjściowych Snd <= fsy_snd; end TVRm; Rys. 6. Budowa pliku wyjściowego
6. PODSUMOWANIE Opracowany akademicki system stanowi praktyczną weryfikację metod i algorytmów opracowanych przez autora. Wyniki uzyskane na drodze symulacji wyjściowego modelu układu w języku VHDL, potwierdzają prawidłowość zasad opisu diagramów statechart równaniami logicznymi. Symulowane działanie układu było zgodne z oczekiwanym. Wyniki syntezy pokazują, że zużycie zasobów układu reprogramowlnego, przy projektowaniu z udziałem proponowanej metody, jest porównywalne do rezultatów otrzymywanych przy zastosowaniu metod tradycyjnych np. sieci Petriego [2][3][10][13]. Innym zastosowaniem programu HiCoS było wykorzystanie systemu w procesie dydaktycznym w ramach zajęć laboratoryjnych z przedmiotu Reaktywne Systemy Cyfrowe, prowadzonych na Uniwersytecie Zielonogórskim. Praca z programem została pozytywnie oceniona przez studentów. BIBLIOGRAFIA [1] M. Adamski: Projektowanie układów cyfrowych systematyczną metodą strukturalną, Monografie, Wydawnictwo WSI w Zielonej Górze, Zielona Góra 1990. [2] M. Adamski, Bezpośrednia implementacja sieci Petriego w reprogramowalnych układach cyfrowych, III Krajowa Konferencja Naukowa Reprogramowalne Układy Cyfrowe, Szczecin 2000, Mat. Konf., s. 131-138. [3] K. Biliński: Application of Petri Nets in parallel controllers design, PhD. Thesis, University of Bristol, Bristol, 1996. [4] D. D. Gajski, F. Vahid, S. Narayan, and J. Gong: Specification and Design of Embedded Systems, Prentice Hall, Englewood Cliffs, NJ, 1994. [5] D. Harel, Statecharts A Visual Formalism for Complex Systems, Science of Computer Programming, No 8, North-Holland, 1987, pp. 231-274. [6] D. Harel, A. Naamad, The STATEMATE Semantics of Statecharts, ACM Trans. Soft. Eng. Met. 5:4, October 1996. [7] HDL Code Generator Reference Manual, 3 Riverside Drive, Andover, MA 01810, I-Logix Inc. [8] G. Łabiak, Statecharts Specification Format (SSF) tekstowa postać opisu diagramów, Materiały III Krajowej Konferencji Naukowej - Reprogramowalne Układy Cyfrowe, Szczecin, 10, IV, 2000, str. 147-154 [9] G. Łabiak, Symbolic States Exploration of Controllers Specified by Means of Statecharts, Proc. of the Intl. Workshop DESDes 01, Przytok 2001, pp. 209-214. [10] G. Łabiak, Application of BDDs in FPGA Synthesis of Statechart-based Controllers, International Workshop Control and Information Technology IWCIT 01, Ostrava September19 th -20 th, 2001, pp.45-50. [11] D. Nazareth, F. Regensburger, P. Sholz, Mini-Statecharts, A Lean Version of Statecharts, Technical Report TUM I9610, Technische Universitaet Munchen 1996. [12] F. Somenzi, CUDD: CU Decision Diagram Package, http://vlsi.colorado.edu/~fabio/cudd/cuddintro.html. [13] P. Wolański, Modelowanie układów cyfrowych na poziomie RTL z wykorzystaniem sieci Petriego i podzbioru języka VHDL, Rozprawa Doktorska, Politechnika Warszawska, 1998.