Realizacja bezpiecznego programowalnego sterownika logicznego z wykorzystaniem języków HDL

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

OPTYMALIZACJA MODELI SYMULACYJNYCH ZAMODELOWANYCH W JĘZYKU VERILOG HDL Z WYKORZYSTANIEM INTERFEJSU PLI

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 4 (3h) Przerzutniki, zatrzaski i rejestry w VHDL

Opracował: Jan Front

Projektowanie układów na schemacie

PROGRAMOWALNE STEROWNIKI LOGICZNE

Język opisu sprzętu VHDL

Krótkie wprowadzenie do ModelSim i Quartus2

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

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

JĘZYKI PROGRAMOWANIA STEROWNIKÓW

Lista zadań nr 5. Ścieżka projektowa Realizacja każdego z zadań odbywać się będzie zgodnie z poniższą ścieżką projektową (rys.

Projektowanie Scalonych Systemów Wbudowanych VERILOG

Szybkie prototypowanie w projektowaniu mechatronicznym

Przykładowe pytania z części PSPICE. 1. Podaj zasady tworzenia pliku symulacyjnego. 2. Czy składnia PSPICE jest czuła na wielkość liter? 3.

Ochrona własności intelektualnej projektów w układach FPGA poprzez szyfrowanie danych konfiguracyjnych

Sterowniki Programowalne (SP)

Bezpieczeństwo informacji oparte o kryptografię kwantową

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

Katedra Mikroelektroniki i Technik Informatycznych

Projekt prostego procesora

1. ISE WebPack i VHDL Xilinx ISE Design Suite 10.1 VHDL Tworzenie projektu Project Navigator Xilinx ISE Design Suite 10.1 File

Altera Quartus II. Opis niektórych komponentów dostarczanych razem ze środowiskiem. Opracował: mgr inż. Leszek Ciopiński

Opracowanie systemu sterowania wybranej linii technologicznej z uwzględnieniem zagadnień inżynierii oprogramowania

Specyfika projektowania Mariusz Rawski

Projektowanie Systemów Wbudowanych

1 Wprowadzenie do algorytmiki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Rok akademicki: 2013/2014 Kod: JIS s Punkty ECTS: 5. Poziom studiów: Studia I stopnia Forma i tryb studiów: -

Projektowanie scalonych systemów wbudowanych VERILOG. VERLIOG - historia

Szkolenia specjalistyczne

Politechnika Gdańska. Gdańsk, 2016

Elektrotechnika II Stopień (I stopień / II stopień) Ogólno akademicki (ogólno akademicki / praktyczny)

Układy reprogramowalne i SoC Implementacja w układach FPGA

dokument DOK wersja 1.0

Programowalne układy logiczne

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki. ĆWICZENIE Nr 8 (3h) Implementacja pamięci ROM w FPGA

1 Wstęp. 2 Proste przykłady. 3 Podstawowe elementy leksykalne i typy danych. 6 Opis strukturalny. 7 Moduł testowy (testbench)

Regulator PID w sterownikach programowalnych GE Fanuc

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

LEKCJA TEMAT: Zasada działania komputera.

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

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

Bezpieczeństwo informacji oparte o kryptografię kwantową

PROTOTYPOWANIE UKŁADÓW ELEKTRONICZNYCH Programowalne układy logiczne FPGA Maciej Rosół, Katedra Automatyki AGH,

LABORATORIUM ELEKTRONIKA Projektowanie koderów, transkoderów i dekoderów w języku VHDL

Karta przedmiotu. obowiązuje studentów rozpoczynających studia w roku akademickim 2016/2017. Forma studiów: Niestacjonarne Kod kierunku: 11.

Układy kryptograficzne z uŝyciem rejestrów LFSR

Projektowanie systemów za pomocą języków wysokiego poziomu ESL

Systemy Czasu Rzeczywistego FPGA

Sposoby projektowania systemów w cyfrowych

ZASTOSOWANIA UKŁADÓW FPGA W ALGORYTMACH WYLICZENIOWYCH APPLICATIONS OF FPGAS IN ENUMERATION ALGORITHMS

Aby w pełni przetestować układ o trzech wejściach IN_0, IN_1 i IN_2 chcemy wygenerować wszystkie możliwe kombinacje sygnałów wejściowych.

Elektronika i techniki mikroprocesorowe

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: TECHNIKA CYFROWA 2 TS1C

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

Adresowanie obiektów. Adresowanie bitów. Adresowanie bajtów i słów. Adresowanie bajtów i słów. Adresowanie timerów i liczników. Adresowanie timerów

PRZEWODNIK PO PRZEDMIOCIE

Podstawy PLC. Programowalny sterownik logiczny PLC to mikroprocesorowy układ sterowania stosowany do automatyzacji procesów i urządzeń.

LABORATORIUM TECHNIKA CYFROWA. Pamięci. Rev.1.35

Sterowniki Programowalne (SP) Wykład 11

Priorytetyzacja przypadków testowych za pomocą macierzy

Nazwa wariantu modułu (opcjonalnie): Laboratorium programowania w języku C++

Elementy cyfrowe i układy logiczne

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: PROGRAMOWALNE STRUKTURY LOGICZNE

RZECZPOSPOLITA OPIS PATENTOWY POLSKA PATENTU TYMCZASOWEGO

REFERAT PRACY DYPLOMOWEJ

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

Wykorzystanie standardu JTAG do programowania i debugowania układów logicznych

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania KOMPUTEROWE SYSTEMY STEROWANIA (KSS)

Mikrokontrolery AVR techniczne aspekty programowania

2.2 Opis części programowej

PROJEKTOWANIE UKŁADÓW MIKROPROGRAMOWANYCH Z WYKORZYSTANIEM WBUDOWANYCH BLOKÓW PAMIĘCI W MATRYCACH PROGRAMOWALNYCH

Literatura. adów w cyfrowych. Projektowanie układ. Technika cyfrowa. Technika cyfrowa. Bramki logiczne i przerzutniki.

Systemy Czasu Rzeczywistego FPGA

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Metody optymalizacji soft-procesorów NIOS

Języki opisu sprzętu VHDL Mariusz Rawski

Wydział Elektryczny Katedra Telekomunikacji i Aparatury Elektronicznej

Projektowanie Urządzeń Cyfrowych

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

Testowanie systemów wbudowanych i krytycznych dla bezpieczeństwa Bogdan Bereza Wersja (33)

Sterowanie w domu. Sprzęt

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

Systemy Czasu Rzeczywistego FPGA

Systemy zabezpieczeń

Mateusz Żyliński Tadeusz Włodarkiewicz. WireWorld. Zebranie informacji dotyczących tematyki projektu oraz przedstawienie koncepcji realizacji projektu

STEROWNIKI PROGRAMOWALNE OBSŁUGA AWARII ZA POMOCĄ STEROWNIKA SIEMENS SIMATIC S7

Uwaga: Akceptowane są wszystkie odpowiedzi merytorycznie poprawne i spełniające warunki zadania.

STEROWNIKI i REGULATORY (TS1A )

Mikroprocesor Operacje wejścia / wyjścia

Laboratorium podstaw elektroniki

Struktury systemów operacyjnych Usługi, funkcje, programy. mgr inż. Krzysztof Szałajko

Większe możliwości dzięki LabVIEW 2009: programowanie równoległe, technologie bezprzewodowe i funkcje matematyczne w systemach czasu rzeczywistego

Programowalne układy logiczne

Technologie informacyjne - wykład 12 -

Transkrypt:

Realizacja bezpiecznego programowalnego sterownika logicznego z wykorzystaniem języków HDL Arkadiusz Bukowiec 1 Radosław Gąsiorek 2 Agnieszka Węgrzyn 3 Prezentowany referat przedstawia ogólną koncepcję testowania i weryfikacji sterownika bezpiecznego oraz bloków funkcyjnych, w nim zastosowanych, projektowanych z wykorzystaniem języków HDL. Rozwiązanie bazuje na testowaniu układów z wykorzystaniem plików testowych napisanych w dwóch różnych języku HDL, a następnie porównaniu otrzymanych wyników. 1. Wstęp W ciągu ostatnich lat spotkano się z gwałtownym rozwojem programowalnych układów FPGA. Umożliwia to realizację z ich wykorzystaniem bardzo złożonych układów. Wraz ze wzrostem złożoności układów coraz częściej w ich projektowaniu znajdowały zastosowanie języki opisu sprzętu (np. Verilog). Języki te umożliwiają opis układu zarówno na poziomie bramek logicznych jak i na wyższych poziomach. Dodatkową zaletą zastosowania języków opisu sprzętu jest możliwość weryfikacji projektu praktycznie w każdej jego etapie. Realizacja bezpiecznego sterownika logicznego z wykorzystaniem języków opisu sprzętu znajduje się dopiero w początkowej fazie prac inżynierskich. Wykonanie sterownika bezpiecznego wymaga również zrealizowania bloków funkcyjnych zgodnym ze standardem IEC 1131-3 [2]. Realizacja tych projektów wymaga dokładnej weryfikacji modułów już podczas wstępnych prac, ze względu na potrzebę stałego nadzorowania poprawności działania sterownika. 2. Architektura bezpiecznego programowalnego sterownika logicznego W układzie zastosowano dwuprocesorową budowę master-slave (rys. 1). Taka architektura sterownika została przedstawiona dokładnie w [1]. Slave przetwarza dane według algorytmów zapisanych w formie bloków funkcyjnych zgodnych z normą IEC 1 Arkadiusz Bukowiec, Politechnika Zielonogórska, student III roku informatyki 2 Radosław Gąsiorek, Politechnika Zielonogórska, student III roku informatyki 3 mgr inż. Agnieszka Wegrzyn, Politechnika Zielonogórska, Instytut Informatyki i Elektroniki

1131-3 [2], natomiast master steruje przepływem danych i inicjuje procesor slave do wykonywania obliczeń. W celu wykrywania błędów sprzętowych zastosowano dwie pary takich procesorów, realizujących ten sam algorytm. W układzie zastosowano również komparator bezpieczny, który dokonuje kontroli zgodności wszystkich danych z obu par procesorów. Sterownik komunikuje się z otoczeniem poprzez porty wejściowe i wyjściowe, które łączą się z procesorami slave. Stan wejść jest zatrzaskiwany na początku cyklu w układzie wejściowym i pamiętany w czasie jego trwania. Odczytu z układu wejściowego dokonują procesory slave na żądanie procesora master. W sterowniku zastosowano jeden układ wejściowy wspólny dla obu procesorów slave. Stany wyjść są pamiętane w buforach wyjściowych wbudowanych do procesorów slave, a na koniec cyklu przepisywane do rejestrów latch. Następnie są one porównywane w układzie wyjściowym i udostępniane na zewnątrz sterownika. Układ wyjściowy jednocześnie generuje sygnał statusu pracy OK, a w razie awarii sterownika zapewnia on ustawienie wyjść w stan wyłączenia (bezpieczny stan sterownika). Master Master Komparator Komparator Slave Slave Wejścia Wyjścia Komparator Rys. 1. Schemat działania bezpiecznego programowalnego sterownika logicznego 3. Opis bloków funkcyjnych w języku HDL Do opisu bloków funkcyjnych wykorzystano język Verilog, ze względu na jego największą przydatność w opisie prostszych układów cyfrowych, jakimi w tym

przypadku są bloki funkcyjne dla bezpiecznego sterownika programowalnego. Na rys. 2 umieszczono przykładowy syntezowalny model. module shl (in,no,out); parameter size=16; input [0:size-1] in ; input [0:size-1] no; output [0:size-1] out; assign out = in << no; endmodule Rys. 2. Syntezowalny model układu shl Dla ustandaryzowania typów wykorzystano tylko i wyłącznie typy zgodne ze standardem IEC 1131-3, który umożliwia używanie typów 1, 8, 16, 32 i 64 bitowych. Dla sygnału no, który odpowiada za ilość bitów koniecznych do przesunięcia danej wejściowej, stworzono wejście szesnastobitowe, choć w zupełności wystarczyłoby pięć bitów, ponieważ maksymalne konieczne przesunięcie to 16 miejsc, a liczbę tą można zapisać na pięciu bitach. Języki HDL umożliwiają sparametryzowanie bloków funkcyjnych i dostosowanie do faktycznych potrzeb dopiero podczas syntezy. Inną ważną rzeczą, o której należy pamiętać podczas projektowania bloków funkcyjnych, jest zadbanie o to, aby były one jak najmniej wrażliwe na wartości wejściowe nieokreślone (w języku Verilog wartość X), gdyż konstrukcje warunkowe z użyciem tych wartości nie są syntezowalne. Najprostszym sposobem na rozwiązanie tego problemu jest użycie konstrukcji else po instrukcji warunkowej if sprawdzającej przewidywanie, możliwe wartości wejściowych. 4. Weryfikacja układu sterownika Podczas projektowania układu bezpiecznego sterownika bardzo ważną częścią jest dokonanie weryfikacji utworzonych modułów. Przetestowanie układu jedynie przed przystąpieniem do syntezy może okazać się nie wystarczające. Wstępnym etapem testowania jest sprawdzenie poprawności działania napisanych modułów jeszcze przed przystąpieniem do syntezy. Do tego celu wykorzystuje się pliki z wektorami testowymi napisane w języku HDL. Podczas testowania układu należy przetestować zarówno każdy z modułów osobno jak i połączone ze sobą w jeden układ. Testowanie całego sterownika powinno odbyć się dla kilku różnych programów mających realne zastosowanie (np. program sterujący działaniem respiratora). Podczas realizacji programu na wejścia układu powinny być podawane każdorazowo inne dane, nawet takie, które w rzeczywistym zastosowaniu były by bardzo nieprawdopodobne. Bardzo ważne dla sterowników bezpiecznych jest, aby w trakcie testowania sprawdzić nie tylko czy układ zachowuje się poprawnie w czasie pracy, ale też sprawdzić, czy odpowiednio zachowuje się podczas awarii. W tym calu należy w plikach testowych zasymulować awarię. Symulację awarii można dokonać poprzez: zmianę wartości wewnętrznych sygnałów testowanego układu;

zastosowanie błędnie działających układów. Tworząc testy symulujące awarię należy utworzyć grupę takich testów, z których każdy będzie symulował awarię innego modułu. Dopiero, kiedy układ przejdzie pomyślnie wstępną procedurę testowania można przystąpić do syntezy układu. Drugi etap testowania to symulacja listy fizycznych połączeń w układzie FPGA (ang. netlist). Do testowania można wykorzystać te same pliki testowe oraz programy, co podczas testowania modułów napisanych w języku HDL. Porównując otrzymane wyniki należy zwrócić szczególną uwagę na wektory testowe, w których wstępują wartości X i Z. Jest to bardzo ważny krok weryfikacji gdyż syntezowalne konstrukcje języków HDL nie dają możliwości bezpośredniego uzależniania stanu wyjść od wartości X i Z na wejściach. Przedstawiony poniżej przykład ilustruje zabronioną pod kątem syntezy konstrukcję języka Verilog: if (in===1 bz) ; Może to spowodować uzyskanie innych wyników podczas testowania listy połączeń. W sytuacji, gdy uzyskane wyniki są zgodne z założeniami można przystąpić do operacji Place & Route. Trzecim i zarazem ostatnim, przed zaprogramowaniem układu FPGA, etapem testowania jest symulacja czasowa. W symulacji tej wykorzystuje się wygenerowany w czasie Place & Route plik SDF zawierający opóźnienia czasowe układu. Podczas symulacji czasowej można wykorzystać te same programy i moduły testowe, co poprzednio, jednak należy zwrócić tu uwagę czy częstotliwość zmian wektorów testowych nie przekracza wymaganego czasu utrzymania poszczególnych sygnałów na wejściach. W wynikach otrzymanych po symulacji czasowej należy zwrócić szczególną uwagę czy uzyskane opóźnienia nie wpływają krytycznie na działanie układu. Ostatecznej weryfikacji układu dokonuje się już po zaprogramowaniu układu do struktury FPGA. Specyficznym z punktu widzenia testowania jest moduł układu procesora slave. Moduł ten realizuje funkcje oparte o bloki funkcyjne zgodne z normą IEC 1131-3. Realizacja układu z wykorzystaniem języków HDL wymaga wykonania opisu również tych funkcji. Ponieważ bloki muszą być zgodne ze standardem i mogą być wykorzystane przy projektowaniu innych układów powinny być poddane ostatecznej weryfikacji przed zastosowaniem ich w układzie sterownika. Przystępując następnie do testowania sterownika zakłada się, że bloki funkcyjne procesora slave zostały już zweryfikowane i działają poprawnie. 5. Testowanie bloków funkcyjnych Ze względu na bezpieczeństwo i pewność działania sterownika, a co za tym idzie także bloków funkcyjnych, bardzo ważnym, jeśli nie najważniejszym etapem tworzenia bloków funkcyjnych jest ich testowanie. Dlatego też temu tematowi poświęcono więcej miejsca w pracy. Etap testowania można podzielić na kilka podetapów: a) tworzenie drugiego modelu funkcjonalnego, z wykorzystaniem innych konstrukcji; b) symulacja obu modeli, modyfikacja modeli tak aby generowały identyczne wyniki;

c) synteza modeli, symulacja po syntezie, analiza czasowa; d) utworzenie kilku modeli realizujących funkcje możliwe do zaprogramowania w późniejszym sterowniku; e) złożenie z wcześniej zaprojektowanych bloków modeli spełniających identyczne funkcje co projekty z punktu wyżej; f) symulacja modeli z d) i e), porównanie wyników symulacji, g) synteza modeli z e), symulacja po syntezie, analiza czasowa; h) implementacja bloków funkcyjnych do układu typu CPLD lub FPGA, ostateczne testowanie na płycie. Realizując powyższe założenia na podstawie pierwszego modelu, należy zamodelować drugi z założenia funkcjonalnie identyczny, jednak z wykorzystaniem innych konstrukcji języka Verilog. Należy zachować zgodność pod względem typów wejść/wyjść, reagowania na stany nieokreślone. Dzięki takiemu podejściu w późniejszym etapie testowania będzie można łatwiej wykryć błędy, oraz będzie można wybrać bardziej bezpieczny model bloku funkcyjnego. W wektorach testowych, wykorzystywanych w czasie symulacji, powinny się znaleźć wszystkie możliwe wymuszenia (łącznie z wartościami X oraz Z). Przykładowo dla układu o czterech wejściach potrzebne będzie 4 4 =256 wektorów testowych. Liczba tych wymuszeń jest bardzo dużo już dla małej liczby wejść. Zatem należałoby przygotować program (np. w języku C) generujący moduły testujące ze wszystkimi wymuszeniami. Synteza obu modeli prowadzona jest w kierunku skuteczności czasowej, ponieważ jest to ważniejsze w przypadku opisywanego tematu niż objętość zajmowanego układu. Po analizie oraz operacji Place & Route, wykonać należy ponowną symulację oraz analizę czasową. Z dwóch modeli wybrany zostaje ten dający lepsze zależności czasowe nawet, jeżeli zajmuje on większą powierzchnie w układzie programowanym. Następnie można stworzyć opis funkcjonalny zadań, realizowanych przez bloki funkcyjne sterownika, przy których będą one mogły być wykorzystany (rys. 3), przykładowo, sterowanie aparaturą podtrzymującą życie, czy zarządzanie linią produkcyjną. Opis tych modeli powinien być wykonany na jak najwyższym poziomie z wykorzystaniem, np. języka VHDL. Te prace mogą być wykonane przez inny zespół projektantów, dzięki czemu zwiększa się wiarygodność całego systemu. Omawiane modele nie muszą być syntezowalne. Tworzone są one w celu wygenerowania plików wynikowych z symulacji tychże modeli (na podstawie wcześniej tworzonych modułów testujących). Następnie projektowane są modele, które powinny działać tak samo, jak wcześniej wykonane układy funkcjonalne, z tą różnicą, że złożone z opracowanych wcześniej bloków funkcyjnych. Po symulacji wyniki powinny być identyczne, jak z modeli funkcjonalnych. Ewentualne przyczyny różnic należy poprawić w układzie generującym mniej konkretny, dokładny wynik. Następnie stworzone modele, poddane zostają syntezie oraz analizie czasowej. Kolejne kroki weryfikacji bloków funkcyjnych są zbliżone do opisanych w rozdziale 3. Jeżeli wszystkie dotychczas przeprowadzone testy i porównania przeszły pozytywnie, można przystąpić do próbnej implementacji samych bloków do układu programowalnego i dodatkowo sprawdzić ich działanie w środowisku fizycznym.

Symulacja Moduł testujący Opis funkcjonalny Wymuszenia Opis syntezowalny VHDL Verilog Entity end Architecture end Wyniki symulacji? = Wyniki symulacji Rys. 3. Sposób symulacji i porównania wyników 6. Podsumowanie oraz kierunki dalszych prac W referacie przedstawiono sposób realizacji bezpiecznego programowalnego sterownika logicznego oraz dedykowanych jemu bloków funkcyjnych z wykorzystaniem języków HDL (w szczególności języka Verilog i VHDL). Praca podkreśla bardzo duże znaczenie testowania układów już we wstępnej fazie projektu oraz realizację ich z wykorzystaniem różnych rozwiązań. Projekt realizacji sterownika bezpiecznego oraz bloków funkcyjnych znajduję się na razie w fazie wstępnej i będzie kontynuowany w ramach prac Koła Naukowego fantasic. Literatura [1] Śnieżek M., Halang W. A.: Bezpieczny programowalny sterownik logiczny, Oficyna Wydawnicza Politechniki Rzeszowskiej, Rzeszów, 1998 [2] International Electrotechnical Commission: International standard IEC 1131-3, Programmable Controllers, Part 3: Programming Languages, Geneva, 1992 Realisation of Programmable Safety Controller with use of HDLs In this paper, methods of testing and verification of a safety-application controller and its function blocks designed with use of HDLs are described. The solution is based on use testbench files, and modules designed with two different languages Verilog and VHDL, and comparison of results.