Fomu is een compact, programmeerbaar FPGA-apparaat dat volledig in een USB Type-A-poort past. Het is ontworpen als een toegankelijke manier om te beginnen met FPGA- en RISC-V-ontwikkeling.
Belangrijkste kenmerken:
- Hardware: Gebaseerd op de Lattice ICE40UP5K FPGA met 128 kB RAM, 1 MB SPI flash, vier koperen pads en een RGB-led.
- Software & Architectuur: Ondersteunt native Python en draait een RISC-V softcore, waardoor gebruikers direct kunnen experimenteren met processorarchitectuur en hardwarematige versnellingen.
- Open Source: Maakt gebruik van een volledig open-source toolchain (Yosys, IceStorm, nextpnr), waardoor ontwikkelaars kunnen starten zonder proprietary software of NDA's.
Ontwikkeling en Productie: Het board is technisch complex door het gebruik van blind-buried vias en een Wafer-Level Chip-Scale Package (WLCSP). Het productieproces volgde een iteratief proces van EVT (Engineering), DVT (Design) en PVT (Production) om de compacte vormfactor en betrouwbaarheid te garanderen. Er zijn verschillende versies beschikbaar, waaronder een 'Hacker Version' voor zelf-soldering en een EVT-board voor debugging.
Fomu: Een FPGA-board dat in je USB-poort past
Belangrijkste kenmerken
Python-ondersteuning
Met 128 kilobytes RAM en een aanzienlijke hoeveelheid opslag is Fomu krachtig genoeg om Python native uit te voeren. Omdat het apparaat in je USB-poort verblijft, is de installatie zeer eenvoudig. Hoewel FPGA's complex zijn, maken de nieuwste Python-tools het mogelijk om Fomu te gebruiken zonder gespecialiseerde training.
RISC-V Architectuur
Onder de Python-interpreter draait een RISC-V softcore op de FPGA-fabric. RISC-V is een opkomende processorarchitectuur die klaarstaat om alles over te nemen, van deep-embedded chips tot high-performance computing. De RISC-V softcore van Fomu dient als een uitstekende introductie tot de processorarchitectuur van de toekomst.
FPGA-functionaliteit
Een FPGA is een stuk reconfigureerbaar silicium. De standaard firmware van Fomu biedt een USB-bootloader die een RISC-V softcore draait, maar je kunt alles laden wat je wilt. Er zijn ook softcores beschikbaar voor LM32 en OpenRISC. Gebruikers kunnen oefenen met het toevoegen van instructies aan de CPU of nieuwe blokken toevoegen, zoals LED-knipperpatronen of verbeterde hardwareblokken voor capacitieve aanraking.
Volledig Open Source
Ontwikkelen met Fomu is zeer eenvoudig: code laden via USB en starten. Of je nu RISC-V-code, Python-code of HDL schrijft, alles wordt op dezelfde manier naar Fomu geüpload. De ICE40UP5K FPGA wordt ondersteund door een volledig open toolchain. Dit betekent dat je kunt beginnen met ontwikkelen zonder een account aan te maken, een geheimhoudingsverklaring (NDA) te tekenen of een installer van meerdere gigabytes te downloaden.
Specificaties en functies
Fomu past volledig in een standaard USB Type-A-slot, met uitzondering van een klein gedeelte dat uitsteekt om toegang te bieden tot vier koperen pads. Er is één RGB-led die de behuizing verlicht en volledig door de gebruiker bestuurbaar is. De hoofdchip is een FPGA met ongeveer 5000 LUTs, wat voldoende is voor een CPU met wat extra ruimte.
- FPGA: Lattice ICE40UP5K
- Snelheid: 48 MHz externe oscillator
- RAM: 128 kB RAM voor een soft CPU¹
- Opslag: 1 MB SPI flash²
- Connectiviteit: USB 2.0 FS (12 Mbps)
- Knoppen: Vier³
- LEDs: Eén RGB
--- ¹ De FPGA heeft 1024 kilobits geheugen beschikbaar. Een apart blok geheugen wordt gebruikt voor zaken als het processor-registerbestand, naast tijdelijk geheugen voor USB-buffers. De CPU kan 64 of 128 kilobytes geheugen gebruiken, afhankelijk van de configuratie. ² Dit is de minimale configuratie; in de uiteindelijke versie kan meer beschikbaar zijn. ³ Fomu heeft vier koperen pads nabij de rand. Er zijn nog geen capacitieve touch-oplossingen gevalideerd.
Vergelijkingen
| Kenmerk | Fomu | Tomu | ICEBreaker | TinyFPGA BX |
| PCB | Ja | Ja | Ja | Ja |
| Behuizing | Ja | Ja | Nee | Nee |
| Bootloader | Ja | Ja | N/A | Ja |
| Fysieke Inputs | Vier pads | Twee pads | Vier knoppen | Eén reset |
| Fysieke Outputs | Eén RGB LED | Twee LEDs | Vijf LEDs | Geen |
| GPIO | Geen | Geen | 27 + 7 | 41 |
| Past in USB-poort | Ja | Ja | Nee | Nee |
| USB-interface | Softcore | Built-in FTDI | Softcore | Softcore |
| Hoofdchip | ICE40UP5K | EFM32HG309 | ICE40UP5K | ICE40LP8K |
| RAM | 128 kB | 8 kB | 128 kB | 16 kB |
| Flash | 2 MB | 64 kB | 16 MB | 1 MB |
| LUTs | 5280 | N/A | 5280 | 7680 |
| Klok | 48 MHz kristal | N/A | 12 MHz MEMS | 16 MHz MEMS |
Opmerking: Fomu is ideaal voor wie gemakkelijke toegang wil tot een FPGA in een USB-poort. Voor een development board met veel pinnen zijn andere ICE40-boards aanbevolen.
Wat is een FPGA en waarom is het nuttig?
Een FPGA is een Field-Programmable Gate Array. Bij een standaard CPU zijn de logische cellen vastgelegd in het silicium. Hoewel een CPU elke hoeveelheid code kan draaien, kan software voor exotische taken erg traag zijn.
Voorbeeld: LED-aansturing Veel embedded projecten gebruiken WS2812-LEDs (zoals NeoPixels) die een zeer specifiek timingsignaal vereisen. Een CPU kan dit signaal via software genereren, maar kan dan niets anders doen terwijl hij met de LED communiceert. Bij lange reeksen LEDs verspilt de CPU veel tijd en energie aan het genereren van dit signaal.
Met een FPGA is het mogelijk om een hardwarematige "LED-driver" te maken. Hierdoor kan de CPU blijven draaien of in een energiebesparende modus gaan, terwijl een hardwarecomponent de timing afhandelt.
Omdat de "CPU" in de FPGA is gemaakt met een hardwarebeschrijvingstaal (HDL), kan deze worden aangepast of vervangen. Je kunt bijvoorbeeld een volledig nieuwe CPU-instructie creëren voor snellere 64-bit vermenigvuldigingen of eenvoudige random-number generatie. Met Fomu heb je toegang tot de broncode van de CPU zelf.
FPGA-ontwikkeling en Toolchains
Tot voor kort waren FPGA-ontwikkelingstools zeer gesloten. Ze vereisten vaak een geheimhoudingsverklaring (NDA) en een enorme toolchain-installatie van meer dan 5 GB. Bovendien hadden fabrikanten weinig prikkels om de synthese efficiënt te maken; een inefficiënte toolchain dwong gebruikers namelijk om een grotere, duurdere FPGA te kopen.
Dankzij projecten zoals Yosys, IceStorm en nextpnr is er nu een volledig open-source toolchain beschikbaar voor de in Fomu gebruikte FPGA. De fabrikant, Lattice, stelt de datasheet en handleiding gratis beschikbaar. Dit vereenvoudigt de opstartprocedure aanzienlijk, aangezien er geen accounts, NDA's of licentieservers nodig zijn.
Community Versies
Fomu maakt gebruik van geavanceerde vierlaags-PCB-technologie met blind-buried-via's, wat productie in kleine hoeveelheden lastig maakt. Daarom zijn er twee versies ontwikkeld die gemakkelijker te produceren zijn:
Hacker Version
Ontworpen met 4/4-ontwerpregels op een twee-laags PCB. Deze versie gebruikt een ongebruikelijke footprint voor de FPGA en een specifieke SPI-flash. Deze boards zijn handmatig geassembleerd, maar door de gevoeligheid van WLCSP-balls kan de betrouwbaarheid op lange termijn lager zijn en is het board gevoeliger voor mechanische stress. Deze versie wordt niet verkocht, maar is beschikbaar voor mensen die zelf willen solderen.
Fomu EVT
De eerste iteratie van de moderne versie van Fomu. Dit is een "stretch" board, bedoeld om aannames te testen over SPI-programmering, de keuze tussen kristal- versus MEMS-componenten en spanningsregelaars. Het is ontworpen om te koppelen met een Raspberry Pi voor snelle applicatieontwikkeling en debugging. Het is gebouwd volgens 6/6-regels op een standaard twee-laags PCB en kan bij vrijwel elke PCB-fabrikant worden geproduceerd.
Community en Openheid
Fomu bouwt voort op de Tomu-community. Om het project zo open mogelijk te houden, is het ontwerp aanpasbaar. Informatie en discussies vinden plaats via:
- Mailinglijsten: Voor aankondigingen en ontwikkeling.
- IRC: Kanaal
#tomu op freenode.net.
- GitHub & Projectsite: Voor hardware-ontwerpen en code.
Productieproces
Algemene planning
Fomu wordt geproduceerd in China. Vanwege de complexiteit (kristal, externe opslag, drie spanningsregelaars en veel ontkoppelingscondensatoren) is het ontwerp complexer dan dat van Tomu.
Iteratief proces: EVT, DVT en PVT
Het project volgt een traditionele drie-cyclus aanpak:
- EVT (Engineering Validation Testing): Controleert of het schema correct is, of er geen kortsluitingen zijn en of de pinnen naar behoren werken. Het EVT-board van Fomu is ter grootte van een visitekaartje en bevat een Raspberry Pi-header voor firmwareontwikkeling.
- DVT (Design Validation Testing): Bevestigt dat het fysieke ontwerp sound is. Hier wordt het board gekrompen tot de grootte van een USB-poort en wordt de behuizing ontworpen. De DVT-versie maakt gebruik van een complex vierlaags proces met blind-buried vias en de kleinere ICE40 WLCSP-component.
- PVT (Production Validation Testing): De definitieve versie voor productie.
Behuizing
De plastic behuizing is gebaseerd op de mal van Tomu, met kleine aanpassingen. Er is geprobeerd een light pipe in de vorm van de behuizing te gieten, zodat de gehele plastic shell oplicht in de USB-poort.
PCB-technologie: Blind-Buried Vias
De Fomu PCB is complexer dan traditionele printplaten. De FPGA gebruikt een Wafer-Level Chip-Scale Package (WLCSP), een zeer klein rechthoekje met een array van ballen eronder.
Bij een normale PCB worden gaten geboord door alle lagen heen. Bij een blind-buried board wordt een "sandwich" van materialen gemaakt waarbij lasergeboorde gaten alleen tussen specifieke interne lagen verbinding maken. Dit proces is technisch uitdagend en lastig goedkoop te produceren in kleine volumes.
Fomu: Een FPGA-board dat in je USB-poort past
Belangrijkste kenmerken
Python-ondersteuning
Met 128 kilobytes RAM en een aanzienlijke hoeveelheid opslag is Fomu krachtig genoeg om Python native uit te voeren. Omdat het apparaat in je USB-poort verblijft, is de installatie zeer eenvoudig. Hoewel FPGA's complex zijn, maken de nieuwste Python-tools het mogelijk om Fomu te gebruiken zonder gespecialiseerde training.
RISC-V Architectuur
Onder de Python-interpreter draait een RISC-V softcore op de FPGA-fabric. RISC-V is een opkomende processorarchitectuur die klaarstaat om alles over te nemen, van deep-embedded chips tot high-performance computing. De RISC-V softcore van Fomu dient als een uitstekende introductie tot de processorarchitectuur van de toekomst.
FPGA-functionaliteit
Een FPGA is een stuk reconfigureerbaar silicium. De standaard firmware van Fomu biedt een USB-bootloader die een RISC-V softcore draait, maar je kunt alles laden wat je wilt. Er zijn ook softcores beschikbaar voor LM32 en OpenRISC. Gebruikers kunnen oefenen met het toevoegen van instructies aan de CPU of nieuwe blokken toevoegen, zoals LED-knipperpatronen of verbeterde hardwareblokken voor capacitieve aanraking.
Volledig Open Source
Ontwikkelen met Fomu is zeer eenvoudig: code laden via USB en starten. Of je nu RISC-V-code, Python-code of HDL schrijft, alles wordt op dezelfde manier naar Fomu geüpload. De ICE40UP5K FPGA wordt ondersteund door een volledig open toolchain. Dit betekent dat je kunt beginnen met ontwikkelen zonder een account aan te maken, een geheimhoudingsverklaring (NDA) te tekenen of een installer van meerdere gigabytes te downloaden.
Specificaties en functies
Fomu past volledig in een standaard USB Type-A-slot, met uitzondering van een klein gedeelte dat uitsteekt om toegang te bieden tot vier koperen pads. Er is één RGB-led die de behuizing verlicht en volledig door de gebruiker bestuurbaar is. De hoofdchip is een FPGA met ongeveer 5000 LUTs, wat voldoende is voor een CPU met wat extra ruimte.
- FPGA: Lattice ICE40UP5K
- Snelheid: 48 MHz externe oscillator
- RAM: 128 kB RAM voor een soft CPU¹
- Opslag: 1 MB SPI flash²
- Connectiviteit: USB 2.0 FS (12 Mbps)
- Knoppen: Vier³
- LEDs: Eén RGB
--- ¹ De FPGA heeft 1024 kilobits geheugen beschikbaar. Een apart blok geheugen wordt gebruikt voor zaken als het processor-registerbestand, naast tijdelijk geheugen voor USB-buffers. De CPU kan 64 of 128 kilobytes geheugen gebruiken, afhankelijk van de configuratie. ² Dit is de minimale configuratie; in de uiteindelijke versie kan meer beschikbaar zijn. ³ Fomu heeft vier koperen pads nabij de rand. Er zijn nog geen capacitieve touch-oplossingen gevalideerd.
Vergelijkingen
| Kenmerk | Fomu | Tomu | ICEBreaker | TinyFPGA BX |
| PCB | Ja | Ja | Ja | Ja |
| Behuizing | Ja | Ja | Nee | Nee |
| Bootloader | Ja | Ja | N/A | Ja |
| Fysieke Inputs | Vier pads | Twee pads | Vier knoppen | Eén reset |
| Fysieke Outputs | Eén RGB LED | Twee LEDs | Vijf LEDs | Geen |
| GPIO | Geen | Geen | 27 + 7 | 41 |
| Past in USB-poort | Ja | Ja | Nee | Nee |
| USB-interface | Softcore | Built-in FTDI | Softcore | Softcore |
| Hoofdchip | ICE40UP5K | EFM32HG309 | ICE40UP5K | ICE40LP8K |
| RAM | 128 kB | 8 kB | 128 kB | 16 kB |
| Flash | 2 MB | 64 kB | 16 MB | 1 MB |
| LUTs | 5280 | N/A | 5280 | 7680 |
| Klok | 48 MHz kristal | N/A | 12 MHz MEMS | 16 MHz MEMS |
Opmerking: Fomu is ideaal voor wie gemakkelijke toegang wil tot een FPGA in een USB-poort. Voor een development board met veel pinnen zijn andere ICE40-boards aanbevolen.
Wat is een FPGA en waarom is het nuttig?
Een FPGA is een Field-Programmable Gate Array. Bij een standaard CPU zijn de logische cellen vastgelegd in het silicium. Hoewel een CPU elke hoeveelheid code kan draaien, kan software voor exotische taken erg traag zijn.
Voorbeeld: LED-aansturing Veel embedded projecten gebruiken WS2812-LEDs (zoals NeoPixels) die een zeer specifiek timingsignaal vereisen. Een CPU kan dit signaal via software genereren, maar kan dan niets anders doen terwijl hij met de LED communiceert. Bij lange reeksen LEDs verspilt de CPU veel tijd en energie aan het genereren van dit signaal.
Met een FPGA is het mogelijk om een hardwarematige "LED-driver" te maken. Hierdoor kan de CPU blijven draaien of in een energiebesparende modus gaan, terwijl een hardwarecomponent de timing afhandelt.
Omdat de "CPU" in de FPGA is gemaakt met een hardwarebeschrijvingstaal (HDL), kan deze worden aangepast of vervangen. Je kunt bijvoorbeeld een volledig nieuwe CPU-instructie creëren voor snellere 64-bit vermenigvuldigingen of eenvoudige random-number generatie. Met Fomu heb je toegang tot de broncode van de CPU zelf.
FPGA-ontwikkeling en Toolchains
Tot voor kort waren FPGA-ontwikkelingstools zeer gesloten. Ze vereisten vaak een geheimhoudingsverklaring (NDA) en een enorme toolchain-installatie van meer dan 5 GB. Bovendien hadden fabrikanten weinig prikkels om de synthese efficiënt te maken; een inefficiënte toolchain dwong gebruikers namelijk om een grotere, duurdere FPGA te kopen.
Dankzij projecten zoals Yosys, IceStorm en nextpnr is er nu een volledig open-source toolchain beschikbaar voor de in Fomu gebruikte FPGA. De fabrikant, Lattice, stelt de datasheet en handleiding gratis beschikbaar. Dit vereenvoudigt de opstartprocedure aanzienlijk, aangezien er geen accounts, NDA's of licentieservers nodig zijn.
Community Versies
Fomu maakt gebruik van geavanceerde vierlaags-PCB-technologie met blind-buried-via's, wat productie in kleine hoeveelheden lastig maakt. Daarom zijn er twee versies ontwikkeld die gemakkelijker te produceren zijn:
Hacker Version
Ontworpen met 4/4-ontwerpregels op een twee-laags PCB. Deze versie gebruikt een ongebruikelijke footprint voor de FPGA en een specifieke SPI-flash. Deze boards zijn handmatig geassembleerd, maar door de gevoeligheid van WLCSP-balls kan de betrouwbaarheid op lange termijn lager zijn en is het board gevoeliger voor mechanische stress. Deze versie wordt niet verkocht, maar is beschikbaar voor mensen die zelf willen solderen.
Fomu EVT
De eerste iteratie van de moderne versie van Fomu. Dit is een "stretch" board, bedoeld om aannames te testen over SPI-programmering, de keuze tussen kristal- versus MEMS-componenten en spanningsregelaars. Het is ontworpen om te koppelen met een Raspberry Pi voor snelle applicatieontwikkeling en debugging. Het is gebouwd volgens 6/6-regels op een standaard twee-laags PCB en kan bij vrijwel elke PCB-fabrikant worden geproduceerd.
Community en Openheid
Fomu bouwt voort op de Tomu-community. Om het project zo open mogelijk te houden, is het ontwerp aanpasbaar. Informatie en discussies vinden plaats via:
- Mailinglijsten: Voor aankondigingen en ontwikkeling.
- IRC: Kanaal
#tomu op freenode.net.
- GitHub & Projectsite: Voor hardware-ontwerpen en code.
Productieproces
Algemene planning
Fomu wordt geproduceerd in China. Vanwege de complexiteit (kristal, externe opslag, drie spanningsregelaars en veel ontkoppelingscondensatoren) is het ontwerp complexer dan dat van Tomu.
Iteratief proces: EVT, DVT en PVT
Het project volgt een traditionele drie-cyclus aanpak:
- EVT (Engineering Validation Testing): Controleert of het schema correct is, of er geen kortsluitingen zijn en of de pinnen naar behoren werken. Het EVT-board van Fomu is ter grootte van een visitekaartje en bevat een Raspberry Pi-header voor firmwareontwikkeling.
- DVT (Design Validation Testing): Bevestigt dat het fysieke ontwerp sound is. Hier wordt het board gekrompen tot de grootte van een USB-poort en wordt de behuizing ontworpen. De DVT-versie maakt gebruik van een complex vierlaags proces met blind-buried vias en de kleinere ICE40 WLCSP-component.
- PVT (Production Validation Testing): De definitieve versie voor productie.
Behuizing
De plastic behuizing is gebaseerd op de mal van Tomu, met kleine aanpassingen. Er is geprobeerd een light pipe in de vorm van de behuizing te gieten, zodat de gehele plastic shell oplicht in de USB-poort.
PCB-technologie: Blind-Buried Vias
De Fomu PCB is complexer dan traditionele printplaten. De FPGA gebruikt een Wafer-Level Chip-Scale Package (WLCSP), een zeer klein rechthoekje met een array van ballen eronder.
Bij een normale PCB worden gaten geboord door alle lagen heen. Bij een blind-buried board wordt een "sandwich" van materialen gemaakt waarbij lasergeboorde gaten alleen tussen specifieke interne lagen verbinding maken. Dit proces is technisch uitdagend en lastig goedkoop te produceren in kleine volumes.