Skocz do zawartości

Kurs FPGA Lattice i języka Verilog


leonow32

Pomocna odpowiedź

Chciałbym zaprosić wszystkich zainteresowanych do mojego kursu FPGA Lattice w języku Verilog. W kursie wykorzystujemy FPGA typu MachXO2 z uwagi na jego niską cenę, obudowę łatwą do lutowania i duży potencjał w wykorzystaniu na potrzeby hobbystycznych projektów. Kurs jest publikowany w Elektronice Praktycznej, a także dostępny jest na stronie ep.com.pl. Wszystkie odcinki starsze niż 3 miesiące dostępne są bezpłatnie. Wciąż piszę kolejne odcinki i co miesiąc będzie pojawiać się kolejny.

Będę wdzięczny za wszystkie uwagi i sugestie, a także propozycje tematów do kolejnych odcinków kursu.

Repozytorium modułów używanych w kursie

Tutaj znajdują się różne moduły wraz z opisem oraz z testbenchami. Kurs jest zorganizowany w taki sposób, że moduły opracowane w poprzednich odcinkach kursu (jak np. sterownik wyświetlacza) są wykorzystywane później w bardziej zaawansowanych odcinkach. Aby ułatwić dostęp do tych modułów wszystko jest opublikowane również na GitHubie.

Płytki rozwojowe do kursu FPGA Lattice

image.thumb.png.cc2970a52837d0d796af599d43286794.png

Niedrogi programator JTAG

image.thumb.png.52f4e4d699002c8d24d1222847101b2f.png

Wszystkie odcinki kursu:

  1. EP 2022/11 - Wstęp
  2. EP 2022/12 - Pierwszy projekt
  3. EP 2023/01 - Podstawy języka Verilog
  4. EP 2023/02 - Generator, dzielnik i licznik
  5. EP 2023/03 - IP Express i inne gotowce
  6. EP 2023/04 - Parametry i ćwiczenia
  7. EP 2023/05 - Analizator logiczny Reveal
  8. EP 2023/06 - Symulacja w EDA Playground
  9. EP 2023/07 - Wyświetlacz LED multipleksowany
  10. EP 2023/08 - Klawiatura matrycowa i maszyna stanów
  11. EP 2023/09 - Statyczna analiza czasowa i maksymalna częstotliwość zegara
  12. EP 2023/10 - Symulacja w Icarus Verilog i GTK Wave
  13. EP 2023/11 - Wyświetlacz LCD multipleksowany
  14. EP 2023/12 - Enkoder obrotowy
  15. EP 2024/01 - Pamięć EBR
  16. EP 2024/02 - Generowanie dźwięków
  17. EP 2024/03 - Odtwarzacz melodii
  18. EP 2024/04 - Nadajnik UART
  19. EP 2024/05 - Odbiornik UART
  20. EP 2024/06 - 14-segmentowy wyświetlacz LCD
  21. EP 2024/07 - Terminal UART z 14-segmentowym wyświetlaczem LCD
  22. EP 2024/08 - Sekwencyjny algorytm Double Dabble
  23. EP 2024/09 - Kombinacyjny algorytm Double Dabble

Będę wdzięczny za wszystkie uwagi i sugestie, a także propozycje tematów do kolejnych odcinków kursu.

  • Lubię! 2
Link do komentarza
Share on other sites

Cześć,

sam pomysł kursu na plus. Szczególnie podobają mi się części:

 Symulacja w EDA Playground

Analizator logiczny Reveal

 Statyczna analiza czasowa i maksymalna częstotliwość zegara

 Symulacja w Icarus Verilog i GTK Wave

, z powodu, że te tematy nie zawsze są poruszane w podstawowych kursach, a są istotne przy projektowaniu układów w FPGA.

Z drugiej strony na minus: układ FPGA LCMXO2-256HC ma tylko 256LEs - to jest naprawdę mało nawet jak na bardzo podstawowy zestaw. Dla prównania zestaw "Elbert v.2" z firmy Numato uzywany w kursie VHDL Forbota ma około  1584 LE's   . patrz link:

https://botland.com.pl/zestawy-i-kursy-forbot/8596-elbert-v2-spartan-3a-plytka-rozwojowa-fpga-do-kursu-forbot-5903351245142.html?cd=18298825138&ad=&kd=&gad_source=1&gclid=CjwKCAiAnL-sBhBnEiwAJRGigm_uT-hwd076shFGGp9bQSiT8o5DwlKBJbafm-vlm-mgzSd9sI24cBoCiVQQAvD_BwE

To była moja pierwsza płytka FPGA i mam do niej duży sentyment, ale szybko okazało się, że taka ilość zasobów uniemożliwia implementację trochę bardziej skomplikowanych układów. Także brak jakiejkolwiek zewnętrznej pamięci uniemożliwia budowę bardziej zawansowanych układów np. jakiegoś prostego frame-buffera dla układów wykorzysujących np. wyjście VGA.  No i potrzeba zewnętrznego programatora JTAG podnosi cenę całego zestawu.

Czy te dwa układy: zestaw FPGA i programator JTAG można gdzieś kupić? Jeśli tak, to jakie są przyblizone ceny?

Ja też zaprojektowałem podstawowy zestaw FPGA na małym układzie FPGA firmy "Gowin Semiconductors" - GW1N-LV9LQ144 (w obudowie LQFP144). Jest to układ zawierający 8640 LUT i 6480 Flip_Flop. Ma też sporo peryferiów ułatwiających uruchamianie "programów" na FPGA:

1) 8 LED

2) DIP-Switch 8 pozycji

3) Push buttons 5

4) wyjście VGA na DSub15

5) Wyjście audio

6) Czytnik kart uSD (SPI)

Zestaw jest wyposażony w układ USB 2 JTAG (układ będzie można programować przez programator JTAG oparty na układzie scalonym FT2232, oraz przez header JTAG). Pamieć RAM (PSRAM 8MB SPI) i zewnętrzny SPI Flash. Kolega @H1M4W4R1 (z Forbota) zaprojektował najnowszą wersję płytki PCB dla tego zestawu o wymiarach 10x10 cm. Sygnały o dużych prędkościach są zaprojektowane z kontrolą długości ścieżek, także wyprowadzone na złącza w sygnały różnicowe wyprowadzone na złącza są projektowane z kontrolą długości ścieżek. Ponieważ każdy z czterech banków pinów można zasilać także napięciem 2.5V można eksperymentować z sygnałami LVDS na tej płytce. Bez problemu można na płytce eksperymentować z IP Cores dla soft-cpu np. z popularnymi rdzeniami RISC_V. Testowałem na tej płytce kilka projektów soft-cpu:

https://github.com/YosysHQ/picorv32/tree/master/picosoc

https://github.com/stnolting/neorv32/tree/main

i działają one na tej płytce bez błądów. Środowisko "Gowin EDA" do syntezy jest darmowe.

Tutaj link do projektu płytki:

Co sądzisz o takim zestawie uruchomieniowym?

Podsumowując kurs na duży plus, co do zestawu uruchomieniowego, to według mnie bardzo mała ilość zasobów FPGA jest na minus.

Pozdrawim

 

Link do komentarza
Share on other sites

Cześć @Elvis,

ostatnio rzadko Cię widać 😃 . A czy Ty  móglbyś napisać kilka słow na temat jak oceniasz ten zestaw FPGA na układzie firmy Gowin (oczywiście tylko na podstawie podanych informacji). Wyszedł dość tanio bo FPGA (25 sztuk udało mi się nabyć w cenie 5 Euro za sztukę). No i nie potrzebuje drogiego zewnętrznego progarmatora JTAG firmy Gowin.

BTW: czy używasz może jeszcze w pracy Xilinx Vitis - chodzi mi głownie o pisanie akceleratorów obliczeń w Vits?

Pozdrawiam

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

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

3 godziny temu, FlyingDutch napisał:

Z drugiej strony na minus: układ FPGA LCMXO2-256HC ma tylko 256LEs - to jest naprawdę mało nawet jak na bardzo podstawowy zestaw.

Są dwie wersje płytki testowej. 256 LUTów ma płytka mniejsza, a większa ma 1200. Chciałem też drobić trzecią płytkę z 7000, ale póki co 1200 wystarczyło na wszystkie ćwiczenia.

image.thumb.png.532becd25b78af3344cc64a5b4553671.png

 

3 godziny temu, FlyingDutch napisał:

Czy te dwa układy: zestaw FPGA i programator JTAG można gdzieś kupić? Jeśli tak, to jakie są przyblizone ceny?

Można to kupić w sklepie AVT, ale wprowadzili do sprzedaży tylko gołe płytki bez elementów i trzeba je sobie kupić osobno. Trochę lipa, że nie wyprodukowali gotowych zestawów.

3 godziny temu, FlyingDutch napisał:

Co sądzisz o takim zestawie uruchomieniowym?

Obserwuję FPGA Gowin od pewnego czasu i cały czas zastanawiam się czy warto się z nimi zapoznać - czy robiłeś na nich kiedyś jakiś projekt komercyjny? Jak one się spisują w praktyce?

 

2 godziny temu, Elvis napisał:

Ja tylko otworzyłem część o klawiaturze matrycowej i mam wrażenie, że ten kurs powiela te same błędy co inne

Jakie konkretnie błędy?

  • Lubię! 1
Link do komentarza
Share on other sites

Przed chwilą, leonow32 napisał:

Są dwie wersje płytki testowej. 256 LUTów ma płytka mniejsza, a większa ma 1200. Chciałem też drobić trzecią płytkę z 7000, ale póki co 1200 wystarczyło na wszystkie ćwiczenia.

1 minutę temu, leonow32 napisał:

Można to kupić w sklepie AVT, ale wprowadzili do sprzedaży tylko gołe płytki bez elementów i trzeba je sobie kupić osobno. Trochę lipa, że nie wyprodukowali gotowych zestawów.

Zestawy musiałyby przejść testy EMI, a te na prawie na 100% uwalą patrząc po projekcie płytki 😉 Sprzedając zestawy AVT narażałoby się na poważne problemy prawne (w tym konieczność odkupienia wszystkich sprzedanych zestawów + dość sporą karę finansową, która pewnie przekroczyłaby kwotę zarobioną na tym sprzęcie). Sprzedaż elektroniki nie jest taka prosta jak się wydaje.

  • Lubię! 1
Link do komentarza
Share on other sites

7 minut temu, leonow32 napisał:

Są dwie wersje płytki testowej. 256 LUTów ma płytka mniejsza, a większa ma 1200. Chciałem też drobić trzecią płytkę z 7000, ale póki co 1200 wystarczyło na wszystkie ćwiczenia.

Obserwuję FPGA Gowin od pewnego czasu i cały czas zastanawiam się czy warto się z nimi zapoznać - czy robiłeś na nich kiedyś jakiś projekt komercyjny? Jak one się spisują w praktyce?

Hej,

tak robiłem projekt komercyjny na FPGA Gowin (rynek morski - systemy instalowane na statkach). Właściwie był to jeden projekt z kilkoma podwersjami o rożnej wilekości. Nie za bardzo mogę pisać o sczegółach. Nie było w tym projekcie jakiegoś skomplikowanego przetwarzania sygnałów - system anlizował dane z kilkudziesięciu czujników analogowych i na ich podstawie wypracowywał odpowiedź, oraz robił wizualizację. Ogólnie mogę powiedzeć, że te systemy oparte na FPGA Gowin się sprawdziły - nie mamy żadnych informacji od klientów dotyczących błędnego funkcjonowania.

Według mnie portfolio produktów FPGA i ostanio SoC firmy Gowin jest bardzo interesujące. Nowa rodzina FPGA "Aurora V " przedstawia się bardzo interesująco:

https://www.gowinsemi.com/en/product/detail/60/

Jeśli chodzi o informację, które chciałbym znaleźć w kursach dotyczyłyby budowy soft-procesorów (niekonicecznie na rdzeniu RISC-V). Ostatnio skończyłem taki kurs z "udemy":

"FPGA Embedded Design, Part 4 - Microprocessor Design"

https://www.udemy.com/course/fpga-embedded-design-cpu/

, gdzie był przedstawiony proces projektowania prostego soft-cpu w języku Verilog. Poczynając od zaprojektowania ISA (listy rozkazów) poprzez implementację w Verilogu i symulację oraz testy na kilku platformach sprzętowych FPGA. Nie wiem jekie masz zdanie ogólnie o kursach z "udemy", ale mnie ten kurs się naprawdę spodobał.

Dlatego w tym kontekście soft-cpu mówiłem o wiekszej liczbie zasobów FPGA, bo kupowanie zestawu FPGA tylko do przejścia podstawowego kursu to trochę słaba inwestcja.

BTW: ja robiłem chyba trzy projekty z układami FPGA Lattice, ale korzystałem z oprogramowania open-source do syntezy i symulacji  Yosys+nexPrn (taki był wymóg projektu). Ogólnie te układy zrobiły na mnie dobre wrażenie.

Pozdrawiam

Link do komentarza
Share on other sites

W tych Gowinach podoba mi się, że oferują całkiem sporo zasobów i są dostępne w obudowach QFN. Zachodni producenci chcieliby tylko BGA używać, a to często powoduje konieczność używania laminatu wielowarstwowego i ze złoceniem. Z rozwiązań Lattice największy FPGA jaki jest QFN to Crosslink NX i ma 40 LUTów.

1 godzinę temu, FlyingDutch napisał:

BTW: ja robiłem chyba trzy projekty z układami FPGA Lattice, ale korzystałem z oprogramowania open-source do syntezy i symulacji  Yosys+nexPrn (taki był wymóg projektu). Ogólnie te układy zrobiły na mnie dobre wrażenie.

Dlaczego chcieli Yosys? Gdyby oficjalny tool był płatny albo miał jakieś ograniczenia to jeszcze rozumiem. Czy Yosys obsługuje (w sensie dobrze obsługuje) coś poza ICE40?

 

 

  • Lubię! 1
Link do komentarza
Share on other sites

@FlyingDutch nadal zajmuję się układami Xilinx-a, więc małe układy Gowina są dla mnie nieco zagadkowe - na pewno ciekawe do nauki, ale do realnych zastosowań wydają mi się nieco zbyt ograniczone. Oczywiście można uczyć się na nich podstaw Veriloga/VHDLa, ale zastosowania z którymi mam do czynienia to raczej implementacja istniejących bloków IP, a do tego 9k LUTs to raczej niewiele.

Więc jak dla mnie własne płytki z układami Gowin są super, można na nich zaimplementować własny moduł RTL oraz prosty procesor RISC-V. Ale do implementacji kompletnego projektu ilość zasobów może być nieco ograniczona.

@leonow32 nie znam się dość dobrze na układach FPGA żeby oceniać Twój kurs, ale takim prostym testem z mojej strony jest sprawdzenie jak obsługiwane są piny wejściowe, np. od przycisków. Większość kursów po prostu odczytuje ich wartość, tylko nieliczne wspominają o stanach metastabilnych i związanych z tym problemach.

  • Lubię! 1
Link do komentarza
Share on other sites

(edytowany)
22 minuty temu, Elvis napisał:

@leonow32 nie znam się dość dobrze na układach FPGA żeby oceniać Twój kurs, ale takim prostym testem z mojej strony jest sprawdzenie jak obsługiwane są piny wejściowe, np. od przycisków. Większość kursów po prostu odczytuje ich wartość, tylko nieliczne wspominają o stanach metastabilnych i związanych z tym problemach.

Problem metastabilności i synchronizacji pinów wejściowych został opisany dokładnie w 11 odcinku kursu. Klawiatura matrycowa nie ma żadnych synchronizatorów wejść, bo nie potrzebuje. Moduł odczytuje wejścia cyklicznie co jakiś czas (2ms, konfigurowalne parametrem), a przycisk jest uważany za wciśnięty, jeżeli jego wejście będzie w stanie wysokim przez dwa kolejne cykle odczytywania. W dalszych częściach kursu moduły do enkodera obrotowego i odbiornika UART mają synchronizatory w postaci dwóch przerzutników D połączonych szeregowo.

Edytowano przez leonow32
  • Lubię! 2
Link do komentarza
Share on other sites

@leonow32 Bardzo przepraszam za zbyt szybką ocenę. Nadal nie jestem pewien czy klawiatura matrycowa nie potrzebuje synchronizatora, ale jak napisałem wcześniej, nie jestem w tym temacie ekspertem. W każdym razie skoro temat stanów metastabilnych jest poruszony w kolejnych częściach, jeszcze raz bardzo przepraszam. Po prostu wiele kursów dostępnych w sieci ignoruje ten temat i pokazuje błędne przykłady. Ale skoro Twój kurs ustrzegł się tego błędu to przepraszam i bardzo proszę o zapomnienie mojego wcześniejszego wpisu.

Edytowano przez Elvis
  • Lubię! 2
Link do komentarza
Share on other sites

11 godzin temu, leonow32 napisał:

Dlaczego chcieli Yosys? Gdyby oficjalny tool był płatny albo miał jakieś ograniczenia to jeszcze rozumiem. Czy Yosys obsługuje (w sensie dobrze obsługuje) coś poza ICE40?

 

 

Firma zajmowała się rozwojem systemów open-source stąd ten wybór narzędzi.. Tak obsługuje rodzinę FPGA Lattice EC5, Gowina, nawet układy Xilinx'a ale są tam pewne ograniczenia.

Pozdrawiam

Link do komentarza
Share on other sites

@leonow32 Dzięki za link do github-a. W wolnej chwili chętnie przeczytam przykłady. Jak chodzi o EP to nawet zastanawiałem się nad wykupieniem prenumeraty, ale po przejrzeniu ostatniego numeru stwierdziłem, że dla samego kursu FPGA to jednak nie warto. A reszta artykułów zupełnie mnie nie przekonała.

Link do komentarza
Share on other sites

Zapraszam na 13 odcinek kursu na temat wyświetlaczy LCD multipleksowanych. Działają one zupełnie inaczej niż klasyczne wyświetlacze LED.

Moduły wykorzystywane w tym odcinku kursu:

W papierowym wydaniu EP pojawił się odcinek 16 na temat pamięci generowania melodyjek na podstawie nut zapisanych w pamięci EBR.

image.thumb.png.519ee9709c90116e0fcf71effef21f43.png

  • Lubię! 2
Link do komentarza
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.