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 %