Français
Temps: 2026/07/21
Parcourir: 528

Un FPGA fonctionne en utilisant des milliers de petits circuits programmables qui peuvent être connectés pour effectuer une fonction matérielle spécifique. Comme le montre l'image, les principales parties comprennent des blocs de logique configurables (CLB), une matrice de routage et des blocs d'entrée/sortie (E/S). Chaque CLB contient des tables de correspondance (LUT) pour exécuter des opérations logiques et des bascules (FF) pour stocker des données.

Lorsqu'un fichier de configuration, appelé bitstream, est chargé dans le FPGA, il définit la fonction des blocs de logique et les connexions entre eux. La matrice de routage transporte des signaux entre les différents blocs, tandis que les blocs E/S connectent le FPGA à des dispositifs externes. Étant donné que ces circuits fonctionnent directement en matériel, de nombreuses tâches peuvent s'exécuter simultanément, offrant des performances rapides et prévisibles. Le FPGA peut également être reprogrammé pour effectuer une fonction différente sans remplacer la puce physique.
Un FPGA typique a une structure semblable à un tableau de portes composée de blocs de logique configurables (CLB), d'interconnexions programmables et de blocs d'entrée/sortie (IOB). Ces ressources sont répétées à travers la puce et peuvent être configurées pour construire un circuit numérique personnalisé.

Les CLB effectuent des opérations logiques et stockent de petites quantités de données en utilisant des tables de correspondance, des bascules et des circuits associés. L'interconnexion programmable agit comme un réseau de routage qui transporte des signaux entre les blocs de logique. Aux bords du FPGA, les blocs E/S connectent le circuit interne à des composants externes tels que des capteurs, des dispositifs de mémoire, des processeurs et des interfaces de communication.
Les FPGA modernes peuvent également inclure de la RAM de bloc, des circuits de gestion d'horloge, des blocs DSP, des transceivers haute vitesse, et parfois des processeurs embarqués. Ces composants dédiés améliorent les performances dans des applications telles que le traitement du signal, les communications, le contrôle industriel et l'intelligence artificielle.

Les FPGA basés sur SRAM stockent leur configuration dans une mémoire volatile, ils doivent donc recharger le bitstream chaque fois que l'alimentation est appliquée. Comme le montre l'image, leur architecture comprend des éléments logiques, des blocs de mémoire, des éléments I/O et des interconnexions programmables. Ces FPGA peuvent être reprogrammés plusieurs fois et offrent de hautes performances pour des conceptions complexes. Le AMD Artix-7 XC7A35T est un FPGA basé sur SRAM couramment utilisé dans les systèmes embarqués, les communications et le prototypage.

Les FPGA basés sur Flash stockent leur configuration dans une mémoire non volatile, leur permettant de conserver leur conception sans alimentation et de démarrer rapidement. Comme le montre l'image, un FPGA basé sur Flash de Microchip comprend des VersaTiles, des blocs RAM/FIFO, des circuits d'horloge, FlashROM et des banques I/O. Ces dispositifs peuvent être effacés et reprogrammés. Le Microchip ProASIC3 A3P250 est un exemple utilisé dans des applications industrielles, de communications et de sécurité.

Les FPGA basés sur antifuse créent des connexions permanentes lors de la programmation, ce qui leur permet de conserver leur configuration sans alimentation mais ne peuvent être programmés qu'une seule fois. Comme le montre l'image, l'architecture RTAX contient des tuiles de cœur, des SuperClusters, des blocs RAM/FIFO et des structures I/O environnantes. Le Microchip RTAX2000S tolérant aux radiations est conçu pour les engins spatiaux et d'autres applications à haute fiabilité.
Programmer un FPGA signifie configurer ses blocs logiques internes, ses chemins de routage, sa mémoire et ses connexions I/O pour créer un circuit numérique spécifique. Comme le montre l'image, le processus commence par la description du circuit en Verilog, VHDL, SystemVerilog ou un outil de conception basé sur des blocs. Le concepteur définit également les exigences en matière d'horloge et de synchronisation et attribue des signaux aux broches physiques correctes.

La conception est d'abord testée par simulation fonctionnelle pour vérifier si sa logique fonctionne correctement. Un logiciel de synthèse la convertit ensuite en une netlist constituée de ressources FPGA. Pendant l'implémentation, les outils mappent la conception sur le dispositif sélectionné, placent ses éléments logiques et routent les connexions entre eux. La vérification temporelle vérifie si les signaux peuvent circuler dans le circuit dans les limites d'horloge requises. Une simulation post-implémentation optionnelle peut fournir une vérification supplémentaire en utilisant la conception implémentée.
Une fois que la conception a passé ces vérifications, le logiciel génère un fichier de configuration appelé bitstream. Ce fichier peut configurer le FPGA directement via JTAG ou être stocké dans une mémoire de configuration non volatile pour un chargement à l'alimentation. La conception terminée est ensuite testée sur la carte cible. Si vous pouvez trouver des problèmes fonctionnels ou temporels, corrigez la conception et répétez les étapes nécessaires.
Les FPGA peuvent être reprogrammés après fabrication, vous permettant de mettre à jour les fonctions, de corriger les erreurs de conception ou de réutiliser le même dispositif pour différentes applications. Contrairement à un CPU qui exécute généralement des instructions l'une après l'autre, un FPGA peut effectuer de nombreuses opérations matérielles en même temps. Ce traitement parallèle offre un débit élevé, une faible latence et un timing prévisible pour des tâches telles que le traitement des signaux, le contrôle industriel, le traitement vidéo et les communications.
Les FPGA permettent également de créer des interfaces personnalisées et des accélérateurs matériels sans fabriquer une nouvelle puce. Ils ont généralement des coûts de développement initiaux inférieurs et des temps de développement plus courts que les ASIC, les rendant pratiques pour les prototypes et les produits en faible à moyen volume. De nombreux FPGA modernes incluent également de la mémoire dédiée, des blocs DSP, des émetteurs-récepteurs haute vitesse et des cœurs de processeur.
Le développement de FPGA est plus complexe que le développement de logiciels ordinaire. Vous avez besoin de connaissances en logique numérique, langages de description matériels, gestion de domaine d'horloge, contraintes de timing et vérification. La synthèse et le placement-routage peuvent également prendre beaucoup de temps pour de grandes conceptions, tandis que le débogage des problèmes de timing matériel peut être difficile.
Par rapport aux ASIC, les FPGA consomment généralement plus d'énergie, coûtent plus cher par unité et offrent des performances maximales inférieures pour la même fonction spécialisée. Ils ont également des ressources logiques, de mémoire, de routage et I/O limitées, donc une conception doit s'intégrer dans le dispositif sélectionné. Les FPGA basés sur SRAM perdent leur configuration lorsque l'alimentation est coupée et nécessitent normalement que le bitstream soit rechargé lors du démarrage.
• Télécommunications : Les FPGA traitent les paquets réseau, mettent en œuvre des protocoles de communication, effectuent la modulation de signal et soutiennent les stations de base 4G et 5G.
• Automatisation industrielle : Ils fournissent un contrôle précis pour les moteurs, les robots, les équipements de production, les systèmes de vision par machine et les dispositifs de surveillance en temps réel.
• Systèmes automobiles : Les FPGAs supportent les systèmes d’assistance au conducteur, le traitement radar, la fusion de capteurs, le réseau des véhicules, l’infodivertissement et le contrôle des moteurs électriques.
• Aérospatial et défense : Les FPGAs tolérants aux radiations sont utilisés dans les satellites, le radar, la navigation, les communications sécurisées et les systèmes de guerre électronique.
• Équipement médical : Ils traitent des données dans les machines à ultrasons, les systèmes d'imagerie médicale, les instruments de laboratoire et les équipements de surveillance des patients.
• Traitement vidéo et image : Les FPGAs effectuent des filtrages en temps réel, le redimensionnement, l'encodage, le décodage, la détection d'objets et le traitement vidéo haute résolution.
• Intelligence artificielle : Ils accélèrent l'inférence de l'apprentissage machine en exécutant simultanément de nombreuses opérations mathématiques avec une faible latence prévisible.
• Centres de données : Les FPGAs accélèrent le réseautage, la compression des données, le chiffrement, les recherches dans les bases de données et d'autres charges de travail de calcul spécialisées.
• Essai et mesure : Les oscilloscopes, analyseurs logiques, analyseurs de spectre et systèmes d'acquisition de données utilisent des FPGAs pour la capture et le traitement de signaux haute vitesse.
• Électronique grand public : Les FPGAs supportent le contrôle d'affichage, le traitement de la caméra, le traitement audio et la connectivité personnalisée dans des produits électroniques spécialisés.
• Prototypage ASIC : Vous pouvez utiliser de grands FPGAs pour tester et vérifier un design de puce personnalisé avant de vous engager dans la fabrication coûteuse d'ASIC.
• Éducation et recherche : Les cartes de développement FPGA aident les étudiants et les chercheurs à construire des processeurs, des contrôleurs numériques, des systèmes de communication et des architectures informatiques expérimentales.
| Fonctionnalité |
FPGA |
CPU |
GPU |
Microcontrôleur |
| Fonctionnement de base |
Matériel configurable exécutant une logique personnalisée |
Les cœurs de processeur exécutent des instructions logicielles |
De nombreux cœurs de traitement exécutent des opérations similaires en parallèle |
Un processeur compact exécute des logiciels embarqués |
| Traitement parallèle |
Élevé ; des opérations personnalisées peuvent s'exécuter simultanément |
Modéré ; utilise plusieurs cœurs, fils et instructions vectorielles |
Très élevé pour les charges de travail de données parallèles |
Faible à modéré, en fonction de l'appareil |
| Latence |
Très faible et prévisible lorsqu'il est correctement conçu |
Modéré ; affecté par les logiciels et les systèmes d'exploitation |
Débit élevé, mais les retards de transfert de données et de planification peuvent augmenter la latence |
Faible et souvent prévisible pour les tâches de contrôle simples |
| Force de performance |
Pipelines personnalisés, traitement en temps réel et accélération spécialisée |
Tâches à usage général et décisionnelles complexes |
Graphiques, formation d'IA, simulation et grandes charges de travail numériques |
Capteurs, contrôle de base et tâches embarquées à faible puissance |
| Reprogrammabilité |
La configuration matérielle peut être changée |
Le logiciel peut être changé |
Le logiciel et les noyaux de calcul peuvent être changés |
Le firmware peut être changé |
| Consommation d'énergie |
Modérée ; dépend fortement de la conception et de l'appareil |
Modérée à élevée |
Généralement élevée |
Généralement très faible |
| Méthode de développement |
Verilog, VHDL, SystemVerilog, HLS ou conception par blocs |
C, C++, Python et d'autres langages logiciels |
CUDA, OpenCL, SYCL et APIs graphiques |
C, C++, assembleur ou outils du fournisseur |
| Difficulté de développement |
Élevée ; nécessite des connaissances en conception numérique et en synchronisation |
Faible à modérée |
Modérée à élevée |
Faible à modérée |
| Coût unitaire |
Modéré à élevé |
Varie d’un produit à l’autre |
Modéré à très élevé |
Généralement faible |
| Contrôle en temps réel |
Excellente précision pour un timing au cycle près |
Possible, surtout avec un système d'exploitation en temps réel |
Généralement inadapté au contrôle déterministe direct |
Excellent pour de nombreuses tâches de contrôle embarquées |
| Mieux adapté à |
Traitement du signal, communications, interfaces personnalisées et accélération matérielle |
Ordinateurs, serveurs, systèmes d'exploitation et applications générales |
Graphiques, calcul scientifique et apprentissage machine |
Appareils électroménagers, capteurs, contrôle de moteurs et dispositifs IoT |
Un ASIC est une puce custom fabriquée pour effectuer une fonction fixe, tandis qu'un FPGA peut être configuré et reprogrammé après fabrication. Parce qu'un ASIC est optimisé pour une application spécifique, il offre généralement de meilleures performances, une consommation d'énergie réduite et une surface de puce plus petite qu'un FPGA accomplissant la même tâche.
Cependant, le développement d'un ASIC nécessite des coûts initiaux élevés, une vérification spécialisée et un long processus de fabrication. Les erreurs découvertes après la fabrication peuvent nécessiter une révision coûteuse de la puce.
Un CPLD est un dispositif logique programmable conçu pour des circuits numériques plus petits et plus simples. Comparé à un FPGA, il a moins de ressources logiques, moins de mémoire et une capacité de traitement limitée. Les CPLD utilisent généralement une mémoire de configuration non volatile, ce qui leur permet de conserver leur conception sans alimentation et de fonctionner immédiatement au démarrage.
Les CPLD sont adaptés au décodage d'adresses, au contrôle de réinitialisation, aux machines à états simples, au pontage d'interfaces et à la logique de gestion de carte. Les FPGA sont meilleurs pour les systèmes complexes qui nécessitent une grande capacité logique, une mémoire étendue, des opérations DSP ou un traitement parallèle. Un CPLD est généralement le choix le plus pratique pour des fonctions de contrôle simples, tandis qu'un FPGA est préférable pour des conceptions plus grandes et plus exigeantes.
• Capacité logique : Assurez-vous que le FPGA dispose de suffisamment de tables de correspondance, de bascules et de ressources de routage, avec une capacité supplémentaire pour les modifications futures.
• Mémoire : Vérifiez la RAM bloc requise, la mémoire distribuée et le support pour la mémoire DDR externe.
• Ressources DSP : Choisissez suffisamment de blocs DSP pour le filtrage, le contrôle de moteur, le traitement d'image ou les calculs IA.
• Exigences I/O : Confirmez le nombre de broches, les normes de tension supportées et les interfaces requises.
• Vitesse de traitement : Vérifiez la fréquence d'horloge, les performances temporelles et les débits de données de transceiver haute vitesse.
• Consommation d'énergie : Estimez la puissance statique et dynamique et confirmez que le refroidissement et l'alimentation sont adaptés.
• Type de configuration : Sélectionnez la technologie SRAM, flash ou antifuse selon les besoins en démarrage, reprogrammation et sécurité.
• Emballage et taille : Assurez-vous que l'emballage s'adapte au PCB et peut être assemblé par le fabricant choisi.
• Outils de développement : Tenez compte du coût des logiciels, des langages de programmation supportés, des outils de débogage, des cœurs IP et de la documentation.
• Coût et disponibilité : Comparez le prix de l'appareil, le volume de production, le délai de livraison, l'état du cycle de vie et l'approvisionnement à long terme.
| Fabricant |
Familles FPGA populaires |
Outils de développement principaux |
Focus typique |
| AMD (anciennement Xilinx) |
Artix, Kintex, Virtex, Spartan et Zynq |
Suite de conception Vivado et Vitis |
Systèmes intégrés, communications, centres de données et traitement haute performance |
| Altera |
Cyclone, Arria, Stratix et Agilex |
Quartus Prime et Questa–Altera FPGA Edition |
Systèmes industriels, communications, mise en réseau et accélération |
| Microchip |
IGLOO2, PolarFire, SmartFusion2 et RTG4 |
Suite de conception Libero SoC |
Applications à faible consommation d'énergie, de sécurité, industrielles, aérospatiales et tolérantes aux radiations |
| Lattice Semiconductor |
Familles iCE40, MachXO, ECP et Nexus |
Lattice Radiant, Lattice Diamond et Lattice Propel |
Petites, basse consommation, applications intégrées et de périphérie |
| GOWIN Semiconductor |
LittleBee, Arora et familles connexes |
GOWIN EDA |
Systèmes embarqués à faible coût, éducation et conceptions compactes |
La technologie FPGA future se concentrera sur des performances plus élevées, une consommation d'énergie plus faible et un développement plus facile. De nouveaux dispositifs combinent de plus en plus la logique programmable avec des cœurs de processeur, des moteurs IA, des transceivers haute vitesse, une mémoire avancée et un emballage basé sur des chiplets dans une seule plateforme. Les FPGA devraient également jouer un rôle plus important dans l'IA en périphérie, les systèmes autonomes, la 5G et les communications futures, les centres de données, la robotique et le traitement des capteurs en temps réel.
Une meilleure synthèse de haut niveau et des outils de conception assistée par IA permettront aux développeurs de créer du matériel FPGA en utilisant C, C++ et d'autres méthodes de haut niveau au lieu de se fier uniquement à Verilog ou VHDL. Une sécurité matérielle renforcée, une reconfiguration à distance et des architectures de dispositifs plus efficaces élargiront encore l'utilisation des FPGA dans les systèmes nécessitant une faible latence, flexibilité et longue durée de vie.
Un FPGA n'exécute normalement pas d'instructions logicielles directement. Il est configuré pour créer un circuit matériel. Cependant, les concepteurs peuvent ajouter un processeur logiciel, tel que MicroBlaze ou Nios V, ou utiliser un FPGA SoC qui combine une logique programmable avec des cœurs de processeurs physiques.
La conception peut échouer pendant la synthèse ou le placement et le routage, même si certaines ressources restent disponibles. La congestion du routage et les limites de temps peuvent empêcher une mise en œuvre réussie. Choisir un dispositif avec une logique, une mémoire, un DSP et une capacité de routage supplémentaires permet de prévoir des changements futurs.
Certains FPGAs prennent en charge la reconfiguration partielle, ce qui permet de mettre à jour une région pendant que d'autres régions restent actives. Cela peut changer les fonctions matérielles sans arrêter tout le système, mais cela nécessite des dispositifs compatibles, une partition soigneuse et des outils de conception avancés.
La simulation peut ne pas représenter pleinement les délais de synchronisation, les problèmes d'horloge, le comportement de réinitialisation, le bruit électrique ou les attributions de broches incorrectes. Les pannes matérielles peuvent également résulter d'une mauvaise distribution d'alimentation, de problèmes d'intégrité du signal ou d'instructions de timing manquantes.
Non. Il peut être configuré directement via JTAG ou par un autre processeur. Cependant, la plupart des produits autonomes utilisent une mémoire non volatile externe afin que le FPGA puisse automatiquement recharger son bitstream chaque fois que l'alimentation est fournie.
Les outils de synthèse de haut niveau peuvent convertir des fonctions C ou C++ appropriées en matériel FPGA. Cela peut simplifier le développement, mais les concepteurs doivent toujours comprendre le parallélisme matériel, l'accès à la mémoire, le timing et l'utilisation des ressources pour obtenir de bons résultats.
La sécurité des FPGA peut inclure des bitstreams chiffrés, l'authentification, un démarrage sécurisé, un contrôle d'accès et des clés spécifiques au dispositif. Les dispositifs antifuse offrent une forte protection physique car leur configuration est permanente, tandis que de nombreux dispositifs basés sur SRAM et flash prennent en charge la programmation chiffrée.
Un FPGA peut être inutile pour des tâches de contrôle simples qu'un microcontrôleur à bas coût peut gérer. Il peut également être inadapté pour des produits à très haut volume et stables où un ASIC peut offrir un coût unitaire et une consommation d'énergie inférieurs après le remboursement du coût initial de développement élevé.
CAP CER 10UF 16V X5R 1206
CAP CER 8200PF 2.5KV X7R 2225
CAP CER 11PF 25V R2H 0201
CAP TANT 470UF 20% 10V 2917
IC OPAMP GP 1 CIRCUIT 8SOIC
M5M5256CFP-55LL MIT
W83194BG-603 WINBOND
S29GL01GP13TFIV23 SPANS
RABBIT QFP-100
SONY SOP14
DC DC CONVERTER 5V 1.5W
BROADCOM PBGA484


