conseils de conception de circuits imprimés FPGA personnalisés

9

Je prévois de concevoir un PCB FPGA personnalisé. le PCB contiendra des capteurs. J'ai besoin de lire la sortie des capteurs et de les traiter dans le processeur. J'ai réalisé de nombreux projets à l'aide de FPGA, mais ce sera ma première conception personnalisée où je dois également prendre en compte la configuration matérielle. J'ai fait des recherches récemment, mais il m'est encore difficile de partir d'un point. Par conséquent, je vous demande de m'aider, ainsi que d'autres personnes qui souhaitent concevoir leur FPGA personnalisé, quels sont les points dont ils doivent tenir compte à chaque étape. Existe-t-il des livres / ressources en ligne qui peuvent nous aider dans ce processus? Je ferai également un document après avoir terminé mon projet afin que les gens puissent l'utiliser.

omis
la source
Vous devriez peut-être mentionner la taille physique du FPGA que vous prévoyez d'utiliser, le nombre de broches, les tensions d'alimentation requises, ...
Dzarda
Ceux-ci ne sont pas encore spécifiés. Peut-être que ma question n'était pas claire, mais je cherche une ligne directrice.
omid
OK très bien.
Dzarda du
Cette question semble être hors sujet
Roh
4
La grande question est de savoir si vous êtes prêt à utiliser un package BGA, ou si vous allez vous limiter au sous-ensemble d'offres (et de performances électriques réduites) disponibles dans les packages TQFP conviviaux. Ensuite, espérez-vous acheminer toutes vos fournitures et signaux sur deux couches (délicat mais possible pour des objectifs limités) ou êtes-vous prêt à en utiliser 4 ou plus? Quelle est la vitesse des signaux de votre capteur? À quel rythme espériez-vous cadencer la logique interne? Avez-vous des analogiques sensibles au bruit? Avez-vous envisagé de créer une carte fille à utiliser avec une carte FPGA existante?
Chris Stratton

Réponses:

11

Dans ma société, nous avons précédemment conçu certaines cartes FPGA personnalisées et avons récemment commencé à utiliser des cartes FPGA commerciales standard ("COTS") avec des cartes filles FMC personnalisées.

Stade du prototype

Si vous en êtes encore au stade de la définition du projet, envisagez d'acheter au moins une carte FPGA COTS pour le prototypage. Vous pouvez câbler l'un de vos capteurs aux en-têtes d'E / S et faire une preuve de concept rapide. Cela vous donne une idée de la façon dont le projet pourrait fonctionner lorsqu'il est mis à l'échelle de nombreux capteurs, et estimez combien vous pouvez prendre en charge avec un FPGA donné.

Si le FPGA est trop petit ou trop lent ou que les outils sont inadéquats pour le travail, il est facile d'échanger un autre FPGA COTS à ce stade. (Enfin pas facile mais au moins gérable ...)

Si le firmware ne fonctionne pas à ce stade, c'est clairement à cause d'un problème de firmware, pas d'une erreur de conception de PCB personnalisée. Avec un firmware personnalisé et un PCB personnalisé, il est parfois difficile de dire de quel côté est en cause un problème.

Carte FPGA personnalisée par rapport à une carte FPGA commerciale standard

La conception d'une carte FPGA personnalisée est logique si le projet aura un cycle de vie court, un volume élevé ou s'il nécessite un facteur de forme plus petit que celui que vous pouvez obtenir avec une carte FPGA COTS et des cartes d'extension PMOD ou FMC.

Si le cycle de vie du projet dépasse la durée de vie du produit d'une puce de mémoire DDR (quelques années), la conception d'une carte fille FMC personnalisée peut être une meilleure alternative.

Le coût est un facteur dans cette décision. La plupart des cartes FPGA COTS sont quelque peu polyvalentes, conçues pour une flexibilité maximale. Si vous créez un produit à volume élevé et sensible aux coûts, il vaut probablement la peine de faire un design personnalisé; mais pour les petits volumes, vous feriez probablement mieux de vous concentrer sur la création d'une carte fille.

Quelle que soit l'approche choisie, certaines interfaces nécessitent une documentation claire et maîtresse: à l'interface entre les broches d'E / S de niveau supérieur FPGA et le reste de la carte, et à l' interface du connecteur entre les cartes. Ce sont des endroits où les emplacements des broches, les noms de réseau internes et les noms de réseau externes sont parfois incompatibles et échangés. Un tableau est une documentation suffisante; assurez-vous de garder cette table d'interface versionnée et sous contrôle de source. Avant d'envoyer des fichiers PCB à la fabrication, imprimez une copie de cette table d'interface, une copie du schéma et une copie du rapport FPGA pin / pad. Faites glisser un surligneur sur les papiers pour vérifier que chaque signal se connecte là où il devrait.

Pour les connecteurs, j'ai appris la manière difficile de fournir un "schéma de système" mécanique qui montre les cartes et les connecteurs correspondants ensemble sur un seul dessin coté. J'ai d'abord été brûlé par un système de connecteurs VME où la broche "A1" sur un connecteur ne correspondait pas à la broche "A1" sur l'autre connecteur. J'ai également vu des concepteurs oublier qu'une paire de connecteurs à angle droit entraîne une connexion d'image miroir (90 degrés + 90 degrés = 180 degrés). C'était un problème lorsque j'étais responsable de la carte mère et que plusieurs autres chefs de projet étaient responsables de diverses cartes filles.

Conseils sur la carte FPGA personnalisée

Commencez par la «conception de référence» du fournisseur FPGA, puis omettez toutes les pièces qui ne sont pas requises pour votre application. Ne retirez aucun condensateur de dérivation du FPGA et n'essayez pas de vous en sortir en utilisant moins de couches de PCB. Faites attention à la pile de couches (souvent trouvée à côté du dessin de forage); les composants à pas fin utilisent généralement 0,5 oz de cuivre au lieu de l'épaisseur standard d'une feuille de cuivre de 1 oz.

Le paquet BGA est une douleur à travailler. Le rendement n'est jamais aussi bon qu'avec les packages TQFP ou TQFN, et retravailler un BGA est presque impossible. Même l'inspection des problèmes d'assemblage nécessite un imageur à rayons X. Assurez-vous d'utiliser un fournisseur de services de fabrication sous contrat en qui vous avez confiance.

Les alimentations sont toujours délicates lorsque vous travaillez avec des cartes FPGA. Les besoins réels en alimentation du FPGA dépendent très fortement du flux binaire de configuration. Xilinx fournit un outil "d'estimation de puissance", mais l'estimation n'est valide que si le micrologiciel est complet. Lors d'un changement de micrologiciel de dernière minute, il y a un risque que les besoins en énergie soient supérieurs à ceux attendus. Prévoyez de laisser une certaine marge actuelle d'approvisionnement. Si l'estimation de puissance initiale indique que vous avez besoin de 560mA, allez-y et utilisez un régulateur de 1000mA. Le courant de sortie supplémentaire disponible ne fait aucun mal, mais un courant de sortie insuffisant entraînera un comportement aberrant du système.

S'il y a des broches FPGA non validées, faites-en ressortir autant que possible dans un en-tête. En cas de problème, ces broches non validées deviennent une ressource de diagnostic précieuse pour sonder les signaux à l'intérieur du FPGA.

MarkU
la source
11

J'ai conçu plus d'une douzaine de cartes basées sur FPGA qui utilisaient un large éventail de différents types de FPGA, des Lattice Mach X02 à faible puissance aux Virtex 6 hautes performances avec 24 canaux SERDES. Les étapes normales que je suis sont les suivantes:

Trouvez une carte COT (similaire à MarkU) et obtenez une idée approximative des ressources FPGA internes dont vous aurez besoin, en particulier je fais attention à:

  • Nombre de LUT (table à rechercher):(la conception s'intègre-t-elle dans les LUT sur la carte de référence?) Si vous n'avez pas les ressources ou une méthode exhaustive pour déterminer une estimation précise de l'utilisation des LUT (<précision 1K LUT) parce que la conception n'est peut-être pas terminée. Utilisez cette règle d'or. Si la conception est presque terminée, prenez la taille de la conception (nombre de LUT) et trouvez un FPGA avec au moins 30% de LUT supplémentaires. si la conception n'est pas proche de la fin, augmentez jusqu'à 50% ou 100% de LUT supplémentaires. Donc, si la conception s'intègre dans des LUT 9K, assurez-vous d'utiliser un FPGA avec 12K LUT ou plus. J'ai tendance à exagérer et j'irais probablement jusqu'à 25 000 LUT. Cela vous évitera des maux de tête atroces plus tard. Celui qui commande cette conception de carte doit comprendre qu'il devrait y avoir plus d'une rotation de cette conception, il est donc compréhensible de surdimensionner la première version du FPGA.
  • BRAM (Block RAM count):Déterminez si votre conception nécessite plus de ressources mémoire que votre FPGA en interne. Cela est facilement ignoré au début, mais dans une conception, vous avez tendance à utiliser la RAM de bloc pour diverses raisons (ROM, FIFO, etc ...) J'ai manqué de mémoire de bloc sur une conception et j'ai essayé d'utiliser de la RAM distribuée (en utilisant les LUT comme RAM ) et il a mangé toutes mes LUT très rapidement. Il est important de déterminer si vous aurez besoin de mémoire externe. Cela ajoute beaucoup de risques aux conceptions, car si la conception nécessite un niveau de performance, vous pouvez '
  • Énumérer toutes les normes de signalisation et les niveaux de tension possibles que vous utiliserez: Ceci est important car certaines des normes de signalisation que vous souhaitez utiliser (LVDS, LVSPEC, LVCMOS) peuvent avoir des restrictions de tension. Parcourez les guides de l'utilisateur et assurez-vous que toutes ces normes sont prises en charge.
  • Exigences d'alimentation:Je sympathise avec tous les reproches précédents concernant les alimentations sous-dimensionnées pour obtenir la tension de base spécifiée est tuf, récemment j'ai utilisé beaucoup de modules TI Nano pour les FPGA grands mais bas de gamme (Spartan LX45 (T) - LX75 (T) et treillis ECP3). Heureusement, vous pouvez atténuer certains risques lors du dimensionnement des alimentations utilisées pour les E / S. En particulier, si cette banque ne pilote pas une source inconnue (connecteur d'extension), le processus est le suivant: recherchez tous les composants auxquels cette banque sera connectée, déterminez la capacité d'entrée pour tous ces composants, découvrez la fréquence d'horloge maximale que vous pilotera ces signaux, vous pouvez calculer à la fois la puissance requise et estimer approximativement la condition de dérivation,

En utilisant l'équation [P = (1/2) CV ^ 2 * (f)] où C = capacité d'entrée, f = fréquence. de l'entrée que votre FPGA doit piloter (pour chaque signal!). vous pouvez trouver la pire estimation de la quantité de puissance requise pour piloter tous les signaux de sortie.

Vous devrez également tenir compte de la perte de puissance associée aux résistances de terminaison internes (en fonction des normes d'E / S que vous utilisez)

J'ai également utilisé l'outil TI Webbench de plus en plus récemment avec beaucoup de succès:

TI Webbench (je ne travaille pas pour TI)

Schémas:

  • Configurez votre schéma avec un idiot à l'esprit Vous et tous les concepteurs HDL reviendrez beaucoup à ce schéma, alors permettez à tout le monde de trouver facilement ce dont ils ont besoin rapidement sans que vous ou eux ne recherchiez l'ensemble du schéma pour le découvrir si la broche 20 est l'entrée d'horloge. Cela comprend de nombreuses notes sur le schéma (si possible), décrivent le but d'un circuit, le résultat attendu et même les préoccupations. Parce que les FPGA peuvent être décomposés en banques, pensez à diviser le composant FPGA en plusieurs parties et peut-être même dédier une page schématique entière pour une banque individuelle.

  • METTEZ D'énormes notes ennuyeuses dans votre schéma sur la fixation des horloges aux broches correctes: je me suis cogné la tête contre de nombreux murs lorsque je construisais ma première image pour la conception et obtenais le redoutable `` signal d'horloge acheminé sur une broche non activée par l'horloge '' . Vivez dans la peur des différents types de broches d'horloge sur le FPGA. Assurez-vous de comprendre que certaines broches d'horloge sont destinées à être utilisées sur un quadrant d'un FPGA, sinon vous devrez faire face à tout le monde en disant: "Hé saviez-vous qu'il y a certaines broches d'horloge qui sont destinées à être utilisées sur un quadrant d'un FPGA". Il ne faut que 15 personnes pour vous le dire afin de ne plus jamais recommencer.

  • PASSEZ BEAUCOUP DE TEMPS SUR LA CONCEPTION DE LA CONFIGURATION FPGA: Assurez-vous de faire ressortir les broches JTAG même si vous ne prévoyez pas de les utiliser. C'est la différence entre une erreur exploitable et une faille fatale.

  • En cas de doute, faites ressortir des boutons et des voyants de signaux supplémentaires et des commutateurs DIP: J'ai beaucoup insisté sur le travail supplémentaire associé au routage de signaux supplémentaires vers les en-têtes LED, les commutateurs DIP et les boutons, mais cela a TOUJOURS aidé.

Disposition :

  • Communiquez tôt avec la maison Fab: Surtout si vous avez besoin d'un routage à impédance contrôlée, demandez une pile de couches pour le nombre de couches souhaité. Il est beaucoup plus facile d'acheminer des signaux à haute vitesse lorsque vous avez d'abord défini les largeurs de trace comme apposées à comprendre que vous auriez pu utiliser des traces de 6 mil au lieu de 8 mil pour atteindre votre impédance de 50 ohms.

  • Commencez avec des bouchons de dérivation: concevez le système d'alimentation tôt. La première chose que je fais est de commencer par placer toutes les petites majuscules sous le FPGA ou à proximité des broches. Les plus grands en dehors du FPGA et acheminent tout un circuit d'alimentation et le placent à peu près là où je m'attends. De cette façon, vous ne combattrez pas le puzzle du routage et ne ferez pas de compromis.

  • Signaux à grande vitesse en second: Ce seront ceux que vous ne voulez pas sauter trop de couches.


J'apprends toujours plus de choses et j'adorerais d'autres conseils que d'autres designers ont rencontrés, alors ajoutez-les.

Dave
la source
6

Je pense qu'un bon point de départ pour un PCB personnalisé équipé d'un FPGA sera les cartes de conception de référence du fournisseur FPGA. Vous pouvez inspecter ces conceptions par exemple pour l'alimentation, mais sachez que les cartes de conception de référence sont parfois sous-dimensionnées. Nous avons eu beaucoup de problèmes avec la perte de configuration des cartes Xilinx ML605, en raison d'une alimentation sous-dimensionnée.

Répondre au commentaire d'omid:

Un de mes collègues a implémenté un algorithme de calcul systolique sur un Virtex-6 LXT240. L'entrée de données a été fournie par Gigabit Ethernet. En raison de l'approche systolique, le FPGA ne faisait presque rien si aucune donnée n'était dans le fifos d'entrée ou principalement toutes les bascules du FPGA basculaient à 200 MHz si une nouvelle trame Ethernet arrivait. Ce déséquilibre dans le calcul a provoqué l'arrêt des circuits d'alimentation des TIs la carte ML605 qui ne pouvait être récupérée de cet état qu'en commutant l'interrupteur principal.

Nous avons donné cette conception au département de génie électrique de notre université et ils ont compris qu'il n'y avait aucun moyen d'ajuster les coefficients du régulateur en fonction des condensateurs installés.

Oui, on pourrait dire: mauvais design ou utiliser des fifos plus gros ou ...

La solution de mes collègues était une utilisation réduite du FPGA de 80%.

Néanmoins, une carte de prototypage et une conception de référence devraient être capables de gérer des charges de travail extrêmes, surtout si cette carte contient un FPGA qui n'a pas une consommation d'énergie aussi régulière qu'un CPU.

Paebbels
la source
Pouvez-vous expliquer ce que vous entendez par «sous-dimensionné» dont je devrais être conscient?
omid