Elektroda.pl
Elektroda.pl
X
Metal Work Pneumatic
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

10 technik, które pozwolą na stworzenie niezawodnego układu z FPGA (część 1)

ghost666 07 Wrz 2016 12:59 1779 0
  • 10 technik, które pozwolą na stworzenie niezawodnego układu z FPGA (część 1)
    Wszyscy chcemy, aby nasze układy FPGA były niezawodne w swoim docelowym środowisku pracy. Szczególnie, jeśli układ taki pracuje w krytycznej dla bezpieczeństwa sekcji urządzenia. W takich aplikacjach musimy przyjrzeć się bliżej nie tylko całej architekturze zakodowanej w FPGA, ale także szczegółom realizacji tej architektury i detalom podczas projektowania systemu w FPGA, aby nasz projekt, po zaimplementowaniu w układzie programowalnym, pozwolił na niezawodną pracę układu. Oczywiście, w mniej krytycznych systemach, opisane poniżej rozwiązania także się sprawdzą, poprawiając np. niezawodność układu, co może nie być bez znaczenia dla innych aplikacji.

    Początek na poziomie całego systemu

    Istnieje wiele standardów bezpieczeństwa, jakich używa się obecnie w przemyśle. Normy takie jak IEC61508, DO 254 czy ISO26262 są często cytowane przez inżynierów, ale nie każdy z nich dokładnie zdaje sobie sprawę co one w rzeczywistości znaczą. Mimo wszystko normy te są proste w zrozumieniu - mówią one o czasie (w godzinach) pomiędzy awariami układu. Jak łatwo się domyślić - im czas dłuższy, tym system efektywnie mniej awaryjny.

    10 technik, które pozwolą na stworzenie niezawodnego układu z FPGA (część 1)


    Jak łatwo spostrzec w załączonej powyżej tabelce, trudno jest osiągnąć wyższe poziomy niezawodności bez korekty działania układu na poziomie architektury całego systemu. Podczas takiej analizy systemowej zidentyfikować i wyeliminować trzeba poszczególne ścieżki awarii i punkty krytyczne. Można to zrealizować tylko analizując system całościowo w warstwie mechanicznej, elektrycznej, programowej i samego układu FPGA.

    Niezależnie od analizy architektury, krytycznej analizie poddać też trzeba plan projektowania takiego systemu. Konieczne jest opracowanie poszczególnych etapów weryfikacji działania FPGA. Zazwyczaj, w projekcie stawiającym na wysokie bezpieczeństwo, tworzy się dedykowane plany zarządzania projektowaniem systemu, co pozwala na szybką analizę poszczególnych zagrożeń i ich eliminację. Tego rodzaju metodologia pracy niezwykle popularna jest np. w lotnictwie.





    W ramach niniejszego artykułu poruszymy następujące kwestie:

    1. Dobór elementów.
    2. Taktowanie, resetowanie i inicjalizacja układu FPGA.
    3. Detekcja błędów i korekcja kodów.
    4. Protokoły komunikacyjne.
    5. Wykorzystanie mechanizmu dwuetapowego wydawania komend - "uzbrój i strzelaj".
    6. Liczniki.
    7. Bezpieczne maszyny stanów.
    8. Potrójna, modułowa redundancja.
    9. Weryfikacja.

    Dobór elementów

    W przypadku urządzeń półprzewodnikowych w wielu aplikacjach dobór elementów ogranicza się do wybrania układu zdolnego do pracy w odpowiednim zakresie temperatur: komercyjnym, rozszerzonym, przemysłowym czy wojskowym. Jednakże w bardziej wymagających systemach, takich jak w aplikacjach lotniczych, medycznych, motoryzacyjnych czy kosmicznych, wymagania rozszerzają się i dotyczyć mogą także sposobów testowania i przechowywania układów, jakości masek, struktur krzemowych i obudowy układu. Dodatkowe testowanie układu przed montażem może istotnie podnieść bezawaryjność naszego systemu, jednakże znacznie też zwiększa koszt produkcji urządzenia.

    Taktowanie, resetowanie i inicjalizacja układu FPGA.

    Bez czystego i niezawodnego zegara i strategii resetowania układu, problemem może być osiągnięcie zadanej funkcjonalności i bezawaryjności, dyktowanej specyfikacjami architektury. Dlatego też, w naszym projekcie, koniecznie trzeba rozważyć szereg kwestii:

    * Czas startu oscylatora, aby upewnić się, że w momencie zwalniania resetu systemu oscylator pracuje stabilnie.
    * System resetu, aby upewnić się, że jest on zależny od systemu zasilania i działa asynchronicznie od układu programowalnego.
    * Zwolnienie resetu, które powinno odbywać się synchronicznie z sygnałem zegarowym, taktującym FPGA. Zapewnia to najwyższy stopień stabilności poprzez eliminację szansy powstawania stanów metastabilnych w układzie.

    10 technik, które pozwolą na stworzenie niezawodnego układu z FPGA (część 1)


    Oczywiście, jeśli planujemy już wykorzystanie zegarów w systemie musimy zadbać tak o ich poprawne wykorzystanie globalnie, jak i lokalnie, przez wszystkie elementy, wykorzystujące ten zegar do pracy. Możemy na tym etapie rozważyć zastosowanie segmentacji zegara w architekturze, nazywanej potrójną modułową redundancją, która zostanie omówiona poniżej.

    Detekcja błędów i korekcja kodów.

    Gdy zadbaliśmy już o opracowanie architektury i dobór elementów do naszego systemu możemy poświęcić uwagę innym zabiegom zapewniającym zwiększenie poziomu bezawaryjności systemu. Jednym z pierwszych mechanizmów, po jakie można sięgnąć, są systemy korekcji błędów, opierające się na detekcji ich i korekcji przesyłanych kodów. Typowy system tego rodzaju spełniać będzie trzy zadania:

    * Zapewnianie, że otrzymane dane są poprawne.
    * Zapewnianie, że moduł otrzymujący dane może sprawdzić ich poprawność.
    * Zapewnianie poprawności danych przechowywanych w rejestrach i blokach pamięci.

    Istnieje wiele różnych implementacji tych zadań, od prostej kontroli parzystości poprzez cykliczne sprawdzanie redundancji (algorytmy CRC) do wykorzystania kodów Hamminga. Naszą rolą, jako inżynierów projektujących system, jest wybranie odpowiedniego rozwiązania do naszej aplikacji.

    10 technik, które pozwolą na stworzenie niezawodnego układu z FPGA (część 1)


    To, w jaki sposób dany moduł obsługiwać powinien niepoprawne transmisje, zależy od wymagań, jakie stawia implementowany protokół. W systemie, w którym stawia się na niezawodność, status komunikacji - poprawna albo niepoprawna - powinien zostać przekazany do modułu, który nadawał pakiety danych. Nadajnik powinien w takiej sytuacji powtórzyć transmisję, jeśli dane podczas transmisji np. utraciły spójność.

    Inaczej sprawa się ma, jeśli chodzi o dbanie o dane w pamięci. W takiej sytuacji konieczne może być zastosowanie tzw. "scrubingu". W takiej sytuacji wykorzystuje się kod EDAC - detekcji i korekcji błędów. Dane zapisywane są do pamięci z wykorzystaniem EDAC, a zewnętrzna (względem pamięci) maszyna stanów odczytuje przechowywane dane, sprawdza ich poprawność i zapisuje ponownie, odpowiednio je korygując, jeśli podczas zapisu lub odczytu dane uległy uszkodzeniu. Przyczyny uszkodzenia danych zapisanych do pamięci są różne: może to być promieniowanie kosmiczne, promieniowanie jonizujące pochodzące z izotopów radioaktywnych w obudowie elementu, czy inne źródła szumu elektrycznego. Wykorzystanie "scrubingu" i aplikacja EDAC pozwala na korekcję każdego rodzaju błędów, które powstawać mogą w dowolnym czasie. Przekłada się to na zwiększenie bezawaryjności systemu i lepsze utrzymanie spójności danych.

    Protokoły komunikacyjne.

    Interfejsy, pomiędzy modułami wewnątrz FPGA, są miejscami narażonymi na powstawanie kłopotów z danymi. Powinno się w tym miejscu implementować znane i szeroko stosowane standardowe protokoły, takie jak AXI czy Wishbone. Jednakże, za każdym razem planując implementację komunikacji pomiędzy modułami rozważyć należy to, jakie dane przesyłane są tym kanałem. Pomiędzy modułami w układzie programowalnym przesyłać możemy np. dane, gdzie bardzo dobrze sprawdzają się różnego rodzaju kody detekcji błędów i ich ewentualnej korekcji, jakie opisywane są powyżej. Jednakże, oprócz danych, pomiędzy modułami składowymi FPGA i zewnętrznymi układami, przesyłane są różnego rodzaju komendy. Oczywiście, można jak najbardziej wykorzystać np. EDAC do pilnowania poprawności tej transmisji, jednakże w przypadku komend mamy możliwość takiego zaplanowania słów, będących komendami, że odległość Hamminga, pomiędzy każdą komendą a kolejną, jest większa niż trzy. Oznacza to, że pojedynczy błędny bit nie będzie w stanie zmienić znaczenia komendy z jednej na inną.

    10 technik, które pozwolą na stworzenie niezawodnego układu z FPGA (część 1)


    W przypadku komunikacji z zewnętrznymi elementami, fizycznie poza FPGA, warto jest implementować interfejsy dedykowane do zadań krytycznych oraz stosować dwa kanały - podstawowy i dodatkowy, zapewniającej redundancję. Dzięki temu nawet gdy jeden z kanałów komunikacji zawiedzie drugi powinien pozostać sprawny: w ten sposób implementuje się często protokoły takie jak SpaceWire czy 1553 Ethernet Bridge. Oczywiście, tego rodzaju architektura zwiększa koszty i objętość systemu, ale czego nie robi się dla bezpieczeństwa w urządzeniach o krytycznych zastosowaniach.

    Źródło: http://www.eetimes.com/author.asp?doc_id=1330399


    Fajne! Ranking DIY
  • Metal Work Pneumatic
  Szukaj w 5mln produktów