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.