Skocz do zawartości
lukezaa

Płytka dla zielonego devOpsa w FPGA

Pomocna odpowiedź

Poszukuje płytki dla początkującego w układach FPGA. Ogólnie nie jestem totalnym laikiem w tematach IT i elektroniki. Z zawodu jestem devOpsem. Programuje w C/C++ i nodejs do tego basha i powershella używam do skryptów. Arduino i AVR też nie są mi obce. Hobbystycznie zajmowałem się elektroniką analogową i w technikum cyfrową (algebrą boola). Więc nie chce jakieś płytki która mnie szybko zamknie. Zasadniczo chciał bym na niej wykonać jeden projekt. Konwerter sygnału kompozytowego (NTSC/PAL) do RGB + Sync. Wiem z czym to się wiąże z dodatkowym dekoderem wizji. Widziałem już płytki takie dla FPGA na Aliexpress. Konwersją przestrzeni barw i downscalling ewentualnie. A potem pobawić się w jakieś custom CPU na niej w ramach nauki.

Domyślam się, że potrzebna była by mi płytka z RAMem jednak Mimas v2 wygląda jak by nie był już dłużej dostępny. Jaką inną płytkę byście mi polecili w jakimś dobrym supportem i bez pirackiego IDE.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Cześć,

podałeś trochę za mało szczegółów żeby udzielić Ci dokładnej odpowiedzi. Proponuję zacząć od producenta układów FPGA - jedni preferują układy FPGA Xilinx'a inii wolą Intela (obie firmy mają bardzo ciekawe układy), liczą się też Lattice (akurat ta firma ma ciekawe rozwiązania dla przetwarzanie wideo  i podłączania sensorów wizyjnych) no i ostatnio chińskie firmy jak np. "Gowin Semiconductors". Z wyborem sprzętowym wiąże się środowisko do syntezy: i tutaj dla Xilinx'a starsze ISE (np. dla Mimas'a o którym wspomniałeś - Spartan6) i nowsze Vivado, a dla Intela Quartus dla Gowin'a "Gowin EDA" (tutaj trzeba prosić firmę o licencję i jakoś to uzasadnić).

Akurat niedawno dostałem od dystrybutora firmy Gowin - polskiej firmy "Rutronik" ciekawy zestaw uruchomieniowy Gowin'a .Ich układy FPGA są ciekawe (i dużo tańsze od konkurencji), ale nie wiem jak jest z ich dostępnością w małej ilości egzemplarzy.

Napisz trochę więcej o planowanym projekcie, jakie przetwarzania chcesz robić na układzie FPGA (bo ile dobrze zrozumiałem do dekompozycji sygnału NTSC/PAL chcesz użyć osobnego układu scalonego? Jakiej wielkości frame-buffer(ile bitów na poszczególne składowe obrazu RGB i jakiego rodzaju przekształcenia obrazu planujesz itp. - wtedy będzie można z grubsza policzyć ile różnych zasobów FPGA potrzebujesz.

Ja lepiej znam układy Xilinx'a niż Intela dlatego polecałbym serię Artix-7, ale np. Cyclone V Intela  jest równie ciekawy. Lattice ma też ciekawe zestawy specjalnie dla przetwarzania wideo ale mam zerowe doświadczenie z układami i softwarem tej firmy.

Pozdrawiam

BTW: no jeszcze jedna sprawa podaj kwotę, jaką chciałbyś wydać na zestaw uruchomieniowy (są także takie w cenie samochodu).

Edytowano przez FlyingDutch
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Sam projekt jest prosty. Mam auto w nawigacją z 99 roku i wyświetlacz do niego przyjmuje obraz RGB, a kamerki cofania generują sygnał kompozytowy. Z sygnału analogowego na cyfrowy będzie przetwarzać mi inny układ. On generuje mi cyfrowy sygnał YUV420 z sygnałami synchronizacji. FPGA będzie musiało przeliczyć przestrzeń braw na RGB444 oraz ewentualnie zrobić downscalling do odpowiedniej rozdzielczości. Więc ciężko oszacować mi wielkość framebuffera. Im mniejszy tym lepszy będzie.  planuje 8 bitów na całe RGB (jakoś to podzielę na konkretne składowe). Do celowo bym do tego projektu zaprojektował płytkę i zamówił w jclpcb czy jakimś innym miejscu z montażem elementów.

Kwota im taniej tym lepiej. Do 300zł. Potem będę chciał na tej płytce jakiś CPU za emulować lub nawet samemu stworzyć jakiś.

  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Cześć,

to teraz wiemy dużo więcej 🙂  Napisz jeszcze tylko jaką rozdzielczość ma obraz z kamerki cofania skonwertowany na obraz cyfrowy i jaka jest docelowa rozdzielczość wyświetlacza RGB? Według mnie najprościej byłoby skonwertowany do postaci cyfrowej obraz YUV420 wysyłać do pamięci FIFO, następnie po wyjściu z FIFO dokonywać przeliczeń przestrzeni barw na RGB (8 bit) i zrobić w pamięci RAM trzy bufory dla poszczególnych barw RGB (frame-buffer) o odpowiedniej rozdzielczości  Z tego bufora wyświetlać obraz RGB na monitorze.

Dla pamięci FIFO i bloków RAM (framebuffer) masz w Vivado gotowe IP cores co bardzo ułatwia kodowanie całego projektu (IPCores: "FIFO Generator" i "Block Memory Generator"). Bloki pamięci RAM muszą być "dual-port" (jednoczesny zapis i odczyt). Problemem jest, że standardowo te IP cores używają wewnętrznej pamięci "Block RAM" z układu FPGA lub "Distributed RAM" (LUTs układu FPGA). Jeśli chciałbyś tworzyć te bufory w zewnętrznej pamięci RAM (jak np. DDR RAM w zestawie MIMAS) to najpierw musisz oprogramować kontroler tej zewnętrznej pamięci (co nie jest takie proste) wysłać jej zawartość jakąś magistralą (np. AXI) i stworzyć bufor pamięci dual-port.

Niestety chcąc iść prostszą drogą (Block RAM z układu FPGA) nawet dla małych rozdzielczości obrazu (np. VGA) zapotrzebowanie na pamięć "Block RAM" jest ekstremalnie wysokie.

Zobacz ten projekt podłączenia kamerki CMOS (VGA) i wyświetlenia obrazu na monitorze VGA:

 

Tutaj dla całkiem sporego układu Artix-7 XC7A35T-1CPG236C wewnętrznej pamięci  BRAM wystarczyło tylko na bufor RGB o rozdzielczości 320x240. No chyba, że rzeczywiście będziesz używał zewnętrznej pamięci RAM (w osobnym scalaku), ale wtedy możesz napotkać wiele problemów dotyczących parametrów czasowych, przekształceń szerokości pamięci, adresowania itp. Użycie zewnętrznej pamięci RAM komplikuje mocno cały projekt. Jeśli chodzi o soft-procesory to tutaj wymagania są o wiele mniejsze i wymieniony wyżej Artix-7 jest w zupełności wystarczający. Mógłbyś spróbować też z jakimś układem firmy Gowin (szczególnie, że mają łatwe do lutowania obudowy) , ale tutaj problemem jest uzyskanie licencji na software do syntezy (no i musiałbyś zaprojektować własną płytkę).  Co do softu do syntezy to zarówno Xilinx jak i Intel mają w pełni darmowe wersję wystarczające do zaprojektowania, symulacji i zaprogramowania układu FPGA (Lattice chyba też ma darmowy software ale z niego nie korzystałem).

Pozdrawiam

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Wideo wyjściowe będzie 320x240. Jednak w PAL mamy 576lini. Więc rozdzielczość będzie większa. Mogę też spróbować pobierać co któryś piksel zamiast wszystkich do FIFO. Jednak myślę, że i tak RAM się przyda. Najwyżej nie wykorzystam go w tym projekcie.

Płytki też nie chciał bym teraz robić sam bo jestem słaby w lutowanie. Tak to bym szedł w 100% w analog i zrobienie tego na jakimś dekoderze wizji z telewizora.

Edit. cały projekt wiem, że będzie i tak trudny. Jak w ffmpegu jak programuje to takie coś było by banalne do zrobienia..

Edytowano przez lukezaa

Udostępnij ten post


Link to post
Share on other sites
20 godzin temu, lukezaa napisał:

 Jak w ffmpegu jak programuje to takie coś było by banalne do zrobienia..

Cześć,

przepraszam za odpowiedź z opóźnieniem. Zgadzam się z Tobą  w 100 procentach - też używałem ffmpeg'a i uważam, że jest to świetny program. Widzę jeszcze jeden problem z planowanym projektem. Algorytm konwersji z formatu YUV420 na RGB wymaga użycia liczb zmiennoprzecinkowych, a implementacja w układzie FPGA bloków do działań na liczbach zmiennoprzecinkowych zajmuje bardzo dużą liczbę zasobów układu FPGA (przejryj posty w tym dziale - opisywałem tam implementacje takich bloków). Po południu (po pracy) postaram się podesłać ci kilka linków do zestawów uruchomieniowych.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Cześć,

Co do projektu to chciałem trochę wzorować się na tym. Też jako input analogowy jest używa płytka na układzie 5150 który konwertuje sygnał analogowy kompozytowy na cyfrowy sygnał. Tylko chciał bym dać output po RGB+Sync niż HDMI. I robić downscaller a nie upscaller. Tam jest też kod konwertera YUV na RGB na licencji MIT.

https://github.com/rrk1/FPGA-FPV-scaler

Btw. Ty jesteś z Bydgoszczy widzę. ZSE kończyłeś? 😄

Edytowano przez lukezaa
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
3 godziny temu, lukezaa napisał:

Cześć,

Co do projektu to chciałem trochę wzorować się na tym. Też jako input analogowy jest używa płytka na układzie 5150 który konwertuje sygnał analogowy kompozytowy na cyfrowy sygnał. Tylko chciał bym dać output po RGB+Sync niż HDMI. I robić downscaller a nie upscaller. Tam jest też kod konwertera YUV na RGB na licencji MIT.

https://github.com/rrk1/FPGA-FPV-scaler

Btw. Ty jesteś z Bydgoszczy widzę. ZSE kończyłeś? 😄

Hej,

fajny projekt. Tak jestem z Bydgoszczy i skończyłem Tech. Elektroniczne w 1986 roku.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

Cześć,

z zestawów FPGA dostępnych w polskich sklepach poleciłbym - Xilinx:

https://kamami.pl/zestawy-uruchomieniowe/560134-artix-7-35t-arty-zestaw-ewaluacyjny-dla-fpga-artix-7.html

https://kamami.pl/zestawy-uruchomieniowe/562401-digilent-cmod-a7-35t-modul-uruchomieniowy-z-fpga-artix-7-410-328-35.html

Intel - SoC (z hard procesorem):

https://kamami.pl/zestawy-uruchomieniowe/558403-terasic-de0-nano-soc-kit-p0286-zestaw-startowy-z-ukladem-altera-cyclone-v-soc.html

Niestety ostatnio jest bardzo niekorzystny dla kupujących kurs dolara i wszystkie tu podane zestawy przekraczają podany budżet.

Dlatego bardziej opłacają się zakupy w chińskim sklepie. Polecam Xilinx:

https://pl.aliexpress.com/item/1000006630084.html?spm=a2g17.12010612.8148356.2.25967fb20oPfiK

https://pl.aliexpress.com/item/32964497318.html?spm=a2g17.12010612.8148356.4.25967fb20oPfiK

https://pl.aliexpress.com/item/4000170003461.html?spm=a2g17.12010612.8148356.6.25967fb20oPfiK

https://pl.aliexpress.com/item/4000170042795.html?spm=a2g17.12010612.8148356.8.25967fb20oPfiK

Tą ostatnią z płytek posiadam i opisywałem jej cechy we wcześniejszych postach. Użycie chińskich płytek jest trudniejsze - nie ma przykładowego pliku "constraints" (xdc) i dużo szczegółów trzeba doczytać ze schematu.

Tutaj jeszcze link do ciekawej płytki z układem intela Cyclone V (planuje jej zakup za jakiś czas):

https://pl.aliexpress.com/item/1000006622149.html?gps-id=pcStoreJustForYou&scm=1007.23125.137358.0&scm_id=1007.23125.137358.0&scm-url=1007.23125.137358.0&pvid=db56bce2-77fc-44a5-be5e-9000c221c0dd&spm=a2g0o.store_home.smartJustForYou_482569341.5

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Ta pierwsza z Aliexpress wydaje się interesująca cenowo i też posiada układ taki sam jak w tym projekcie co znalazłem. Więc wydaje się najlepszym wyborem dla mnie. Tylko ta ma ram DDR3 a nie SDRAM jest jakaś duża różnica w ewentualnej komunikacji z ramem? Programowanie rozumiem przez JTAGa?

Jakoś na płytce z porami mi nie zależy bardzo bo w tym projekcie bo i tak będę pracował głównie na sygnale cyfrowym a analog z VGA będzie niskiej częstotliwości to mogę na początku na płytce stykowej zrobić sobie wszystko.

Ja ZSE skończyłem w 2014 roku więc w całkowicie innych czasach i też inny kierunek technik informatyk. Jednak właśnie na zajęciach z UTK zachęciłem się do algebry boola i elektroniki cyfrowej.

Edytowano przez lukezaa
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Cześć,

są różnice pomiędzy SDRAM a DDR RAM (v.2 i v.3) główna polega na tym, że odczyt danych jest na jednym zboczu zegara a nie obu. Tutaj masz dokładniejsze porównanie:

https://www.diffen.com/difference/DDR_vs_SDRAM

Tak do programowania  programator JTAG. Ja wcześniej używałem takiego programatora Digilent'a:

https://kamami.pl/programatory/234563-digilent-jtag-hs3-programator-ukladow-fpga.html

I miałem z nim ciągłe kłopoty, przy zakupie tego zestawu FPGA QMTECH kupiłem chiński klon "Xilinx cable" :

https://pl.aliexpress.com/item/32805986808.html?spm=a2g0s.9042311.0.0.70934c4dpK7I3S

i ten programator działa bardzo dobrze (testowany ogólnie z czterema zestawami FPGA).

Pozdrawiam

Edytowano przez FlyingDutch
  • Lubię! 1

Udostępnij ten post


Link to post
Share on other sites

Zobaczę jak moje dwie inne paczki z Aliexpress teraz przyjdą po COVID19 i będę zamawiał. Już wiem co i jak 😄

Myślę też czy nie kupić Elberta i zrobić z nim kursu, ale chyba to będą zmarnowane pieniądze bo szybko się zatrzymam.

Udostępnij ten post


Link to post
Share on other sites
1 godzinę temu, lukezaa napisał:

Myślę też czy nie kupić Elberta i zrobić z nim kursu, ale chyba to będą zmarnowane pieniądze bo szybko się zatrzymam.

Niestety jak chcesz robić ciekawsze projekty to Elbert ma za mało zasobów - to jest świetna płytka dla kogoś zupełnie początkującego (ja też od niej zaczynałem), ale nie nadaje się do większych projektów. Jego dużą zaletą jest fakt iż jest nieźle wyposażony w układy peryferyjne i jest do niego kurs VHDL - nie musisz się bawić w czytanie schematów.

Pozdrawiam

Udostępnij ten post


Link to post
Share on other sites

U mnie to jest taki problem, że trochę wiem, a trochę nie. Myślę, że lepsza płytka będzie wymagać więcej uwagi i pracy niż gotowy kurs. Szczególnie z definicją pinów. Jednak to jak fusebity z AVR więc uwaga i tyle 🙂

Udostępnij ten post


Link to post
Share on other sites

Cześć,

daj znać jak kupisz jakiś zestaw uruchomieniowy FPGA i jak zaczniesz swój projekt. Chętnie bym tutaj poczytał o projektach innych użytkowników bo ogólnie mało się dzieje w tym dziale 😉

pozdrawiam

Udostępnij ten post


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