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. http://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.

Michael Möllers billede
Michael Möller
er hobby/fritidsinteresseret i alt med (elektronik-)teknik, når han ikke passer sit arbejde som it-konsulent med hovedvægt i databaser. Lysten tilfredsstilles mest i Labitats Hackerspace, hvorfra hovedvægten af bloggen kommer.

Kommentarer (18)

Xilinx webpack bruger som standard VHDL eller Verilog. Der er også muligt - men kompliceret - at tegne schematics. Deres schematic editor er ikke god. Så de fleste skifter sikkert hurtigt til VHDL. Endeligt, er muligt at tegne signal flow grafer. Embedded versionen (ej gratis) giver mulighed for at kode en soft-processor i C.

Jeg vil anbefale, at man starter med at finde en god soft-cpu som du kender, og kan programmeres i C eller Pascal - der findes i dag Pascal til mange microcontrolere, f.eks. til Microchips PIC kredse, Atmels kredse mv. Jeg føler selv, at Pascal er et mere sikkert sprog end C, men det er nok fordi jeg er Pascal årgangen. Basic er også en mulighed, og findes til flere microcontrollere. F.eks. har Oshonsofts debugger indbygget en lille Basic, og er også et godt program til at debugge de microcontrollere som supporteres i assembler.

En soft-cpu gør det nemmere at debugge dit hardware. Du kan forbinde indgange og udgange til CPU'en/Microcontrolleren, og teste hardwaren i højniveau sprog som Pascal eller C, f.eks. sætte en MUX på, så du kan skifte mellem debug tilstand, hvor program styrer klok og signaler, og "hardware" tilstand, hvor programmet udføres. Du kan bruge processoren til at aflæse tastatur, skrive til displays mv. og f.eks. aflæse og sætte værdier, du bruger i hardwaren.

  • 0
  • 0