Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial Internet of Things >> Ingebed

FPGA-implementatietalen: Van VHDL en Verilog naar High‑Level C/C++

FPGA-implementatietalen: Van VHDL en Verilog naar High‑Level C/C++Opmerking van de redacteur: Geavanceerde algoritmes in slimme producten eisen embedded-systemen die zware verwerkingslasten kunnen aan. FPGAs leveren de benodigde prestaties, doch veel ontwikkelaars zien FPGA-ontwerp als het domein van specialisten. Moderne hardware, gekoppeld met krachtige ontwikkelomgevingen, heeft FPGA-programmering gedemocratiseerd. Dit fragment uit Hoofdstuk 4 van *Architecting High‑Performance Embedded Systems* biedt een grondig overzicht van FPGA-apparaten, de talen die gebruikt worden om ze te implementeren, en de ontwikkelworkflow, culminerend in een praktische gids om je eigen FPGA-ontwerpen te bouwen.
1: Hardware-bronnen
2: Implementatietalen (dit artikel)
3: Ontwikkelproces
4: Een project bouwen
5: Implementatie

Aangepast van *Architecting High‑Performance Embedded Systems*, door Jim Ledin.


FPGA-implementatietalen

Ontwerpen voor een FPGA omvat uiteindelijke het selecteren van een of meer high-level, HDL-achtige talen om het gedrag van het apparaat te beschrijven.

Traditionele keuzes zijn VHDL en Verilog. Moderne toolchains ondersteunen meestal beide, plus blokdiagram-configuratie, en veel accepteren nu C/C++ als bron voor automatische HDL-generatie.

VHDL

VHSIC Hardware Description Language (VHDL) – VHSIC staand voor *Very High‑Speed Integrated Circuit* – werd ontwikkeld onder het Amerikaanse Ministerie van Defensie in 1983. De syntaxis lijkt op Ada, wat het verbaal en sterk getypeerd maakt. De taal biedt een vaste set basistypen zoals boolean, bit, bit_vector, character, string, integer, real, time, en array, waar alle andere typen op bouwen.

IEEE 1164 definieert de standaardbibliotheek voor VHDL, inclusief de alomtegenwoordige std_logic-type die een single-bit signaal vertegenwoordigt. De volgende tabel toont de logicawaarden voor std_logic:

FPGA-implementatietalen: Van VHDL en Verilog naar High‑Level C/C++

Sterke 0/1 duiden gedreven binaire toestanden aan, zwakke signalen wijzen op contention op een bus. Z vertegenwoordigt hoge-impedantie (CMOS-uitgang losgekoppeld), U is de standaard ongeïnitialiseerde toestand, X duidet geen driver aan, en - markeert ongebruikte inputs.

Typische VHDL-ontwerpen beginnen met het importeren van de IEEE 1164-bibliotheek:

library IEEE;
use IEEE.std_logic_1164.all;

In dit hoofdstuk gebruiken we VHDL als voorbeeld, maar zowel VHDL als Verilog kunnen elk FPGA-synthetiseerbaar ontwerp volledig uitdrukken.

Verilog

Geïntroduceerd in 1984 en gestandaardiseerd als IEEE 1364 (2005), was Verilog gemodelleerd naar C om de leercurve zachter te maken. In 2009融合de het met SystemVerilog om IEEE 1800‑2009 te vormen, wat uitgebreide verificatie-functies toevoegde bovenop kern HDL-constructen.

Verilog's wire-type vertegenwoordigt signaaltoestanden van 0, 1, don't-care (x), of hoge-impedantie (z), elk met een sterke of zwakke kracht. Zowel VHDL als Verilog hebben *synthetiseerbare* subsetten voor hardware-ontwerp, terwijl additionele constructen simulatie ondersteunen.

Bijvoorbeeld, een niet-synthetiseerbare for-lus gedraagt zich als een software-lus, achtereenvolgens itererend. Een synthetiseerbare for-lus wordt uitgepakt in parallelle hardware-kopieën, de iteratie-aantal weerspiegelend.

Blokdiagrammen

Naast tekstuele HDL's, bieden moderne FPGA-suites grafische blokdiagram-editors die ontwerpers in staat stellen complexe systemen – zoals microprocessoren en geavanceerde I/O – te assembleren zonder low-level code te schrijven. Figuur 4.2 illustreert een Xilinx Vivado blokdiagram met een MicroBlaze soft-processor.

klik voor full size image
FPGA-implementatietalen: Van VHDL en Verilog naar High‑Level C/C++
Figuur 4.2 – Blokdiagram met een MicroBlaze soft-microprocessor

De MicroBlaze is Xilinx's soft-core processor beschikbaar voor Artix‑7 en andere families. Terwijl blokdiagrammen systeemlayout vereenvoudigen, genereert de tool uiteindelijk VHDL of Verilog achter de schermen. Het inspecteren van de gegenereerde code – bv. design_1_microblaze_0_0_stub.vhdl – onthult de 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);

Let op dat dit bestand alleen de interface van de processor definieert; de kernlogica wordt geleverd als gelicentieerde IP, vaak in gecompileerde vorm om intellectueel eigendom te beschermen.

C/C++

Verschillende leveranciers bieden nu high‑level synthesis (HLS) tools die C of C++ vertalen naar HDL, wat ontwikkelaars in staat stelt bestaande algoritmes naar FPGA-hardware te porten. Terwijl de onderliggende FPGA parallel draait, map het gegenereerde ontwerp vaak sequentiële C/C++-statements naar toestandsmachines. Waar de broncode kansen voor parallelisme biedt, kan de FPGA significante speedups leveren ten opzichte van een conventionele processor.

Moderne toolchains laten VHDL, Verilog, blokdiagrammen, en HLS-afgeleide HDL in een enkel project coexisteren. Teams mogen talen mengen gebaseerd op vaardighedensets, maar zorgvuldige planning is essentieel om onderhoudsoverhead te vermijden en toekomstige onderhoudbaarheid te waarborgen.

In de volgende sectie lopen we het standaard FPGA-ontwikkelproces door, van concept tot implementatie.

Her gedrukt met toestemming van Packt Publishing. Copyright © 2021 Packt Publishing


FPGA-implementatietalen: Van VHDL en Verilog naar High‑Level C/C++Jim Ledin is de CEO van Ledin Engineering, Inc. Jim is een expert in embedded software- en hardware-ontwerp, -ontwikkeling, en -testing. Hij is ook uitgevoerd in embedded-systeem cybersecurity-assessment en penetratietesting. Hij heeft een B.S. in luchtvaarttechniek van Iowa State University en een M.S. in elektrische en computer-engineering van Georgia Institute of Technology. Jim is een geregistreerde professionele elektrische ingenieur in Californië, een Certified Information System Security Professional (CISSP), een Certified Ethical Hacker (CEH), en een Certified Penetration Tester (CPT).

Gerelateerde inhoud:

  • Embedded-ontwerp met FPGAs: Hardware-bronnen
  • Open-source tools helpen FPGA-programmering vereenvoudigen
  • Drijvende-komma algoritmes implementeren in FPGAs of ASICs
  • Software-tools migreren GPU-code naar FPGAs voor AI-toepassingen
  • FPGAs verdringen ASICs in Subaru Eyesight visie-gebaseerde ADAS
  • Hoe flash-gebaseerde FPGAs functionele veiligheidsvereisten vereenvoudigen
  • De voordelen van instant-on FPGAs oogsten
  • FPGA-configuratie met hoge-snelheid NOR flash
  • Hoe FPGA-technologie evolueert om nieuwe mid-range systeemeisen te halen

Voor meer Embedded, abonneer je op Embedded's wekelijkse e-mailnieuwsbrief.


Ingebed

  1. Productie maximaliseren met geavanceerde additieve productiesoftware
  2. Embedded Systeem Programmeren: Talen, Architectuur en Toepassingen
  3. Embedded Systeemontwerp: Stappen, Principes en Praktische Toepassingen
  4. Embedded AI benutten om Big Data om te zetten in actionable Smart Insights
  5. USB-C meester worden: Ontwerpuitdagingen en praktische oplossingen voor high-speed data en power
  6. Embedded-ontwerptrends die de toekomst van technologie vormgeven
  7. High-performance FPGA-accelerator voor embedded vision met MIPI-camera's
  8. Foundries.io Wil de Red Hat van IoT Worden met Processor-Agnostische Linux & Zephyr Oplossingen
  9. Clientron PST650: all‑in‑one POS‑terminal met geïntegreerde thermische printer voor horeca & retail
  10. MAXREFDES220# – Cuffless bloeddrukmonitoring met optische sensoren
  11. Microchip lanceert defense-grade PolarFire SoC FPGA met Early Access Program