Que se passe-t-il lorsqu'un FPGA est sous tension et non configuré?

10

J'essaie de comprendre ce qui se passe si vous laissez un FPGA non programmé pendant une longue période.

Supposons que vous ayez un FPGA et que vous le laissiez non programmé pendant une longue période (plusieurs minutes à plusieurs heures après la mise sous tension), c'est-à-dire sans flux binaire dessus, est-ce mauvais pour l'appareil? Est-il recommandé d'avoir un bitstream sur un FPGA sous tension à tout moment? Quelle est l'opinion générale à ce sujet?

Les résultats sont-ils différents sur différents appareils ou fabricants (Xilinx vs Altera vs autres)?


Information additionnelle:

J'ai une carte SoC personnalisée qui utilise un FPGA Xilinx Virtex-6. J'ai également un Xilinx ML605 que j'utilise à des fins de référence.

Carte personnalisée: j'allume la carte. Je remarque que j'ai peu de temps pour le programmer en utilisant XMD (Xilinx Microprocessor Debugger). Si je perds la fenêtre de 20 à 30 secondes, je dois éteindre et rallumer la carte avant de réessayer. Cela ne se produit pas avec un ML605.

Lorsque j'essaie de programmer la carte personnalisée sur XMD, j'obtiens quelque chose comme:

Error: Device Reset by JPROGRAM command, failed. INIT_COMPLETE did not go high.

Laissez-moi savoir ce que vous pensez.

boffin
la source
1
Vous insistez dans votre question et dans votre montage sur la "longue période". Est-ce vraiment important si c'est quelques secondes ou quelques heures? Je ne pense pas que ce soit le cas.
m.Alin
Je vois un phénomène sur une carte FPGA personnalisée où j'obtiens une fenêtre de programmation de 20 à 30 secondes. Si je ne programme pas dans cette fenêtre, je ne peux pas programmer avec succès. Le thème central de ma question n'est pas la durée mais la compréhension du phénomène.
boffin
Êtes-vous en mesure de vous connecter à l'appareil? Ou échoue-t-il simplement lorsque vous essayez de programmer? Quelle est l'erreur que le programmeur donne?
embedded.kyle
1
Vous programmez directement le FPGA via JTAG, ou vous chargez d'abord la puce Flash, puis vous laissez le FPGA configurer à travers cela?
ajs410
@fpga_boffin, pourriez-vous ajouter ces détails à votre question s'il vous plaît?
Jon L

Réponses:

7

C'est une question intéressante. Par expérience personnelle, j'ai laissé les FPGA sous tension pendant des heures dans un état non programmé tout en effectuant des vérifications sur le reste des circuits lorsqu'une nouvelle carte arrive de la maison d'assemblage. Je n'ai remarqué aucun effet néfaste de le faire. Mais honnêtement, je n'y ai jamais pensé.

J'ai regardé autour de moi pour essayer de trouver une recommandation d'un fabricant de FPGA mais je n'ai pas pu en trouver une. La seule déclaration que j'ai trouvée concernant cet état provient d'un livre blanc Lattice et concerne la conception du FPGA lui-même et non la façon dont il doit être utilisé:

La consommation d'énergie du dispositif de repos statique préprogrammé est la quantité d'énergie consommée par le FPGA avant la programmation du dispositif. Pour la consommation d'énergie de l'appareil au repos, le FPGA est dans un état non programmé, mais a été alimenté. Il est important que le périphérique ne consomme pas beaucoup d'énergie pendant cette période, car conceptuellement le périphérique FPGA pourrait consommer une puissance excessive et potentiellement couper les alimentations, empêchant la carte de s'initialiser avec succès et le système.
Le fournisseur de FPGA doit donc concevoir avec soin des transistors qui ont une faible empreinte électrique de conception de papier blanc à semi-conducteurs à faible puissance A, sans compromettre dans les domaines où des performances plus élevées sont requises (par exemple, E / S et SERDES)

Xilinx mentionne également le courant de repos afin que vous puissiez concevoir votre alimentation en conséquence. Mais ne mentionne pas quel est l'effet sur l'appareil de le laisser dans un tel état:

La puissance statique ou au repos est principalement dominée par le courant de fuite du transistor. Lorsque ce courant est répertorié dans les fiches techniques, il est répertorié comme ICCINTQ et est le courant consommé par l'alimentation VCCINT alimentant le cœur FPGA.

Je serais très intéressé d'entendre si quelqu'un a subi des dommages à un appareil en le laissant dans un état de repos. Mais je pense que tant que l'alimentation est correctement adaptée à l'appareil, il ne devrait pas y avoir de problème.

embedded.kyle
la source
6

Je fais référence à la fiche technique Spartan 3 , car c'est le FPGA que je connais le mieux.

Si vous regardez le chapitre 2 (Description fonctionnelle), la section "Configuration" a quelques organigrammes. La figure 27 (page 50) montre le diagramme de flux pour le chargement à partir de Flash. La figure 28 montre le diagramme de flux JTAG.

Voici un bref résumé.

1) Attendez que Vccint, Vccaux et Vcco atteignent les niveaux requis.

2) Effacer les verrous de configuration

3) Attendez que INIT_B monte. INIT_B est une sortie à drain ouvert qu'un maître externe peut maintenir basse afin de retarder la configuration.

4) Broches du mode échantillon. Cela détermine si vous allez charger via JTAG ou Flash, et si Flash si le FPGA ou le Flash est le maître.

5) Charger les trames de données de configuration.

6) Vérifiez que le CRC pour les trames de données est correct. S'il n'est PAS correct, le FPGA conduira INIT_B bas pour indiquer une erreur CRC et abandonnera le démarrage.

L'étape 5 est probablement où votre vraie question est - que se passe-t-il s'il n'y a rien à charger? Eh bien, vous ne devriez pas passer à l'étape 5 si vous faites les choses correctement. La puce Flash maintiendra INIT_B faible jusqu'à ce qu'elle soit prête à servir des données au FPGA. Si vous utilisez JTAG, je ne suis pas sûr que votre programmeur JTAG maintienne INIT_B bas, mais quand il est allé programmer le FPGA, il affirmerait presque certainement PROG_B (en le poussant bas), ce qui fait revenir le FPGA à l'étape 2.

Si j'étais vous, j'étendrais le signal INIT_B lors de la mise sous tension pour voir ce qui se passe. S'il commence bas, monte haut, puis revient bas, le FPGA a abandonné la séquence de démarrage et vous devrez probablement affirmer PROG_B afin de réinitialiser le FPGA.

ajs410
la source
Votre réponse ne dit rien sur l'état interne du FPGA avant l'étape 5, ce que OP veut savoir.
stevenvh
Étape 2. Effacer les verrous de configuration. Étape 3, en attendant INIT_B. Je discute également du type de décision que le FPGA peut prendre chaque fois qu'il constate qu'il n'y a pas de données de configuration à charger (INIT_B devient faible pour indiquer une erreur CRC).
ajs410
1
Je m'excuse, la fiche technique à laquelle je faisais référence remontait à 2005 environ, et elle a été mise à jour en 2009. Cependant, si vous aviez lu attentivement mon commentaire, vous auriez pu le trouver. Chapitre 2, Description fonctionnelle, sous la rubrique Configuration. Le lien a été mis à jour pour pointer vers la dernière fiche technique, ainsi que les nouveaux numéros de page.
ajs410
0

La configuration par défaut est conçue pour être aussi passive que possible afin de rendre l'appareil universellement utilisable.

Pour la série Altera Cyclone (avec laquelle j'ai le plus d'expérience), cela signifie

  • les broches d'E / S sont faiblement tirées vers VCCIO (pour garder les circuits intégrés avec des lignes d'activation de puce active-basse hors du bus),
  • la sortie CONF_DONE est abaissée (vous pouvez la connecter à la broche de réinitialisation d'autres circuits intégrés pour les maintenir en réinitialisation jusqu'à ce qu'une configuration ait été chargée et les restaurer à un état connu lors de la reconfiguration), et
  • les entrées d'horloge ne sont pas transmises aux réseaux d'horloge.

Les autres types de FPGA doivent être de même repos et fournir des sorties non inversées et inversées indiquant l'état de configuration au reste de la carte.

Laisser l'appareil dans cet état est inoffensif, car le noyau est assez isolé du monde extérieur, et seuls les pull-ups peuvent avoir un petit courant à travers eux.

Simon Richter
la source