Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: Literatura nt. jak zaprojektować układ akwizycji obrazu z...

Cześć,

pytania\ może na wyrost, ale jest to tematyka, która najbardziej mnie interesuje:

1) Czy możecie polecić jakąś konkretną pozycję literatury jak zaprojektować układ akwizycji obrazu z FPGA (z kamery USB)
2) czy FPGA na poziomie zasobób Altera Cyclone IV lub MAx10 ma wystarczające zasoby, aby zaimplementować na niej 2 wymiarową dyskretną transformatę cosinusową (aby pobawić się z róznymi poziomami kompresji obrazu)

Abstrahuję tu od sposobu implementacji układu (prawdopodobnie Verilog, lub VHDL) , jest to temat, który chciałbym samodzielnie ogarnąć (oczywiście z pomocą zasobów sieci). Na opencores.org znalazłem podobne projekty np. dyskretną FFT, która jest mocno podobna do tego co chciałbym osiągnąć.

Są oczywiście gotowe płyty z układem akwizycji obrazu np:
https://kamami.pl/zestawy-uruchomieniowe/564379-arty-z7...

ale cena jest dla mnie trochę za wysoka, stąd pytania o dobrą literaturę w temacie.

A możę ma ktoś z Was własny projekt układu CPU+ RAM +FPGA (o niższym koszcie z PCB), którym mógłby się podzielić (oczywiście do celów niekomercyjnych - nauki własnej).

Robiłem podobne rozwiązanie na CPU ARM (transformata cosinusowa) i nie było z tym większych problemów dla rozdzielczości 720p.

Pozdrawiam
Jakub Tyburski

Jakub Tyburski Asystent dydaktyczny
- Wojskowa Akademia
Techniczna w War...

Temat: Literatura nt. jak zaprojektować układ akwizycji obrazu z...

1. Literatury odnośnie samej akwizycji to nie ma (prędzej jest jak już to masa książek odnośnie już samego przetwarzania obrazów z użyciem FPGA). Niemniej ten - sama kwestia zrobienia akwizycji nie jest problemem - skoro mówisz, że masz kamerkę USB no to starczy, że np użyjesz gotowego bloku do komunikacji ze sterownikiem USB Blaster (czyli JTAG to Avalon Master Bridge) tak jak np tu jest użyte: http://www.alterawiki.com/wiki/Using_the_USB-Blaster_a.... Wtedy już masz jeden problem z głowy czyli komunikację z kamerką poprzez USB. Dalej zaś dla przykładu stosujesz układ do przechowywania danych odebranych z kamerki (czyli układ obsługi pamięci SDRAM - na to też jest gotowy blok od Altery), a potem układ DCT, który te jest gotowy, choć dostepny na OpenCores (https://opencores.org/project,dct). To oczywiście jakbyś chciał najłatwiejszą drogą pójść. Natomiast jakbyś sam chciał od zera wszystko pisać no to zostaje ci pójście moją drogą taką jaką stosowałem w przypadku swojej pracy magisterskiej czyli: bierzesz dokumentacje protokołów i piszesz maszyny stanów jako odrębne układy (np: jedna maszyna stanów dla komunikacji poprzez USB, druga do obliczania transformaty cosinusowej, a trzecia do obsługi pamięci SDRAM), analizując przy tym kody gotowych bloków (dają one dość dużą inspirację).

2. Altera Cyclone IV czy też MAX10 wystarczą pod taki cel - jedynie jak już to kwestia wyboru już konkretnego układu - są takie co odznaczają się małą ich ilością, a są takie ze wspomnianych rodzin co odznaczają się dużą ich ilością . Liczba zasobów określona jest poprzez LE (czyli Logical Elements) i jest dla obydwu rodzin zawarta tu: https://www.altera.com/content/dam/altera-www/global/en..., https://www.altera.com/content/dam/altera-www/global/en..., a szczegółowiej zaś w środowisku Quartus II v 16.0 w wizardzie, w którym tworzysz projekt (może być wersja Lite lub Web). W każdym razie ja bym brał te układy, których liczba LE jest min 29 tys. lub 40 tys. (zawsze lepszy nadmiar, zwłaszcza na przyszłe ewentualne zastosowania jakie można wdrożyć).
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: Literatura nt. jak zaprojektować układ akwizycji obrazu z...

Dzięki za odpowiedź,

o ile maszynę stanów dla transformety cosinusowej chciałbym sam napisać to z układem akwizycji obrazu chciałbym pójść "na łatwiznę" (mam trochę za długą przerwę w projektowaniu układów cyfrowych - jestem w trakcie przypominania sobie "starej" wiedzy i jej poszerzaniu.

Zastanawiam się nad takim układem gdzie mam wszystko zaprojektowane i gotowe do użycia (koszt jest trochę wysoki ale do przyjęcia).:

https://kamami.pl/zestawy-uruchomieniowe/179815-terasic...

Czas jaki będzie mi potrzebny zanim będę sam gotów do zaprojektowania czegoś wŁasnego oceniam na od roku w górę.

Co do literaqtury to jest tak jak mówisz - jest sporo dotyczącej samych algorytmów przetwarzania obrazów.

Pozdrawiam,
i dziękuję za rzeczową odpowiedź.
Jakub Tyburski

Jakub Tyburski Asystent dydaktyczny
- Wojskowa Akademia
Techniczna w War...

Temat: Literatura nt. jak zaprojektować układ akwizycji obrazu z...

Jak najbardziej bierz ten zestaw :)
Maciej G.

Maciej G. Projektant /
Programista, Famor
S.A.

Temat: Literatura nt. jak zaprojektować układ akwizycji obrazu z...

Jakub T.:
Niemniej ten - sama kwestia zrobienia
akwizycji nie jest problemem - skoro mówisz, że masz kamerkę USB no to starczy, że np użyjesz gotowego bloku do komunikacji ze sterownikiem USB Blaster (czyli JTAG to Avalon Master Bridge) tak jak np tu jest użyte: http://www.alterawiki.com/wiki/Using_the_USB-Blaster_a.... Wtedy już masz jeden problem z głowy czyli komunikację z kamerką poprzez USB. Dalej zaś dla przykładu stosujesz układ do przechowywania danych odebranych z kamerki (czyli układ obsługi pamięci SDRAM - na to też jest gotowy blok od Altery),
Na początek spróbowałbym zrobić ten układ akwizycji na Altera/Intel Max10 (FPGA10M08DAF256C8GES ) tam jest dostępne

378 kb konfigurowalnej pamięci M9K

czy to wystarczy do zrobienia bufora obrazu dla 720p ?

Masz na myśli pamięć wbudowaną w Układ FPGA, czy interfejs do zewnętrznej pamięci?

378 kb to wydaje się dość mało pamięci na na bufor obrazu dla 720p (przepustowość złącza SDI jest dość duża).Robiłem podobne rzeczy na "Intel Edison i małych ARM) oraz programu ffmpeg i tam wewnętrzne bufory obrazu były dużo większe (wielkość buforów to był ważny parametr przetwarzania i dekodowania)?
a potem układ DCT, który te jest gotowy, choć dostepny na OpenCores (https://opencores.org/project,dct).

To oczywiście
jakbyś chciał najłatwiejszą drogą pójść. Natomiast jakbyś

Sorry DTC to już właściwa dyskretna transformata cosinusowa (nie wiem dlaczego nie zajarzyłem prawidłowo skrótu ) tu jest link na "opencores":

https://opencores.org/project,dct

Mógłbym poprosić o kilka linków (ten na opencores prowadzi do pustej strony), aby przybliżyć temat).

Do póki nie zaoszczędzę kasy na ten zestaw, o którym wspomniałem , spróbuję pójść pierwszą z opisanych przez Ciebie dróg na zestawie "Maximator" z Kamami.pl (który posiadam).

Jak podchodzić do implementacji projektów z "opencores.org" na konkretnym układzie/.zestawie?

PozdrawiamTen post został edytowany przez Autora dnia 08.07.17 o godzinie 16:04



Wyślij zaproszenie do