Sida 1 av 2

FPGA, förklaring och hjälp

Postat: 18 augusti 2005, 09:22:15
av axelsonic
Jag har fått det förklarat för mig och tror att det är något jag kan använda mig av. Men jag behöver mer information. Som jag fattat det är FPGA inte helt enkelt och man med lätthet ta en raketfysik-examen i ämnet.

Vad är det ? Förutom "en attans massa programmerbara snabba logiska kretsar typ..." (som var ungefär den förklaring jag fick) .

Jag har googlat lite, men enbart fått tag i mer eller mindre helt värdelösa länkar.

Hur gör man för att använda sig av en FPGA ?
Vad kan en sån göra ?
Hur programmerar man den ?
I vilka språk ?
Hur designar man sin FPGA ? (om man nu gör det)
Finns det någon smart (och kanske tillochmed inte snordyr) bok man kan köpa om detta ?

Tack på förhand.

Postat: 18 augusti 2005, 11:40:52
av mikrodator
Enkelt är en FPGA uppbyggad av massa små minnesblock. När du bränner in din konstruktion till FPGAn väljer du hur dessa block skall anslutas till varandra för att få önskad logisk funktion.

Du beskriver din konstruktion med ett hårdvarubeskrivande språk (HDL), störst i europa är VHDL som är baserat på ADA. På andra sidan atlanten är det främst det C-liknande Verilog som används. När du beskrivit konstruktionen i lämpligt språk använder du ett syntesverktyg för att skapa en nätlista och därefter använder du (finns nog alltid tillsammans med verktyget) ett program som mappar nätlistan till din krets.

En svensk bok för VHDL är "VHDL för konstruktion" ISBN 91-44-02471-1. För att börja labba lite med FPGA kan jag rekommendera Xilinx Spartan-3 Starter Kit som kan beställas på http://tinyurl.com/4z7yk

Xilinx erbjuder även en utvecklingsmiljö, Xilinx Webpack, som innehåller allt du behöver (förutom simuleringsmjukvara, men du kan ladda ner en friversion av ModelSim). Jag tror att de även kommer (iom de inte redan har det) släppa sitt EDK i en friversion ifall du vill börja bygga SoC.

Edit: De FPGAs som jag använt har alla programmerats via JTAG

Postat: 18 augusti 2005, 13:05:01
av jack

Postat: 18 augusti 2005, 13:16:48
av axelsonic
Åkej, en följdfråga. Vad är JTAG ?
(måhända en spånig fråga, men jag kan ju inte få mer än ett RTFM! ;) )
Jag googlar lite undertiden ngn bemödar sig med att svara och lära mig mer om FPGA.

[EDIT 13:21]
Så om jag nu har fattat detta rätt. FGPA är som en microprocessor, bortsett från att den inte är "programerbar" på samma sätt, utan att man skapar en jävlarns massa logiska enheter som gör det man vill, fast fortare och parallellt ?
[/EDIT]

Postat: 18 augusti 2005, 13:55:04
av jack
Jag vet inte heller vad JTAG är :)
Men Wikipeida och möjligen Susning brukar ha skapliga svar på det mesta.

http://en.wikipedia.org/wiki/JTAG

Postat: 18 augusti 2005, 14:27:29
av axelsonic
Fler spåniga frågor.
FPGA/VHDL. Är det ett "ansi"-format på detta språk, eller är det beroende på kompliatorn (eller vad man nu ska kalla den) ?

Jag tror att detta är precis det jag letar efter.

Det jag vill göra är att plocka data parallellt och därefter beroende på vad det är som kommer, skicka det (helst parallellt) till ett antal olika moduler.

Mao, får jag forska mer i ämnet. VHDL-programmering verkar för övrigt vara skitjobbigt =P .
Så smarta sidor med gratisböcker/tutorials är välkomna. Eller om ngn på forumet sätter upp en wiki med lite godis *hint hint* =) .

Postat: 18 augusti 2005, 15:21:02
av cyr
Om man inte ska vara för noga så tycker jag den bästa beskrivningen av en FPGA är en stor hög logiska grindar och vippor som kan kopplas ihop hur som helst för att bilda den funktion man vill ha. Allt från en liten OCH-grind till ett helt datorsystem med processor, minneskontroller, USB-interface, ethernet och allt möjligt annat.

För att slippa fundera ut varje liten koppling själv så använder man ett hårdvarubeskrivande språk som Verilog eller VHDL (ungefär som när man använder C istället för assembler till en uC).

Att skriva "programmet" är inte speciellt svårt om man bara låter bli att tänka "program" och istället tänker "hårdvarubeskrivning".

Jag kan leta reda på lite slides från kurser jag läst som handlar om grundläggande VHDL och hur man beskriver olika enkla kretsar om du vill.

Postat: 18 augusti 2005, 16:03:33
av axelsonic
Cyr: Många tack.

Jag blir nästan bara mer och mer förvirrad. Men å andra sidan kan det vara ett bra tecken, för det är först efter det förvirrade stadiet man kommer till full insikt... och sen ger man upp =) .

Men det här blir nog bra det. Jag såg lite VHDL på "internet" och blev hmm... kanske lite ehm, orolig. Hur som helst så kan jag behöva hjälp i tänket hårdvadubeskrivning som jag inte alls fattar hur det går till. Men det blir nog också bra... kanske...sen... någon gång...

Postat: 18 augusti 2005, 19:02:54
av mikrodator
axelsonic:

Din liknelse med microprocessorn känns inte helt riktig, jag tycker det känns som om den begränsar FPGAn lite. Du kan t.ex. bränna in en microprocessor i din FPGA.

VHDL är ett standardiserat språk och är inte särskilt svårt. Det är dock viktigt att ha en bra modell när man beskriver större konstruktioner. Många som är gamla i elektronikgamet går ner på så låg nivå att de beskriver enskilda vippor i VHDL för att sedan koppla ihop den med en massa strukturell VHDL. Börjar du göra det är du inne på fel spår. Boken jag tipsade om kan vara väl värd pengarna jämfört med online tutorials.

Edit: För lite vhdl-exempel kan du kolla slides på http://www.cs.chalmers.se/Cs/Grundutb/Kurser/svh/ där beskrivs också en två process-modell som gör att din kod får en fin struktur. Det blir också lättare att bygga stort. Jag bör slänga in en liten brasklapp för den modellen dock, många verkar få problem med timing.

Postat: 18 augusti 2005, 20:18:30
av axelsonic
mikrodator: Åkej. Jag skall läsa lite. Känner mig fortfarande lite förvirrad, men det går nog över.
Tack.

Postat: 18 augusti 2005, 23:12:20
av fatpo83
axelsonic,

jag känner igen mig när jag först kom i kontakt med VHDL och FPGA. Så som cyr sa är FPGA en attans sampling med grindar som tillsammans utgör programmet el. "beskrivningen" som det heter i VHDL. Det sägs till och med att VHDL är större än vanliga språk som C och C++!!

För att kunna programmera i FPGA måste man dock tänka på ett helt annat sätt. Vanligt programmerar med sekventiellt, men nu blir det parallellt!! Man nästan "kopplar" sin beskrivning, modul för modul.

I skolan gjorde vi en komplett mikroprecessor helt i VHDL. Gillar man hårvarunära beskrivning så är VHDL definitift intressant. Hursomhelst här är några länkar som jag hade nytta av (det finns tonvis med info):

http://csold.cs.ucr.edu/content/esd/labs/tutorial/
http://www.vhdl-online.de/tutorial/
http://www.seas.upenn.edu/~ee201/vhdl/vhdl_primer.html
http://www.eg3.com/fpga.htm

Postat: 19 augusti 2005, 08:15:07
av gille
Och om man nu tycker VHDL/FPGA är ett intressant ämne, var skaffar man ett vettigt utvecklingskit till ett bra pris?

Postat: 19 augusti 2005, 08:36:56
av Icecap
Jag hade besök av en säljare som berättade om Actel's kit till 2500:- med deras Libero IDE till ProASIC3 där man dels kan beskriva i språk, dels kan rita scheman. Gratis språk upp till o med 75K gates.

Finns en demoversion (timelimit) gratis.

Actel representeras av Actel Nordic

Postat: 19 augusti 2005, 08:53:32
av axelsonic
fatpo83: Många tack. Tur att jag inte har så mycket att göra på jobbet ;) .

Postat: 19 augusti 2005, 10:20:31
av cyr
Båda de stora märkena (Xilinx och Altera) har gratis programvara utan några allvarliga begränsningar. Xilinx har ett spartan3 starter kit för $99 som man kan köpa i deras webshop.