FPGA, förklaring och hjälp
FPGA, förklaring och hjälp
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.
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.
-
- Inlägg: 14
- Blev medlem: 21 juli 2005, 02:26:15
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
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
Å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]
(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]
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

Men Wikipeida och möjligen Susning brukar ha skapliga svar på det mesta.
http://en.wikipedia.org/wiki/JTAG
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* =) .
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* =) .
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.
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.
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...
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...
-
- Inlägg: 14
- Blev medlem: 21 juli 2005, 02:26:15
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.
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.
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
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