FPGA – Poradnik #0

Cześć

Jakiś czas temu natknąłem się na temat układów programowalnych a dokładniej FPGA, bardzo mnie on zaciekawił postanowiłem
się więc nim zainteresować trochę bardziej.
Mam zamiar w tej serii artykułów opisywać wam moje poczynania w tej dziedzinie oraz będę się starał wytłumaczyć wam większość aspektów związanych z tymi układami.

Wiele książek oraz artykułów dotyczących układów programowalnych rozwodzi się nad ich budową oraz działaniem od strony czysto teoretycznej.
Moim zdaniem dla osób zaczynających „zabawę” z tymi układami nie jest to na początku potrzebne, może to tylko zniechęcić. Dlatego ja w tym poradniku nie będę Was „dręczył” teorią nie potrzebną na początku przygody. Będę się starał przedstawiać ten temat w możliwie najprostszy sposób. W tym kursie będziemy „wyznawać zasadę” od praktyki do teorii.

 

Zacznijmy od tego czym w ogóle jest FPGA
12=5-min

FPGA to dosłownie bezpośrednio programowalna macierz bramek. FPGA jest rodzajem układów programowalnych.
Aby zrozumieć czym jest układ programowalny oraz zrozumieć dlaczego jest on „lepszy” od mikrokontrolerów lub zwykłych procesorów musisz znać zasadę działania procesora.

Procesor to układ wykonujący instrukcję według określonej kolejności. Co oznacza, że procesor może wykonywać tylko jedną operację* w tym samym czasie. Mogło Ci się wydawać, że procesor wykonuje wiele operacji w tym samym momencie jednak w praktyce tak nie jest. Pozorna wielozadaniowość procesora wynika z tego, że wykonuje on operacje w ułamkach sekund. Jednak czasem nawet to nie wystarcza. Układ programowalny może wykonywać wiele więcej operacji w jednym momencie ponieważ działa równolegle czyli nie musi „czekać” aż poprzednie instrukcje się wykonują tyko wykonuje instrukcje niezależnie od siebie.

*Oczywiście powstają procesory wielowątkowe umożliwiające wykonanie kilku a nawet kilkunastu operacji w tym samym czasie, jednak w chwili obecnej to rozwiązanie nadal nie dorównuje szybkością układom programowalnym, i prawdopodobnie jeszcze długo się to nie zmieni.

 

Jak się programuje te układy?
Tu jest haczyk, układów programowalnych się nie programuje, układy programowalne się konfiguruje.
Układy te konfigurujemy w językach opisu sprzętu dwa najpopularniejsze to Verilog
12-2-min
oraz VHDL
12-1-min

Więcej o konfiguracji tych układów dowiecie się w następnych częściach poradnika.

 

Ale czym taki układ rożni się od zwykłych mikrokontrolerów?

12-4-min

Tworzenie prostych rozwiązań w FPGA zajmuje więcej czasu niż napisanie prostego programu dla mikrokontrolera.
Jednak w FPGA jest o wiele bardziej wydajne niż mikrokontroler. Jest także bardzo elastyczne oraz podatne na różne modyfikacje.

Zalety układów
Głównymi zaletami układów programowalnych są ogromne możliwości płynące z prędkości działania przydatna przypadku na przykład obliczeń DSP. Kolejną zaletą jest mały pobór prądu.

Wady układów
Dla początkujących język opisu sprzętu może wydawać się bardzo skomplikowany. Kolejnym minusem układów jest cena. Niektóre z niech są bardzo drogie. Jednak „dobry” zestaw startowy możemy kupić już za jakieś ~600zł. Są także takie „zestawy” za 200zł ale o tym więcej w następnej części kursu.

 

Do czego używamy układów programowalnych?
Układy te sprawdzą się wszędzie tam, gdzie potrzebne jest niezwykle szybkie wykonanie jakiegoś algorytmu.
Używane są w cyfrowym przetwarzaniu sygnałów, lotnictwie i wojsku, podczas prototypowania układów ASIC oraz w wielu innych dziedzinach.
Ciekawostką jest, że układy FPGA firmy Xilinx zostały użyte podczas misji na Marsa zakończonej lądowaniem łazików Spirit i Opportunit.
12-3-min

W późniejszych częściach tego kursu zajmiemy się tworzeniem różnych praktycznych projektów takich jak prosty oscyloskop

robot wykrywający oraz podążający za obiektem i wiele, wiele innych 😀

 

Cel tej serii poradników
W polskim internecie jest bardzo mało materiałów dotyczących FPGA, celem tej serii poradników jest przybliżenie wam tematu układów programowalnych, pomoc w zrozumieniu ich działania oraz nauka konfiguracji tych układów.

W następnej części kursu zajmiemy się tematem wyboru języka, środowiska oraz zestawu startowego.

Jeżeli masz jakieś pytania dotyczące tematyki układów programowalnych pisz w komentarzach 😉

Wersja wideo:

Następna część kursu