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.