Bitstreams

Wie bei allen FPGAs muss man einen sogenannten „Bitstream“ zuführen, um eine neue Konfiguration zu laden. Große FPGA-Chips ohne NVCM erfordern, dass der Bitstream bei jedem Einschalten aus einem externen Speicher geladen wird, was ihn anfällig für Hacker und sonstige Angriffe macht. Aus diesem Grund werden die Bitstream-Formate geheim gehalten, wobei moderne, große FPGAs sogar verschlüsselte Bitstreams unterstützen. Der Lattice-iCE40-Bitstrom wurde jedoch von der Open-Source-Community fast vollständig einem Reverse-Engineering unterzogen (oder „dokumentiert“, wie sie es nennen), so dass er mit Open-Source-FPGA-Entwicklungswerkzeugen verwendet werden kann.

Open-Source-Tools für TinyFPGA

Hier ist Apio das Werkzeug der Wahl. Inspiriert von PlatformIO, handelt es sich um ein Open-Source-Multiplattform-Ökosystem für offene FPGA-Karten wie TinyFPGA BX. Apio ist ein Kommandozeilen-Interface- bzw. CLI)Tool, das Icestorm für Synthese, Place & Route sowie Konfiguration verwendet, um Verilog-Code in iCE40-kompatible Bitstreams zu konvertieren. Apio unterstützt neben anderen nützlichen Tools Icarus Verilog für Verilog-Simulation und -Synthese und (derzeit nur unter Windows) GTKWave als Simulation-Viewer.

Grafische Werkzeuge

Da sich die Menschen an grafische Oberflächen gewöhnt und sie schätzen gelernt haben, basiert die Apio-IDE auf Atom. Icestudio ist hingegen ein experimenteller, visueller Hardware-Editor, der eine schematische Eingabe bietet.

Die Installation gelingt ziemlich schnell und einfach, solange man Python 3 auf dem PC installiert hat. Dann muss man lediglich ein paar Installationsbefehle eingeben. Die im User Guide zu TinyFPGA BX angegebenen Befehle funktionieren einwandfrei. Ich musste lediglich einen zusätzlichen Schritt machen:
 
apio install drivers

Anschließend wird das Board an einen PC angeschlossen und der folgende Kurztest durchgeführt:
 
tinyprog --update-bootloader
 
 
TinyFPGA BX tinyprog bootloader update
TinyProg hat mein Board gefunden.

Da jetzt alles funktioniert, kann die Reise durch das Reich der programmierbaren Logik beginnen.