Systemy tolerujące uszkodzenia

Projekt, realizowany wraz z Jackiem Symonowiczem, polegał na zaprojektowaniu jednostki arytmetyczno-logicznej (w Verilogu) zabezpieczonej kodem korekcyjnym, zdolnej do wykrycia i poprawienia każdego pojedynczego błędu.

Sam układ ALU miał w założeniu dodawać, odejmować, mnożyć i dzielić dwa 12-bitowe argumenty zapisane w kodzie U2 (uzupełnieniowym do dwóch). Zastosowany został kod dwuresztowy (dziś już całkowita rzadkość), końcowy wynik naszej pracy był całkiem niezły - testy wykazały wykrywalność błędów na poziomie 100% i korekcję na poziomie 99,6%.

Sprawozdanie

Schemat ALUftc_spraw.pdf

"Z niektórych kodów, które nie posiadają właściwości korekcyjnych, można tworzyć układy posiadające takie własności. Na przykład zwykły kod Hamminga tworzy się obliczając bity parzystości odpowiednich pozycji zakodowanej liczby. Podobnie można postąpić z kodowaniem resztowym. Dodając do zwykłego (niezabezpieczonego) układu arytmetycznego moduł generujący w odpowiedni sposób reszty z dzielenia argumentów przez odpowiednią liczbę i operujący na tych resztach w analogiczny sposób, jak na danych, otrzymuje się układ o zdolnościach detekcyjnych. Dodatkowo dołączenie drugiego podobnego układu (lub więcej), dzielącego modulo przez inną liczbę skutkuje pojawieniem się właściwości korekcyjnych – układ może już korygować pojedynczy błąd. Tak powstałe kody noszą nazwę dwuresztowych (biresidue)."