Bitstreams

Net als bij andere FPGA’s, worden nieuwe configuraties in de chip geladen in de vorm van een zogenaamde “bitstream”. Grote FPGA-chips zonder NVCM moeten de bitstream uit extern geheugen lezen, elke keer dat ze worden ingeschakeld. Dat maakt ze kwetsbaar voor hacken en piraterij. Daarom worden de bitstreamformaten geheim gehouden. Moderne, grote FPGA’s maken zelfs gebruik van versleutelde bitstreams. Maar de bitstream voor Lattice iCE40 is bijna helemaal ge-reverse-engineered (of “gedocumenteerd”, zoals ze dat zelf noemen) door de open source-community, zodat hij kan worden gebruikt met open source FPGA-ontwikkelgereedschappen.

Open source tools voor TinyFPGA

Apio is het tool dat we hier gebruiken. Het is geïnspireerd door PlatformIO, en het is een open source multi-platform ecosysteem voor open FPGA-kaarten zoals de TinyFPGA BX. Apio wordt bestuurd vanaf de commandline ( CLI ) en maakt gebruik van Icestorm voor de synthese, het plaatsen en routeren en voor omzetten van de configuratie van Verilog code naar iCE40-compatibele bitstreams. Naast andere nuttige tools ondersteunt Apio Icarus Verilog voor Verilog-simulatie en synthese en (voorlopig alleen op Windows) GTKWave  als simulatie-viewer.

Grafische tools

Omdat mensen gewend zijn geraakt aan grafische interfaces en daar graag mee werken, is er Apio-IDE: een grafisch tool gebaseerd op Atom. Daarnaast is er Icestudio, een experimentele visuele hardware-editor, waarmee schema-invoer mogelijk is.

Het installeren gaat snel en gemakkelijk als u Python 3 op uw computer hebt. Het is dan alleen maar een kwestie van het invoeren van een paar installatiecommando’s. De commando’s die in de TinyFPGA BX User Guide staan werken prima, ik moest alleen een extra stap toevoegen:
 
apio install drivers

Als dat gebeurd is kunt u de kaart verbinden met de computer en quick test draaien:
 
tinyprog --update-bootloader
 
 
TinyFPGA BX tinyprog bootloader update
TinyProg heeft mijn kaart gevonden.

Nu alles werkt, kunt u beginnen aan uw verkenningstocht door de wereld van de programmeerbare logica.