FPGA hat gute Punkte wie viele E / A-Punkte, aber andererseits müssen Sie Dinge auf sehr niedrigem Niveau mit Flip-Flops und Pionieren in Bereichen denken, in denen die Dinge noch nicht ausgereift sind - siehe zum Beispiel diese Frage hier über Entwicklungstools auf FPGAs - das ist derzeit mein Verständnis! Jetzt wurde FPGA verwendet, um in Roboterhänden wie hier hervorragende Fingerfertigkeit zu erzielen . Jetzt vermarkten einige Leute FPGA für schnelles Prototyping und "zukunftsweisende" Designs wie hier . Ich verstehe sie nicht ganz: Wenn Sie nicht viele E / A-Punkte für Dinge wie Sensoren benötigen, warum sollten Sie FPGA für einen Roboter wählen? So
Wann sollte FPGA für ein Projekt in der Robotik ausgewählt werden?
Antworten:
Ich bin nicht sicher, was Sie in der verknüpften Frage zu Entwicklungswerkzeugen dazu bringt, zu denken, dass sie nicht ausgereift sind. Es ist wahr, dass die meisten von ihnen proprietär und nicht Open Source sind. Aber ich dachte, dass die Werkzeuge schon ziemlich ausgereift waren, als diese Frage vor drei Jahren gestellt wurde. Heute verfügen Xilinx , Altera und Lattice über frei verfügbare Entwicklungsumgebungen, die unter Windows und Linux mit 32- und 64-Bit-Unterstützung ausgeführt werden. Wenn Sie auf Open Source Icarus Verilog bestehen einiges leisten. Aber ich würde mich persönlich an die herstellerspezifischen Tools halten.
FPGAs sind mehr als nur eine Reihe konfigurierbarer Flip-Flops. Betrachten Sie die Altera NIOS II . Ein 32-Bit-Softcore-Prozessor, auf dem Linux ausgeführt werden kann. Kombinieren Sie Kommunikation und andere Peripheriegeräte von OpenCores oder Xilinx , Altera oder Lattice und Sie haben einen benutzerdefinierten Mikrocontroller mit allem, was Sie brauchen, und nichts, was Sie nicht brauchen. Sie können sogar C-Code für den NIOS II-Prozessor schreiben und bestimmte Funktionen direkt in der FPGA-Hardware implementieren wenn Sie die Geschwindigkeit benötigen. Ist das hoch genug für Sie zu denken?
FPGAs haben hohe Anfangsinvestitionskosten. Es ist jedoch billiger und einfacher, Funktionen später im Entwurfsprozess hinzuzufügen. Das ist es, was mit "vorausschauenden" Designs gemeint ist. Stellen Sie sich ein Projekt vor, bei dem Sie Ihrem Roboter einige zusätzliche Motoren hinzufügen möchten, aber auf Ihrem Mikrocontroller keine PWM-Generatoren mehr vorhanden sind. Wie geht's? Einen weiteren Mikrocontroller hinzufügen? Kaufen Sie separate PWM-Chips und verbinden Sie diese mit einer Kommunikationsschnittstelle? Was ist, wenn alle Ihre Kommunikationsschnittstellen verwendet werden? Bei einem FPGA ist dies fast ausschließlich ein Kopier- und Einfügevorgang. Es ist viel einfacher, billiger und schneller, ein Design so zu skalieren, dass es neue Funktionen enthält, ohne dass Sie mit einem FPGA so viel zusätzliche Hardware kaufen müssen.
Der wahrscheinlich größte Grund für die Verwendung eines FPGA ist jedoch die Geschwindigkeit. Ich spreche nicht von reiner Taktrate. Aber wenn viele Dinge gleichzeitig passieren müssen. Wie Gossamer bereits erwähnt hat, können FPGAs wirklich gut mit Parallelität umgehen. Filterdesigns profitieren besonders von dieser Art von paralleler Architektur. Wenn Sie einen sich schnell ändernden Sensor filtern und darauf reagieren müssen, benötigen Sie ein FPGA. Sie sind auch ziemlich gut in der Videoverarbeitung, da auch diese von der Parallelverarbeitung profitiert.
Nehmen Sie zum Beispiel diesen Hochgeschwindigkeits-Handroboter . Es muss das Video von der Hochgeschwindigkeits-Bildverarbeitungskamera (1000 Bilder pro Sekunde) sowie den Tastsensoren verarbeiten und durch die Manipulation zahlreicher Aktoren in nur wenigen Millisekunden reagieren. Diese Art von Projekt ist , wenn Sie benötigen FPGAs zu wählen.
quelle
Ich denke, es könnte ein Missverständnis darüber geben, was ein FPGA tatsächlich ist und wann es in Designs verwendet wird. Lassen Sie mich zuerst versuchen, diesen Teil zu erklären.
FPGAs und wann man eines haben möchte ...
Bei einem FPGA besteht die Gefahr der Vereinfachung, dass es sich nur um einen Prozessor handelt, der „rekonfigurierbar“ ist.
Warum sollte jemand einen "rekonfigurierbaren" Mikroprozessor wollen? Nun, weil es viel zu teuer ist, einen Siliziumprozessor herzustellen, um es sich für ein, zwei oder sogar zweihundert Chips leisten zu können. Sie müssten Tausende von Chips produzieren, um dies wirtschaftlich umzusetzen.
Da kein Design auf Anhieb fehlerfrei ist, muss ein Unternehmen auf der Siliziumroute mindestens zwei, wenn nicht sogar mehr Testläufe durchführen, und das alles zu enormen Herstellungskosten.
Dies bedeutet im Wesentlichen, dass nur sehr wenige kommerzielle Unternehmen daran interessiert sein werden, etwas anderes als Chips mit einer ausreichenden kommerziellen Anziehungskraft zu entwerfen und herzustellen.
Wenn Sie sich also ein brillantes Design einfallen lassen, das einen benutzerdefinierten Mikroprozessor rechtfertigt, ist dies möglicherweise der Fall versuchen , Ihre Idee zum Leben mit schmalem Budget zu bringen , indem sie in einem FPGA - Implementierung, wo der eigentliche Chip ist einfach eine Sammlung von Toren, und eine 'program' (normalerweise VHDL oder Verilog) ordnet diese Gatter in einem tatsächlichen Mikroprozessor an.
Aber das ist schon ein ganz anderer Weg (Mikroprozessor-Design!) ...
Was mich dazu bringt, das vorzuschlagen
... FPGAs sind für die Robotik nicht unbedingt erforderlich - zumindest von Anfang an
Was Sie für die Robotik benötigen, ist ein Prozessor . Ein FPGA ist nur eine spezielle Art von Prozessor (umkonfigurierbar).
Sie fragen, ob Sie "sollten"? Nun, das hängt von Ihrem Wissen und Ihren tatsächlichen Interessen ab - zuerst das Mikroprozessordesign oder zuerst die Robotik?
Wenn Mikroprozessoren Ihre Leidenschaft sind, dann auf jeden Fall! Und Robotik ist ein großartiger Anwendungsbereich für kundenspezifische Mikroprozessoren - vielleicht ein Vision-Cortex mit vielen parallelen Entscheidungswegen, die direkt in der Hardware behandelt werden, oder eine spezielle Tensormultiplikation in der Hardware - im Grunde alles, was generische Prozessoren von der Stange nicht gut handhaben können.
Aber wenn Sie Mikroprozessorkonstruktionen in FPGAs verwenden möchten, dann müssen Sie natürlich über all das geringe Wissen verfügen, das Sie erwähnen, und vieles mehr - denn im Grunde werden Sie Ihren eigenen Prozessor entwerfen. Was eigentlich nichts mit Robotik zu tun hat, obwohl Ihre Zielanwendung möglicherweise Robotik ist.
Die meisten Designer können wahrscheinlich einen vorhandenen Prozessor finden, der das meiste leistet, was sie jemals brauchen werden.
Ich denke, Sie brauchen wahrscheinlich kein FPGA.
Eine Einstiegs-Roadmap: von kommerziellen Fähigkeiten zu (vielleicht) einem FPGA ...
Meiner Meinung nach besteht das erste Ziel darin, all Ihre kreativen Konzepte in einen funktionierenden Roboter zu integrieren (eine ziemlich intensive Herausforderung an sich).
Wenn Sie feststellen, dass Ihr Design spezifische und erhebliche Verarbeitungsengpässe aufweist, besteht das nächste Ziel in der Optimierung der Auswahl / des Designs Ihrer Prozessoren, die noch im Handel erhältlich sind. Vielleicht größer, schneller (Kompromiss mit Stromverbrauch, Wärmeabgabe). Möglicherweise kleinere, dedizierte Chips, die bestimmte Aufgaben erledigen und mit dem Haupthirn kommunizieren (Kompromiss zwischen Algorithmus und Logik).
Nur wenn es Funktionen gibt, mit denen Sie keine kommerziellen Chips fertigbringen können, können Sie einen speziellen Prozessor in einem FPGA implementieren, da es an diesem Punkt ganz klare Vorteile gibt, die Sie sich erhoffen, wenn Sie Ihren eigenen rollen Sie können sich darauf konzentrieren, diese Funktionen mit den richtigen Schnittstellen für den Rest Ihres Designs zu implementieren.
Andernfalls werden Sie wahrscheinlich von Ihrem Hauptziel abkommen (ich gehe davon aus, dass es tatsächlich ein Ziel ist, einen Roboter zu bauen!)
Fazit: FPGAs sind eine Ablenkung vom Einstieg in die Robotik - bis Sie ein gutes Stück auf dem Weg in die Robotik sind - und haben auf dem Weg in die digitale Elektronik / Mikroprozessor-Entwicklung einige starke Einbußen hinzugewonnen.
quelle
Nachdem ich in Robotikprojekten sowohl mit FPGAs als auch mit Mikrocontrollern gearbeitet habe, würde ich jetzt tatsächlich sagen: Mit was auch immer die Person, die die Aufgabe ausführt, die meisten Erfahrungen hat. Wenn Sie beide gleich gut kennen, würden Sie sich die Frage nicht stellen. Wenn Sie es auch nicht genau wissen, sollten Sie folgende Punkte beachten:
Was auch oft verwendet wird, sind Hybridlösungen. Entweder mit zwei Chips, also einem Mikrocontroller für den Programmcode, und einem FPGA für IO oder einer anderen Aufgabe. Es gibt auch eine Reihe von FPGAs, in die tatsächlich ein Mikrocontroller integriert ist.
Ich wäre nicht so hart im Umgang mit FPGAs wie bei einigen anderen Posts, würde aber auch allgemein argumentieren, dass Sie besser mit einem Mikrocontroller oder besser noch mit eingebetteten PCs zurechtkommen, wenn Sie Ihre VHDL nicht genau kennen.
quelle