Vraag:
Hoe kies je een FPGA?
fpganewbie
2009-11-28 23:38:37 UTC
view on stackexchange narkive permalink

Ik moet digitale signaalverwerking uitvoeren op 8 analoge lijnen bij 10 kHz. Dit is nogal een veeleisende taak, en ik dacht dat een FPGA de juiste aanpak zou kunnen zijn. Ik kijk momenteel naar dev-kits van Xilinx, en aangezien ik geen ervaring heb met FPGA, vind ik het erg moeilijk om te weten hoe ik de juiste chip moet kiezen. Ik stelde me voor dat ik een dev-kit zou gebruiken en deze zou uitbreiden met behulp van de I / O-pinnen om verbinding te maken met een 8-kanaals A / D-chip en 8-kanaals D / A-chip.

Wat zijn de verschillen tussen het gebruik van Spartan, Virtex, Altera, enz.? Ik weet niet eens hoe ik moet inschatten hoeveel poorten ik nodig zal hebben. Zijn daar vuistregels voor? Hoe zorg ik ervoor dat de kloksnelheid voldoende is (als functie van het aantal optellingen en vermenigvuldigingen). Is het moeilijk om drijvende-kommabewerkingen op een FPGA uit te voeren, moet ik me houden aan vaste-kommawiskunde? Wat is de beste manier om te beginnen?

Ik heb een oplossing nodig die programmeerbaar is met Linux. Xilinx biedt dit, maar ik weet niet zeker wat de beperkingen zijn.

Het zou veel helpen om te weten wat voor soort algoritmen u moet implementeren. De kans is groot dat je helemaal geen FPGA nodig hebt, wat je veel ontwikkeltijd scheelt ;-)
Ik ben het eens met geschema; je hebt misschien geen FPGA nodig. Misschien is een DSP een betere oplossing. In ieder geval zijn ze gemakkelijker om mee aan de slag te gaan als je alleen ervaring hebt met UC's. FPGA's zijn heel anders!
Acht antwoorden:
#1
+13
Jason S
2009-11-29 00:42:06 UTC
view on stackexchange narkive permalink

Ik zou geen FPGA gebruiken.

Je zegt dat je geen ervaring hebt met FPGA's, en toch geïnteresseerd bent in digitale signaalverwerking op een FPGA ... numerieke manipulatie + signaalverwerking zijn al moeilijk genoeg om direct op een computer / DSP / microprocessor te komen, waar de programmeertools conventionele programmering zijn. Het lijkt mij dat het gebruik van een digitaal signaalverwerkingsproject voor een eerste FPGA-project waarschijnlijk een recept is voor frustratie.

Als je FPGA's wilt leren, probeer dan iets te doen dat meer geschikt is voor de ontwikkeltools, zoals state machines of communicatiepakketverwerking.

Voor een DSP-project zoals wat je hebt beschreven, zou ik een DSP of een Cypress PSOC of een Analog Devices Microconverter (= microcontroller met ADC + DAC ingebouwd).

(full disclosure, wat enige context geeft voor mijn advies: ik gebruik zelf geen FPGA's. Ik heb in zeldzame gevallen programmeerbare logica = PLD's gebruikt. Mijn officemate gebruikt FPGA's vaak, en ik heb genoeg VHDL / Verilog-code over zijn schouder zien kijken om te weten dat het goed geschikt is voor bitmanipulaties. Hij is een doorgewinterde ingenieur met veel ervaring met FPGA's; in een recent gesprek met hem waar hij wat vrij eenvoudige wiskunde aan het doen was op gehele getallen met verschillende bitbreedtes, vertelde ik hem dat hij tekenuitbreiding moest doen op de s horter bit breedte nummer om het correct af te trekken, en hij kreeg deze blik op zijn gezicht, zoals "oh man, ik wil geen tekenverlenging hoeven te doen ..." Optellen en aftrekken is niet erg moeilijk in een FPGA . Naast optellen en aftrekken, moet u echt de tools en bibliotheken kennen. En floating-point verwerking ??!? !! ??!? !!?)

[MyHDL] (http://www.myhdl.org/doku.php) probeert een aantal van deze problemen op te lossen.
Ik denk niet dat FPGA's moeilijker te gebruiken zijn dan micro's, ze hebben gewoon een andere reeks kanttekeningen.
#2
+10
Vincent P
2009-12-01 01:25:47 UTC
view on stackexchange narkive permalink

Ze zijn allemaal redelijk goed. Je hebt niet al te veel uit de FPGA nodig om zoiets eenvoudigs te doen, dus elke beginnende FPGA (zoals de Spartan-3-lijn) zou moeten volstaan.

Maar een waarschuwing, het programmeren van een FPGA is een LOOOOTTTTTT anders dan zoiets als C ++, C, perl ... Ik zou willen voorstellen om te beginnen met verilog omdat het waarschijnlijk gemakkelijker is om over te stappen naar ... VHDL lijkt erg COBOL, maar verilog lijkt meer op moderne programmeertalen. / p>

Over de kloksnelheid: maak je er geen zorgen over. Het voordeel van het gebruik van FPGA's is dat ze enorm parallel zijn, dus hoewel een klok van 50 MHz volgens de huidige normen belachelijk traag lijkt, moet je er rekening mee houden dat ze honderden dingen tegelijk kunnen doen, terwijl een 'normale' CPU op 3GHz dingen in de wachtrij moet plaatsen een voor een omhoog. Dit is het voordeel van FPGA: parallellisme. Dus voor iets speciaals hoeft u zich niet zo druk te maken over snelheid.

Maar net als de andere opmerking is het een heel ander paradigma. De leercurve is steil, maar als je de taal eenmaal begrijpt, is het allemaal logisch (zorg ervoor dat je de bouwstenen begrijpt).

Veel plezier met FPGA :)

VHDL is eigenlijk gebaseerd op Ada! Leon
Overweeg bij het kiezen van Verilog of VHDL ook de taal in het licht van het feit dat het een investering is in uw toekomstige verhandelbaarheid. In de VS is Verilog populairder in IC / chip-ontwikkeling dan VHDL, dus het kennen van Verilog (en de verbeterde versie, System Verilog) zal waarschijnlijk een betere langetermijninvestering zijn. Het lijkt er ook op dat alle grote EDA-bedrijven investeren in verilog en systeemverilog, terwijl VHDL niet veel aandacht krijgt. (getuige VCS gemengde simulatie met vhdl versus VCS verilog simulator prestatieverschillen). (que the flaming) Ja, je kunt beide leren, maar waarom zou je geen prioriteiten stellen?
U kunt het in beide talen schrijven. Ik denk dat de Xilinx-tools Verilog en VHDL aankunnen, zelfs in hetzelfde project. FWIW, ik ben in de VS en ik heb Verilog nog nooit gebruikt.
"VHDL is erg COBOL-achtig". Geen miljoen mijl!
#3
+9
davr
2009-12-22 02:43:35 UTC
view on stackexchange narkive permalink

Een tijdje geleden heb ik een vergelijkingstabel van FPGA-borden op instapniveau samengesteld van de twee FPGA-leveranciers Xilinx en Altera. Ze zijn de twee belangrijkste spelers in FPGA's, een beetje zoals PIC vs AVR of Sony vs Nintendo. Ze bieden de beste waar voor je geld. Er zijn andere leveranciers die specifieke functies bieden, maar meestal betaalt u meer of verliest u functies / verwerkingskracht.

Ik weet dat dit niet direct uw specifieke vraag beantwoordt, maar het zou nuttig moeten zijn om iedereen die aan de slag wil met een FPGA-bord.

#4
+7
trondd
2010-11-03 14:52:59 UTC
view on stackexchange narkive permalink

Zoveel vragen; laten we proberen ze in de volgende volgorde te beantwoorden:

  1. Benodigde middelen voor signaalverwerking: om te bepalen welke hardware je moet gebruiken / bouwen, heb je een idee nodig van de hoeveelheid verwerking die u op de signalen in kwestie wilt doen. 8 kanalen @ 10 kHz is geen erg hoge gegevenssnelheid, dus tenzij uw vereisten heel bijzonder zijn, zouden de meeste FPGA's en DSP's de gegevens moeten kunnen verwerken.
  2. Hoe kies ik het juiste apparaat? Op basis van de vereisten van uw signaalverwerking, zou u moeten kunnen achterhalen welk apparaat nodig is voor uw toepassing. Kernpunten zijn geheugenvereisten, zijn harde vermenigvuldigers vereist, speciale IO-overwegingen, enz. De meeste FPGA-leveranciers hebben tools (webgebaseerd) waarmee u hun portfolio kunt doorzoeken op basis van dergelijke factoren.
  3. Hoe kan ik aan de slag met DSP? DSP's zijn gewone computers die gewoonlijk SIMD-instructies [Single Instruction, Multiple Data] hebben die relevant zijn voor signaalverwerking. Om te beginnen moet je de beperkingen van "embedded" hardware en een C-compiler begrijpen, zodat je je code kunt testen op een gewone pc.
  4. Hoe ga ik aan de slag met FPGA's? FPGA's zijn geprogrammeerd in een Hardware Description Language. Deze verschillen aanzienlijk van opeenvolgende talen zoals C of Java. Om voor FPGA te kunnen ontwikkelen, moet u de gelijktijdige aard van echte hardware begrijpen. De tools die je nodig hebt om aan de slag te gaan, is een HDL-simulator zoals Simili (gratis voor kleine ontwerpen) of Modelsim. Hiermee kunt u uw code op pc simuleren. Daarna heb je een leverancierspecifieke synthesetool nodig die je HDL-code compileert in een bitbestand dat wordt gebruikt om de FPGA te configureren. Als u een starterkit krijgt van Altera, Actel of Xilinx, maakt al het benodigde gereedschap deel uit van de kit.
  5. Linux-ondersteuning: FPGA-tools van de meeste leveranciers draaien op Linux, maar in het DSP-veld ben je meestal gedwongen om alleen Windows-compilaties te gebruiken, tenzij je DSP wordt ondersteund door GCC (Blackfin van Analog en verschillende modellen van Texas Instruments zijn).
+1 voor "8 kanalen @ 10 kHz is geen erg hoge gegevenssnelheid" - ik kan niet geloven dat nog niemand dat heeft gezegd.
Niet als hij 8-kanaals FFT doet ...
DSP's zijn vaak single-threaded parallelle verwerkingseenheden die elk een andere instructie kunnen uitvoeren (in tegenstelling tot SIMD waar alle eenheden dezelfde instructie delen).
#5
+4
Shawn J. Goff
2009-12-01 18:40:18 UTC
view on stackexchange narkive permalink

Een man genaamd Anthony Burch heeft een serie video's over FPGA's samengesteld. Een van de gratis versies bevat informatie over hoe u een FPGA kiest.

#6
+4
ajs410
2010-11-03 20:14:33 UTC
view on stackexchange narkive permalink

Vrijwel elke FPGA-leverancier zal het doen. Het is net als Intel versus AMD ... er zijn verschillen tussen Xilinx en Altera, maar ze zijn opmerkelijk vergelijkbaar in termen van functionaliteit. Koop welke ontwikkelkit dan ook in uw prijsklasse - ik vond Spartan 3's van Xilinx persoonlijk leuk - en ga ermee aan de slag.

Wat het aantal poorten betreft, de dev-kit zal meestal erg groot zijn, hopelijk veel groter dan je nodig hebt. Wanneer u zich klaarmaakt om naar uw eigen PCB te verhuizen, zullen de synthesetools voor u inschatten hoeveel poorten uw ontwerp nodig heeft. U kunt dit gebruiken om een ​​kleinere FPGA te selecteren, hoewel u er misschien achter komt dat pakketbeperkingen (QFP versus BGA) ook een belangrijke rol spelen.

Met de juiste ontwerptechnieken is de kloksnelheid geen probleem . In feite kun je meestal een kristal met relatief lage snelheid gebruiken, zoals 12 MHz, en de FPGA kan een veel snellere klok (of veel snellere klokken!) Synthetiseren. Als je je echt zorgen maakt over vermenigvuldigen, weet ik dat de Virtex4-serie speciale DSP-segmenten die deze berekeningen kunnen versnellen. Maar FPGA's zijn enorm parallel, dus je hebt niet te veel MHz nodig om een ​​hoop werk te doen.

Ik zou zeker vasthouden aan een vast punt als je kunt. Het is mogelijk om drijvende komma te doen, en Xilinx heeft zelfs een kerngenerator die je een drijvende-komma-kern geeft, maar een vast punt zal veel sneller zijn en zal veel minder poorten vereisen. Een ander voordeel is dat je een vreemd vast punt kunt maken; je kunt zoveel bits gebruiken als je wilt, het hoeft geen kracht van 2 bits te zijn en / of je kunt grotere vaste punten gebruiken voor tussenliggende fasen.

De beste manier om aan de slag met FPGA's? Zoek een klas of een seminar of zoiets. Als u niet bekend bent met de technologie, zullen de ontwikkeltools erg verwarrend zijn, omdat er veel mis kan gaan. Tools voor MCU's zijn veel vergevingsgezinder en vereisen minder intimiteit met de onderliggende architectuur.

Oh, en je zou het gegevensblad van de FPGA van voren naar achteren moeten lezen.

#7
  0
Leon Heller
2009-12-01 21:48:48 UTC
view on stackexchange narkive permalink

Bekijk XMOS

Ze kunnen in veel toepassingen worden gebruikt om FPGA's te vervangen.

#8
  0
mikeselectricstuff
2010-11-04 14:04:06 UTC
view on stackexchange narkive permalink

Als je het aantal poorten wilt schatten, hoef je nog geen hardware te kopen - de belangrijkste FPGA-makers hebben gratis software en velen zullen appnotes hebben over het doen van dsp. U kunt dingen ontwerpen en simuleren zonder hardware, en de software zal u vertellen welke bronnen er worden gebruikt. Voor signaalverwerking is echter normaal gesproken een dsp de eerste stap, en FPGA alleen als u geen rekenkracht meer heeft.



Deze Q&A is automatisch vertaald vanuit de Engelse taal.De originele inhoud is beschikbaar op stackexchange, waarvoor we bedanken voor de cc by-sa 2.0-licentie waaronder het wordt gedistribueerd.
Loading...