Anonim

Un besoin courant dans nombre de ces applications est la possibilité de stocker des données telles que des informations d'étalonnage, des paramètres utilisateur et des étiquettes d'identification lorsque l'équipement est mis hors tension. Si l'équipement est doté d'un microprocesseur intégré, le code du processeur doit également être stocké.

Pour les systèmes où le coût, le nombre de pièces et l'encombrement de la carte ne sont pas un problème, un dispositif de mémoire flash standard peut généralement être utilisé pour ces besoins de stockage de données. Cependant, dans de nombreux cas, ces contraintes amènent les concepteurs à rechercher un moyen de déployer des composants à double usage au sein de leurs systèmes.

Les FPGA ont toujours un stockage non volatile associé, qu’il s’agisse de périphériques monolithiques non volatils ou de périphériques SRAM utilisant une mémoire de démarrage. Dans les deux cas, une question naturelle est de savoir si une partie de cette mémoire non volatile peut être utilisée pour stocker des données lors des arrêts du système.

n

Considérations clés
Avant de choisir l'approche à adopter, il est utile de prendre en compte les exigences de l'application. Le premier facteur à considérer est de savoir si une capacité de lecture / écriture est requise ou si une opération en lecture seule est acceptable. Le facteur suivant à considérer est la quantité de données à stocker.

L'application nécessite-t-elle seulement quelques bits de stockage ou des milliers, voire des millions, de bits sont-ils nécessaires? Un autre élément à prendre en compte est le nombre de cycles d'écriture requis par l'application. Enfin, la vitesse des opérations de lecture et d’écriture ainsi que leur nature, séquentielle ou aléatoire, doivent être revues.

Bloc initialisé RAM
La plupart des FPGA permettent aux blocs de mémoire RAM de leurs matrices d'être initialisés à partir de leur périphérique d'amorçage. Ceci fournit une excellente méthode pour fournir une quantité relativement importante de ROM à utiliser pour stocker des tables de consultation ou du code de programme. Ces ROM prennent en charge les lectures aléatoires à grande vitesse et peuvent être reprogrammées avec le reste de la configuration FPGA. Si tout ce que la conception nécessite est une petite quantité de ROM, cette approche ne doit pas être négligée.

Réutilisation de SPI
Tous les FPGA SRAM modernes permettent la configuration à partir de la mémoire SPI. Les bits supplémentaires dans la mémoire SPI étant peu coûteux et ne consommant aucun espace supplémentaire sur la carte, il est souvent judicieux d’utiliser de l’espace supplémentaire dans la mémoire SPI pour le stockage des données. Il est généralement facile de prendre le contrôle de l’interface SPI après qu’un FPGA l’a utilisée pour la configuration (bien que cela puisse varier, le concepteur doit donc le confirmer avant de s’engager dans cette approche) et la construction d’un moteur d’interface SPI requiert une logique minimale. Lorsque vous utilisez la mémoire SPI, veillez à ne pas écrire dans l'espace de configuration du FPGA. Cela peut être verrouillé par la conception de la logique d'interface et / ou par l'utilisation de verrouillages de secteurs que l'on trouve sur de nombreux périphériques de mémoire flash SPI.

Bien que les périphériques SPI autorisent des lectures aléatoires pour de nombreuses applications, des performances plus élevées peuvent être obtenues en mettant en cache le secteur actuel à l'aide des mémoires de bloc du FPGA. Comme l'écriture nécessite tout d'abord d'effacer le secteur, cette approche de la mise en cache permet beaucoup plus de flexibilité. Avec la mémoire SPI, les cycles d’effacement / programme autorisés dépassent normalement 100K. Cette spécification couvre généralement le nombre de mise sous tension
cycles de mise en marche et d’arrêt qui se produiraient en fonctionnement normal. Toutefois, si le nombre d'écritures en mémoire est supérieur à cette quantité, vous pouvez à nouveau utiliser la mise en cache de la mémoire pour empêcher le système d'atteindre la limite d'endurance SPI.

Mémoire non volatile FPGA TAG
De nombreux FPGA non volatils intègrent de petites mémoires TAG dans le périphérique. Par exemple, la famille de périphériques LatticeXP2 fournit une mémoire comprise entre 0, 6 et 3, 4 kbit / s pour un usage général. Il s'agit de la quantité de mémoire souvent nécessaire pour stocker les paramètres de l'équipement et les données d'étalonnage. Comme le montre la figure 2, la mémoire LatticeXP2 TAG est accessible via l’interface JTAG ou la logique sur puce. Les détails diffèrent selon les fournisseurs de FPGA, le concepteur doit donc confirmer que l'approche souhaitée est prise en charge.
L'espace mémoire de la balise est distinct de la configuration du FPGA. Il n'y a donc aucune chance d'écraser accidentellement la configuration du FPGA lors de ces opérations. La mémoire TAG sur puce est idéale pour intégrer les petites EEPROM série autonomes que l'on trouve dans de nombreux systèmes.

Mémoire vive bloquée Flash
Ces périphériques FPGA offrent généralement la possibilité d’utiliser les bits d’initialisation flash qui masquent les mémoires RAM de bloc du périphérique. Au moment de la configuration du périphérique, les bits de la mémoire flash initialisent chacune des mémoires RAM de bloc du périphérique. Ces mémoires peuvent être écrites et lues comme n'importe quelle SRAM. Lorsqu'il est nécessaire de stocker les données de configuration dans le FPGA, le basculement du signal approprié entraîne la réécriture flash des valeurs actuelles de la RAM (figure 3). Cette approche permet de combiner la lecture et l'écriture à grande vitesse de la RAM avec la capacité non volatile du flash. En règle générale, des milliers de cycles d'effacement et d'écriture sont pris en charge pour cette opération. Comme pour la mémoire TAG, le flash associé aux mémoires RAM de bloc est séparé logiquement, ce qui garantit que la configuration de la logique FPGA n'est pas écrasée par inadvertance.

Choisir une approche
Comme mentionné précédemment, ce sont en définitive les exigences des applications qui déterminent la technologie la plus appropriée. Chacune des approches détaillées a certainement une place dans la conception du système. En résumé, si le concepteur recherche une quantité modérée de ROM pour le stockage de code ou pour l’utiliser comme table de consultation, l’approche par bloc RAM initialisée est probablement la meilleure. D'autre part, s'il y a une petite quantité de données, telles que les informations d'étalonnage, les informations de réglage en cours ou des informations d'identification du système, étiquetterons mémoire fournit une solution pratique. Pour les plus grandes quantités de mémoire qui doivent être ré-écrites, les approches de réutilisation de mémoire SPI ou de mémoire flash de bloc ombré flash sont utiles. Bien sûr, quelle que soit l'approche choisie, la surface et les coûts de la carte seront réduits.