Interfaçage de la mémoire DDR avec les FPGA AMD/Xilinx

Phil Salmony
|  Créé: Juillet 18, 2023  |  Mise à jour: Mai 14, 2024
Interfaçage de la mémoire DDR avec les FPGA AMD/Xilinx

Introduction

Interfacer de la mémoire volatile DDR à un FPGA sans expérience préalable peut initialement sembler assez intimidant. Malgré la flexibilité inhérente d'un FPGA, où nous pourrions supposer que nous pouvons connecter les E/S de la mémoire DDR externe n'importe où à n'importe quelles broches libres, nous devons encore considérer de nombreuses contraintes.

Par exemple, où placer certains groupes de broches de mémoire DDR, quelles tensions utiliser pour les banques, quels horloges nous avons besoin et où les attacher, comment éviter les violations de timing, et ainsi de suite.

Outre l'interfaçage au niveau du schéma, nous devons également nous préoccuper de l'interface 'réelle' sur le circuit imprimé, telles que les alimentations et leur distribution, le découplage, la terminaison, l'impédance et la longueur des pistes, l'appariement des retards, et plus encore.

Cet article examinera l'interfaçage de la mémoire DDR avec les FPGA d'un point de vue systémique et schématique. Comme exemple pratique, nous examinerons une conception de DSP audio basée sur AMD/Xilinx Spartan-7 (nommée 'Xerxes'), qui interface avec de la mémoire DDR2.

Interfaçage de la mémoire DDR avec les FPGA AMD/Xilinx_Xerxes

Matériel DSP audio Xerxes (FPGA AMD/Xilinx Spartan-7 avec mémoire DDR2)

Type de mémoire

Le type de mémoire que nous utilisons dépend de la conception. Cela dépend de nos besoins en capacité de mémoire et en bande passante mémoire, ainsi que de ce que notre FPGA choisi est capable de faire.

De manière générale, la plupart des FPGA modernes peuvent interfacer avec de la mémoire DDR2 et DDR3 (et leurs variantes à faible puissance, basse tension). Bien sûr, la mémoire DDR4 plus rapide et au-delà est également possible, mais généralement seulement pour les FPGA plus avancés.

Non seulement le débit de données maximal possible est important, mais aussi les exigences en matière de tension et de puissance, le type de boîtier, le coût et la disponibilité sont importants. Tout cela doit être considéré dès le début de la phase de conception.

Comparaison de mémoire DDR (Source : synopsys.com)

Comparaison de mémoire DDR (Source : synopsys.com)

Lors du choix de notre type de mémoire, nous devons également faire attention au grade de vitesse du dispositif de mémoire et à la notation de vitesse du contrôleur de mémoire dans le FPGA. Nous pouvons choisir de 'déclasser' notre mémoire ou contrôleur, donc ne pas fonctionner à pleine bande passante, ce qui nous donne plus de marge de timing.

Tableau typique de déclassement de mémoire (Source : AMD/Xilinx UG933)

Tableau typique de déclassement de mémoire (Source : AMD/Xilinx UG933)

Spécifiquement pour les FPGA AMD/Xilinx, je suggérerais de télécharger leur IDE Vivado et de jouer avec le Memory Interface Generator (MIG) IP gratuit.

Cela vous montrera rapidement quels types de mémoire, grades de vitesse et pièces compatibles vous pouvez utiliser.

Exemple de pièces de mémoire compatibles Vivado MIG

Exemple de pièces de mémoire compatibles Vivado MIG

Vous pourriez demander, pourquoi ai-je choisi la mémoire DDR2 pour la carte Xerxes ?

Bien qu'il s'agisse d'une norme assez ancienne, utiliser la mémoire DDR2 signifiait que je pouvais utiliser le régulateur de 1,8V déjà disponible sur la carte (cela alimente d'autres parties du FPGA) et je n'avais pas à ajouter un autre régulateur séparé.

De plus, la conception de Xerxes n'a pas des exigences particulièrement élevées en termes de bande passante mémoire, et donc une interface DDR2 était suffisante.

En outre, avoir une interface à bande passante inférieure facilite les contraintes de PCB, de terminaison et de timing.

 

Interface mémoire DDR et FPGA

Après avoir choisi un dispositif de mémoire approprié, il est temps de le connecter au FPGA dans votre schéma.

Premièrement, nous devons choisir une banque appropriée. Si vous utilisez une interface de données de 16 bits de large (ou moins), pour la plupart des FPGA, cela peut généralement tenir dans une banque. Sinon, nous devons diviser l'interface mémoire sur plusieurs banques.

Pour simplifier, nous opterons pour une interface mémoire de 16 bits de large, comme c'est le cas pour la carte Xerxes. Choisissez une banque libre capable de fonctionner avec la même tension que la mémoire DDR elle-même (dans le cas de Xerxes, il s'agit de la banque 34 à 1,8V en raison de l'utilisation de la mémoire DDR2).

Banque FPGA 34 avec découplage approprié alimenté par la source 1,8V

Banque FPGA 34 avec découplage approprié alimenté par la source 1,8V

Pour les FPGA AMD/Xilinx, en utilisant les outils Vivado et MIG, obtenir le schéma de brochage pour notre mémoire DDR est très simple. L'outil suggère soit un schéma de brochage approprié pour cette banque, soit nous pouvons assigner manuellement les broches et vérifier le schéma de brochage.

Outil de schéma de brochage Vivado MIG

Outil de schéma de brochage Vivado MIG

Si vous configurez manuellement le schéma de brochage, assurez-vous que les voies de données DDR individuelles ont le même numéro de byte de banque et que les strobes différentiels sont sur les broches DQS capables de FPGA différentielles.

Rappelez-vous que le schéma de brochage sera probablement ajusté pendant l'étape de conception et de routage du PCB. Grâce à la flexibilité du FPGA, échanger des broches pendant le processus de conception du PCB peut simplifier le routage et minimiser les transitions de couches.

Pour cet exemple, comme nous fonctionnons à partir d'une seule banque, nous devons utiliser le VREF interne, limitant ainsi la bande passante mémoire maximale.

De plus, nous devons faire attention à l'horloge. Idéalement, la source d'horloge devrait être dans la même banque attachée à une broche capable d'horloger (ou des broches si on utilise une source d'horloge différentielle).

Enfin, assurez-vous d'utiliser les outils des fournisseurs pour vérifier la conception et le timing. Puis, avec le premier agencement des broches en place, dans votre schéma, définissez les classes de réseau, les paires différentielles, et les règles, et utilisez le codage couleur pour vous faciliter la vie de conception de PCB.

Connexions DDR2 et source d'horloge du banc FPGA 34

Connexions DDR2 et source d'horloge du banc FPGA 34

Pour un seul dispositif, nous avons simplement besoin de faire des connexions point à point sur le composant de mémoire DDR.

Une terminaison doit être présente sur les signaux d'adresse/commande/contrôle (ACC) ; cependant, pour des taux de données plus faibles, nous pouvons souvent nous en passer. J'ajoute toujours une terminaison sur la paire d'horloges différentielles. Les voies de données sont terminées en interne aux deux extrémités.

Il est recommandé de placer des résistances de tirage vers le bas de 4,7k sur les lignes CKE, ODT, et éventuellement CS#.

Connexions de signal et d'alimentation du module de mémoire DDR2

Connexions de signal et d'alimentation du module de mémoire DDR2

Enfin, le module de mémoire doit bien sûr être alimenté. Dans le cas de la carte Xerxes, le module DDR2 est connecté au même régulateur de 1,8V que notre banc FPGA 34. Un découplage approprié est requis - en règle générale, si rien d'autre n'est spécifié dans les fiches techniques ou les notes d'application, visez à utiliser un petit condensateur (~100nF) par deux broches VDD et un condensateur de masse plus important par dix broches VDD.

La tension de la broche VREF peut être générée via un simple diviseur de tension avec un condensateur de filtrage, comme montré dans l'image ci-dessus.

Conclusion

Dans cet article, nous avons décrit les stratégies de base pour incorporer de la mémoire DDR non volatile externe dans nos conceptions basées sur FPGA d'un point de vue système et schématique.

Rappelez-vous que ce sont les bases absolues, et selon les exigences de votre système, la conception sera beaucoup plus impliquée. Surtout, si vous prévoyez d'utiliser des parties de mémoire et des interfaces plus rapides, et plusieurs modules.

Lors de la conception de systèmes avancés basés sur FPGA et DDR, assurez-vous d'utiliser les outils et fonctionnalités contenus dans des outils ECAD de classe mondiale tels que Altium Designer. Assurez-vous de sécuriser votre essai gratuit d'Altium Designer et Altium 365 ici.

A propos de l'auteur

A propos de l'auteur

Phil Salmony est ingénieur en conception matérielle et créateur de contenu d'ingénierie pédagogique. Après avoir obtenu une maîtrise en ingénierie des systèmes électriques et de commande à l'université de Cambridge, il a commencé sa carrière d'ingénieur dans une grande entreprise aérospatiale allemande. Plus tard, il a cofondé au Danemark une start-up de drones dont il était directeur de l'électronique et de la conception de circuits imprimés et qui se spécialisait dans les systèmes embarqués à signaux mixtes. Il dirige actuellement son propre cabinet de conseil en ingénierie en Allemagne et travaille principalement dans le domaine de l'électronique numérique et de la conception de circuits imprimés.

En plus de son travail de consultant, Phil Salmony dirige sa propre chaîne YouTube (Phil's Lab), où il crée et publie des vidéos d'ingénierie éducative sur des sujets tels que la conception de circuits imprimés, le traitement de signaux numériques et l'électronique à signaux mixtes.

Ressources associées

Documentation technique liée

Retournez à la Page d'Accueil
Thank you, you are now subscribed to updates.