Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Langages d'implémentation FPGA : de VHDL et Verilog au C/C++ haut niveau

Langages d implémentation FPGA : de VHDL et Verilog au C/C++ haut niveauNote de l'éditeur : Les algorithmes avancés dans les produits intelligents exigent des systèmes embarqués capables de gérer de lourdes charges de traitement. Les FPGA offrent les performances nécessaires, pourtant de nombreux développeurs considèrent la conception FPGA comme le domaine des spécialistes. Le matériel moderne, couplé à des environnements de développement puissants, a démocratisé la programmation FPGA. Cet extrait du Chapitre 4 de Architecting High‑Performance Embedded Systems offre une vue d'ensemble approfondie des dispositifs FPGA, des langages utilisés pour les implémenter et du flux de développement, culminant dans un guide pratique pour commencer à construire vos propres designs FPGA.
1 : Ressources matérielles
2 : Langages d'implémentation (cet article)
3 : Processus de développement
4 : Construction d'un projet
5 : Implémentation

Adapté de Architecting High‑Performance Embedded Systems, par Jim Ledin.


Langages d'implémentation FPGA

Concevoir pour un FPGA implique ultimement de sélectionner un ou plusieurs langages de haut niveau, de type HDL, pour décrire le comportement du dispositif.

Les choix traditionnels sont VHDL et Verilog. Les chaînes d'outils modernes supportent généralement les deux, plus la configuration par diagramme de blocs, et beaucoup acceptent maintenant le C/C++ comme source pour la génération automatique de HDL.

VHDL

VHSIC Hardware Description Language (VHDL) — VHSIC signifiant Very High‑Speed Integrated Circuit — a été développé sous l'égide du Département de la Défense américain en 1983. Sa syntaxe rappelle Ada, ce qui le rend verbeux et fortement typé. Le langage offre un ensemble fixe de types de base tels que boolean, bit, bit_vector, character, string, integer, real, time et array, tous les autres types étant construits sur ces primitives.

L'IEEE 1164 définit la bibliothèque standard pour VHDL, incluant le type omniprésent std_logic qui représente un signal à un bit. Le tableau suivant montre les valeurs logiques pour std_logic :

Langages d implémentation FPGA : de VHDL et Verilog au C/C++ haut niveau

Les 0/1 forts dénotent des états binaires pilotés, tandis que les signaux faibles indiquent une contention sur un bus. Z représente l'impédance haute (sortie CMOS déconnectée), U est l'état non initialisé par défaut, X indique l'absence de pilote, et - marque les entrées inutilisées.

Les designs VHDL typiques commencent par importer la bibliothèque IEEE 1164 :

library IEEE;
use IEEE.std_logic_1164.all;

Dans ce chapitre, nous utiliserons VHDL comme exemple, mais VHDL et Verilog peuvent tous deux exprimer pleinement tout design FPGA synthétisable.

Verilog

Introduit en 1984 et standardisé comme IEEE 1364 (2005), Verilog a été modelé sur le C pour rendre la courbe d'apprentissage plus douce. En 2009, il a fusionné avec SystemVerilog pour former IEEE 1800‑2009, ajoutant d'importantes fonctionnalités de vérification par-dessus les constructions HDL de base.

Le type wire de Verilog représente des états de signal de 0, 1, don't-care (x) ou haute impédance (z), chacun avec une force forte ou faible. VHDL et Verilog ont tous deux des sous-ensembles synthétisables pour la conception matérielle, tandis que des constructions additionnelles supportent la simulation.

Par exemple, une boucle for non synthétisable se comporte comme une boucle logicielle, itérant séquentiellement. Une boucle for synthétisable est déroulée en copies matérielles parallèles, reflétant le nombre d'itérations.

Diagrammes de blocs

Au-delà des HDL textuels, les suites FPGA modernes fournissent des éditeurs graphiques de diagrammes de blocs qui permettent aux concepteurs d'assembler des systèmes complexes — tels que microprocesseurs et E/S avancées — sans écrire de code bas niveau. La Figure 4.2 illustre un diagramme de blocs Xilinx Vivado comportant un processeur souple MicroBlaze.

cliquer pour l'image en taille réelle
Langages d implémentation FPGA : de VHDL et Verilog au C/C++ haut niveau
Figure 4.2 – Diagramme de blocs contenant un microprocesseur souple MicroBlaze

Le MicroBlaze est le processeur souple de Xilinx disponible pour les familles Artix‑7 et autres. Bien que les diagrammes de blocs simplifient la mise en page du système, l'outil génère ultimement du VHDL ou du Verilog en arrière-plan. L'inspection du code généré — par exemple design_1_microblaze_0_0_stub.vhdl — révèle l'interface d'entité HDL :

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);

Notez que ce fichier ne définit que l'interface du processeur ; la logique centrale est fournie sous forme d'IP sous licence, souvent sous forme compilée pour protéger la propriété intellectuelle.

C/C++

Plusieurs fournisseurs fournissent maintenant des outils de synthèse de haut niveau (HLS) qui traduisent le C ou C++ en HDL, permettant aux développeurs de porter des algorithmes existants vers du matériel FPGA. Bien que le FPGA sous-jacent s'exécute en parallèle, le design généré mappe souvent des instructions C/C++ séquentielles en machines à états. Là où le code source offre des opportunités de parallélisme, le FPGA peut offrir des accélérations significatives par rapport à un processeur conventionnel.

Les chaînes d'outils modernes permettent à VHDL, Verilog, diagrammes de blocs et HDL dérivé HLS de coexister dans un même projet. Les équipes peuvent mélanger les langages selon les compétences, mais une planification soignée est essentielle pour éviter la surcharge de maintenance et assurer la pérennité future.

Dans la prochaine section, nous parcourrons le processus standard de développement FPGA, du concept à l'implémentation.

Réimprimé avec la permission de Packt Publishing. Copyright © 2021 Packt Publishing


Langages d implémentation FPGA : de VHDL et Verilog au C/C++ haut niveauJim Ledin est le PDG de Ledin Engineering, Inc. Jim est un expert en logiciel et matériel embarqué, conception, développement et test. Il est également accompli en évaluation de cybersécurité des systèmes embarqués et tests de pénétration. Il détient un B.S. en génie aérospatial de l'Iowa State University et un M.S. en génie électrique et informatique du Georgia Institute of Technology. Jim est ingénieur électricien enregistré en Californie, CISSP, CEH et CPT certifié.

Contenus connexes :

Pour plus Embedded, abonnez-vous à la newsletter hebdomadaire d'Embedded.


Embarqué

  1. Programmation systèmes embarqués : langages, architecture et applications
  2. Conception de Systèmes Embarqués : Étapes, Principes et Applications Réelles
  3. Exploiter l'IA embarquée pour transformer le Big Data en insights intelligents exploitables
  4. Maîtriser l'USB-C : Défis de conception et solutions pratiques pour données haute vitesse et alimentation
  5. Tendances de conception embarquée redéfinissant l'avenir de la technologie
  6. Clientron PST650 : Terminal POS Tout-en-Un avec Imprimante Thermique Intégrée pour Hôtellerie et Retail
  7. MAXREFDES220# : surveillance tension artérielle sans brassard par capteurs optiques
  8. Microchip lance PolarFire SoC FPGA grade défense avec programme d'accès anticipé
  9. Maximiser la production avec les logiciels avancés de fabrication additive