FPGA, første kontakt
Typisk - lige som man skal øse af al det sjove man oplever i Labitat til til denne blog så sker der noget
i ens liv og der går langt i mellem besøgene. Nåh, men der jo mail og Wiki og andre elektroniske
veje dertil. Dette indlæg er således "remote" så vidt angår Labitat.
Det sker at et medlem køber dele til sig selv i et fjernt land. Medmindre det virkeligt er en
meget lille del fra eBay med "free shipping", involverer det en del fragt omkostning og så kommer
moms, told og Post Danmark oveni. (For nyligt købte jeg et par musik CDer fra USA; CDerne var
200Kr, men regningen var 450Kr med det hele). Derfor bliver der sommetider meldt ud på maillisten
og så tilføjer man til ordren og deles om trans- og im-port omkostningerne.
Således købte jeg en FPGA (Field Programmable Gate Array) development board.
https://www.sparkfun.com/products/11953 (Omkostningerne blev 38% af nettoprisen) Selve boardet er
lavet og solgt af EmbeddedMicro - det vare bare nemmere at piggiback'e denne SparkFun ordre. Jeg
har en del (Arduino) mikrokontroller kits, dette er mit første FPGA. Nåh jo, det begyndte med at
nogle i Labitat mødes i diskussion om at forstå FPGA-tanke gangen.
Den programmers med noget der ligner et program, men er et deklarativt (der er ikke nogen program
flow) beskrivelse af kredsløbet. IDE'en (Integrated Development Enviroment) har et vindue hvor den
viser den ækvivalente kredsløb, men i chippen er det en masser små LUT (Look Up Table) der
emulerer det logiske kredsløb. Man kan næsten få hovedpine af al den emulering af simulering af ...
Jeg/vi bruger lige nu en kommerciel (dvs ikke Open Source, fra Xilinx) software med gratis licens
(gratis: prisen er at de modtager ens kilde tekst til "improvement and usage profiling" ved hver
kompilering; nok mest for at opmuntre folk der vil have "privat" kode at købe en license - fair
nok i min mening). Det tog sin tid at lægge ind i laptoppen - "sølle" 6Gb download der foldede sig ud i et 18Gb system.
Kompilering er også en process der tager en del tid. Det er faktisk mange trin med syntisering, simulering, layout og andre frække ord der ruller hen over skærmen - typisk en 3 minutter for en "Hello World" funktion. FPGAen ikke har nogen hukommelse om det programmerde kredsløb, det "lægs i" hver gang man tænder og det sørger en lille
mikroprocessor på kortet for (som husker og modtager nye kredsløb fra USB forbindelsen.)
Der er en en udmærket tutorial side med et par "blink lys" demoer. https://embeddedmicro.com/tutorials/mojo/ Jeg har avanceret til at få den at blinke med alle lys.
Med mikroprocessor taler man altid om en clock frekvens
og/eller antallet instrukser per sekund. Det tager tid at regne ud hvad program logikken gør i mange trin. Mikroprocessorer er sløve i forhold til en FPGA der på få
nanosekunder har "udregnet" den ny output for given input.
Logik med state
og/eller hukommelse må man gøre i diverse latches som man programmerer.
Der er selvfølgeligt en del biblioteks elementer med for dette og andre almindelige konstruktioner. Det udestår at udforske. Jeg har set en anden hackerspace der er ved at
lægge ind kredsløbet for sin egen mikroprocesser/kontroller. Bare fordi.
Nu .. hvad skal jeg bruge den til? Jeg har vage planer om at
styre stepper eller servo motorer. Ja, ja, som alt andet i Labitat og hobby verden - det kan
købes. Men det sjove og hackningen er jo netop at gøre det selv, mest fordi det "kilder" at lære noget anderledes. At forstå et andet paradigme er nyttigt - eksercere hjernecellerne. Næste trin bliver at lave et lille I/O board til den så jeg kan have flere knapper og faktisk tilslutte en stepper, eller noget. Heldigtvis i hobby miljø er der ingen deadline. Imens tager vi teorien i Labitat cirka hver anden torsdag.
