Hallo liebe Forengemeinde,
ich bin Anfänger auf dem Gebiet FPGAs und habe eine wichtige Frage:
Wenn ich mir die Entwicklerboards für FPGAs so anschaue, dann sehen sie,
im Unterschied zu Mikrocontrollerboards, irgendwie nicht so aus, als
könne man den FPGA programmieren (bzw. konfigurieren) und danach
abnehmen, um ihn in eine andere Schaltung einzubauen. Mir kommt es so
vor, als seien diese FPGA-Boards nur dazu da, um eine Schaltung mit den
Tastern und LEDs auszuprobieren. Ist das so oder täusche ich mich da und
es lassen sich FPGAs (trotz aller technischer Unterschiede) prinzipiell
genauso konfigurieren und dann verwenden wie Mikrocontroller?
Wie ist das dann mit verschiedenen Fassungen und Gehäusen? Gibt es dann
auch Adapterplatinen wie z.B. beim STK600 von Atmel?
Danke schon mal im Voraus!
>dann sehen sie, im Unterschied zu Mikrocontrollerboards, irgendwie nicht so >aus,
als könne man den FPGA programmieren (bzw. konfigurieren) und danach
>abnehmen, um ihn in eine andere Schaltung einzubauen
Das geht i.d.R. nicht.
Ist aber auch bei µC-boards ungewöhnlich.
Jedenfalls wenn der µC mehr als eine Handvoll Pins hat. :-)
Das würde überhaupt nichts bringen. FPGAs haben in der Regel* keine
internen Flash-Speicher. Die Konfig-Daten sitzen in einem exra Flash.
Außerdem haben die allermeisten FPGAs BGA Gehäuse, da ist das eh
schwierig mit Fassungen. Frequenzen von mehreren hundert MHz kommen noch
dazu.
Ein FPGA ist was grundsätzlich anderes als in µC, auch wenn beide aus
Silizium sind :)
*Ausnahmen gibts natürlich: Spartan 3AN, Lattice MachXO.
Man baut auf ein FPGA Board einen JTAG Anschluss drauf, damit kann man
dann das FPGA und das Flash beschreiben. Man brauch dazu nur einen
JTAG-Adapter von einem FPGA-Hersteller oder einen Nachbau
Danke für Eure Antworten.
So wie ich es jetzt verstehe - korrigiert mich wenn ich falsch liege -
dann ist so ein FPGA-Board also dazu da, um die eigene Spezifikation
einmal in echter Hardware auszuprobieren, also mit Logikgattern und
FlipFlops so weiter und eben nicht nur am PC. Also quasi eine erweiterte
Simulation, die so nah wie möglich an einen eventuellen fertigen IC
herankommt - mit allen Vor- und Nachteilen.
Wenn ich - nur mal angenommen - für eine Kleinserie eine eben solche
erfolgreich getestete Spezifikation als einbaufähigen IC haben will,
dann muss ich mich wohl an einen Halbleiterfertiger wenden, oder? Und da
habe ich dann wahrscheinlich sehr hohe Initialkosten und
Mindestabnahmemengen.
Weiß da jemand Näheres?
PS:
Versteht mich nicht falsch - ich werde bestimmt nicht als Neuling gleich
1000 ICs fertigen lassen, die ich dann womöglich in die Tonne treten
kann, weil ich einen Fehler gemacht habe. Ich frage mehr hypothetisch.
Bei einer solch kleinen Serie, ist es gewiss günstiger, auch in der
Produktion einen FPGA zu verwenden. Dafür sind die nämlich auch da, wenn
eine eigene Fertigung zu teuer wäre. Man muss halt nur einen Flash mit
der Konfiguration auf dem Board mit unterbringen.
Julian M. schrieb:> So wie ich es jetzt verstehe - korrigiert mich wenn ich falsch liege -> dann ist so ein FPGA-Board also dazu da, um die eigene Spezifikation> einmal in echter Hardware auszuprobieren, also mit Logikgattern und> FlipFlops so weiter und eben nicht nur am PC.
Nein, ein FPGA ist wie ein SPeichermodul im PC, das auch erst beim nach
dem Anlegen von Spannung "sein Programm" bekommt...
> Also quasi eine erweiterte> Simulation, die so nah wie möglich an einen eventuellen fertigen IC> herankommt - mit allen Vor- und Nachteilen.
Das machen einige (wenige)...
Julian M. schrieb:> lassen sich FPGAs (trotz aller technischer Unterschiede) prinzipiell> genauso konfigurieren und dann verwenden wie Mikrocontroller?FPGAs werden idR. beim Start aus einem Flashbaustein geladen und sind
danch konfiguriert.
> Wie ist das dann mit verschiedenen Fassungen und Gehäusen? Gibt es dann> auch Adapterplatinen wie z.B. beim STK600 von Atmel?
Wozu?
Julian M. schrieb:> Versteht mich nicht falsch - ich werde bestimmt nicht als Neuling gleich> 1000 ICs fertigen lassen, die ich dann womöglich in die Tonne treten> kann, weil ich einen Fehler gemacht habe.
Solche Mindestückzahlen wickelst du normalerweise nicht über ein ASIC
ab. Dafür ist ein FPGA genau das richtige.
Julian M. schrieb:> Wenn ich - nur mal angenommen - für eine Kleinserie eine eben solche> erfolgreich getestete Spezifikation als einbaufähigen IC haben will,> dann muss ich mich wohl an einen Halbleiterfertiger wenden, oder?
Frag einfach mal bei NEC an.
> Und da habe ich dann wahrscheinlich sehr hohe Initialkosten und> Mindestabnahmemengen.
Aber unter 50000 ist die Sache eigentlich witzlos.
> Weiß da jemand Näheres?
Es gab/gibt Migrationspfade vom FPGA auf einen ASIC. Und der Trick ist,
dass du dann erst mal mit der richtigen Hardware dein Produkt anfahren
kannst, und danach auf das "billige" ASIC umsteigen.
Was genau willst oder sollst du eigentlich machen? Wie schon mehrfach
gesagt, FPGAs sind SRAM-basiert, programmieren und ausbauen ist sinnlos.
Du brauchst fast immer den externen Flash. FPGA Demoboards sind zur
Demonstration der Leistungsfähigkeit, besonders bei neuen FPGAs und zur
Beschleunigung der Entwicklung eigener Boards. Die Boards haben alles
mögliche an Peripherie drauf, damit man so viel wie möglich Features
testen kann (PCIe, GIBit LAN, USB....), außerdem Erweiterungs-Stecker
für eigene Hardware. Somit ist man in der Lage, relativ schnell die
eigene Zielhardware zu realisieren, ohne erst monatelang das
erforderliche 8-Lagen Board zu designen. Außerdem gibts durch die Boards
gleich Anregungen und Vorschriften, wie spezielle Sachen zu routen sind,
wie die externen Komponenten angeschlossen werden usw.
Also schreib doch erst mal, was du eigentlich machen sollst oder willst.
Julian M. schrieb:> Danke für Eure Antworten.>> So wie ich es jetzt verstehe - korrigiert mich wenn ich falsch liege -> dann ist so ein FPGA-Board also dazu da, um die eigene Spezifikation> einmal in echter Hardware auszuprobieren, also mit Logikgattern und> FlipFlops so weiter und eben nicht nur am PC. Also quasi eine erweiterte> Simulation, die so nah wie möglich an einen eventuellen fertigen IC> herankommt - mit allen Vor- und Nachteilen.
Njein, Prototyping ist eine selten gewordenen Anwendung von FPGA's.
FPGA's sind heute nicht mehr so teuer (40 € für nen Spartan-6 oder
weniger)
und man locker designs mit 100 MHz und mehr laufen lassen. Auch
Grosserien (Einbau-Navis Mercedes/BMW/Audi) werden mit FPGA's aufgebaut,
ASICs lohnen sich immer weniger (außer Mixed-Signal, LowPower
(Batteriebetrieb) und bei richtigen Grossserien (0.2M -1M).
FPGA's findest du heute in Medizintechnik, Industriee-Automatisierung,
basestations, Nicht-Massenmarkt Kommunikation (Avionik, Security).
Fpga Kuechle schrieb:> FPGA's sind heute nicht mehr so teuer
Und dann bietet auf Nachfrage jeder FPGA-Hersteller bei fertigem Design
auch Migrationspfade an:
http://www.xilinx.com/products/silicon-devices/fpga/easypath-6/index.htm
Hier werden teildefekte FPGAs oder solche, die das Timing nicht
einhalten und deshalb durch den Test fallen, weiterverwendet. Du darfst
dann aber nicht mehr sagen: Ich kann (weil FPGA) mein Design
nachträglich noch anpassen und Fehler beheben.
Lothar Miller schrieb:> Fpga Kuechle schrieb:>> FPGA's sind heute nicht mehr so teuer> Und dann bietet auf Nachfrage jeder FPGA-Hersteller bei fertigem Design> auch Migrationspfade an:> http://www.xilinx.com/products/silicon-devices/fpga/easypath-6/index.htm> Hier werden teildefekte FPGAs oder solche, die das Timing nicht> einhalten und deshalb durch den Test fallen, weiterverwendet.
Nicht verwechseln! Es gibt echte FPGA zu ASIC Migration und es gibt
diese Xilinx Pseudo-geschichte. Bei erstere gibt es zwei weitere
Varianten -> Konversation auf Logigelement Ebene und auf Gatterebene.
bei der logikelementgeschichte hat der ASIC dann ähnliche FPGA-ähnliche
Makrozellenzellen (z.B. LUT's die (maskenprogrammierbare) ROMS sind).
Dann kann man die netzliste nach der Synthese übernehmen. bei der
zweiten beginnt die Umsetzung schon mit der Synthese.
Diese Xilinx-Geschichte ist m. E. nicht besonders lohnenswert. 2004 hab
ich das mal durchgerechnet. Einrichtungskosten von einigen 10 k€ und
der Preisnachlass bewegte sich pro FPGA (Spartan-3) auf weniger als 1€.
MfG,
...ich denke, Julian M. hat da noch ein prinzipielles
Verständnisproblem:
FPGAs werden zwar durch RAM-Zellen konfiguriert, bringen aber immer
einen oder mehrere Mechanismen mit um nach dem Power-up konfiguriert zu
werden oder sich selber zu konfigurieren. Bei manchen ist ein
Konfig-Flash mit eingebaut oder man hängt es mit mehr (parallell-Flash)
oder weniger (serial-Flash) Pins an das FPGA. Dieses liest dann, nachdem
das Reset-Signal inaktiv wird, zunächst die Konfigurationsdaten vom
Flash in die RAM-Zellen und nimmt dann seine Arbeit auf. Dieser Vorgang
dauert normalerweise einige wenige Milisekunden und ist somit nach außen
kaum "spürbar". Das Konfig-Flash wird entweder extern programmiert
(parallel-Flash mit Sockel, heutzutage eher unüblich) oder während der
Produktion über (JTAG-)Adapter mit ein paar Pins.
Klarer jetzt?
Stefan Wimmer schrieb:> ...ich denke, Julian M. hat da noch ein prinzipielles> Verständnisproblem:>
Das denke ich auch...
Um das über Stefans (Korrekten) Beitrag hinaus noch weiterzuerklären
glaube ich das hier beim TE auch eine etwas "falsche" Vorstellung von
Entwicklungsboards auch auf µC Seite existiert.
Die Boards wie das STK500 von Atmel sind alles andere als "typisch" für
die Entwicklungsboard. Das STK500 ist eine Mischung aus
Programmiergerät, Test- und Minimaldemobard gedacht für absolute
Neueinsteiger.
Letzendlich ist das über die Programmierfunktion hinaus ja auch nicht
mehr als das was man sich auch in ein paar Minuten auf einer
Lochrasterplatine aufbauen kann.
Niemand der sich mehr oder weniger Professionell mit der µC Entwicklung
befasst programmiert ernsthaft seine Bausteine die er in die Geräte
einsetzt mit einem Demoboard. Da nimmt man dann schon einen richtigen
Adapter. Und erst Programmieren und dann umstecken ist sowieso "out".
Das macht man nur wenn es sich gar nicht anders realisieren lässt - weil
der Baustein es nicht unterstützt oder die Notwendigen Leitungen mit
Peripherie die zum Prog-Vorgang inkompatibel ist belegt werden musste.
Alles andere wird nach dem Bestücken "in Circuit" Programmiert.
Im Professionelleren Umfeld werden Demoboards genutzt wenn die Zielhard-
und Software viel komplexer ist als alles was man mal ebend so auf
Lochraster aufbaut. Wenn zum Beispiel eine Schaltung gleichzeitig
Ethernet, CAN und ein TFT-Touch Display betreiben soll.
Dann sucht man sich unter all den für einen selbst In frage kommenden
Herstellern ein Demoboard welches den Anforderungen am nächsten kommt.
Meist ist dann sogar noch einiges Mehr an Funktion vorhanden, da die
Hersteller mit einem Board ja ein weites Feld abdecken wollen und die
Kunden ja die unterschiedlichsten Wünsche haben.
Zu diesem DemoBoard gehören dann auch Beispielprogramme die damit schon
laufen. Der Entwickler hat also ein System vor sich das bereits in den
Grundlagen funktioniert.
Davon ausgehend beginnt man nun erst einmal seine eigene Anwendung zu
entwickeln und zu probieren ob das überhaupt so wie vorgestellt
realisiserbar ist. Da die HArdware garantiert funktioniert sind eine
MEnge fehlerquellen schon mal ausgeschlossen. Wenn man doch mal zweifelt
ob man vielleicht doch die Hardware jetzt "gekillt" hat spielt man das
Demoprogramm wieder auf und kann testen.
Irgendwann hat man einen Stand erreicht wo man auf dem Board nicht mehr
weiterkommt. Dann geht es ans HArdwaredesign. Dazu streicht man dann von
der Schaltung alles weg was man nicht braucht und übernimmt den REst
mehr oder weniger genau einfach für sein eigenes Produkt. Steht die
Zielhardware dann spielt man die Software auf die auf dem Demoboard
läuft und kann testen ob die auch auf der Zielhardware läuft. Tut sie es
nicht hat man ein Hardwareproblem und kann geziehlt nach dem Problem
suchen.
Man spart sich so eine Menge Zeit beim Suchen nach FEhlern wo man ohne
Board einfach nur rätseln würde ob die Software, die Hardware oder aber
beides Fehlerhaft ist.
Zudem kann man bereits Sachen testen -manchmal sogar ob es sich
überhaupt realisieren lässt- bevor auch nur ein einziger Widerstand
gelötet werden muss. Auch sind die Beispielprogramme explizit nicht nur
als DEMO gedacht sonder um direkt vom Entwickler als Ausgangsbasis
genutzt zu werden.
Bei Einfachstschaltungen wie auf dem STK500 spielt das keine große
rolle, aber es gibt nicht wenige so komplexe Demoboards wo ein
Entwickler erst einmal eine Woche Hardwaredesign machen muss um den
Stand zu erreichen den so ein Board schon bietet. Und dann ist es immer
noch virtuell und muss noch gefertigt werden. Wenn erst danach rauskommt
das der Ansatz falsch war ist viel viel Geld verdampft...
Für viele Dinge die Einsteiger machen oder selbst für einfache
Industriegeschichten braucht man sicher kein Entwicklungsboard. Fast die
ganze Bandbreite der 8Bit µC kann man realistisch bearbeiten ohne je ein
Dev. Board in die Hand zu nehmen. Aber je komplexer und Schneller die
Anwendungen werden um so wichtiger werden diese Boards. Im 32Bit µC
Bereich sind sie schon die REgel. Da hat man nicht selten auch schon mal
vier Layer Platinen usw.
Und im FPGA Bereich arbeitet wohl keiner Ernsthaft mehr ohne
Entwicklungshardware. Zumindest nicht bei völligen Neuentwicklungen.
Einzig wo bestehende Systeme abgeändert werden ist es auch üblich die
alten Systeme als Ausgangspunkt zu nutzen...
Wie schon von den Vorschreibern angedeutet:
Im FPGA Bereich hat man fast immer deutlich mehr als zwei Lagen.
Vierlagige Platinen sind nur bei kleinen FPGA noch machbar. Zweilagig
nur bei den kleinsten Vertretern und unter verzicht auf mögliche
Leistungsmerkmale. Die Großen fordern dann schon mal 8 und mehr Lagen.
Und das schon um nur mal ein Lämpchen leuchten zu lassen.
Deshalb sind hier selbst für einfache Sachen die Demoboards aktuell.
Man portiert also nicht den programmierten Chip, sondern man kopiert den
gesamten für einen selbst relevanten Schaltungsteil des Demoboards auf
sein Design und programmiert den dortigen Chip dann InCircuit.
Gruß
Carsten
OK, ich glaube ich habe das jetzt einigermaßen verstanden. Danke noch
mal.
Ich komme aus der Informatik und deshalb ist Elektrotechnik sowie diese
Art von Hardware Neuland für mich (wenngleich wir VHDL, Rechenwerke
(z.B. Addierer), FlipFlops, Register usw. im Studium behandeln).
Den Schluss, den ich daraus ziehe ist, dass es für einen Anfänger das
beste ist, sein Projekt auf einem fertigen FPGA-Board zu realisieren.
Dazu jetzt noch eine Frage:
Ist es mir möglich von einem PC aus via USB mit dem FPGA zu
kommunizieren? Gibt es da einen Treiber oder so etwas? Oder vielleicht
ein Projekt, das irgendwie einen FPGA mit einem Computer verwendet und
wo ich sehen kann wie sowas funktioniert. Ich meine jetzt nicht das
Konfigurieren, sondern anschließend während des "Betriebs".
Mein Ziel ist es, Berechnungen, die auf einer CPU oder einer GPU zu
langsam sind, auf einen FPGA auszulagern (quasi eine spezialisierte
ALU). Die gewonnenen Daten sollen dann allerdings wieder am PC
verarbeitet werden (denn hier kann ich dann eine GUI und anderen
Schnickschnack ganz einfach dazuprogrammieren). Dabei will ich natürlich
auch etwas lernen und ausprobieren, wie z.B. Pipelining.
Für einen Anfänger wäre eine (USB) basierte serielle Schnittstelle schon
mal genug Arbeit. Wenn es schneller gehen muss, dann vielleicht einen
schnelleren USB Controller wie Cypress FX2 oder FTDI FT232H.
Mich beschleicht irgendwie das Gefühl, dass du Bitcoins generieren
willst und mal gelesen hast, dass das mit FPGAs schnell geht. Irgendwie
klingt das alles so. Lös dich aber bitte auf jeden Fall von dem
Gedanken, ein FPGA sei so etwas, wie ein schneller µC.