Mijn eigen CPU: Zo compileer je een processor in een FPGA
Een processor compileren in een FPGA

Hardware hacken om een andere functie te vervullen dan de fabrikant bedoelde, is de essentie van DIY. Het omtoveren van mini-computers tot spelcomputers of projectors en het aanpassen van de eigenschappen van een router zijn de meest voorkomende voorbeelden, maar er zijn enthousiastelingen met de nodige kennis om bepaalde componenten 'aan het praten te krijgen', en dat geldt ook voor FPGA's. Dat brengt ons bij de persoonlijke blog van ingenieur Thanassis Tsiodras, die besloot om een open-source CPU in de FPGA van een kleine thin client te compileren. Waarom? Omdat hij het kan...

Het begon met een goedkoop FPGA-project

Het verhaal begint met een artikel van Tom Verbeure, hardware-ingenieur bij Nvidia. In wezen bouwde Verbeure een real-time ray tracer met een zeer goedkope FPGA, en dat is geen overdrijving, want tegenwoordig kun je hele partijen op eBay kopen voor minder dan 200 dollar. De hardware in kwestie is de thin client Pano Logic, verkrijgbaar in de versies G1 en G2. Het plan van het bedrijf was om een vervanging te bieden voor traditionele computers in bedrijfsomgevingen met de flexibiliteit van een FPGA, maar de verantwoordelijken gooiden de handdoek in de ring in 2013, en hun hardware bleef zweven in de ether, zonder ondersteuning.

De Pano Logic G2 en de FPGA Spartan6 LX100

Vanaf dat moment begonnen echter de inspanningen van de community om de wil van die thin clients te plooien. Zo komen we bij de blog van ingenieur en ontwikkelaar Thanassis Tsiodras, die een Pano Logic G2 bemachtigde, uitgerust met de FPGA Spartan6 LX100. Zijn doel? Een open-source CPU in het binnenwerk compileren, en door de natuurlijke omvang van de FPGA, deze als multi-core laten werken. Nadat hij de thin client had ontleed, maakte hij de JTAG-kabel om een compatibele Xilinx-programmeur aan te sluiten (die minder dan 25 dollar kost op eBay).

Mijn eigen CPU: Zo compileer je een processor in een FPGA
De JTAG voorbereiden...
Mijn eigen CPU: Zo compileer je een processor in een FPGA
Enkele technische obstakels, zelfs met officiële software

Hier ontstonden de moeilijkheden. Om specifieker te zijn, het ontbreken van ondersteuning in recente versies van de officiële software. Synthesis, het pakket met tools van Xilinx, ondersteunt de Spartan6 LX100 niet in de meest recente (en gratis) editie voor Linux. De enige build die compatibel is met LX100 werkt binnen Windows, maar er is meer: de taak van die 'setup' is om een virtuele machine te installeren... met een Linux-image. Even dacht hij dat hij uit die image alle benodigde elementen voor native uitvoering kon halen, maar hij stuitte op een limiet in het MAC-adres van de virtuele netwerkkaart, omdat de software verwacht dat adres te zien en geen ander.

De rest van het artikel richt zich uiteindelijk op het oorspronkelijke plan, namelijk het compileren van een CPU in de FPGA, en ik geef toe dat de technische inhoud een beetje zwaar wordt. Met andere woorden, dit is allesbehalve een project voor beginners. De toegang tot de hardware mag dan goedkoop zijn (een FPGA in een verlaten product gecombineerd met een programmeur van 25 dollar klinkt niet slecht), maar de code werkt als filter. Toch is het resultaat indrukwekkend: een dual-core LEON3-processor op 50 MHz, 'gesynthetiseerd' in een FPGA die voor de prullenbak bestemd was. De rest van het project zal zich richten op toegang tot andere componenten in de hardware, vooral de 128 MB DDR2-geheugen. Als je meer wilt weten, aarzel dan niet om de blog van Thanassis te bezoeken.

Officiële site: Klik hier