310 likes | 483 Views
SORTOWANIE (przykład zastosowania DMA). Orkiszewski Marcin. Koło Naukowe Układów Cyfrowych DEMAIN. Zadanie:. Posortować liczby 128-bitowe w jak najkrótszym czasie. Liczby mogą się powtarzać. Liczba danych – 2^n ( max . 4MB). Algorytm sortujący:.
E N D
SORTOWANIE (przykład zastosowania DMA) Orkiszewski Marcin Koło Naukowe Układów Cyfrowych DEMAIN
Zadanie: • Posortować liczby 128-bitowe w jak najkrótszym czasie. • Liczby mogą się powtarzać. • Liczba danych – 2^n (max. 4MB).
Algorytm sortujący: Jaki algorytm sortujący pasuje do układów FPGA ? Mergesort – rekurencyjne sklejanie uporządkowanych zbiorów. Sklejanie łączenie strumieni.
Implementacja (1) • SDRAM 8 MB (16 bit) • 2x DMA 16 bit • Komparator VHDL • DMA 16 bit • SDRAM 8 MB (16 bit)
Implementacja (1) – problemy… SDRAM 8 MB (16 bit) • zbyt wąska szyna danych (dane 128-bitowe) • wydłużone porównywanie (komparator musi gromadzić dane) • jednoczesny odczyt z SDRAM przez dwa DMA (znaczne spowolnienie odczytu)
Implementacja (2) • Tylko jedno DMA obsługujące SDRAM w danym momencie • 2x DMA 128 bitowe (4x szybciej) • Komparator 128 bitowy Algorytm rekurencyjny
Synchronizacja • DMA_read pobiera dane z SDRAM i wypełnia pierwszą pamięć • DMA_1 i DMA_2 wysyłają strumienie do komparatora • DMA_RESULT odbiera posortowany strumień • DMA_write zapisuje posortowane dane z drugiej pamięci do SDRAM
Merger128.vhd • Dwa 128-bitowe porty wejściowe • Obsługa sygnału waitrequest dla każdego portu (pod DMA) • Zawiera 2 liczniki dla danych wejściowych (ustawiane przez CPU): • Jeżeli oba liczniki większe od 0, to wystaw na wyjście większą liczbę z dwóch strumieni oraz pobierz kolejną do porównania • Jeżeli licznik dla danego strumienia osiągnął zero, to wystawiaj na wyjście liczbę z drugiego strumienia • Jeżeli oba liczniki osiągnęły 0, zacznij od początku.
Altera NIOS II • Wymagane oprogramowanie: • Quartus II v. 9.0 • Nios IDE v. 9.0 • Do pobrania na stronie www.altera.com
Uwaga! • Katalogi, w których instalujemy oprogramowanie oraz w których zakładamy projekty: ! NIE MOGĄ zawierać spacji !
Uwaga! • Unikać powtarzania nazw: - block diagram: <..>_project - SOPC: <..>_sopc - Nios IDE <..>_soft • W razie problemów www.google.com
1. Otworzenie projektu Otworzenie archiwum projektu: Quartus II Project RestoreArchived Project…
2. Kompilacja projektu Processing Start compilation - Wykorzystanie komórek logicznych - Wykorzystanie bloków pamięci
3. Załadowanie obrazu do układu ToolsProgrammer - Hardware Setup USB-Blaster • Program/Configure • Start - Czasami przydatne bywa włączenie zasilania -
7. Założenie projektu (1/2) File New Project… Nios II C/C++ Application
7. Założenie projektu (2/2) Wskazanie obrazu systemu (.ptf): Selectprojecttemplate: Blank Project Name: szkolenie3_merger SOPC Builder System PTF File: ../szkolenie3_sopc.ptf • Finish
8. Kompilacja biblioteki • Prawy klawisz myszki na szkolenie3_merger_syslib • Properties System Library • Reduceddevicedrivers • Small C library itp.. • Prawy klawisz myszki na szkolenie3_merger_syslib • Build Project
9. Dodanie plików źródłowych (C/C++) • Prawy klawisz myszki na szkolenie3_merger • Import… General File System • szkolenie3_merger.h • szkolenie3_functions.c • szkolenie3_merger.c
10. Uruchomienie projektu Run Run… Nios II Hardware Main Project: szkolenie3_merger Target Connection: USB-Blaster • Run
Program • Gdy DMA_1 skończy kopiować dane do komparatora, uruchom DMA_read, aby uzupełnić dane dla strumienia, następnie ponownie uruchom DMA_1 • Gdy DMA_2 skończy kopiować dane do komparatora, uruchom DMA_read, aby uzupełnić dane dla strumienia, następnie ponownie uruchom DMA_2 • Gdy DMA_RESULT wypełni pamięć wynikami, uruchom DMA_write, aby zapisać wyniki do SDRAM, następnie ponownie uruchom DMA_RESULT
Wnioski • Dzięki zastosowaniu „wirtualnego” podziału pamięci (adresami) możemy jednocześnie sortować i odczytywać / zapisywać dane! • Całe sterowanie sortowaniem polega na odpowiednim uruchamianiu poszczególnych DMA wraz z wyliczonymi nowymi adresami!
Materiały dostępne na stronie Koła http://demain.zpt.tele.pw.edu.pl/ Publikacje 1 XII 2009