Vergleichen Sie die Implementierung eines einfachen Automatisierungsdesigns auf einer MCU mit einem FPGA/CPLD

Ich arbeite seit den 90er Jahren mit MCUs und habe mich kürzlich mit den Chips der Spartan6-Serie von Xilinx in die FPGA-Szene gewagt. Angenommen, ein einfaches Fabrikautomatisierungsdesign mit Sensoren und Motoren und etwas Intelligenz, um alles miteinander zu verbinden, auf welcher Art von Gerät könnte ich das Design schneller und einfacher fertigstellen, MCUs oder FPGAs? Kleine oder "offensichtliche" Punkte werden ebenfalls geschätzt, da ich im Allgemeinen neu bei FGPA bin.

Selbst eine FPGA-Lösung würde mit ziemlicher Sicherheit auch einen Prozessor beinhalten, entweder neben dem FPGA, darin implementiert, oder in einem angeschlossenen größeren Computer. Gespeicherte Programmstrukturen eignen sich viel eher für die Implementierung der komplexen Teile von Algorithmen als spezialisierte Logik- oder Zustandsmaschinen, sodass Sie die späteren nur für Dinge aufheben, die schnell (oder massiv parallel), aber einfach sein müssen.
Tolle Antworten von Richard & Martin unten. Es kann verlockend sein, eine neu erlernte Fähigkeit oder Technologie auf das nächste Problem anzuwenden, aber in diesem Fall (aus Gründen, die von den Herren oben beschrieben wurden) denke ich, dass eine MCU der richtige Weg ist.

Antworten (2)

Es gibt keinen Grund, FPGAs zu verwenden, es sei denn, Sie müssen es. Selbst zwei ähnlich talentierte Ingenieure im MCU- und FPGA-Bereich würden eine MCU für eine relativ einfache Automatisierungsaufgabe verwenden.

Pro MCU:

  • MCUs haben normalerweise alle Peripheriegeräte für die Außenwelt einsatzbereit
  • Das Kompilieren dauert Sekunden (FPGAs dauern Minuten bis Stunden)
  • Es gibt eine Größenordnung (oder zwei!) weitere Ingenieure, die helfen oder dort weitermachen können, wo Sie aufgehört haben. (Für einen lustigen, nicht unbedingt statistisch gültigen Vergleich - vergleichen Sie die Anzahl der Fragen und Antworten zu Stack Overflow für C vs. VHDL oder FPGA . )

Verwenden Sie ein FPGA, wenn Sie müssen, weil:

  • Die erforderliche Rechenleistung kann mit einem Mikroprozessor nicht in Bezug auf Leistung, Gewicht, Größe oder Kostenbudget erfüllt werden
  • Es gibt harte Echtzeitfristen, die mit Software nicht garantiert werden können (z. B. Reaktionszeiten im Mikrosekundenbereich).
  • Die Verwendung von FPGA-Logik kann es einfacher machen, belastbare Aussagen über Reaktionszeiten zu machen
  • Sie können große Einsparungen bei Kosten, Strom usw. erzielen, indem Sie benutzerdefinierte Datentypen verwenden (wie beispielsweise ein 12-Bit-Gleitkomma).

Oder:

  • Deine Aufgabe sagt dir, dass du es tun musst :)
+1 Für die 3. Kugel mit "einer Größenordnung (oder zwei!) Mehr Ingenieure, die helfen können". Das letzte Mal, als ich dieses Kriterium verwendet habe, war es für die Wahl der Programmiersprache.

Einige Gründe, warum ich glaube, dass die Verwendung eines Mikrocontrollers (MCU) für Sie einfacher wäre:

  • Du hast Erfahrung mit MCUs. Das Erlernen der Besonderheiten eines neuen Chips braucht Zeit.
  • MCUs haben eingebaute Peripheriegeräte, die Sie selbst auf einem FPGA implementieren (oder kaufen) müssten. Zum Beispiel haben die meisten MCUs einen I2C-Anschluss, der nützlich ist, wenn Sie von einem I2C-Sensor lesen. Außerdem verfügen die meisten MCUs über eine Art Analog-Digital-Wandler und einen Pulsweitenmodulator, die beide höchstwahrscheinlich für eine gute Motorsteuerung erforderlich sind.
  • Komplexe Algorithmen lassen sich in C einfacher ausdrücken als in VHDL (ich habe keine Erfahrung mit Verilog).
  • Verzögerungen im menschlichen Maßstab sind in einer MCU einfach, nehmen jedoch erhebliche Ressourcen in einem FPGA in Anspruch.
  • Für einfache Fabrikautomatisierung sind die kurzen Standard-Bitbreiten und langsamen Geschwindigkeiten von MCUs höchstwahrscheinlich ausreichend.

In jedem Fall ist es notwendig, mit dem von Ihnen geschriebenen Code vorsichtig umzugehen, damit er in allen Situationen, insbesondere unter gefährlichen Bedingungen, ordnungsgemäß funktioniert.