Popularny post FlyingDutch Napisano Grudzień 29, 2021 Popularny post Udostępnij Napisano Grudzień 29, 2021 (edytowany) Cześć, ponieważ w ciągu tego roku byłem tak obciążony projektami elektronicznymi w pracy (i ich programowaniem), że nie mam w czasie wolnym ochoty na ambitne projekty. Ponieważ mam teraz kilka dni wolnych postanowiłem zająć się jakimś małym projektem, który da mi trochę rozrywki. Jak już kiedyś pisałem w latach 80-tych lubiłem grać w proste gry na "automatach", dlatego wybór padł znów na prostą grę "Snake"(wąż). Wybór padł na implementację tej gry na płytkę FPGA "Pepino" (także Spartan6) - niestety różni się sporo od Mimas V.2. Tutaj link do żródeł gry na Githgub'ie: https://github.com/Saanlima/Pepino/tree/master/Projects/Snake Przystępując do implementacji gry myślałem, że powinno udać się ją uruchomić na zestawie FPGA "Elbert V.2" (Spartan3) - niestety okazało się, iż liczba wymaganych zasobów jest ponad dwukrotnie większa od tej którą posiada ta płytka. Gra wymaga 1957 przerzutników (FF) i 1703 LUTs - patrz zrzut erranu z ISE: Tak, że mój wybór padł na zestaw FPGA "Mimas V.2", który posiadam od kilku lat. Tutaj linki do tego zestawu w Botland'zie oraz do producenta firmy "Numato Labs": https://botland.com.pl/moduly-i-zestawy-fpga/8603-mimas-v2-spartan-6-plytka-rozwojowa-fpga-5904422311964.html https://numato.com/product/mimas-v2-spartan-6-fpga-development-board-with-ddr-sdram/ https://numato.com/docs/mimas-v2-spartan-6-fpga-development-board-with-ddr-sdram/ Podstawową różnicą pomiędzy oryginalnym projektem na zestaw FPGA "Pepino" jest fakt, iż "Pepino" ma główny zegar 50 Mhz a Mimas v.2 100 Mhz. Poza tym ruch węża był realizowany poprzez klawiaturę PS2 podłączoną do plytki FPGA - ponieważ nie posiadam takiej klawiatury postanowiłem kontrolować ruch węża za pomocą przycisków na płytce Mimas. Z tego powodu można było usunąć dwa sygnały wejściowe: KB_clk i KB_data z głównego modułu aplikacji(Snake.v), i sam moduł obsługi klawiatury: kbInput(VGA_clk, KB_clk, KB_data, direction) Trzeba też było zmodyfikować plik "user constraints" (ucf) tak aby pasował do zestawu FPGA 'Mimas v.2". Oto lista wykonanych w projekcie zmian: 1) Zmodyfikowanie portów głównego modułu Snake.v: było: module Snake(start, master_clk, KB_clk, KB_data, VGA_R, VGA_G, VGA_B, VGA_hSync, VGA_vSync); input start; input master_clk, KB_clk, KB_data; output reg [2:0] VGA_R; output reg [2:0] VGA_G; output reg [1:0] VGA_B; output VGA_hSync, VGA_vSync; po modyfikacji: module Snake(start, clk100, VGA_R, VGA_G, VGA_B, VGA_hSync, VGA_vSync, btnUp, btnDown, btnLeft, btnRight); input start; input clk100; input btnUp, btnDown, btnLeft, btnRight; output reg [2:0] VGA_R; output reg [2:0] VGA_G; output reg [1:0] VGA_B; output VGA_hSync, VGA_vSync; 2) Usunięto moduł zegarowy w głównym module: // Use a CDM to generate VGA clock (25 MHz) from input clock (50 MHz) DCM #(.CLKIN_DIVIDE_BY_2("TRUE"), .CLKIN_PERIOD(20.000)) dcm(.CLKIN(master_clk), .CLKFB(VGA_clk), .RST(1'b0), .PSEN(1'b0), .PSINCDEC(1'b0), .PSCLK(1'b0), .DSSEN(1'b0), .CLK0(VGA_clk)); a dodano DCM (IPCore PLL_Clock), który teraz z zegara Mimas'a 100 MHz generuje dwa zegary (50 Mhz i 25 Mhz do taktowania modułu VGA): // Instantiate the module PLL_Clock PLL1 (// Clock in ports .CLK_IN1(clk100), // IN 100Mhz // Clock out ports .CLK_OUT1(master_clk), // OUT 50Mhz .CLK_OUT2(VGA_clk)); // OUT 25MHz 3) Usunięte zostało wywołanie modułu: kbInput i kod samego modułu: VGA_gen gen1(VGA_clk, xCount, yCount, displayArea, VGA_hSync, VGA_vSync); randomGrid rand1(VGA_clk, rand_X, rand_Y); //kbInput kbIn(VGA_clk, KB_clk, KB_data, direction); updateClk UPDATE(VGA_clk, update); module kbInput(VGA_clk, KB_clk, KB_data, direction); input VGA_clk; input KB_clk; input KB_data; output reg [3:0] direction = 4'b0000; reg Q0, Q1; reg [10:0] shreg; reg [7:0] code; wire endbit; assign endbit = ~shreg[0]; assign shift = Q1 & ~Q0; always @ (posedge VGA_clk) begin Q0 <= KB_clk; Q1 <= Q0; shreg <= (endbit) ? 11'h7FF : shift ? {KB_data, shreg[10:1]} : shreg; if (endbit) code <= shreg[8:1]; if(code == 8'h1D) direction <= 4'b0001; else if(code == 8'h1C) direction <= 4'b0010; else if(code == 8'h1B) direction <= 4'b0100; else if(code == 8'h23) direction <= 4'b1000; end endmodule zamiast tego został dodany fragment kodu obsługujący przyciski z płytki Mimas w module głównym (linie od 79 do 87): end else if (~game_over) begin if (update) begin for(count = 1; count < 128; count = count + 1) begin if(size > count) begin snakeX[count] <= snakeX[count - 1]; snakeY[count] <= snakeY[count - 1]; end end //obsluga przycisow z Mimasa if(btnDown == 1'b0) direction <= 4'b0001; else if(btnLeft == 1'b0) direction <= 4'b0010; else if(btnUp == 1'b0) direction <= 4'b0100; else if(btnRight == 1'b0) direction <= 4'b1000; case(direction) 4'b0001: snakeY[0] <= (snakeY[0] - 1); 4'b0010: snakeX[0] <= (snakeX[0] - 1); 4'b0100: snakeY[0] <= (snakeY[0] + 1); 4'b1000: snakeX[0] <= (snakeX[0] + 1); endcase Poniżej rysunek z przyciskami z Mimas'a użytymi do kontrolowania ruchu węża i gry: Przycisk SW5 to start nowej gry a przyciski:SW!, SW2, SW3, SW4 kontrolują ruch węża. Poniżej zdjęcie z gry uruchomionej na zestawie Mimas v.2 i małym monitorku VGA: Bym zapomniał: był jeszcze błąd języka Verilog w tym fragmencie kodu: module randomGrid(VGA_clk, rand_X, rand_Y); input VGA_clk; output reg [6:0] rand_X; output reg [6:0] rand_Y; always @(posedge VGA_clk) begin //rand_X <= ((rand_X + 3) % 78) + 1; //rand_Y <= ((rand_Y + 5) % 58) + 1; rand_X <= ((rand_X + 3) % 64) + 1; rand_Y <= ((rand_Y + 5) % 32) + 1; end endmodule dwie linie zostały wykomentowane i dodane dwie poniżej (zmienione) - Verilog wymaga, aby drugi argument operatora modulo % był potęgą liczby dwa. Tutaj plik "Snake.ucf" (z user constraints) dla płytki Mimas v.2: NET "*" IOSTANDARD=LVCMOS33; CONFIG VCCAUX = "3.3" ; # Clock 100 MHz NET "clk100" LOC = V10 | IOSTANDARD = LVCMOS33 | PERIOD = 100MHz ; NET "start" LOC = K17 | PULLUP; #SW5 # VGA port NET "VGA_hSync" LOC = B12; NET "VGA_vSync" LOC = A12; NET "VGA_R<0>" LOC = A9; NET "VGA_R<1>" LOC = B9; NET "VGA_R<2>" LOC = C9; NET "VGA_G<0>" LOC = C10; NET "VGA_G<1>" LOC = A10; NET "VGA_G<2>" LOC = C11; NET "VGA_B<0>" LOC = B11; NET "VGA_B<1>" LOC = A11; # Przyciski Mimas V.2 NET "btnLeft" LOC = M18 | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP; #SW1 NET "btnRight" LOC = L18 | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP; #SW2 NET "btnDown" LOC = L17 | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP; #SW3 NET "btnUp" LOC = M16 | IOSTANDARD = LVCMOS33 | DRIVE = 8 | SLEW = FAST | PULLUP; #SW4 Zamieszczam spakowany projekt gry dla "ISE 14.7 Webpack": SnakeGame.zip Plik binarny do wgrania konfiguracji FPGA to "snake.bin" (jeśli ktoś nie jest zainteresowany kodem źródłowym). Pozdrawiam Edytowano Grudzień 29, 2021 przez FlyingDutch update 5 Cytuj Link do komentarza Share on other sites More sharing options...
Gieneq Grudzień 29, 2021 Udostępnij Grudzień 29, 2021 @FlyingDutch ciekawy projekt, wygląda na dość prosty jak się wie co robić 🙂 wrócę do niego jak zamknę obecny. Nie pamiętam czy o to już pytałem - czy lepiej uczyć się VHDL czy Verilog, ale patrząc na dostępność przykładów i materiałów. Wydaje mi się, że kody w internecie są częściej w Verilogu i lepiej iść w tę stronę. Jak to jest z IPCore? Czy determinują one używane konkretnego z języków? 1 Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 29, 2021 Autor tematu Udostępnij Grudzień 29, 2021 23 minuty temu, Gieneq napisał: Nie pamiętam czy o to już pytałem - czy lepiej uczyć się VHDL czy Verilog, ale patrząc na dostępność przykładów i materiałów. Wydaje mi się, że kody w internecie są częściej w Verilogu i lepiej iść w tę stronę. Jak to jest z IPCore? Czy determinują one używane konkretnego z języków? Cześć @Gieneq, masz rację - dostępnego w sieci kodu źródłowego jest zdecydowanie więcej w Verilogu 😉. Niektóre narzędzia do syntezy układów FPGA (czy symulatory) obsługują wyłącznie Verilog, także wybór ze względu na to kryterium jest oczywisty. Dla "IPCore's" przeważnie nie ma znaczenia jaki język projektu wybraliśmy (obsługują Verilog i VHDL). Można też mieć "mieszane" projekty - część źródeł w VHDL a część w Verilogu. Ja osobiście wolę VHDL (jak mam wybór), natomiast częściej mam do czynienia z kodem w Verilog'u. Pozdrawiam 1 Cytuj Link do komentarza Share on other sites More sharing options...
MR1979 Grudzień 30, 2021 Udostępnij Grudzień 30, 2021 (edytowany) Jaki zestaw na początek proponowałbyś do nauki FPGA i Verilog? Edytowano Grudzień 30, 2021 przez MR1979 Cytuj Link do komentarza Share on other sites More sharing options...
Polecacz 101 Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Zarejestruj się lub zaloguj, aby ukryć tę reklamę. Produkcja i montaż PCB - wybierz sprawdzone PCBWay! • Darmowe płytki dla studentów i projektów non-profit • Tylko 5$ za 10 prototypów PCB w 24 godziny • Usługa projektowania PCB na zlecenie • Montaż PCB od 30$ + bezpłatna dostawa i szablony • Darmowe narzędzie do podglądu plików Gerber Zobacz również » Film z fabryki PCBWay
FlyingDutch Grudzień 31, 2021 Autor tematu Udostępnij Grudzień 31, 2021 10 godzin temu, MR1979 napisał: Jaki zestaw na początek proponowałbyś do nauki FPGA i Verilog? Cześć, to zależy, co chcesz robić i jak głęboko "wejść w temat". Z własnej praktyki wiem, że w "małych" zestawach szybko zaczyna brakować zasobów dla bardziej złożonych projektów. Na początek wybrałbym coś z Artix'em 7 - tak aby móc pracować w "Xilinx Vivado" które ma dużo większe możliwości niż "ISE". Co do zestawów z FPGA Intela to nie podpowiem, bo mam z nimi mało doświadczeń. Ogólnie to zły czas na kupowanie płytek FPGA, bo podrożały horrendalnie. Na początek wybrałbym jeden z dwóch zestawów: https://kamami.pl/zestawy-uruchomieniowe/562401-digilent-cmod-a7-35t-modul-uruchomieniowy-z-fpga-artix-7-410-328-35.html https://kamami.pl/zestawy-uruchomieniowe/560134-artix-7-35t-arty-zestaw-ewaluacyjny-dla-fpga-artix-7.html Jeśli koniecznie chciałbyś jednak układ Intela - to może ten zestaw: https://kamami.pl/zestawy-uruchomieniowe/179815-terasic-de0-nano-zestaw-startowy-z-ukladem-fpga-z-rodziny-cyclone-iv-firmy-altera.html Nie polecam zakupu płytki Maximator - powodem jest wyprowadzenie bardzo małej ilości pinów FPGA na złącza (chociaż sam projekt płytki jest bardzo fajny i ciekawie pomyślany). Przeszukaj też starsze wątki w dziale "Układy programowalne" - tam był już dyskutowany taki temat i padło kilka propozycji (np. firmyQMtech). Pozdrawiam 1 Cytuj Link do komentarza Share on other sites More sharing options...
Popularny post Elvis Grudzień 31, 2021 Popularny post Udostępnij Grudzień 31, 2021 Przed wybraniem zestawu proponowałbym najpierw sprawdzić jaka dokumentacja jest do niego dostępna. Schemat, instrukcja, opis pinów to absolutne minimum. Warto jeszcze poszukać gotowych kursów, filmów lub tutoriali. Na początku FPGA bywają dość trudne, łatwiej zacząć mając odpowiednią pomoc. Inaczej płytka może skończyć w szufladzie z "rzeczami na później", co znam z doświadczenia 🙂 Jak chodzi o wybór samej płytki, to jak napisał kolega @FlyingDutch warto zastanowić się, jaki jest cel używania FPGA. Jeśli chcemy poznać podstawy, coś jak kurs Forbota (https://forbot.pl/blog/kurs-fpga-podstawy-vhdl-w-praktyce-spis-tresci-id22265) - najlepiej wybrać płytkę, do której jest kurs, więc Elbert V2 to chyba dobry wybór. Mogę też polecić Maximatora, chociaż nie każdy go lubi, ale moim zdaniem na początek to bardzo fajna opcja. Natomiast odradzałbym Artix-7 i cokolwiek pracujące z Vivado do nauki podstaw. To środowisko jest tak koszmarnie powolne. W przypadku nieco większych projektów, każde oprogramowanie wymaga czasu, ale dla prostych układów używanych do nauki różnica jest ogromna. Na moim komputerze porównywałem czas syntezy banalnego projektu - migania diodą. Dla Maximatora używałem oprogramowania Quartus i czas syntezy wynosił ~20 sekund. Błędy w kodzie były sygnalizowane prawie od razu (po kilku sekundach). Natomiast Vivado taki sam projekt syntetyzowało ponad 3 minuty... A błędy, np. brak średnika były zgłaszane dopiero po ponad minucie. Coś takiego do nauki nie najlepiej się sprawdza - no chyba że ktoś ma więcej cierpliwości ode mnie. Natomiast Vivado, płytki z Artix-7 i podobne świetnie się sprawdza jeśli chcemy przygotowywać układy oparte o gotowe bloki IP. Dodajemy soft-procesor, moduły peryferyjne. Następnie całość syntetyzujemy, a na koniec piszemy program jak na każdy inny mikrokontroler. Wtedy czas syntezy Vivado jest bardzo porównywalny np. z Quartusem, a samo środowisko chyba stabilniejsze (Quartus bardzo ucierpiał po przejęciu Altery przez Intela). Warto też poczytać o innych układach niż para Xilix/Altera. LatticeSemi oferuje bardzo ciekawe układy np. ICE40, można również poczytać o "chińskich" modułach, są dostępne nawet z wbudowanym rdzeniem RISC-V. 3 1 Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 31, 2021 Autor tematu Udostępnij Grudzień 31, 2021 (edytowany) 2 godziny temu, Elvis napisał: Przed wybraniem zestawu proponowałbym najpierw sprawdzić jaka dokumentacja jest do niego dostępna. Schemat, instrukcja, opis pinów to absolutne minimum. Warto jeszcze poszukać gotowych kursów, filmów lub tutoriali. Na początku FPGA bywają dość trudne, łatwiej zacząć mając odpowiednią pomoc. Inaczej płytka może skończyć w szufladzie z "rzeczami na później", co znam z doświadczenia 🙂 Jak chodzi o wybór samej płytki, to jak napisał kolega @FlyingDutch warto zastanowić się, jaki jest cel używania FPGA. Jeśli chcemy poznać podstawy, coś jak kurs Forbota (https://forbot.pl/blog/kurs-fpga-podstawy-vhdl-w-praktyce-spis-tresci-id22265) - najlepiej wybrać płytkę, do której jest kurs, więc Elbert V2 to chyba dobry wybór. Mogę też polecić Maximatora, chociaż nie każdy go lubi, ale moim zdaniem na początek to bardzo fajna opcja. Natomiast odradzałbym Artix-7 i cokolwiek pracujące z Vivado do nauki podstaw. To środowisko jest tak koszmarnie powolne. W przypadku nieco większych projektów, każde oprogramowanie wymaga czasu, ale dla prostych układów używanych do nauki różnica jest ogromna. Natomiast Vivado, płytki z Artix-7 i podobne świetnie się sprawdza jeśli chcemy przygotowywać układy oparte o gotowe bloki IP. Dodajemy soft-procesor, moduły peryferyjne. Następnie całość syntetyzujemy, a na koniec piszemy program jak na każdy inny mikrokontroler. Wtedy czas syntezy Vivado jest bardzo porównywalny np. z Quartusem, a samo środowisko chyba stabilniejsze (Quartus bardzo ucierpiał po przejęciu Altery przez Intela). Warto też poczytać o innych układach niż para Xilix/Altera. LatticeSemi oferuje bardzo ciekawe układy np. ICE40, można również poczytać o "chińskich" modułach, są dostępne nawet z wbudowanym rdzeniem RISC-V. Cześć @Elvis, kolega zadający pytanie jest dość zaawansowany (wnoszę tak po projekcie konsoli do gier) i może być tak, że szybko znudzi mu się miganie diodą i projekty prostych liczników, czy rejestrów przesuwnych. Z mojego doświadczenia wynika, że jest kilka istotnych czynników, które rzutują, czy można na danym zestawie FPGAj ćwiczyć ciekawe projekty - wymienię je według ważności: 1) odpowiednia liczba podstawowych zasobów FPGA (LUT i FF) = co najmniej 15000 (LUT i FF) 2) ilość pinów układu FPGA wyprowadzona na złącza 3) jakość narzędzi do syntezy 4) dobra dokumentacja i przykładowy kod dla płytki FPGA 4) dodatkowa pamięć RAM na płytce FPGA (SRAM,SDRAM, DDR) 5) liczba i rodzaj dostępnych w układzie FPGA bloków DSP 5) złącza wyjściowe/wejściowe wideo (VGA,HDMI) 5) złącze do kamery (najlepiej MIPI) Aby próbować jakieś ciekawsze projekty, bardzo szybko zaczyna brakować zasobów np. BRAM na FPGA( nie mówię już o LUT i FF). Ciekawsze projekty bardzo szybko wymagają użycia soft-procesora (nie mówię już o układach SoC) no bo jaki może być stopień skomplikowania maszyn stanów skończonych używanych w projekcie. Ostatni rok poświeciłem na bardziej dogłębne poznanie Vivado i magistrali AXI (bo bez niej nie można zaprojektować nic sensownego w technologii Xilinx'a, dla Intela jest to magistrala Avalon) i nie spodziewałem się jak potężnym środowiskiem jest Vivado i nie chodzi o soft-CPU i SoC ale o samo korzystanie z IP Cores i tworzenie własnych układów pakowanych do IP Core, wykorzystanie np. ILA do debugowania skomplikowanych układów. Osobnym tematem są SoC - ja bardzo intensywnie uczyłem się korzystania z Zynq-7000 - zarówno w Vivado jak i SDK Xilinx'a. Z czasami syntezy układów oczywiście masz rację, ale ja teraz potrafię "wybaczyć" Vivado dłuższe czasy syntezy projektów, wiedząc jak skomplikowane i potężne jest to narzędzie (niestety za złożoność płaci się dłuższymi czasami syntezy układu) . Co do płytki Maximator to też masz rację - została ona bardzo fajnie zaprojektowana, ale ma jedną zasadniczą wadę - jest nią liczba pinów układu FPGA wyprowadzona na złącza (która jest za mała, aby wypróbować jakieś większe projekty) Osobiście uważam, że któryś z układów uruchomieniowych z FPGA z rodziny Artix-7 to najlepszy wybór na zestaw do nauki FPGA (najlepszy stosunek możliwości do ceny). Do zestawów FPGA Digilent'a opartych na Artix-7 jest bardzo dużo przykładowego kodu na ich stronie WWW (jest też bardzo dużo fajnych projektów na Github'ie) . Odnośnie nauki Vivado to polecam serię tutoriali dra. Sadri: Mówię tu o całej serii (13 części) - jest to kilkanaście godzin intensywnego kursu Vivado, magistrali AXI, IP cores i SoC Zynq-70xx. Jak dotychczas nie znalazłem lepszych materiałów szkoleniowych dot. układów FPGA. Dla mnie ta seria szkoleniowa dra. Sadri była wielkim przełomem w nauce wykorzystania FPGA i środowiska Xilinx Vivado. Co do układów FPGA innych producentów to staram się zamieszczać na forum materiały dotyczące układów FPGA chińskiej firmy "Gowin Semiconductors" (i samego RISC-V), lecz nie polecał bym ich początkującym użytkownikom, bo trudniej z nich korzystać. Czasami jedynym materiałem referencyjnym jest tu schemat zestawu FPGA i trzeba umieć się nim posłużyć. Mam nadzieję, że tym wpisem trochę wyjaśniłem dlaczego uważam zestawy uruchomieniowe z FPGA z Artix-7 za dobry wybór do nauki układów FPGA. Niestety w czasie tego 2021 roku ceny wszystkich zestawów FPGA (także tych dostępnych na AliExpress.com) poszybowały niebotycznie w górę. Pozdrawiam wszystkich. Edytowano Grudzień 31, 2021 przez FlyingDutch 1 Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Grudzień 31, 2021 Udostępnij Grudzień 31, 2021 @FlyingDutch Masz oczywiście rację, dlatego napisałem że wszystko zależy od celu takiej płytki - jeśli interesuje nas poziom bloków IP, soft/hard- procesory itd. wtedy vivado jest ok. Kolega @MR1979 zapytał "co na początek", stąd moje obawy, czy Artix oraz Vivado to dobry wybór. Dla mnie początek to poziom kursu z ElbertV2, ew. bardzo podstawowe soft-procesory, takie miganie diodą ale na procesorze. Jak chodzi o filmy to ja korzystałem ze starszych, chociaż tego samego autora: Warto wiedzieć, że zmienił konto, ale nadal publikuje materiały 🙂 1 Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 31, 2021 Autor tematu Udostępnij Grudzień 31, 2021 5 minut temu, Elvis napisał: @FlyingDutch Masz oczywiście rację, dlatego napisałem że wszystko zależy od celu takiej płytki - jeśli interesuje nas poziom bloków IP, soft/hard- procesory itd. wtedy vivado jest ok. Kolega @MR1979 zapytał "co na początek", stąd moje obawy, czy Artix oraz Vivado to dobry wybór. Dla mnie początek to poziom kursu z ElbertV2, ew. bardzo podstawowe soft-procesory, takie miganie diodą ale na procesorze. Warto wiedzieć, że zmienił konto, ale nadal publikuje materiały 🙂 @Elvis doskonale wiesz, że moje początki to także Elbert v.2 i bardzo proste projekty. Dlatego bez sprecyzowania co kolega wątkotwórca oczekuje od pierwszego zestawu FPGA, trudno coś doradzić. odnośnie dra. Sadri to ewidentnie "wymiata" i stworzył niesamowite zasoby szkoleniowe. IMHO: godne polecenia są także wykłady Prof. Nitina Chandrachoodan'a - tutaj przykład dwóch części dot. implementacji (Z Vivado HLS) algorytmu FFT i jego testów w rzeczywistym układzie: Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Grudzień 31, 2021 Udostępnij Grudzień 31, 2021 @FlyingDutch Wspomniałeś o MIPI, używałeś może kamerki z FPGA? Szczególnie mnie interesuje jak działa odczyt obrazu po linuksem. Wiem że Xilinx ma sporo gotowych driverów dla swoich modułów IP, ale nie testowałem czy v4l2 działa bez problemu. Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 31, 2021 Autor tematu Udostępnij Grudzień 31, 2021 4 minuty temu, Elvis napisał: @FlyingDutch Wspomniałeś o MIPI, używałeś może kamerki z FPGA? Szczególnie mnie interesuje jak działa odczyt obrazu po linuksem. Wiem że Xilinx ma sporo gotowych driverów dla swoich modułów IP, ale nie testowałem czy v4l2 działa bez problemu. @Elvis, używałem wyłącznie bardzo prostych kamer CMOS z interfejsem równoległym (nawet bez Soft-CPU i buforem obrazu zaimplementowanym w pamięci BRAM układu FPGA) - próby są opisane na Forbocie. Niestety nie mam żadnego zestawu FPGA z nowszym interfejsem do kamery. Planowałem zakup takiej płytki (bridge video) firmy Lattice: https://www.latticesemi.com/usb3 , ale na razie nie mam na nią kasy. Chciałem użyć tej płytki Lattice do podłączenia sensowniejszej kamerki do płyki "Zybo"z SoC Zynq-7000 z W styczniu planuję zakup "Sipeed lichee tang nano 4k" z FPGA firmy Gowin i małą kamerką ze złączem MIPI. https://pt.aliexpress.com/item/1005003152104886.html?spm=a2g0s.9042311.0.0.38c2b90aOCx3I2 Niestety nie mam na razie doświadczenia z użyciem kamery w Linux'ie na układach SoC, chociaż planuję to zmienić w nowym roku 😄. Życzę wszystkim dużo udanych projektów z użyciem układów FPGA w nowym 2022 roku. Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Grudzień 31, 2021 Udostępnij Grudzień 31, 2021 Jak chodzi o latticesemi to moim zdaniem trzeba bardzo uważać z dostępnością materiałów... niektóre są świetnie udokumentowane i opisane, a do innych nie ma nic, właściwie tylko gotowe demo, nawet bez kodów źródłowych. Myślałem, że do Zybo można podłączyć kamerkę po MIPI, chyba w Zybo Z7 jest już taka opcja (https://kamami.pl/zestawy-uruchomieniowe/567064-digilent-zybo-z7-10-410-351-10.html). Ostatnio bawiłem się wyjściem i wejściem HDMI na Zybo Z7, ale nie używałem jeszcze kamery. No i wejście HDMI testowałem tylko na gołych rejestrach, a ciekaw jestem czy są gotowe drivery pod linuksa. 1 Cytuj Link do komentarza Share on other sites More sharing options...
Elvis Grudzień 31, 2021 Udostępnij Grudzień 31, 2021 Jak chodzi o nowe płytki z obsługą kamery, to ciekawie zapowiada się KV260: https://www.xilinx.com/products/som/kria/kv260-vision-starter-kit.html Xilinx sporo ostatnio inwestuje w AI (przy okazji psując poprzednie kody i projekty), a cena płytki wydaje się wręcz dumpingowa. @FlyingDutch Dziękuję za życzenia, Tobie również samych udanych projektów i ogólnie wszystkiego dobrego w 2022 roku. 1 Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 31, 2021 Autor tematu Udostępnij Grudzień 31, 2021 1 minutę temu, Elvis napisał: Myślałem, że do Zybo można podłączyć kamerkę po MIPI, chyba w Zybo Z7 jest już taka opcja (https://kamami.pl/zestawy-uruchomieniowe/567064-digilent-zybo-z7-10-410-351-10.html). Ostatnio bawiłem się wyjściem i wejściem HDMI na Zybo Z7, ale nie używałem jeszcze kamery. No i wejście HDMI testowałem tylko na gołych rejestrach, a ciekaw jestem czy są gotowe drivery pod linuksa. Niestety pierwsza wersja "Zybo", którą posiadam nie miała jeszcze wejścia do kamery - czego bardzo żałuję. Pozdrawiam Cytuj Link do komentarza Share on other sites More sharing options...
FlyingDutch Grudzień 31, 2021 Autor tematu Udostępnij Grudzień 31, 2021 (edytowany) 1 godzinę temu, Elvis napisał: Jak chodzi o nowe płytki z obsługą kamery, to ciekawie zapowiada się KV260: https://www.xilinx.com/products/som/kria/kv260-vision-starter-kit.html Xilinx sporo ostatnio inwestuje w AI (przy okazji psując poprzednie kody i projekty), a cena płytki wydaje się wręcz dumpingowa. @FlyingDutch Dziękuję za życzenia, Tobie również samych udanych projektów i ogólnie wszystkiego dobrego w 2022 roku. Dzięki za życzenia 😀. Czytałem jakiś czas temu opis tej płytki i też uważam, że ma bardzo dobrą cenę. To czego żałuję to fakt, że w mojej pracy nie są wykorzystywane układy FPGA i na pewno nie będę w stanie uzasadnić zakupu płytki KV260. W tym roku namówiłem szefa na spróbowania AI (Keras+TensforFlow). Docelowym układem był RPI-Compute Module4" z podłączoną kamerą.Była to lampa do sterylizacji wind i RPI (poza innymi czujnikami) był dodatkowym zabezpieczeniem, przed włączeniem lampy UV, gdy w windzie będzie człowiek. Nawet udało mi się osiągnąć dużą pewność wykrywania ciał ludzi (i psów, na koty zabrakło czasu), ale szkolenie modelu i utworzenie zbiorów treningowych kosztowało sporo pracy. Dużo szczęścia w 2022 roku 😃 Edytowano Grudzień 31, 2021 przez FlyingDutch Cytuj Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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!