Skocz do zawartości

FPGA(własne badania #1) Implementacja ROM w wewnętrznej pamięci Block RAM Spartan3


Pomocna odpowiedź

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

Link to post
Share on other sites
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

Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Anonim
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.

×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.