Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Industrial Internet of Things >> Eingebettet

FPGA-Hardware-Ressourcen für High-Performance Embedded Systems

FPGA-Hardware-Ressourcen für High-Performance Embedded SystemsAnmerkung der Redaktion: Da fortgeschrittene Algorithmen für smarte Produktdesigns weiterhin entstehen, finden sich Entwickler oft dabei, eingebettete Systeme zu implementieren, die die damit verbundenen Verarbeitungsanforderungen erfüllen können. FPGAs können die erforderliche Performance liefern, aber FPGA-Design galt lange als Domäne von FPGA-Programmier-Experten. Heute jedoch haben die Verfügbarkeit leistungsfähigerer FPGAs und effektiverer Entwicklungsumgebungen die FPGA-Entwicklung breit zugänglich gemacht. In diesem Auszug aus Kapitel 4 von *Architecting High‑Performance Embedded Systems* bietet der Autor eine umfassende Übersicht über FPGA-Geräte, Implementierungssprachen und den Entwicklungsprozess sowie eine detaillierte Anleitung, wie man FPGAs im eigenen Design einsetzt.
1: Hardware-Ressourcen (dieser Artikel)
2: Implementierungssprachen
3: Entwicklungsprozess
4: Projekt erstellen
5: Implementierung

Adaptiert aus *Architecting High-Performance Embedded Systems*, von Jim Ledin.


Ihr erstes FPGA-Programm entwickeln

Dieses Kapitel beginnt mit einer Diskussion über den effektiven Einsatz von FPGA-Geräten in Echtzeit-Eingebetteten Systemen und fährt fort mit einer Beschreibung der funktionalen Elemente, die in Standard-FPGAs enthalten sind. Es führt die Bandbreite der FPGA-Design-Sprachen ein – einschließlich Hardware Description Languages (HDLs), Blockdiagramm-Methoden und gängigen Software-Programmiersprachen wie C und C++ – und gibt einen Überblick über den FPGA-Entwicklungsprozess. Das Kapitel schließt mit einem vollständigen Beispiel eines FPGA-Entwicklungszyklus, von der Systemanforderungs-Spezifikation bis zu einem voll funktionsfähigen System, implementiert auf einem Low-Cost FPGA-Development-Board.

Nach Abschluss dieses Kapitels werden Sie verstehen, wie FPGAs in Echtzeit-Eingebettete-Systemarchitekturen angewendet werden können, die Schlüsselkomponenten eines FPGA-ICs, die Programmiersprachen für FPGA-Algorithmen und die schrittweise Sequenz für die Entwicklung einer FPGA-basierten Applikation. Sie werden auch ein vollständiges FPGA-Entwicklungsbeispiel auf einem Low-Cost-Board mit kostenlosen FPGA-Software-Tools durchlaufen.

Wir werden folgende Themen behandeln:

Technische Anforderungen

Die Dateien für dieses Kapitel sind verfügbar unter https://github.com/PacktPublishing/Architecting-High-Performance-Embedded-Systems.

FPGAs in Echtzeit-Eingebettete-Systemdesigns einsetzen

Wie im Abschnitt Elements of FPGAs von Kapitel 1 skizziert, enthält ein typisches FPGA-Gerät eine große Anzahl an Lookup-Tables, Flip-Flops, Block-RAM-Elementen, DSP-Slices und anderen Komponenten. Während es nützlich ist, die detaillierten Fähigkeiten jeder Komponente zu verstehen, ist die kritischste Überlegung, dass eine bestimmte FPGA-Teilenummer eine endliche Anzahl jeder Ressource enthält und ein Design diese Limits nicht überschreiten darf, wenn es auf dieses spezifische Modell abzielt.

Es ist produktiver, den Entwicklungsprozess aus der Perspektive der Statement of Requirements des eingebetteten Systems zu betrachten. Sie können beginnen, indem Sie ein Modell anvisieren, das diese Anforderungen bequem erfüllt. Während das Design fortschreitet, können Sie auf ein Ressourcenlimit stoßen oder feststellen, dass ein erforderliches Feature fehlt. An diesem Punkt ist die Auswahl eines fähigeren Targets und die Fortsetzung der Entwicklung unkompliziert. Umgekehrt, wenn Sie feststellen, dass das gewählte FPGA überschüssige Ressourcen enthält, kann der Wechsel zu einem kleineren Teil Kosten, Pin-Anzahl, Package-Größe und Stromverbrauch reduzieren.

Der Wechsel des targeteten FPGA innerhalb derselben Familie ist typischerweise nahtlos, mit vollständig wiederverwendbaren Design-Artefakten. Der Wechsel von Familien oder Vendors kann zusätzlichen Aufwand erfordern. Die Kernaussage ist, dass das spezifische Modell nicht zu Beginn gewählt werden muss; fokussieren Sie sich zuerst auf die Validierung des FPGA als tragfähige Lösung, dann wählen Sie einen geeigneten Vendor und Device-Familie.

Beispielprojekte in diesem Buch nutzen Xilinx' Vivado Tool-Familie. Während eine Vivado-Lizenz für einige Xilinx-Familien erforderlich ist, werden die hier verwendeten Artix‑7-Geräte kostenlos unterstützt. Artix‑7 kombiniert hohe Performance, niedrigen Stromverbrauch und reduzierte Systemkosten. Ähnliche Familien und Tool-Suites sind von anderen Anbietern verfügbar.

FPGA-Entwicklung ist ein involvierter Prozess, der eine Reihe von Analyse- und Designdaten erfordert. Um die Diskussion konkret zu halten, werden wir Vivado durchgehend in diesem Buch verwenden. Sobald Sie diese Techniken beherrschen, können Sie sie auf Tools anderer Anbieter anwenden.

Die folgenden Abschnitte diskutieren wichtige differenzierende Merkmale von FPGA-Familien und -Modellen, einschließlich Block-RAM-Kapazität, I/O-Signaltypen, spezialisierten On-Chip-Ressourcen und der Präsenz eingebetteter Prozessorkerne.

Block RAM und Distributed RAM

Block RAM implementiert dedizierte Speicherbereiche innerhalb eines FPGAs. Ein Speicherbereich wird durch seine Bitbreite (typischerweise 8 oder 16 Bit) und Tiefe (Anzahl der Speicherplätze) spezifiziert. Gesamter Block RAM wird üblicherweise in Kilobit (Kb) ausgedrückt und variiert über Familien und Modelle.

Viele FPGAs bieten auch Distributed RAM, aufgebaut aus Lookup-Table-Logik zu kleinen 16-Bit-Segmenten. Diese können bei Bedarf zu größeren Blöcken kombiniert werden. Distributed RAM eignet sich ideal für temporäre Speicherung von Zwischenergebnissen, während Block RAM für Caches oder I/O-Puffer verwendet wird.

Block RAM kann Single-Port oder Dual-Port sein. Dual-Port RAM mit zwei Read/Write-Ports ist besonders nützlich, um Subsysteme zu verbinden, die mit unterschiedlichen Taktraten arbeiten, und ermöglicht Datentransfer ohne Interferenz.

Block RAM kann im FIFO-Modus betrieben werden, der Signale für Full, Empty, Almost Full und Almost Empty bereitstellt. Sorgfältige Steuerung von Write- und Read-Operationen verhindert Datenverlust oder -korruption.

FPGA I/O Pins und zugehörige Features

FPGA I/O Pins unterstützen eine Vielzahl von High-Speed-Standards. Während des Designs weisen Entwickler Funktionen spezifischen Pins zu und konfigurieren jeden Pin's Interface-Standard. Signale sind entweder Single-Ended oder Differential.

Single-Ended Signale referenzieren Ground und nutzten historisch TTL/CMOS-Bereiche. Moderne FPGAs unterstützen niedrigere Spannungsbereiche – LVTTL (0–3,3 V) und LVCMOS-Varianten (1,2, 1,5, 1,8, 2,5, 3,3 V) – was Stromverbrauch reduziert und Geschwindigkeit verbessert. High-Speed Single-Ended Standards umfassen HSTL und SSTL.

Differential Signaling, das ein Paar Pins nutzt, wird für High-Data-Rate Links bevorzugt, da Common-Mode-Noise weitgehend kompensiert wird. Differential Standards umfassen HSTL, SSTL und LVDS. LVDS, 1994 eingeführt, liefert konstanten 3,5 mA Strom und schaltet die Richtung, um Datenbits darzustellen. Die Anpassung der Leitungswellenimpedanz (100 Ω für LVDS) an die Abschlussimpedanz ist essenziell, um Reflexionen zu vermeiden.

Spezialisierte Hardware-Ressourcen

FPGAs beinhalten oft dedizierte Hardware für Funktionen, die von fixer, effizienter Implementierung profitieren:

Dedizierte Hardware wie MAC-Einheiten liefert Performance weit über das, was mit synthetisierter Logik erreicht werden kann.

Prozessorkerne

Einige FPGA-Familien integrieren harte Prozessorkerne – zum Beispiel kombiniert Xilinx Zynq‑7000 einen ARM Cortex‑A9 mit FPGA-Fabric. Wenn ein Design keinen harten Kern erfordert, kann ein Soft-Prozessor aus FPGA-Ressourcen instanziiert werden. Soft-Prozessoren sind hochkonfigurierbar, erreichen aber typischerweise nicht die Performance harter Kerne.

Der nächste Abschnitt wird die primären Programmiersprachen und Dateneingabemethoden vorstellen, die zur Entwicklung von FPGA-Algorithmen verwendet werden.

Reprinted with permission from Packt Publishing. Copyright © 2021 Packt Publishing


FPGA-Hardware-Ressourcen für High-Performance Embedded SystemsJim Ledin ist CEO von Ledin Engineering, Inc. Jim ist Experte für eingebettete Software und Hardware Design, Entwicklung und Test. Er ist auch versiert in eingebetteter System-Cybersicherheitsbewertung und Penetrationstests. Er hält einen B.S. in Luft- und Raumfahrttechnik von der Iowa State University und einen M.S. in Elektrotechnik und Informatik vom Georgia Institute of Technology. Jim ist registrierter Professional Electrical Engineer in Kalifornien, CISSP, CEH und CPT.

Verwandte Inhalte:

Für mehr Embedded abonnieren Sie den wöchentlichen E-Mail-Newsletter von Embedded.


Eingebettet

  1. Teure Überraschungen im Connected-Hardware-Design vermeiden: Bewährte Strategien
  2. Embedded-System-Design: Schritte, Prinzipien und praxisnahe Anwendungen
  3. Eclipse IoT: Einheitliches Open-Source-Paket für schnelle IoT-Entwicklung
  4. State Machines mit Test-Driven Development in Embedded C bauen
  5. Eingebettete KI nutzt Big Data für actionable Smart Insights
  6. Cypress Enhanced IoT Development mit ModusToolbox Full Device-to-Cloud Support
  7. Lattice MachXO3D FPGA stärkt Hardware-Sicherheit mit Root-of-Trust Features
  8. MAXREFDES220# – Manschettenlose Blutdruckmessung mit optischen Sensoren
  9. Java 9 Try-with-Resources: Effektiv-finale Variablen direkt nutzen
  10. Produktionsmaximierung durch fortschrittliche Additive-Manufacturing-Software