1 / 31

SORTOWANIE (przykład zastosowania DMA)

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:.

chul
Télécharger la présentation

SORTOWANIE (przykład zastosowania DMA)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SORTOWANIE (przykład zastosowania DMA) Orkiszewski Marcin Koło Naukowe Układów Cyfrowych DEMAIN

  2. Zadanie: • Posortować liczby 128-bitowe w jak najkrótszym czasie. • Liczby mogą się powtarzać. • Liczba danych – 2^n (max. 4MB).

  3. Algorytm sortujący: Jaki algorytm sortujący pasuje do układów FPGA ? Mergesort – rekurencyjne sklejanie uporządkowanych zbiorów. Sklejanie  łączenie strumieni.

  4. Implementacja (1) • SDRAM 8 MB (16 bit) • 2x DMA 16 bit • Komparator VHDL • DMA 16 bit • SDRAM 8 MB (16 bit)

  5. 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)

  6. Implementacja (2) • Tylko jedno DMA obsługujące SDRAM w danym momencie • 2x DMA 128 bitowe (4x szybciej) • Komparator 128 bitowy Algorytm rekurencyjny

  7. 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

  8. 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.

  9. Założenie projektu

  10. Altera NIOS II • Wymagane oprogramowanie: • Quartus II v. 9.0 • Nios IDE v. 9.0 • Do pobrania na stronie www.altera.com

  11. Uwaga! • Katalogi, w których instalujemy oprogramowanie oraz w których zakładamy projekty: ! NIE MOGĄ zawierać spacji !

  12. Uwaga! • Unikać powtarzania nazw: - block diagram: <..>_project - SOPC: <..>_sopc - Nios IDE <..>_soft • W razie problemów www.google.com

  13. 1. Otworzenie projektu Otworzenie archiwum projektu: Quartus II Project RestoreArchived Project…

  14. 2. Kompilacja projektu Processing Start compilation - Wykorzystanie komórek logicznych - Wykorzystanie bloków pamięci

  15. 3. Załadowanie obrazu do układu ToolsProgrammer - Hardware Setup USB-Blaster • Program/Configure • Start - Czasami przydatne bywa włączenie zasilania  -

  16. Programowanie

  17. 7. Założenie projektu (1/2) File New Project… Nios II C/C++ Application

  18. 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

  19. 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

  20. 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

  21. 10. Uruchomienie projektu Run Run… Nios II Hardware Main Project: szkolenie3_merger Target Connection: USB-Blaster • Run

  22. Program

  23. 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

  24. 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!

  25. Porównanie szybkości działania • MB

  26. Materiały dostępne na stronie Koła http://demain.zpt.tele.pw.edu.pl/ Publikacje 1 XII 2009

More Related