Nauka programowania FPGA

Od jakiegoś czasu chodzi mi po głowie pomysł nauczenia się przynajmniej podstaw programowania układów FGPA, celem rozszerzenia repertuaru możliwości, które mógłbym (na razie) wykorzystać w swoich amatorskich projektach.

Widzę, że na stronie Forbot jest dostępny podstawowy kurs, wykorzystujący język VHDL i zestaw Elbert v2 (w Botlandzie do kupienia za około 200 zł).

Warto się na tym oprzeć, czy może jednak lepiej zacząć od czegoś innego? Czy w razie czego, jeśli VHDL mi nie podejdzie, korzystając z tego samego zestawu i środowiska programistycznego będę mógł korzystać z Veriloga? A może powinienem się już na początku skupić na tym drugim języku?

Łatwo jest przez przypadek uszkodzić układ programowalny, przez pomyłkę w kodzie? A przynajmniej łatwiej, niż w przypadku standardowego mikrokontrolera?

Reply to
Atlantis
Loading thread data ...

Na stronce "

formatting link
" jest sporo kursów, mają teraz zniżki, kursy za 200 euro chodzą po 10 a nawet za totalną darmochę, jest tam kilka kursów poświęconych programowaniu FPGA.

Reply to
bobofrut

W dniu 06.02.2018 o 08:53, Atlantis pisze:

Tak po prawdzie układów FPGA się nie programuje, tylko konfiguruje. Jeśli pisałeś cokolwiek w C to proponuję Veriloga. Podobna składnia, ale oczywiście inna filozofia. "Program" napisany w Verilogu wygląda jak w C ale to nie są kolejno wykonywane instrukcje tylko opis sprzętu dający w efekcie określone połączenia pomiędzy komórkami układu FPGA.

Kup sobie jakiś moduł. Proponuję (bo znam) Xylinx-a Zaczynałem i nadal się bawię modułami

formatting link
do tego potrzebny będzie "programator". Najlepiej dedykowany na USB. Można to obsłużyć przez złącze LPT i kilka oporników, ale to mordęga.

Może zacznij od prostszych układów CPLD.

Reply to
Grzegorz Kurczyk

W dniu 06.02.2018 o 08:53, Atlantis pisze:

P.S. Samych "bebechów" FPGA raczej nie uszkodzisz "programowo", ale możesz podobnie jak w uC upalić nieprawidłowo skonfigurowany port I/O

Reply to
Grzegorz Kurczyk

Podepnę się do pytania, bo też od jakiegoś czasu chcę się za to zabrać (tylko ten "jakiś czas" trwa już 7-8 lat, jak nie więcej).

- "Układy FPGA w przykładach" (kurs, 4 części)

- Wprowadzenie do języka Verilog (książka)

Polecacie któreś z tych dwóch?

Reply to
Adam Wysocki

W dniu wtorek, 6 lutego 2018 08:53:20 UTC+1 użytkownik Atlantis napisał:

============

Szkoda forsy na kursy. Po pierwsze ściągnij sobie Webpacka Xilinxa-darmówka. Zainstaluj na początek ISE. Układy możesz projektować z poziomu schematu i/lub z wykorzystaniem VHDL lub Verilog. Ja osobiście wolę VHDL. Dużo nauczysz się samodzielnie z Helpa. Ponadto jest od cholery kursów w sieci. Układu FPGA wewnątrz logiki nie urąbiesz, ale jeżeli zdefiniujesz sobie IO jako output i przygrzejesz mu outputem z innego układu, to teoretycznie możesz układ wysadzić.

Reply to
stchebel

Zacznij od CPLD. W praktyce układy CPLD beda miały znacznie bardziej przyjazne napięcia i obudowy. To na poczatek dość istotne.

Wsysztko zalezy czy producent FPGA/CPLD udostępnia syntezę w danym języku.

Verilog jest językiem z masa bledów projektowych. VHDL zaś jest przeraźliwie verbose i opóźniony o dziesięciolecia. Naucz się obu - wiele współczesnych projektów to mixed language, czasami dokładając również SystemC.

Nie jest łatwo. Ale układy FPGA poganiane sa napięciami niskimi, np.

1.8V. Ciezko to z czymkolwiek połaczyć. Dlatego zacznij od CPLD. Płytki z CPLD kupisz za grosze u chińczyków. Nie będzie Ci szkoda jak taką uszkodzisz, często sam scalak CPLD to jakieś grosze. Zrobisz na nim wiele rzeczy które zrobisz na FPGA. Wada tylko taka ze CPLD mają znacznie mniej logiki do programowania i Z80 sobie nie zaimplementujesz. Ale może na początek nie warto od razu kupować Zynq żeby migać diodą.
Reply to
Sebastian Biały

W dniu wtorek, 6 lutego 2018 21:15:10 UTC+1 użytkownik Sebastian Biały napisał:

Przeciwnie. Naukę lepiej zacząć od czegoś o większych zasobach. Obudowy i napięcia bardziej przyjazne? Nie żartuj...

Zarówno X i A udostępniają syntezę dla obu tych języków.

Fakt, lepiej znać oba języki. Verilog znam "po łebkach", więc się nie wypowiadam, natomiast co do VHDL Twoja opinia jest kompletnie nieuzasadniona. Delikatnie mówiąc..

Nieprawda!! Napięciem 1.8V zasilany jest rdzeń logiczny, natomiast IO zasilasz osobnym napięciem VCCIO 2.5V lub 3.3V i po kłopocie.

Jak kupi EVB z FPGA, to niby dlaczego miałby to uszkodzić? Jasne, da się, ale to już chyba trzeba to robić z premedytacją, albo wywrócić niechcący filiżankę kawy na płytkę. A ceny są bardzo przyzwoite. Takie niezbyt skomplikowane EVB idzie kupić za mniej niż 100$

Reply to
stchebel

Składałem już konstrukcja zawierające elementy w obudowach QFN/MLF albo LQFP, często na samodzielnie wytrawionych płytkach. Tak więc obudowy z małymi pinami nie są mi specjalnie straszne. Jeśli natomiast chodzi o napięcia, to na razie chciałem jedynie rozpoznać temat, nawet w ramach jednej płytki prototypowej, bez interfejsowania tego z innymi elementami. Jeśli nauczę się podstaw VHDL/Veriloga na FPGA, to potem będę mógł też tę wiedzę wykorzystać z CPLD w jakimś własnym projekcie, czy też używa się ich zupełnie inaczej?

Myślę, że na początek celowałbym w coś o wiele prostszego - w rodzaju sprzętowego kontrolera wyświetlaczy nixie, sterowanego po SPI. Mógłbyś polecić jakiś układ/rodzinę/płytkę na początek?

Reply to
Atlantis

Jak się mają do tego SPLD (PAL-e i GAL-e)? To już zamknięta historia, bo zostały całkowicie wyparte przez CPLD?

Czy wiedzę zdobytą przy nauce konfigurowania CPLD można potem spokojnie wykorzystać przy FPGA?

Reply to
Adam Wysocki

W pełni popieram, okres nauki to nie czas na pałowanie się z ograniczeniami sprzętowymi platformy. Na tym etapie im mniej problemów, tym lepiej. I potem też: ile kosztuje godzina Twojego czasu, a ile zaoszczędzisz na większym układzie? Jeśli nie klepiesz płytki w milionach, to Ci się NRE nie zwróci.

Bo geniusz dał na płytce przełącznik, ale nie zabezpieczył go szeregowym opornikiem, a początkujący ustawił sobie dany pin jako wyjście. Przykład z praktyki własnej. :)

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

Hm ... mniejsza latwiej ogarnac. Ale CPLD to bardzo ograniczone FPGA, wiec tez bym nie polecal.

To jakies strasznie slaby uklad. IMO - powinien przezyc, prad wyjsciowy jest ograniczony :-) No ale moje doswiadczenie siega TTL a nie ukladow 10nm :-)

J.

Reply to
J.F.

Nie zgodzę się, bo ogarnianie to nie jest sytuacja zerojedynkowa. Na FPGA możesz zrobić to samo, co na CPLD, a jeśli jakiegoś zasobu nie używasz, bo go nie rozumiesz, albo nawet nie wiesz o jego istnieniu, to przecież nie przekreśla pozostałej części zdobytej wiedzy. Będziesz miał się czego douczyć, a na CPLD nie. :-)

CPLD jest świetne do pozbycia się z płytki jakiejś drobnej logiki sklejającej układ do kupy, ale jeśli projektujesz go od zera na FPGA, to tej logiki i tak nigdy by tam nie było. IMHO CPLD nie nadają się do zastosowań amatorskich z dokładnie tego powodu, a nie trudności/obudowy/kosztu. Można od razu walnąć z nieco grubszej rury i zapomnieć o tego typu problemach.

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

Hm, skoro amator celuje w uP z pewna iloscia logiki, to ta ilosc bedzie niewielka, choc moze niekoniecznie az taka drobna. Zmiesci sie w FPGA, i sa szanse, ze sie zmiesci w CPLD ... wiec mozna wybrac tansze/mniejsze/latwiejsze :-)

Wybierac duze FPGA, zeby w srodku zrobic troche logiki i uP, to mi sie wydaje nieekonomiczne :-) Ale ceny spadaja :-)

uP z niewielkim dodatkowym FPGA na pokladzie bylby swietny. Tylko to narzekanie, ze BGA sie trudno lutuje :-)

Dodaj do tego czas inicjalizacji - CPLD zazwyczaj dziala od razu, FPGA w zaleznosci od wersji potrafi wymagac pewnego czasu na skonfigurowanie.

J.

Reply to
J.F.

Powyższych pozycji nie znam, ale mam radę: odpuść sobie naukę Veriloga na etapie wstępnym. W ISE/Quartusie są graficzne edytory schematów, poklikaj sobie i zobacz, jak Ci to leży. Naucz się sprzętu i myślenia w nowych kategoriach. Dopiero z tym zabieraj się za modelowanie na poziomie tekstowym. W drugą stronę to IMHO strata czasu: nauczysz się pisać, ale nie będziesz rozumiał, co piszesz.

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

W tanich FPGA nie masz znaczącej ilosci pamięci na chipie i się układ komplikuje o dodatkowe chipy, co zjada powierzchnię płytki i piny IO.

Dokładnie z tych powodów najbardziej podobają mi się hybrydy, np. PSoC5 i Zynq. PSoC jest w QFN i TQFP, więc do polutowania w domu. Jest też i takie rozwiązanie:

formatting link

Są FPGA z flashem w środku, są też konfigurowalne antifuse'ami. Ale to nie problem w zastosowaniach amatorskich.

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

W tanich FPGA nie masz znaczącej ilosci pamięci na chipie i się układ komplikuje o dodatkowe chipy, co zjada powierzchnię płytki i piny IO.

Dokładnie z tych powodów najbardziej podobają mi się hybrydy, np. PSoC5 i Zynq. PSoC jest w QFN i TQFP, więc do polutowania w domu. Jest też i takie rozwiązanie:

formatting link

Są FPGA z flashem w środku, są też konfigurowalne antifuse'ami. Ale to nie problem w zastosowaniach amatorskich.

Pozdrawiam, Piotr

Reply to
Piotr Wyderski

W dniu środa, 7 lutego 2018 15:37:28 UTC+1 użytkownik J.F. napisał:

W rozbudowanych projektach, gdzie FPGA jest wykorzystywane do kontrolowania różnych niezależnych układów np. kontroler USB,DDR RAM,Przetworniki AD/DA i cholera wie co jeszcze, uważam schemat za najlepsze narzędzie. Jeden rzut oka i wiadomo co jest co i jaki jest przepływ logiczny obrabianego sygnału. Jasne, że to samo da się zrobić w VHDL'u pisząc strukturalnie, ale nikt mi nie wmówi że taki projekt będzie przejrzysty. A znalezienie ewentualnego błędu zaczyna urastać do naprawdę dużego problemu. Strukturalny VHDL wykorzystuję jedynie w przypadku powielenia jakiegoś bloku funkcjonalnego na n-kanałów. Wtedy istotnie łatwiej i szybciej jest to zrobić w paru linijkach kodu, niż smarować na schemacie np. 64 klocki i łączyć je drutami. Ewentualne rozszerzenie liczby kanałów na 128, to w VHDL'u kwestia kilku sekund roboty. Natomiast VHDL jest znakomitym narzędziem do projektowania behawioralnego. Synteza stanów maszynowych na piechotę na bramki i przerzutniki, to nie tylko strata czasu, ale wręcz głupota.

Reply to
stchebel

Użytkownik stchebel napisał w wiadomości W dniu środa, 7 lutego 2018 15:37:28 UTC+1 użytkownik J.F. napisał:

Hm, w czasach PLD to mi prosciej bylo zapisac rownania logiczne niz sie zastanawiac, co te bramki realizuja :-) Choc przyznaje, ze rejestry/latche byly nieczyste w zapisie.

Kontroler DDR RAM ... a tego sie nie robi w FPGA ? I jak to narysowac :-)

J.

Reply to
J.F.

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.