Skocz do zawartości
Elvis

Arduino MKR Vidor 4000

Pomocna odpowiedź

Cześć Elvis,

też uważam, że wyposażenie tego zestawu uruchomieniowego jest bardzo ciekawe i korzystne cenowo. Mam tylko jedno pytanie, czy poza "Arduino IDE" można układ FPGA na tej płytce "programować" w czystm HDLu (VHDL lub Verilog)?

Pozdrawiam

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Jak najbardziej - są trzy możliwości programowania FPGA:

  • można przygotować projekt, zsyntetyzować w Quartusie i wgrywać razem z programem Arduino
  • można podłączyć się przez JTAG i bezpośrednio programować FPGA
  • do mikrokontrolera SAMD21 można wgrać emulator USB Blastera u używać go do pracy z FPGA

Emulator USB Blastera jest gotowy w bibliotekach dostępnych z Arduino IDE, można go też pobrać z: https://github.com/vidor-libraries/USBBlaster

Dostępny jest też gotowy szablon dla projektu: https://github.com/vidor-libraries/VidorFPGA

Planuję się tym pobawić w najbliższym czasie. Na razie udało mi się zsyntetyzować przykład z VidorFPGA oraz połączyć przez emulator USB Blastera z FPGA. Może dzisiaj znajdę czas na miganie diodą.

Edytowano przez Elvis
  • Lubię! 1
  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Cześć,

jeszcze jedno pytanie: "Czy Mini PCI Express port " w który jest wyposażona ta wersja Arduino może być wykorzystana do połączenia tej płytki z komputerem PC? Jeśli tak, czy jest do tego jakaś dokumentacja, czy przykłady (lub artykuły w sieci)?

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Niestety nie, to tylko złącze które jak podaje producent jest "łatwo dostępne i łatwe z montażu"... Więc jeśli się ma apetyt na więcej wyprowadzonych pinów trzeba pomyśleć nad gniazdem mini pci-e. Ale z PC tak się nie dogada 😞

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Przyszedł czas na mały update odnośnie MKR Vidor 4000, czyli opis używania płytki jako platformy dla FPGA.

Pierwszy krok to wgranie szkicu z emulatorem USB Blastera do SAMD21. Szkic znajdziemy w przykładach po zainstalowaniu biblioteki:

2019-01-09-185806_1047x740_scrot.thumb.png.24c2520b9f2623d50c384552b950dfd1.png

Teraz można uruchomić Quartus Prime i wczytać szablon projektu - dostępny w repozytorium: https://github.com/vidor-libraries/VidorFPGA

2019-01-09-083902_2560x1389_scrot.thumb.png.f0edfde9508e855cbec2b365f00260db.png

Jak widać synteza zajmuje dosłownie moment, szczególnie porównując do Xilinux-a i środowisko Vivado. Warto popatrzeć na dostarczoną definicję wyprowadzeń - wszystko jest już gotowe, nic tylko pisać własny kod.

2019-01-09-085642_2560x1389_scrot.thumb.png.247ab77e44903fe4888a9abe405f65e3.png

Dostępna jest niestety raptem szczątkowa dokumentacja, ale analizując schemat płytki można się domyślić o co chodziło autorowi. Jako pierwszy test spróbowałem "pomigać diodą". Wybrałem pin D0 i napisałem krótki programik:

2019-01-09-190353_2560x1389_scrot.thumb.png.0028d15cf5ea77e4263d0203489697f0.png2019-01-09-190450_2560x1389_scrot.thumb.png.bf502de9d341bd8208da0f69a1edd14f.png

Czas syntezy właściwie się nie zmienił, co bardzo mi pomogło bo już zapomniałem składnię Veriloga i musiałem kilka razy poprawiać kod.

Kolejny krok to zaprogramowanie, czy też konfiguracja układu. Wszystko przebiega standardowo, zupełnie jak z "prawdziwym" USB Blasterem:

2019-01-09-190417_1058x615_scrot.thumb.png.9996a2e6e1ae6504b23b320c6ee1f3ba.png

Na koniec wypada sprawdzić, czy kod faktycznie działa. Zamiast diody wykorzystałem analizator:

2019-01-09-190702_2560x1416_scrot.thumb.png.8ac853466a4ec401821ca1d53bbda6c2.png

Częstotliwość użytego zegara to 120MHz, dzielnik 2^24 daje 7.15 Hz, a ponieważ zmiana stanu wyjścia jest co pełny okres więc wszystko się zgadza.

Wniosek jest taki, że  Arduino MKR Vidor 4000 można spokojnie zrobić płytkę prototypową dla układów FPGA.

Niestety przeglądając dostępną dokumentację, kody oraz schematy doszedłem również do mniej optymistycznego wniosku. Wygląda na to, że projekt jest w bardzo wczesnej fazie - pracowało nad nim raptem kilka (~2-3) osób. Jest jeszcze bardzo niedopracowany, jakość kodu delikatnie mówiąc nie powala, a same rozwiązania projektowe nie napawają optymizmem.

Nie chcę być czarnowidzem, ale płytkę polecałbym tylko bardzo odważnym. Można się na niej dużo nauczyć, ale ciężko powiedzieć czy projekt się rozwinie, czy raczej trafi do szuflady z niedokończonymi rozwiązaniami. Pewną wskazówką jest zapaszek Intela - który jakoś nie ma dobrej ręki do segmentu DIY, a już stara się ograniczyć dostęp do wszystkiego co tylko może (nawet emulator USB Blaster ma prekompilowane biblioteki, wszystko tajne).

Więc sama płytka jest bardzo ciekawa, ale jak na razie istnieje ryzyko, że spotka ją los Intel Edisona, Intel Galileo, Arduino z Intel Curie, itd. Chociaż mam nadzieję, że się mylę.

 

 

  • Pomogłeś! 1

Udostępnij ten post


Link to post
Share on other sites

Pytanie za 100 punktów - po co tam jakikolwiek procek, jak w układach FPGA można zrobić softprocesor? Jeden scalak mniej, a w zamian za to możemy podpinać peryferia bezpośrednio do magistrali procesora wewnątrz FPGA, 😉 a za cenę procka można by dołożyć jakąś kostkę RAMu.
 

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Trochę za dużo tych punktów na tak proste pytanie 🙂 Użycie mikrokontrolera jest akurat bardzo fajne.

Po pierwsze dzięki niemu mamy zgodność z innymi modułami serii MKR od Arduino. Jeśli nie chcemy bawić się FPGA, dostajemy gotowy wsad oraz biblioteki i wszystko działa jak na zwykłym MKR z akceleratorem. Czyli zwykłe Arduino z kamerą, HDMI oraz WiFi.

Druga zaleta, już dla miłośników FPGA to czas syntezy. Nawet prosty projekt z małym softprocesorem zajmuje nieco zasobów i wydłuża czas syntezy. Więc nawet banalne miganie diodą stanie się o wiele bardziej skomplikowanym projektem. Najczęściej takie rozwiązanie jest też znacznie trudniejsze - inne środowisko do syntezy, inne do programowania, czasem nawet różne programatory. W każdym razie nie tak proste jak szkic w Arduino IDE.

Na koniec najważniejsze. Wspomniany mikrokontroler jest programatorem FPGA. Gdyby go nie umieszczono na płytce, konieczne byłoby posiadanie USBBlastera - który też kosztuje i w sumie ma na pokładzie mikrokontroler. Rozwiązanie użyte w MKR jest bardziej uniwersalne, miłośnicy Arduino mają prostotę i pełną zgodność, a zwolennicy FPGA programator.

Warto też pamiętać, że na płytce jest już pamięć 8MB SDRAM, więc dostajemy mikrokontroler oraz pamięć i nie musimy z niczego rezygnować.

  • Lubię! 2

Udostępnij ten post


Link to post
Share on other sites

Mnie najbardziej przekonuje to ostatnie, czyli, że i tak trzeba by programator / debugger do FPGA.

Bo tak to można by tam na stałe wgrać typowy Nios II z typowymi peryferiami (UART, SPI, I2C, PWM, Timery) i kompilować normalnie projekty na taką platformę.

Tak czy siak fajne podejście do tematu ;)

Udostępnij ten post


Link to post
Share on other sites

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ę »

×