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é

Ressources matérielles FPGA pour systèmes embarqués hautes performances

Ressources matérielles FPGA pour systèmes embarqués hautes performancesNote de l'éditeur : Alors que les algorithmes avancés continuent d'émerger pour les designs de produits intelligents, les développeurs se retrouvent souvent en difficulté pour implémenter des systèmes embarqués capables de répondre aux exigences de traitement associées. Les FPGA peuvent fournir les performances requises, mais la conception avec les FPGA a longtemps été considérée comme le domaine des experts en programmation FPGA. Aujourd'hui, cependant, la disponibilité de FPGA plus puissants et d'environnements de développement plus efficaces a rendu le développement FPGA largement accessible. Dans cet extrait du Chapitre 4 de Architecting High‑Performance Embedded Systems, l'auteur offre une revue complète des dispositifs FPGA, des langages d'implémentation et du processus de développement, ainsi qu'une visite détaillée de la façon de commencer à implémenter des FPGA dans votre propre design.
1 : Ressources matérielles (cet article)
2 : Langages d'implémentation
3 : Processus de développement
4 : Construction d'un projet
5 : Implémentation

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


Développement de votre premier programme FPGA

Ce chapitre commence par une discussion sur l'utilisation efficace des dispositifs FPGA dans les systèmes embarqués temps réel et se poursuit par une description des éléments fonctionnels contenus dans les FPGA standard. Il introduit la gamme de langages de conception FPGA — y compris les Langages de Description Matérielle (HDL), les méthodes par diagramme de blocs, et les langages de programmation logicielle populaires tels que C et C++ — et fournit une vue d'ensemble du processus de développement FPGA. Le chapitre se termine par un exemple complet de cycle de développement FPGA, de l'énoncé des exigences système à un système pleinement fonctionnel implémenté sur une carte de développement FPGA à faible coût.

Après avoir complété ce chapitre, vous comprendrez comment les FPGA peuvent être appliqués dans les architectures de systèmes embarqués temps réel, les composants clés d'un circuit intégré FPGA, les langages de programmation utilisés pour concevoir des algorithmes FPGA, et la séquence étape par étape pour développer une application basée sur FPGA. Vous parcourrez également un exemple complet de développement FPGA sur une carte à faible coût en utilisant des outils logiciels FPGA gratuits.

Nous couvrirons les sujets suivants :

Exigences techniques

Les fichiers pour ce chapitre sont disponibles à https://github.com/PacktPublishing/Architecting-High-Performance-Embedded-Systems.

Utilisation des FPGA dans les conceptions de systèmes embarqués temps réel

Comme décrit dans la section Éléments des FPGA du Chapitre 1, un dispositif FPGA typique contient un grand nombre de tables de recherche, bascules, éléments de RAM en blocs, tranches DSP et autres composants. Bien qu'il soit utile de comprendre les capacités détaillées de chaque composant, la considération la plus critique est qu'un numéro de pièce FPGA spécifique contient un nombre fini de chaque ressource, et un design ne peut pas dépasser ces limites lorsqu'il cible ce modèle particulier.

Il est plus productif de voir le processus de développement depuis la perspective de l'énoncé des exigences du système embarqué. Vous pouvez commencer par cibler un modèle qui répond confortablement à ces exigences. Au fur et à mesure que le design progresse, vous pouvez rencontrer une limite de ressource ou découvrir qu'une fonctionnalité requise est manquante. À ce stade, sélectionner une cible plus capable et continuer le développement est simple. Inversement, si vous trouvez que le FPGA choisi contient des ressources excédentaires, passer à une pièce plus petite peut réduire le coût, le nombre de broches, la taille du boîtier et la consommation d'énergie.

Le changement de FPGA ciblé au sein de la même famille est généralement transparent, avec les artefacts de design entièrement réutilisables. Le changement de famille ou de fournisseur peut nécessiter un effort supplémentaire. L'essentiel est que le modèle spécifique n'ait pas besoin d'être choisi au départ ; concentrez-vous d'abord sur la validation du FPGA comme solution viable, puis sélectionnez un fournisseur et une famille de dispositifs appropriés.

Les projets d'exemple de ce livre utilisent la famille d'outils Vivado de Xilinx. Bien qu'une licence Vivado soit requise pour certaines familles Xilinx, les dispositifs Artix‑7 utilisés ici sont supportés gratuitement. L'Artix‑7 combine haute performance, faible puissance et coût système réduit. Des familles et suites d'outils similaires sont disponibles auprès d'autres fournisseurs.

Le développement FPGA est un processus impliqué qui nécessite une gamme de données d'analyse et de conception. Pour garder la discussion concrète, nous utiliserons Vivado tout au long de ce livre. Une fois que vous maîtrisez ces techniques, vous pouvez les appliquer aux outils d'autres fournisseurs.

Les sections suivantes discutent les caractéristiques clés différenciant les familles et modèles FPGA, y compris la capacité de RAM en blocs, les types de signaux E/S, les ressources spécialisées sur puce, et la présence de cœurs de processeur embarqués.

RAM en blocs et RAM distribuée

RAM en blocs implémente des régions de mémoire dédiées dans un FPGA. Une région de mémoire est spécifiée par sa largeur de bits (généralement 8 ou 16 bits) et sa profondeur (nombre d'emplacements de stockage). La RAM en blocs totale est généralement exprimée en kilobits (Kb) et varie selon les familles et modèles.

De nombreux FPGA fournissent également de la RAM distribuée, construite à partir de la logique de tables de recherche pour former de petits segments de 16 bits. Ceux-ci peuvent être combinés en blocs plus grands si nécessaire. La RAM distribuée est idéale pour le stockage temporaire de résultats intermédiaires, tandis que la RAM en blocs est utilisée pour les caches ou tampons E/S.

La RAM en blocs peut être mono-port ou double-port. La RAM double-port, avec deux ports de lecture/écriture, est particulièrement utile pour relier des sous-systèmes fonctionnant à des vitesses d'horloge différentes, permettant le transfert de données sans interférence.

La RAM en blocs peut fonctionner en mode FIFO, fournissant des signaux pour les états plein, vide, presque plein et presque vide. Un contrôle attentif des opérations d'écriture et de lecture empêche la perte ou la corruption de données.

Broches E/S FPGA et fonctionnalités associées

Les broches E/S FPGA supportent une variété de standards haute vitesse. Pendant la conception, les développeurs assignent des fonctions à des broches spécifiques et configurent le standard d'interface de chaque broche. Les signaux sont soit à simple extrémité, soit différentiels.

Les signaux à simple extrémité référencent la masse et utilisaient historiquement des gammes TTL/CMOS. Les FPGA modernes supportent des gammes de tension plus basses — LVTTL (0–3,3 V) et variantes LVCMOS (1,2, 1,5, 1,8, 2,5, 3,3 V) — réduisant la consommation d'énergie et améliorant la vitesse. Les standards à simple extrémité haute vitesse incluent HSTL et SSTL.

La signalisation différentielle, qui utilise une paire de broches, est préférée pour les liaisons à haut débit de données car le bruit de mode commun est largement annulé. Les standards différentiels incluent HSTL, SSTL et LVDS. LVDS, introduit en 1994, délivre un courant constant de 3,5 mA et change de direction pour représenter les bits de données. L'adaptation de l'impédance de la ligne de transmission (100 Ω pour LVDS) à l'impédance de terminaison est essentielle pour éviter les réflexions.

Ressources matérielles spécialisées

Les FPGA incluent souvent du matériel dédié pour des fonctions qui bénéficient d'une implémentation fixe et efficace :

Le matériel dédié tel que les unités MAC fournit des performances bien au-delà de ce qui peut être atteint avec de la logique synthétisée.

Cœurs de processeur

Certaines familles FPGA intègrent des cœurs de processeur durs — par exemple, Xilinx Zynq‑7000 combine un ARM Cortex‑A9 avec le tissu FPGA. Lorsqu'un design n'exige pas de cœur dur, un processeur souple peut être instancié à partir des ressources FPGA. Les processeurs souples sont hautement configurables mais n'atteignent généralement pas les performances des cœurs durs.

La prochaine section introduira les langages de programmation primaires et les méthodes de saisie de données utilisées pour développer des algorithmes FPGA.

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


Ressources matérielles FPGA pour systèmes embarqués hautes performancesJim 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. Éviter les mauvaises surprises dans le design hardware connecté : stratégies éprouvées
  2. Conception de Systèmes Embarqués : Étapes, Principes et Applications Réelles
  3. Eclipse IoT : Un package unifié open-source pour développement IoT rapide
  4. Construire des machines d'états avec développement piloté par les tests en C embarqué
  5. Cypress Améliore Développement IoT avec Support Device-to-Cloud Complet de ModusToolbox
  6. FPGA MachXO3D de Lattice renforce sécurité hardware avec fonctionnalités Root-of-Trust
  7. MAXREFDES220# : surveillance tension artérielle sans brassard par capteurs optiques
  8. Java 9 : Try-with-resources amélioré — Code plus propre
  9. Maximiser la production avec les logiciels avancés de fabrication additive