Jag tänker mig att den som läser den här guiden har lite grundläggande kunskaper i digitalteknik, och i "vanlig" programmering av t.ex. mikrokontrollers.
Hårdvaran
Det finns flera olika typer av programmerbara logikchip, de som används idag kan grovt delas in i två kategorier:
CPLD (Complex Programmable Logic Device):
- Liten (c:a 30 - 1000 logikceller, 40 - 256 pinnar).
Billig (c:a $1 - $50 styckvis)
Behåller sitt "program" när strömmen stängs av.
- Stor (c:a 500 - 200000+ logikceller, 100 - 1500+ pinnar)
Dyr (c:a $10 - $1000+ styckvis)
Måste laddas med sitt "program" utifrån varje gång man slår på strömmen.
Vad är en logikcell?
Logikcellen är det grundläggande byggblocket i alla programmerbara logikchip och ser ut på ungefär samma sätt (om man inte tittar för noga )
Den har ett antal ingångar (i en FPGA oftast 4, i en CPLD ofta fler) som går in till ett kombinatoriskt nät, vars utgång går vidare till en vippa. Det kombinatoriska nätet är en del av det som gör kretsen programmerbar, det kan nämligen programmeras till att skapa vilken logisk funktion som helst av ingångarna.
Dessutom finns ett programmerbart nätverk av ledningar som kan koppla ihop logikcellerna med varandra och med IO-pinnar och andra byggblock som kan finnas i kretsen.
I FPGA:er kan man ofta förutom de vanliga logikcellerna hitta en del andra saker, bland annat minnen, multiplikatorer och t.o.m. hela PowerPC-processorer!
Tillverkare
De två största tillverkarna av programmerbar logik är Altera och Xilinx, men det finns även en hög andra märken (Atmel, Actel, Cypress, Lattice, Quicklogic...). Själv har jag bara erfarenhet av de två första, så jag tänker inte uttala mig om resten.
Både "märke A" och "märke X" har gratis mjukvara man kan ladda ner, och en online-shop där man kan köpa chip styckvis.
När det gäller billiga FPGA:er har Xilinx Spartan3 och Altera har Cyclone/Cyclone2. Den allra största skillnaden mellan dessa är att Spartan3 och Cyclone2 båda har inbyggda multiplikatorer medan Cyclone (1) saknar dessa. Något som talar för Xilinx är kanske att det finns ett ganska användbart Spartan3 "starterkit" för bara $99.
Språken
Man använder vanligtvis ett av språken VHDL eller Verilog för att skriva "programmet" till sin FPGA/CPLD. VHDL är mest populärt i Europa medan Verilog används mest i USA. VHDL har ett syntax som påminner en del om ADA eller Pascal, medan Verilog är mer likt C. Personligen gillar jag Verilog, så det kommer jag att använda till exempelkod.
Både VHDL och Verilog var från början bara avsedda för att beskriva och simulera hårdvara, inte för att syntetisera (skapa) hårdvara automatiskt. Det finns en del saker som är giltiga i språket, men som inte går att syntetisera till något vettigt.
Mer om Verilog kommer i nästa del, inom ett par dagar!