Akademia Górniczo – Hutnicza im. Stanisława Staszica w Krakowie

Transkrypt

Akademia Górniczo – Hutnicza im. Stanisława Staszica w Krakowie
Akademia Górniczo – Hutnicza
im. Stanisława Staszica w Krakowie
Wydział EAIiE
Katedra Elektroniki
PROGRAMOWALNE UKŁADY CYFROWE
Ćwiczenie 4
Implementacja generatora liczb pierwszych z użyciem
języka Impulse C
Zespół Rekonfigurowalnych Systemów Obliczeniowych
© Grzegorz Gancarczyk
http://www.fpga.agh.edu.pl/gegula
10.11.2011
Programowalne Układy Cyfrowe
Ćwiczenie nr 4
1. Wstęp
Celem ćwiczenia jest weryfikacja stopnia opanowania przez Studentów tworzenia tzw.
projektów mieszanych (Mixed Designes) z użyciem języków Impulse C i HDL. Przykład do realizacji w trakcie zajęć laboratoryjnych polegać będzie na implementacji sprzętowego generatora
liczb pierwszych.
Ponadto Studenci utrwalą i wykorzystają zdobytą w trakcie poprzednich zajęć wiedzę i umiejętności dotyczące języka Impulse C oraz metodyki projektowania układów cyfrowych z wykorzystaniem narzędzia CoDeveloper (środowiska Microsoft Visual Studio 2008).
Wymagania sprzętowe:
 komputer klasy PC,
 procesor o architekturze zgodnej z x86,
 procesor oferujący sprzętowy multithreading.
Wymagania programowe:
 32 bitowy system operacyjny Windows XP lub wyższy,
 narzędzie CoDeveloper,
 *środowisko Microsoft Visual Studio 2008.
* opcjonalnie
Wymagane doświadczenie:
 ukończone ćwiczenia nr 1 i 3.
2
Programowalne Układy Cyfrowe
Ćwiczenie nr 4
2. Założenia projektowe
Projekt realizowany samodzielnie przez Zespoły Studenckie w trakcie zajęć laboratoryjnych polegać będzie na zaimplementowaniu z użyciem języka Impulse C generatora liczb pierwszych.
Moduł programowy (software’owy) powinien oferować następującą funkcjonalność:
 Producer.
Użytkownik podaje przedział, z jakiego mają zostać wygenerowane liczby pierwsze (np.
od 2 do 100). Zapytanie o granicę górną i dolną pojawia się w konsoli (wierszu poleceń).
Użytkownik przy pomocy konsoli i klawiatury podaje interesujący go przedział liczbowy.
 Consumer.
Wszystkie liczby pierwsze z zadanego wcześniej przedziału zostają zapisane w kodzie
dziesiętnym do pliku wynikowego (np. filter_out.dat) oraz wyświetlone w konsoli (obowiązuje również format dziesiętny),
 komunikacja pomiędzy modułem programowym a sprzętowym realizowana powinna zostać przy pomocy 32 bitowych strumieni o głębokości równej 4.
Uwaga!
Zespoły Studenckie, które zdążą ukończyć ćwiczenie w trakcie zajęć laboratoryjnych, mogą całkowicie zrezygnować z modułu Producera. Zrealizowany przez nie system powinien jedynie wygenerować wszystkie liczby pierwsze z zakresu [2; 101].
Moduł sprzętowy (hardware’owy) powinien składać się wyłącznie z generatora liczb
pierwszych zaimplementowanego wg poniższych wytycznych:
 część generatora powinna (niekoniecznie musi) zostaje zaimplementowana w języku Impulse C (w wymiarze procentowym wg uznania Zespołu Studenckiego),
 część generatora musi zostaje zaimplementowana z wykorzystaniem zewnętrznego,
przygotowanego wcześniej przez Zespół Studencki, bloku HDL. Blok ten powinien zostać
dołączony do projektu (#pragma CO IMPLEMENTATION). Charakter bloku (LOGIC,
ASYNC, PIPELINE) musi być zgodny z jego rzeczywistą funkcjonalnością,
 należy wykonać pełny opis funkcjonalności zewnętrznego modułu HDL w języku Impulse C (identycznie jak zademonstrowano to na zajęciach nr 3).
Generatory liczb pierwszych są wykorzystywane powszechnie w kryptografii (generacja
kluczy) i astronautyce (generacja ciągów kontrolnych). Ich definicja jest następującą:
Liczbą pierwszą nazywamy każdą liczbę naturalną posiadającą dokładnie dwa dzielniki naturalne:
1 oraz samą siebie.
Definicja ta może posłużyć do budowy bardzo prostego generatora liczb pierwszych.
3
Programowalne Układy Cyfrowe
Ćwiczenie nr 4
3. Schemat blokowy systemu
Schemat blokowy omawianego systemu cyfrowego przedstawiono na rysunku poniżej.
Producer
in stream
32 bit
Prime
Filter
Moduł VHDL
out stream
Consumer
32 bit
Zaznaczono na nim wszystkie bloki funkcjonalne z jakich powinien składać się system oraz określono szerokość bitową strumieni komunikacyjnych.
4. Uwagi końcowe
Każdy Zespól Studencki zobowiązany jest do przesłania na wskazany adres e-mail, w terminie do 14 dni (włącznie) od daty realizacji ćwiczenia nr 4, całego, zarchiwizowanego katalogu
projektowego. Projekt zostanie uznany za zaliczony, jeśli będzie:
 spełniał wytyczne dotyczące swojej funkcjonalności. Opisano je w punkcie 2. niniejszej instrukcji,
 kompletny, tj. zawierał wszystkie pliki niezbędne do jego uruchomienia i weryfikacji (minimum pliki: _sw, _hw, nagłówka, danych wyjściowych, projektu) oraz raport po syntezie i implementacji,
 w ramach symulacji programowej poprawnie generował liczby pierwsze we wskazanym
zakresie,
 generował poprawnie kod wynikowy HDL,
 możliwy do implementacji w dowolnym układzie FPGA pod narzędziem ISE DS.


Wyniki należy przesłać na adres:
[email protected] (jeśli osobą prowadzącą zajęcia jest dr inż. Maciej Wielgosz),
[email protected] (jeśli osobą prowadzącą zajęcia jest mgr inż. Grzegorz Gancarczyk).
4

Podobne dokumenty