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