Que se passe-t-il lorsqu'un FPGA est «programmé»?


13

D'après ce que je comprends, le processus de programmation d'un FPGA se décompose en deux parties:

  1. Encoder la description matérielle en bits que le FPGA peut comprendre (c'est-à-dire écrire du HDL et le compiler)
  2. Chargez le HDL compilé sur le FPGA.

Ma question est: "Que fait le FPGA avec le HDL compilé?". Pour le moment, je considère les FPGA comme un "matériel moulable", où les fils et les portes logiques peuvent être moulés à votre guise. Une des bonnes choses est que la moulabilité est permanente: les FPGA peuvent être reprogrammés.

Comment les FPGA interprètent-ils le HDL compilé? Comment la moulabilité permanente est-elle atteinte?


4
Ce n'est en fait pas permanent - le train de bits FPGA doit être rechargé depuis l'EEPROM chaque fois que l'alimentation est appliquée. Les CPLD n'ont pas ce problème, et certains FPGA ont une EEPROM intégrée qui charge leur flux binaire à chaque mise sous tension.
AngryEE

2
Je pense qu'il veut dire "l'aptitude au moulage est permanente", c'est-à-dire que le programme lui-même n'est pas permanent.
ajs410

Réponses:


23

À en juger par votre autre question, vous êtes un gars de Xilinx. Je suggère donc fortement d'obtenir la fiche technique de votre puce Xilinx et d'aller au chapitre Description fonctionnelle. Pour la puce Spartan 3 que j'utilise, c'est 42 pages de lecture amusante. Il détaille exactement les composants à l'intérieur d'un FPGA - les IOB, les CLB, les tranches, les LUT, la RAM de bloc, les multiplicateurs, le gestionnaire d'horloge numérique, le réseau d'horloge, l'interconnexion et certaines informations de configuration très basiques. Vous devez comprendre ces informations si vous voulez savoir à quoi ressemble un "HDL compilé".

Une fois que vous êtes familiarisé avec l'architecture de votre FPGA, vous pouvez comprendre ce processus. Tout d'abord, votre conception HDL est exécutée via le moteur de synthèse, qui transforme votre HDL en RTL. Ensuite, le mappeur traite les résultats de la synthèse, les «mappant» sur les éléments disponibles de l'architecture FPGA. Ensuite, le routeur place et route (PAR), qui détermine où ces pièces vont et comment les connecter. Enfin, les résultats de PAR sont transformés en fichier BIT. Typiquement, ce fichier BIT est ensuite transformé d'une certaine manière afin qu'il puisse être chargé dans une puce Flash, afin que le FPGA puisse être programmé automatiquement lors de sa mise sous tension.

Ce fichier bit décrit l'ensemble du programme FPGA. Par exemple, les CLB dans un Spartan 3 sont composés de tranches, qui sont composées de LUT, qui ne sont que des SRAM 1 bit à 16 adresses. Donc, une chose que le fichier BIT contiendra est exactement quelles données vont dans chaque adresse de la SRAM. Le fichier BIT contient également la façon dont chaque entrée de la LUT est câblée à la matrice de connexion. Le fichier BIT contiendra également les valeurs initiales qui vont à l'intérieur de la RAM du bloc. Il décrira ce qui est connecté aux broches de réglage et de réinitialisation de chaque bascule dans chaque tranche. Il décrira comment la chaîne de transport est connectée. Il décrira l'interface logique de chaque IOB (LVTTL, LVCMOS, LVDS, etc.). Il décrira toutes les résistances intégrées pull-up ou pull-down. Fondamentalement, tout.

Pour Xilinx, la mémoire du FPGA est effacée lorsque la configuration est lancée (c'est-à-dire que PROG_B est affirmé). Une fois la mémoire vide, INIT_B passe à l'état haut pour indiquer que la phase est terminée. Le fichier BIT est ensuite chargé, via JTAG ou l'interface de puce Flash. Une fois le programme chargé, le Global Set / Reset (GSR) est pulsé, remettant toutes les bascules à leur état initial. La broche DONE passe alors au niveau haut, pour indiquer que la configuration est terminée. Exactement un cycle d'horloge plus tard, le signal global à trois états (GTS) est libéré, permettant aux sorties d'être pilotées. Exactement un cycle d'horloge plus tard, le Global Write Enable (GWE) est libéré, permettant aux bascules de commencer à changer d'état en réponse à leurs entrées. Notez que même ce processus de configuration final peut être légèrement réorganisé en fonction des indicateurs définis dans le fichier BIT.

ÉDITER:

Je dois également ajouter que la raison pour laquelle le programme FPGA n'est pas permanent est que le tissu logique est composé de mémoire volatile (par exemple SRAM). Ainsi, lorsque le FPGA perd de la puissance, le programme est oublié. C'est pourquoi ils ont besoin, par exemple, de puces Flash comme stockage non volatile pour le programme FPGA, afin qu'il puisse être chargé chaque fois que l'appareil est allumé.


6

La compilation du HDL donne un motif binaire qui indique quelles connexions à l'intérieur du FPGA doivent être activées. Le FPGA n'a plus à interpréter le HDL. Le modèle de bits est programmé dans un chargeur série Flash / EEPROM et au démarrage, ce modèle est déplacé dans le FPGA, établissant les connexions nécessaires.


1
SYNTHÈSE signifie trois phrases 1. Génération de netlistes 2. Optimisation au niveau de la porte 3. Cartographie technologique.
Standard Sandun

4

Le résultat de la compilation est un flux binaire (littéralement un flux de bits) qui est chargé après la mise sous tension. Cela se déplace à travers le FPGA stocké dans certaines cellules de mémoire (verrous). Ces cellules sont connectées à différentes entités logiques, multiplexeurs, tables de correspondance, blocs RAM, matrices de routage et constituent ce qu'on appelle la "configuration". Une fois le train de bits chargé, le FPGA commence à fonctionner - les bits dans les verrous de configuration "indiquent" à chaque petit morceau de FPGA comment fonctionner.

EDIT 24 avril 2012: Les tongs que j'ai mentionnées ne concernent pas les tables de recherche ou leur configuration. Comme l'a dit @ ajs410, ceux-ci sont en RAM, ce qui est encore moins de transistors. Les bascules sont destinées au stockage des données hors de la LUT, si ce stockage est activé.


Quelle partie des circuits d'un FPGA typique est la logique et le routage réels, et combien prend en charge la programmation?
supercat

Techniquement, les «cellules de mémoire» sont des bascules, pas des verrous. C'est-à-dire qu'ils sont déclenchés par les bords.
Brian Carlton

@BrianCarlton: Les bascules sont-elles vraiment utilisées pour toutes les cellules de stockage de programme? D'après ce que je comprends, les bascules ont besoin de quelque chose de l'ordre de 12-16 MOSFET par bit; en revanche, d'autres techniques entièrement statiques pour le verrouillage des données ne nécessitent que 5-8.
supercat

1
Une LUT est généralement constituée de SRAM. Les bascules sont attachées à la sortie de la SRAM.
ajs410

1
@supercat: J'ai entendu dire que 90% d'un FPGA est en cours de routage ... le reste est logique et configuration - ne peut pas trouver une référence rapidement cependant :(
Martin Thompson

1

Le terme standard est "configuration" et non "programmation" pour un FPGA. Le FPGA est généralement un appareil basé sur SRAM. Une mémoire SRAM stocke des bits qui indiquent quelles connexions sont formées et rompues à l'intérieur de la "structure logique" du dispositif. Lorsque la configuration se produit, un flux de bits est envoyé au FPGA qui écrit dans cette SRAM. Lorsque le FPGA basé sur SRAM est commuté, les données SRAM sont effacées et lorsque le FPGA est allumé, il doit être reconfiguré.

Maintenant sachez ceci, il existe différentes méthodes pour "configurer" et FPGA et donc différents formats de fichiers existent contenant ce "flux binaire". En fin de compte, la structure de ces fichiers et les détails de la configuration précise du FPGA sont la propriété de la fabrication et ces informations ne sont jamais partagées. Mais le principe général reste le même pour tous les FPGA.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.