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

FPGA-Implementierungssprachen: Von VHDL und Verilog zu High-Level C/C++

FPGA-Implementierungssprachen: Von VHDL und Verilog zu High-Level C/C++Anmerkung der Redaktion: Fortgeschrittene Algorithmen in smarten Produkten verlangen eingebettete Systeme, die hohe Verarbeitungslasten bewältigen können. FPGAs liefern die nötige Performance, doch viele Entwickler sehen FPGA-Design als Domäne von Spezialisten. Moderne Hardware, gekoppelt mit leistungsstarken Entwicklungsumgebungen, hat FPGA-Programmierung demokratisiert. Dieser Auszug aus Kapitel 4 von *Architecting High‑Performance Embedded Systems* bietet einen gründlichen Überblick über FPGA-Geräte, die zur Implementierung verwendeten Sprachen und den Entwicklungsworkflow, der in einem praktischen Leitfaden zum Start eigener FPGA-Designs mündet.
1: Hardware-Ressourcen
2: Implementierungssprachen (dieser Artikel)
3: Entwicklungsprozess
4: Projekt erstellen
5: Implementierung

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


FPGA-Implementierungssprachen

Das Design für ein FPGA beinhaltet letztlich die Auswahl einer oder mehrerer hochsprachlicher, HDL-ähnlicher Sprachen, um das Verhalten des Geräts zu beschreiben.

Traditionelle Optionen sind VHDL und Verilog. Moderne Toolchains unterstützen typischerweise beide, plus Blockdiagramm-Konfiguration, und viele akzeptieren nun C/C++ als Quelle für automatische HDL-Generierung.

VHDL

VHSIC Hardware Description Language (VHDL) – VHSIC steht für *Very High‑Speed Integrated Circuit* – wurde 1983 unter dem US-Verteidigungsministerium entwickelt. Seine Syntax erinnert an Ada, was es wortreich und stark typisiert macht. Die Sprache bietet einen festen Satz von Basistypen wie boolean, bit, bit_vector, character, string, integer, real, time und array, auf denen alle anderen Typen aufbauen.

IEEE 1164 definiert die Standardbibliothek für VHDL, einschließlich des allgegenwärtigen std_logic Typs, der ein Ein-Bit-Signal repräsentiert. Die folgende Tabelle zeigt die Logikwerte für std_logic:

FPGA-Implementierungssprachen: Von VHDL und Verilog zu High-Level C/C++

Starke 0/1 bezeichnen getriebene binäre Zustände, während schwache Signale Bus-Kontention anzeigen. Z steht für High-Impedanz (CMOS-Ausgang getrennt), U ist der Standard-Initialisierungszustand, X zeigt keinen Treiber an, und - markiert ungenutzte Eingänge.

Typische VHDL-Designs beginnen mit dem Import der IEEE 1164 Bibliothek:

library IEEE;
use IEEE.std_logic_1164.all;

In diesem Kapitel verwenden wir VHDL als Beispiel, aber sowohl VHDL als auch Verilog können jede FPGA-synthetisierbare Design vollständig ausdrücken.

Verilog

1984 eingeführt und als IEEE 1364 (2005) standardisiert, wurde Verilog nach C modelliert, um die Lernkurve zu glätten. 2009 fusionierte es mit SystemVerilog zu IEEE 1800‑2009, was umfangreiche Verifikationsfeatures auf den Kern-HDL-Konstruktionen hinzufügte.

Verilogs wire Typ repräsentiert Signalzustände 0, 1, don't-care (x) oder High-Impedanz (z), jeweils mit starker oder schwacher Stärke. Sowohl VHDL als auch Verilog haben *synthetisierbare* Subsets für Hardware-Design, während zusätzliche Konstrukte Simulation unterstützen.

Zum Beispiel verhält sich eine nicht-synthetisierbare for-Schleife wie eine Software-Schleife, die sequenziell iteriert. Eine synthetisierbare for-Schleife wird in parallele Hardware-Kopien entrollt, die der Iterationsanzahl entsprechen.

Blockdiagramme

Jenseits textueller HDLs bieten moderne FPGA-Suiten grafische Blockdiagramm-Editoren, mit denen Designer komplexe Systeme – wie Mikroprozessoren und fortgeschrittene I/O – zusammenstellen können, ohne Low-Level-Code zu schreiben. Abbildung 4.2 illustriert ein Xilinx Vivado Blockdiagramm mit einem MicroBlaze Soft-Prozessor.

Klicken für Vollbild
FPGA-Implementierungssprachen: Von VHDL und Verilog zu High-Level C/C++
Abbildung 4.2 – Blockdiagramm mit MicroBlaze Soft-Mikroprozessor

Der MicroBlaze ist Xilinx’ Soft-Core-Prozessor für Artix‑7 und andere Familien. Während Blockdiagramme das Systemlayout vereinfachen, generiert das Tool letztlich VHDL oder Verilog im Hintergrund. Die Untersuchung des generierten Codes – z. B. design_1_microblaze_0_0_stub.vhdl – offenbart das HDL-Entity-Interface:

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity design_1_microblaze_0_0 is
  Port (
    Clk: in STD_LOGIC;
    Reset: in STD_LOGIC;
    Interrupt: in STD_LOGIC;
    Interrupt_Address: in STD_LOGIC_VECTOR (0 to 31);
    Interrupt_Ack: out STD_LOGIC_VECTOR (0 to 1);
    Instr_Addr: out STD_LOGIC_VECTOR (0 to 31);
    Instr: in STD_LOGIC_VECTOR (0 to 31);

Beachten Sie, dass diese Datei nur das Prozessor-Interface definiert; die Kernlogik wird als lizenziertes IP bereitgestellt, oft in kompilierter Form zum Schutz des geistigen Eigentums.

C/C++

Mehrere Anbieter bieten nun High-Level Synthesis (HLS) Tools an, die C oder C++ in HDL übersetzen und Entwicklern ermöglichen, bestehende Algorithmen auf FPGA-Hardware zu portieren. Während das zugrundeliegende FPGA parallel läuft, bildet der generierte Design oft sequenzielle C/C++-Statements in Zustandsmaschinen ab. Wo der Quellcode Parallelismus bietet, kann das FPGA signifikante Speedups über einen konventionellen Prozessor liefern.

Moderne Toolchains erlauben VHDL, Verilog, Blockdiagramme und HLS-abgeleitetes HDL in einem einzelnen Projekt koexistieren. Teams können Sprachen basierend auf Skillsets mischen, aber sorgfältige Planung ist essenziell, um Wartungsaufwand zu vermeiden und zukünftige Sustainment zu gewährleisten.

Im nächsten Abschnitt gehen wir durch den standardmäßigen FPGA-Entwicklungsprozess, von der Konzeption zur Implementierung.

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


FPGA-Implementierungssprachen: Von VHDL und Verilog zu High-Level C/C++Jim 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 hat 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. Embedded-System-Programmierung: Sprachen, Architektur und Anwendungen
  2. Embedded-System-Design: Schritte, Prinzipien und praxisnahe Anwendungen
  3. Eingebettete KI nutzt Big Data für actionable Smart Insights
  4. USB-C meistern: Design-Herausforderungen und praktische Lösungen für High-Speed Data und Power
  5. Embedded Design Trends, die die Zukunft der Technologie formen
  6. High-Performance FPGA-Beschleuniger für Embedded Vision mit MIPI-Kameras
  7. Clientron PST650: All-in-One POS Terminal mit integriertem Thermodrucker für Hospitality & Retail
  8. MAXREFDES220# – Manschettenlose Blutdruckmessung mit optischen Sensoren
  9. Microchip startet Defense-Grade PolarFire SoC FPGA mit Early Access Program
  10. Produktionsmaximierung durch fortschrittliche Additive-Manufacturing-Software