Projektowanie systemów cyfrowych
Telekomunikacja
Strona główna

Wykłady
Magistrala OPB

Laboratorium
Rozpoczecie laboratorium: 14.03.2006

Projekt

Wszystkie projekty będą wykonywane w grupach 2 lub 3 osobowych.
Grupy 2 osobowe maja ocene wyższą o 0.5 stopnia (każda osoba)
Na każde zajęcia należy przynosić wszystkie materiały i dokumenty wykonane do tej pory.

Zasada oceniania
Na każdych zajęciach zespół jest oceniany z etapu wykonanego projektu dlatego wymagana jest obecność na każdych zajęciach. Nieobecność całego zespołu na zajęciach jest równoznaczna z punkacją 0. Wyjątkiem jest wykonanie projektu lub etapu projektu przed czasem i pokazanie tego na wcześniejszych zajęciach.
Ocena końcowa jest średnią z dwóch ocen: 1) oceny końcowej projektu 2; 2) średnią oceną otrzymaną na zajęciach. Warunkiem zaliczenia jest uzyskanie średniej powyżej 2.75.
Przykład: Wybrany projekt ocena 5.0, średnia ocena z zajęć 60%, poprawnie przeprowadzona symulacja funkcjonalna (50%)= średnia 55% * 5.0= 2.75 => 3.0

Oceny na zajęciach:
Zajęcia 2
Wymagane napisanie całego projektu 1 w VHDL.
Wybranie projektu 2

Zajęcia 3

Poprawnie przeprowadzona symulacja projektu 1.
Wstępny opis projektu 2 w Word'ze, (dużo rysunków, które można wykonać ręcznie). Opis ma zawierać główne zadania projektu oraz pokazać jak mają być podłączone poszczególne moduły w EDK oraz jaką funkcję pełnią.

Zajęcia 4
Wykonanie całego opisu projektu w Wordzie, wstępne wykonanie części swojego projektu w EDK lub VHDL.

Zajęcia 5
Budowa całego systemu w EDK (projekt 2B) oraz napisanie całego kodu VHDL wybranego modułu (projekt 2A)

Zajęcia 6
Rozpoczęcie symulacji VHDL całego systemu

Zajęcia 7
Przeprowadzenie poprawnej symulacji VHDL

Zajęcia 8
Implementacja projektu

Zajęcia 9+
Odawanie projektów

Ocena końcowa projektu 2 (w skali oceny końcowej wybranego projektu 2)
20% Przeprowadzenie symulacji oraz poprawne wytłumaczenie prowadzącemu co się dzieje w systemie
20% + ocena z kolokwium*50% - jak wyżej plus ocena z dodatkowego kolokwium z magistrali OPB i środowiska EDK (maksymalan punktcja do 70%)
50% Poprawnie przeprowadzona symulacja funkcjonalna
65% Poprawnie  przeprowadzona symulacja po syntezie
70% Implementacja projektu (przy poprawnej symulacji po syntezie)
80% Obserwacja sygnałów wewnętrznych za pomocą analizatora stanów logicznych.
85% Znalezienie błędu w projekcie na podstawie obserwacji w analizatorze stanów logicznych.
100% Poprawna implementacja całego projektu


Projekt 1
Wybranie i wykonanie prostego projektu z Techniki Cyforwej
Uwagi: Projekty nie powinny się powtarzać.
Projekty powinny być zrobione dla 4-bitowej magisatrali, w przypadku wątpliwości proszę o uzgodnienie to z prowadzącym.
Ostatecznym warunkiem oddania projektu jest poprawnie działająca symulacja po syntezie lub implementacji.
Projekt może (ale nie musi) być ostatecznie zaimplementowany (sprawdzony) na płycie XSA, XSV lub XSB. W przypadku kiedy projekt 1 nie zostanie zaimplementowany warunkiem zaliczenia lab. jest poprawna implementacja projektu 2.

Projekt 2.
Do wyboru są następujące projekty. Ocena przy projekcie jest oceną maksymalną i może być obniżona.
Projekty mogą być wykonane albo na płycie XSV albo płycie XSB.

A) VHDL i EDK
(Moduły pisane w VHDL, kompatybilne z magistralą OPB i systemem EDK w przypadku prefiksu opb_*). Zalecane jest przerobienie tutoriala 2 na stronie OPB.

opb_timer
- moduł licznika zliczającego takty zegara z możliwością zerowania i odczytu stanu licznika. (ocena 5.0)

opb_dac
- wykorzystując bardzo prosty układ liczników zaprojektować moduł umożliwiający generację sygnału wyjściowego o zmiennym wypełnieniu. W konsekwencji otrzymywany jest bardzo prosty przetwornik cyfra-analog. (ocena 5.0)

buf512 – wykonanie bufora opóźniającego o 512 taktów zegara z wykorzystaniem pamięci BRAM. Szerokość danych ma być określona parametrem. Bufor nie musi być zgodny ze standardem magistrali OPB i systemem EDK. (ocena 4.5).

opb_keyboard - wstępna budowa interface'u kalwiatury PS/2. Zadaniem będzie budowa prostego preskalera (3 rejestry), modułu SIPO (Serial-in Parallel-Out) oraz modułu FIFO oraz interface'u OPB slave (ocena 6.0).

opb_mkeyboard
- budowa interface'u kalwiatury PS/2. Zadaniem będzie budowa prostego preskalera (3 rejestry), modułu SIPO (Serial-in Parallel-Out) oraz  interface'u OPB typu master (ocena 6.0).

opb_vga - budowa interface'u przetwornika DAC VGA dla płyty XSB. (ocena 6.0)

opb_bin
- moduł umożliwiający binaryzację danych 8-bitowych. Projekt składa się z jednego interface'u typu slave (zapisywane dane wejściowe i prog), komparatora oraz interface'u wyjściowego typu opb_master. (ocena 6.0)

opb_cache - projekt pamieci cache (ocena 6.0)

opb_audio_in /
opb_audio_out - zaprojektować moduł interface'u audio (tylko wejście lub tylko wyjście) dla płyty XSB lub XSV (4 niezależne projekty) (ocena 6.0)

opb_move_detect
- moduł odejmujący dwa niezależne obrazy oraz zapisujący wynik obliczeń (moduł składa się z 3 interface'ów master i jednego slave- dwa do pobierania obrazów źródłowych 1 do wysyłania wyniku, slave - służy do konfiguracji) (ocena 6.0)

opb_flash
- lekka modyfikacja istniejącego modułu interface'u pamięci Flash (ocena 6.0)

opb_LCD - moduł służący do wyświeltania danych na wyścietlaczu LCD. (ocena 6.0)

FIFO64 - przetestowanie i ewentualne poprawienie projektu bufora First-In First-Out. (ocena 5.0)

opb_muartlite - zaprojektować moduł interfejsu UART pracującego w trybie master (ocena 6.0)

bram_init
- (tylko VHDL) projekt z wykorzystaniem gotowych pamięci dwuportowej BRAM, zadaniem projektu jest możliwość uzyskania różnej szerokości adresowej przy tej samej szerokości danych= 32, 16 lub 8-bitów. Dodatkowym zadaniem jest odpowiedni inicjalizacja pamięci BRAM określoną funkją określaną w VHDL'u np. (sin(x)/x - wtedy mamy do dyspozycji wspołczynniki filtru FIR dolnoprzepustowego) (ocena 4.0) (3 różne projekty - dla różnej szerokości danych)

B) Budowa systemu w EDK z wykorzystaniem istniejących już modułów.
W ramach budowy systemu należy odpowiednio podłączyć moduły w systemie EDK. Przesymulować działanie całego systemu. Następnie zaimplementowanie i sprawdzenie całego systemu

APSI - w C++ na PC zaprojektować środowisko graficzne umożliwiające graficzną generacje instrukcji APSI. (ocena 6.0)

sdram – budowa systemu na płycie XSB z dostępem do pamięci SDRAM przy pomocy już gotowego modułu. (ocena 5.5)

uartlite - wykorzystując gotoewe moduły opb_uartlite oraz opb_epp dokonać komunikacji pomiędzy komputerem PC i płytą XSB/XSV (ocena 5.0)

flash - używając gotowy moduł opb_flash odpowiednio odczytywać i zapisywać pamięć nieulotna FLASH (ocena 5.0)

opb_i2c
- wykorzystując moduł opb_i2c (interface magistrali i2c) zaprogramować przetwornik ADC video na płycie XSB. Sprawdzić poprawność działania modułu. (ocena 6.0) (2 projekty niezależne dla płyty XSV i XSB)

opb_hist
- wykorzystując moduł opb_hist oraz opb_dma obliczyć histogram (obrazu) (ocena 5.0)

opb_sort 
- wykorzystując moduł opb_sort i opb_epp dokonać sortowanie przez wstawianie (ocena 5.0). W przypadku wykorzystania pocesora MicroBlaze zamiast opb_epp (ocena 6.0).

mb_hist - przy pomocy procesora MicroBlaze obliczenie histogramu obrazu (ocena 5.5)

mb_huffman
- przy pomocy procesora MicroBlaze dokonanie statycznego kodowania Huffmana (statystyka wyrazów oraz drzewo Huffmana powinny być obliczone na komputerze PC) (ocena 6.0)

vga - wykorzystując gotowe moduły zaprojektować system umożliwiający wyświetlanie obrazu z pamięci SRAM na monitorze VGA (ocena 4.5)

opb_lut
- przetestować gotowy moduł opb_lut. Następnie wyświetlić na monitorze VGA obraz po konwersji LUT (ocena 6.0)

opb_conv - przy pomocy gotowego modułu opb_conv dokonać konwolucji na obrazie (ocena 5.0)

opb_dma - wykorzystując gotowy moduł opb_dma dokonać transmisji DMA (Direct Memory Access) (ocena 4.0)

MB_debug - debugowanie procesora MicroBlaze przez port UART / JTAG (dwa niezależne projekty) (ocena 6.0)

Projekty ambitne, które mogą (ale nie muszą) być kontynuowane w ramach pracy dyplomowej lub mogą być zakończone publikacją. Projekty te wymagają poświęcenia około 8h tygodniowo.

HDD CF - obsługa dysku trwardego lub karty pamięci CF, wymaga napisania własnego modułu w VHDL pod EDK

mb_hist_equal
- wyrównywanie histogramu. Przy pomocy modułu opb_hist i opb_dma obliczyć histogram. Mastępnie na przy pomocy procesora MB odpowiednio zakodować pamięć LUT. Na koniec dokonać konwersji przy pomocy gotowego modułu opb_lut.

mb_linux
- próba uruchomienia sustemu operacyjengo Linux  (lub innego) na płycie XSB.