FPGA: tout sur ces puces et leur programmation

Puce FPGA

Les Les FPGA sont de plus en plus populaires ces derniers temps. Même pour les applications professionnelles, ces puces sont souvent utilisées, mais aussi pour les bricoleurs et les fabricants qui souhaitent implémenter un circuit discret à l'intérieur d'une puce avec tous les avantages que cela implique. Il n'est ni bon marché ni facile de trouver une usine pour envoyer vos mises en page ou modèles et faire fabriquer une puce personnalisée pour vous.

Il est vrai que certaines fonderies permettent faire des wafers ou des wafers multiprojets fabriquer des puces auprès d'individus ou d'universités pour les tester. Ces types d'usines sont, comme je l'ai dit, difficiles à trouver, elles sont généralement à l'étranger et elles ne sont pas bon marché. Après un certain temps, des échantillons de vos puces sont envoyés à l'adresse convenue, mais ils ne sont pas chargés de les tester ou de vérifier qu'ils fonctionnent. Tout dépend de votre conception ...

Une une solution alternative à cela est d'acheter un FPGA et programmez tout ce que vous devez implémenter à l'intérieur de la puce ...

Qu'est-ce qu'un FPGA?

Cellules programmables

FPGA signifie Field Programmable Gate Array. Ce sont des appareils ou puces numériques qui peuvent être configurés pour permettre à pratiquement tout être mis en œuvre. Autrement dit, c'est une puce vierge sur laquelle vous pouvez «écrire». Cela signifie que vous pouvez implémenter un CPU, une mémoire, un contrôleur, n'importe quelle logique, etc., obtenant un fonctionnement très rapide et avec tous les avantages de l'intégrer dans une puce et non avec des éléments électroniques.

Ross Freeman et Bernard Vonderschmitt, co-fondateurs de Xilinx, sont ceux qui ont inventé le FPGA en 1984. Ils l'ont fait comme une évolution vers les puces CPLD de l'époque. Les puces programmables CPLD présentaient certaines lacunes qui ont résolu les nouvelles conceptions de FPGA et depuis lors, elles ont évolué à ce jour.

Le marché FPGA est si fructueux que des entreprises comme Intel, Xilinx, Altera, Quick Logic, Lattice, etc., ils ont beaucoup investi pour développer de meilleurs FPGA ainsi que des environnements de programmation intégrés ou IDE pour eux. Fournissant ainsi de très bonnes plates-formes pour faciliter la tâche des développeurs ou des fabricants.

Actuellement, ces fabricants fournissent non seulement une puce programmable, mais incluent également nombreux éléments auxiliaires pour apporter plus de possibilités aux développeurs. Par exemple, ils incluent des cellules de mémoire flash, des cellules de mémoire SDRAM, etc.

Pour quoi sont-ils utilisés?

IDE pour programmer FPGA

Par conséquent, un FPGA peut être similaire à un ASIC mais que on peut choisir ce qui sera. Par exemple, nous pourrions créer un code pour le programmer et le transformer en CPU, GPU, additionneur, contrôleur de mémoire ou tout autre circuit logique implémenté sur une seule puce.

Les possibilités sont infinies. En fait, je vous recommande de visiter le site Web opencores.org, un site dédié à proposer une multitude de projets hardware libre. Vous trouverez des codes en VHDL, Verligo, etc., pour RAM, CPU, GPU, contrôleurs, ALU, FPU, décodeurs, etc..

Comment est-ce programmé?

Programmeur pour FPGA

Pour programmer un FPGA, nous pouvons le faire à partir de notre système d'exploitation préféré, tel que GNU / Linux, Windows et MacOS, bien qu'il existe certainement plus d'environnements de développement pour Windows. Généralement, les mêmes entreprises qui font du FPGA proposent un IDE très complet pour travailler avec et où trouver tous les outils dont vous avez besoin dans la même suite logicielle.

Vous aurez également besoin du Puce ou carte FPGA et le câble ou le programmateur nécessaire avec lequel vous pouvez connecter le FPGA à votre PC pour transmettre le code écrit au FPGA et ainsi il est programmé. C'est quelque chose de similaire à ce que vous faites avec la carte Arduino, en écrivant le programme Arduino IDE dans la mémoire programmable du microcontrôleur.

Ce n'est que dans le cas du FPGA que nous avons une matrice ou un tableau de composants élémentaires tels que des cellules de mémoire, des portes ET, OU, NON, des bascules et autres. éléments ou blocs de base de l'électronique numérique que nous pouvons utiliser. Avec le programme écrit, ce que nous allons faire, c'est imposer la manière dont ces blocs essentiels doivent être regroupés pour former le petit circuit que nous voulons, comme une ALU.

Autrement dit, si nous programmons un additionneur dans notre IDE, les blocs nécessaires pour implémenter cet additionneur ils vont lier dans le bon sens à l'intérieur du FPGA afin que la puce fonctionne comme un additionneur. Simple non? En général, plusieurs méthodes sont utilisées pour cette programmation au niveau physique, comme des mémoires ou des fusibles pour faire un lien permanent dans ce cas.

La vitesse à laquelle ils opèrent dépendra de fréquence d'horloge auquel le FPGA que nous avons acheté fonctionne. Par exemple, les plus basiques fonctionnent généralement à 50 Mhz, d'autres le feront à des fréquences beaucoup plus élevées. Dans le cas du FPGA 50 Mhz, cela signifie qu'il fonctionnera à un taux de 50.000.000 XNUMX XNUMX de fois par seconde. Si nous continuons avec l'additionneur que j'ai donné à titre d'exemple, vous pourrez faire ce montant de sommes en une seconde ...

Poursuivant avec le thème de la programmationUne fois que nous savons que vous pouvez écrire du code comme nous le ferions dans l'IDE Arduino ou pour développer tout autre programme, et en voyant comment cela se fait au niveau matériel, je dirai que ce n'est vraiment pas de la programmation en tant que telle. Il s'agit plutôt d'une description matérielle. En fait, des langages de description de matériel tels que VHDL, Verilog, etc. sont utilisés.

Avec ce programme est décrit à un niveau logique ce que fait le petit circuit que nous voulons mettre en œuvre. Et puis il va au FPGA. Bien qu'il soit vrai que certaines plates-formes permettent la programmation dans des langages de programmation tels que C pour pouvoir implémenter un CPU dans le FPGA puis générer des programmes à charger en mémoire et être traités par ledit processeur.

Intégration avec Arduino

Arduino-FPGA

Les FPGA sont généralement utilisés séparément, mais il est vrai qu'il existe de nombreux outils et kits sur le marché qui vous faciliteront la vie pour intégrer vos FPGA avec la plate-forme Arduino. Un exemple de carte pour intégrer des FPGA à vos projets avec Arduino est MKR Vidor 4000, bien qu'il y en ait d'autres.

Visionneuse MKR 4000 c'est une planche à trois puces. L'un d'eux est un FPGA, en particulier un Intel Cyclone 10. Il existe également d'autres puces pour Bluetooth LE ou une connectivité basse consommation ainsi que la compatibilité WiFi. Un bon complément pour fournir à votre Arduino des fonctionnalités de connectivité et pour pouvoir implémenter ce dont vous avez besoin dans le FPGA.

Avec lui, vous avez un matériel personnalisable, configuré par vous-même pour l'usage que vous souhaitez. Cela offre des possibilités infinies.


Soyez le premier à commenter

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données: Miguel Ángel Gatón
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.