Przegląd otwartych narzędzi dla układów FPGA

Przegląd otwartych narzędzi dla układów FPGA
Pobierz PDF Download icon

Otwarte narzędzia, służące do tworzenia oprogramowania dla mikrokontrolerów jednoukładowych, są powszechnie stosowane w projektach komercyjnych od dłuższego czasu. Obecnie jakość kodu generowanego przez kompilatory dla architektury ARM jest na tyle duża, że producentom środowisk programistycznych nie opłaca się tworzyć autorskich rozwiązań. Coraz powszechniejszą praktyką wśród producentów narzędzi komercyjnych jest tworzenie środowiska IDE wraz z odpowiednimi kreatorami, które wewnętrznie wykorzystują kompilator GCC, pozwalając, za pomocą kilku ruchów myszką, wygenerować szkielet projektu dla wybranego mikrokontrolera. Zupełnie inaczej wygląda sytuacja w przypadku narzędzi, służących do projektowania urządzeń, opartych na układach FPGA.

Spis treści

Instalacja oprogramowania

Z uwagi na najlepsze wsparcie dla otwartych narzędzi, skupimy się na przygotowaniu oprogramowania, służącego do współpracy z układami iCE40 firmy Lattice. Są to stosunkowo nieskomplikowane oraz tanie układy, zawierające od 384 do 7680 komórek LUT, zawierają zintegrowaną pamięć BlockRAM o wielkości do 128 kilobitów, oraz pętlę PLL. Zawierają również zintegrowane kontrolery I2C oraz SPI, które mogą być wykorzystywane do konfiguracji układu za pomocą zewnętrznej pamięci czy mikrokontrolera. Istotną cechą z amatorskiego punktu widzenia jest to, że występują również w łatwych do montażu, w warunkach amatorskich, obudowach TQFP. Instalację środowiska opiszemy na przykładzie systemów operacyjnych Linux oraz OSX. W przypadku Windows z użyciem środowiska MINGW, proces instalacji będzie wyglądał podobnie.

Ubuntu Linux

Proces instalacji rozpoczynamy od kompilacji pakietu IceStorm. W tym celu należy doinstalować zależności za pomocą komendy apt:

sudo apt install build-essential clang bison flex libreadline-dev gawk tcl-dev libffi-dev git mercurial graphviz xdot pkg-config python python3 libftdi-dev qt5-default python3-dev libboost-all-dev cmake libeigen3-dev

W kolejnym kroku należy pobrać z repozytorium git kod źródłowy pakietu IceStorm, skompilować go, a następnie zainstalować w systemie, co możemy zrealizować za pomocą sekwencji następujących komend:

git clone https://github.com/cliffordwolf/icestorm.git icestorm
cd icestorm
make -j$(nproc)
sudo make install

Poprawność instalacji pakietu możemy potwierdzić, wpisując polecenie: iceprog help. Program zgłosi się listą dostępnych opcji.

Kolejnym narzędziem, które będziemy musieli zainstalować, to jest pakiet nextPNR. Do prawidłowej kompilacji potrzebna jest biblioteka QT5, którą możemy doinstalować za pomocą polecenia:

sudo apt install qt5-default

Po instalacji potrzebnych bibliotek możemy przystąpić do kompilacji oraz instalacji programu za pomocą następujących poleceń:

git clone https://github.com/YosysHQ/nextpnr nextpnr
cd nextpnr
cmake -DARCH=ice40 -DCMAKE_INSTALL_PREFIX=/usr/local .
make -j$(nproc)
sudo make install

Weryfikację poprawności instalacji możemy przeprowadzić, wydając komendę: nexpnrice40gui, co spowoduje wyświetlenie okna programu, służącego do manualnego trasowania.

Do syntezy projektu brakuje nam jeszcze programu Yosys. Procedura instalacji oraz kompilacji przebiega podobnie jak w przypadku pozostałych projektów:

git clone https://github.com/cliffordwolf/yosys.git yosys
cd yosys
make -j$(nproc)
sudo make install

Mamy już wszystkie narzędzia niezbędne do syntezy projektu w prawdziwym układzie. Potrzebować będziemy jeszcze narzędzi, służących do symulacji oraz wizualizacji – „Icarus Verilog” oraz „GTKWave”. Ponieważ Ubuntu dysponuje tymi pakietami w managerze pakietów, wystarczy je doinstalować za pomocą polecenia:

sudo apt install iverilog gtkwave

Po wykonaniu powyższych czynności mamy już kompletne środowisko, które możemy wykorzystać do projektowania sprzętu, z wykorzystaniem układów FPGA rodziny iCE40.

OS-X

Instalacja oprogramowania dla systemu Mac OSX, dzięki managerowi pakietów brew oraz przygotowanym pakietom, jest zdecydowanie prostsza od instalacji w systemie Linux. Pierwszą czynnością, jeśli nie korzystaliśmy nigdy wcześniej z managera pakietów brew, jest jego instalacja według instrukcji, zamieszczonej na stronie domowej projektu: https://brew.sh.

Kiedy zainstalowaliśmy manager brew, możemy przystąpić do właściwej instalacji potrzebnych narzędzi, rozpoczynając od dodania odpowiedniego TAP-u:

brew tap lucckb/openfpga

W kolejnym kroku należy doinstalować potrzebne oprogramowanie, wpisując następujące polecenia:

brew install yosys
brew install icestorm
brew install nextpnr --without-arch-ecp5
brew install icarus-verilog
brew cask install gtkwave

Po wykonaniu powyższych czynności środowisko potrzebne do projektowania układów FPGA w systemie OSX jest gotowe do pracy.

Artykuł ukazał się w
Elektronika Praktyczna
wrzesień 2020
DO POBRANIA
Pobierz PDF Download icon

Elektronika Praktyczna Plus lipiec - grudzień 2012

Elektronika Praktyczna Plus

Monograficzne wydania specjalne

Elektronik październik 2021

Elektronik

Magazyn elektroniki profesjonalnej

Raspberry Pi 2015

Raspberry Pi

Wykorzystaj wszystkie możliwości wyjątkowego minikomputera

Świat Radio wrzesień - październik 2021

Świat Radio

Magazyn krótkofalowców i amatorów CB

Automatyka Podzespoły Aplikacje październik 2021

Automatyka Podzespoły Aplikacje

Technika i rynek systemów automatyki

Elektronika Praktyczna październik 2021

Elektronika Praktyczna

Międzynarodowy magazyn elektroników konstruktorów

Elektronika dla Wszystkich październik 2021

Elektronika dla Wszystkich

Interesująca elektronika dla pasjonatów