FlyingDutch Napisano Grudzień 23, 2017 Udostępnij Napisano Grudzień 23, 2017 Cześć, niedawno Elvis przy okazji implementacji CPU napotkał problem emulacji pamięci ROM (pamięć programu dla CPU) - patrz post: Kurs FPGA - własne programy #3 Ja napotkałem podobny problem w moimi projekcie (przy generacji zmiennych sygnałów PWM - "Soft-start" i "Soft-Stop" silnika DC 12V). Niedużą pamięć ROM (tylko do odczytu) można za-emulować używając tablic w języku VHDL, czy Verilog ale jest to rozwiązanie, które zużywa bardzo dużo zasobów FPGA (komórek LUT). Bardziej optymalnym rozwiązaniem jest użycie wewnętrznej pamięci RAM układu FPGA Spartan3 - dla naszej wersji Spartan'a dla płytki Elbert V2 ilość tej pamięci to 73728 bitów. Nie jest to może dużo, ale dla emulacji mniejszych pamięci ROM wystarczy. Patrz link: http://www.xilinx.com/support/documentation/application_notes/xapp463.pdf Okazuje się, że chyba najprostszym sposobem osiągnięcia celu: Emulacji ROM w wewnętrznej block RAM kostki FPGA Spartan 3 - jest użycie "IP (Core Generator & Architecture Wizard)" ze środowiska Xilinx "ISE Webpack" (wersja 14.7). Tytuł tego postu nie rozpoczyna się od "własne programy" ponieważ w tym poście nie ma zbyt dużej wartości dodanej wniesionej przez mnie. Po prostu udało mi się znaleźć odpowiedni przykład i wykonać tutorial ze strony WWW prowadzący do powstania działającego projektu. Chciałem, aby przykład był możliwie "wizualny" i chyba się to udało. Wybrany projekt wyświetla na ośmiu diodach LED z płytki Elbert V2 zmieniające się sekwencje odczytywane właśnie z pamięci ROM (organizacja 1024 słowa 8-mio bitowe). Zawartość pamięci ROM jest wczytywana z pliku tekstowego projektu i umieszczana w wewnętrznej pamięci RAM układu Spartan 3 w momencie konfiguracji układu (jego programowania). Organizacja pamięci i parametry jej działania są definiowane na kolejnych oknach generatora IP core ze środowiska "ISE Webpack" (mowa tu cały czas o bezpłatnej wersji). Ale zacznijmy po kolei: Oto projekt na "github.com" IntroToSpartanFPGABook - Using the FPGA’s internal RAM Postępujemy zgodnie z tutorialem na tej stronie, czyli zakładamy nowy projekt "ISE" o nazwie "flashylights" i wykonujemy wszyskie kroki z tego tutoriala prowadzące do powstania działającego projektu. Zawiera się w tym dwukrotne użycie generator "IP Core" - raz do generacji 30 bitowego licznika, potem do generacji pamięci ROM. W pliku załącznika "flashylights.zip" znajduje się cały działający projekt lącznie z plikiem tekstowym w podkatalogu projektu "ipcore_dir" o nazwie "flashy.coe" zawierający zawartość pamięci ROM (słowa 8-mio bitowe przedstawione binarnie). Tu początek tego pliku: memory_initialization_radix=2; memory_initialization_vector= 11111111, 00000000, 11111111, 00000000, 10101010, 01010101, 11110000, 00001111, 11001100, 00110011, 11111111, 00000000, 11111111, 00000000, 10101010, 01010101, 11110000, 00001111, 11001100, 00110011, 00000000, 11111111, 11111111, 00000000, 11111111, 00000000, 10101010, 01010101, 11110000, 00001111, 11001100, 00110011, Plik nie definiuje całej pamięci (wszystkich 1024 słów pamięci) tylko jej część. Możecie sami eksperymentować z jego zawartością, aby zmieniać sekwencje zapalania diód LED. Po zmianie zawartośći tego pliku trzeba uruchomić generację "Generate programing file". Plik konfiguracji FPGA do wczytania to "flashylights.bin" w głównym katalogu projektu. Pojutrze postaram się dokładniej opisać cały proces - szczególnie generację IP Core do obsługi pamięci ROM. Dzisiaj jeszcze tylko dodaję link do prezentacji wideo projektu i na tym muszę kończyć. Link do wideo: https://www.dropbox.com/s/3g7go7tmntijatb/MVI_0056.mp4?dl=0 flashylights.zip
Treker (Damian Szymański) Grudzień 28, 2017 Udostępnij Grudzień 28, 2017 FlyingDutch, dzięki za podzielenie się swoimi programami. Stworzyłem mały spis treści dotychczasowych tematów związanych z Elbertem: Samodzielne ćwiczenia na Elbert v2 - efekty kursu FPGA Zachęcam do linkowania tam kolejnych projektów w przyszłości
FlyingDutch Grudzień 28, 2017 Autor tematu Udostępnij Grudzień 28, 2017 FlyingDutch, dzięki za podzielenie się swoimi programami. Stworzyłem mały spis treści dotychczasowych tematów związanych z Elbertem: Samodzielne ćwiczenia na Elbert v2 - efekty kursu FPGA Zachęcam do linkowania tam kolejnych projektów w przyszłości Chyba Elvis zamieścił więcej (szczególnie ciekawe są Te dot. VGA i PicoBlaze) Pozdrawiam
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »