Vi listar för- och nackdelarna med ASIC och FPGA.
Vilka olika typer av FPGA:er finns det?
Hur skiljer de sig åt vad gäller säkerheten?
Vi tipsar om gratisverktygen du kan börja med för att utveckla med FPGA:er.
| |

BILLIGASTE VÄGEN
Flera av FPGA-leverantörerna erbjuder
gratisversioner av sina utvecklingsverktyg.
Alteras utmärkta verktyg
Quartus-II Web Edition tar inte lång
stund att installera och sedan är det bara
att börja att konstruera.
När du sedan blivit varm i kläderna
bör du skaffa ett utvecklingskort, vilket
gör det mycket smidigt att börja testa
din konstruktion.
Vill du se hur byggblock implementeras
med ett hårdvarubeskrivande språk kan
du besöka Opencores, en webbplats för
fria och öppna byggblock. Här finns allt
från enkla seriegränssnitt till 32-bitarsprocessorn
Openrisc.
För att verifiera att dina egna byggblock
fungerar behöver du testa funktionen.
Det gör du genom att köra blocken
i en simulator som skickar in testdata
och kontrollerar resultatet. En utmärkt fri
simulator för Verilog är Icarus Verilog.
|
Bli inte förvånad om du öppnar en modern
router eller brandvägg och träffar på en stor integrerad
krets från tillverkare som Altera, Xilinx
eller Actel. Utrustningsleverantörer som Cisco
Systems, Ericsson och Alcatel har insett att en
modern fältprogrammerbar grindmatris, en
FPGA (Field-Programmable Gate Array), i
många applikationer ger den kombination av
pris, prestanda, flexibilitet med mera som krävs
för en framgångsrik produkt.
Förr byggde man elektroniksystem genom
att på ett mönsterkort koppla ihop ett stort antal
färdiga komponenter till ett system. Den
specifika mixen av komponenter och programvara
gav den önskade funktionaliteten. När inte
detta har räckt har man istället utvecklat en
applikationsspecifik integrerad krets, en ASIC.
Idag integreras hela system i en ASIC, och stora
delar av dess funktion skapas genom att man
använder färdiga byggblock som precis som på
mönsterkortet tillför funktionalitet till detta
system på chip (SoC).
En ASIC har många fördelar: hög integration,
låg effektförbrukning och bra prestanda till ett
mycket lågt styckepris. Dock är utvecklingstiden
lång och kostsam och en traditionell ASIC
är en oflexibel lösning. Ändras kraven under
utvecklingstiden, eller om dina kunder vill ha
nya funktioner efter produktlanseringen, kan
en ASIC vara ett hinder för framgång.
Lösningen på detta dilemma är ofta en FPGA.
Denna best är en standardkomponent som när
den levereras från fabriken är generisk och
funktionslös men byter skepnad när den konfi-
gureras och blir det högintegrerade system din
applikation vill ha.
Byt krypto – på fältet
Med färdiga byggblock kan du i en FPGA precis
som i en ASIC snabbt realisera funktioner som
talkodning för IP-telefoni, MPEG4-avkodning
för digitalvideo och inte minst olika kryptografi
ska funktioner som AES. Komplettera med en
anpassad grundplattform med de processorer,
minnen och standardgränssnitt din applikation
behöver till en färdig applikationsplattform.
Den stora skillnaden jämfört med en ASIC är
dock att du med en FPGA kan byta ut den digitala
hårdvaran, ditt elektroniska system, genom
att byta konfiguration, vilket även kan ske ute på
fältet. I ett WLAN-system byggt med en FPGA
skulle det exempelvis gå att byta ut kryptot RC4
och WEP mot kryptot AES och WPA 2.
Så fungerar en FPGA
Grunden för en FPGA är den klassiska logiska
sanningstabellen. I en FPGA finns ett stort antal
små tabeller kopplade till var sin dataväljare,
även kallad multiplexer (mux). Genom att exempelvis lägga in bitmönstret för ELLER-funktionen
i tabellen och sedan koppla operatorerna
A och B till väljarens styrsignal får man funktionen
F = A ELLER B (se bilden på nästa sida). En
sanningstabell kopplad till en mux kallas på
engelska för Look-Up Table (LUT).
Med hjälp av ett program bryts den logiska
funktionen du vill implementera, till exempel
din kryptoalgoritm, ned till en mängd av funktioner
som var och en passar i en LUT. LUT:arna
kopplas sedan samman av ett ledningsnät med
styrbara korskopplingar. Slutligen finns det
även register och minnesmoduler i en FPGA.
De tre delarna i en FPGA, LUT:ar, ledningsnät
och minnen, gör det möjligt att implementera
alla typer av digitala funktioner i en FPGA.
Innehållet i LUT:arna, hur ledningsnätet är
kopplat och innehållet i minnet styrs av ett antal
kontrollbitar – minnesceller på kiselbrickan.
Genom att ändra dessa bitar ändras den funktion
som FPGA:n skapar. När en FPGA ska konfi
gureras läser man in kontrollbitarna från en
konfigurationsfil och in i minnescellerna.
FPGA och säkerheten
I en ASIC sitter din applikation gömd inuti en
kapsel och nedetsad på en kiselbricka med mikroskopiska
transistorer och ledningar. Att kopiera
eller återskapa funktionen i en ASIC är
inte omöjligt, men väldigt omständligt och
mycket kostsamt.
I en FPGA ges funktionen av konfigurationsfilen. Om någon kan komma åt och kopiera din
konfigurationsfil har de därmed en kopia på
den digitala funktionen i din produkt. Det finns
ingen tillverkare som använder ett öppet format,
utan vad de olika bitarna i en konfigurationsfi
l styr är hemligt. Dock har sådana konfi-
gurationsfiler utsatts för avkodningsattacker, så
att förlita sig på formatets hemlighet som skydd
av din konstruktion är inte en bra lösning.
Ett annat problem som FPGA:n delar med
många programvarubaserade system är att om
du tillåter nedladdning av ny programvara, eller
i FPGA:ns fall en ny konfigurationsfil, blottar
du din produkt för risken att den nya konfigurationsfi
len påverkas under överföringen. Din
produkt riskerar att innehålla en annan digital
funktion än den avsedda.
För att lösa dessa problem erbjuder FPGAleverantörerna
olika skyddsmekanismer, men även vilken typ av FPGA du väljer att använda
påverkar vilken säkerhet du får.
Vanligast med SRAM-baserade FPGA:er
Den vanligaste typen av FPGA:er är byggda
med SRAM-teknik. Fördelen med SRAM-teknik
är dess relativa enkelhet, vilket gör det möjligt
att bygga kretsar med stor kapacitet. Nackdelen
är att precis som innehållet i en dators
SRAM-minne tappas så fort strömmen försvinner
så kommer FPGA-konfigurationen att raderas
i motsvarande situation. Därmed måste
kretsens konfiguration laddas in från ett externt
minne vid varje systemstart.
De två stora drakarna på FPGA-marknaden
är Altera och Xilinx. Båda leverantörerna har
idag flera familjer av SRAM-baserade FPGA:er
för olika typer av tillämpningar. De har även tagit
fram liknande säkerhetslösningar.
Altera har i Stratix-II-familjen förutom den
vanliga FPGA-strukturen byggt in en färdig
kryptomotor för AES. Kryptonycklarna lagras i
ett litet Flashminne på kiselbrickan och därmed
raderas inte nycklarna när strömmen försvinner.
Via direktkopplingen för produktionstest,
enligt industristandarden JTAG som finns på
några av kretsens anslutningar, skriver du ner
nycklarna i minnet under produktframtagningen.
Det går dock inte att läsa nyckeln från
minnet och ut ur kretsen. I Alteras lösning finns
det även en möjlighet att efter nedskrivning av
nyckeln via JTAG spärra nyckelminnet så att
nyckeln aldrig mer går att ändra.
Den konfigurationsfil som sedan läses in i
FPGA:n måste vara krypterad med samma
nyckel som den som ligger i nyckelminnet.
FPGA:n försöker dekryptera filen, men har inte
filen krypterats med korrekt nyckel kommer
den checksumma som FPGA:n beräknar inte
att stämma och då accepteras inte den nya konfi
gurationen. Den nedre bilden till höger visar
hur konfigurationen med AES-kryptering
fungerar.