CRC32 – Projekt UCYF
Transkrypt
CRC32 – Projekt UCYF
CRC32 – Projekt UCYF TWÓRCY :MATEUSZ PODNIESIŃSKI , MICHAŁ DUDZIŃSKI 1. Informacje ogólne Do niezawodnej pracy układu niezbędne poza PC’tem są : • • moduł USB oparty o układ FT8U2XXAM Układ FPGA EPF10K20RC240-3 Na poniższym schemacie jest przedstawione sugerowane podłączenie na płytce UP1 firmy ALTERA 2. Obsługa software’owa układu Do komunkacji z układem stworzylismy program crc32 –Counter za pomocą pakietu Borland C++ Builder . Do obsługi układu niezbędna jest dynamicznie ładująca się biblioteka Ftd2xx.dll (dostarczona przez producenta) obsługująca moduł USB. Obsługa programu: 1) Przycisk służy do połączenia z układem liczącym 2) Przycisk służy do rozłączenia od układu 3) Przycisk służy do otwierania pliku którego nazwa jest wpisana pod 8 4) Przycisk służy do wysyłania danych , po jego wcinięciu dane są wysyłane do układu poczym jest zwracane obliczone crc32 5) Wyswietlany jest stan połączenia z układem 6) Wyswietlany jest stan odczytania pliku 7) Wyswietlany jest stan czytania danych 8) Pole gdzie należy wpisać nazwę pliku z którego ma być liczone crc , plik powinien się znajdować w tym samym katalogu w którym jest „crc32 – counter.exe” 9) Pole gdzie po wysłaniu danych wyswietalana jest obliczona suma 3. Specyfikacja techniczna częsci sprzętowej Układ został zaprogramowany w języku opisu sprzętu AHDL. Układ został zaprojektowany jako 11-nasto stanowy automat Mealego . Realizacja automatu : stp s0 s1 if(read==”100”) 0 1 s2 s3 if(counter==9) 1 0 s4 dataread1 if (nobytes==0) 0 1 dataread2 s2 dataesnd1 datasend12 if(write==100) 1 0 datasend2 Opis działania automatu • Czytanie z USB Gdy dane z komputera są przesyłane trafiają do bufora USB , wtedy to wyjscie RXF# jest ustawiane w stan niski (oznacza ze są dane w buforze) .Gdy RXF# jest już w stanie niskim dane są zczytywane z bufora , poczym sygnał RD# (domyslnie zero) jest ustawiany na 1 – co powoduje wyrzucenie danych z bufora i wstawienie kolejnych na wyjscie , lub przejscia RXF na stan wysoki gdy nie ma danych. • Wczytywanie do USB W momencie gdy już obliczylismy crc32 i chcemy zwrócić wynik wstawiamy dane do bufora (buf[]) i oczekujemy aż zapis będzie dostępny – TXE# w stanie niskim –wtedy też dane są na wejsciu , w kolejnym stanie zmieniamy WR# (domyslnie 1)na stan niski co powoduje zdjecie danej z bufora Automat w kolejnych stanach 1) Odczytujue rozmiar pliku którego crc ma policzyc – jest on wysyłany na początku z komputera 2) Odczytuje 1-szy bajt danych , ustawia rejestr crc na jedynki 3) Dokonuje operacji XOR na rejestrze pobranym bajtem 4) Sprawdza czy zerowy bit jest ustawiony Jeśli tak 5)przesuwa w prawo o 1 bit rejestr crc 6)rejestr XOR wielomian Jeśli nie 7)przesuwa w prawo o 1 bit 8)powtarza kroki od 4 az sprawdzony zostanie cały bajt 9)jeśli są jeszcze dane –3) 10)zwraca do komputera crc32 z obliczonego pliku Do układu –do przycisku PB_1 - podłączony jest sygnał reset – który powoduje „zresetownie się automatu”- wyzerowanie zmiennych i powrót do stanu oczekiwania na dane . Przy kompilacji programem MAX+plusII uzyskalismy następujące wyniki Chip/ POF Device crc_32 EPF10K20RC240-3 4 User Pins: Input Pins 4 2 Output Bidir Memory Pins Pins Bits % 2 8 8 Sugerowana częstotliwosć pracy układu < 2MHz 0 Memory Utilized LCs LCs % Utilized 0 % 303 26 %