XJFlash — Programmation de flash haute vitesse à base de FPGA

XJFlash est une méthode avancée et innovante de programmation In Situ à grande vitesse de mémoires flash via JTAG. Tous les composants flash série et parallèle sont pris en charge. L’utilisation la plus courante de XJFlash est la programmation du flash SPI/QSPI NOR utilisé pour configurer un FPGA.

Avec XJFlash, vous pouvez utiliser le FPGA sur votre carte pour améliorer la vitesse de programmation flash jusqu’à 50 fois plus que celle possible en utilisant des techniques boundary scan conventionnelles, atteignant souvent la vitesse maximale de la mémoire flash.

XJFlash software package box
  • Programmation flash haute vitesse
  • Mise à niveau rapide du firmware

Avantages clés

  • Réduit les temps de programmation flash
  • Prise en charge de SPI, QSPI, composants flash NOR parallèles
  • Prise en charge des composants flash NAND disponibles sur demande
  • Raccourcit les cycles de développement
  • Pas besoin d’équipement supplémentaire
  • Peut être utilisé pour une mise à niveau rapide du firmware
  • Aucun développement FPGA requis

Options de licence flexibles

Solutions personnalisées – générées automatiquement

XJFlash vous permet de générer automatiquement des solutions de programmation personnalisées pour les mémoires flash connectés aux FPGA et aux SoC FPGA (tels que Xilinx Zynq® et Intel Cyclone® V) sur votre carte.

Les capacités fonctionnelles du FPGA sont exploitées pour obtenir des vitesses de programmation les plus rapides possibles. XJFlash génère automatiquement un design personnalisé pour chaque combinaison FPGA / flash, vous permettant de bénéficier des meilleurs temps de programmation, sans que vous ayez à effectuer de développement FPGA.*

Si votre mémoire flash est connectée à un FPGA d’Intel (Altera), Xilinx, Microsemi ou Lattice, XJFlash utilise le port JTAG standard du FPGA pour offrir une alternative de programmation In Situ à un programmateur SPI ou un programmateur flash parallèle. XJFlash prend en charge tous les modes SPI (single-bit, dual, quad, QSPI et octal) ainsi que les composants flash NOR parallèles.

*Une version sous licence des outils du fabricant de FPGA concerné sera requise lors de la configuration de XJFlash. Les versions gratuites sont suffisantes pour de nombreux composants.

Intégration des tests

La programmation XJFlash peut être facilement intégrée dans votre système de test XJTAG à l’aide de XJDeveloper. Toute programmation XJFlash peut être exécutée dans le cadre d’un projet de test boundary scan XJRunner.

Programmation flash configurable

Que vous ayez besoin de programmer un seul composant flash ou plusieurs composants connectés en série, pour étendre l’espace d’adressage, ou en parallèle, pour créer un bus de données plus large, vous pouvez utiliser XJFlash pour accélérer vos opérations de programmation.

Développement personnalisé

XJFlash peut également être utilisé pour une programmation autonome, y compris un accès direct aux bus I²C et SPI ou à des protocoles personnalisés tels que Microchip ICSP.

Les connexions requises n’ont pas besoin de provenir d’un FPGA sur la carte cible. À condition que les signaux de protocole soient disponibles sur un en-tête sur cette carte, il devrait être possible d’utiliser XJFlash pour réaliser une programmation rapide dans le cadre d’une solution XJTAG.

Temps de programmation avec XJFlash

Dans la figure ci-dessous, nous montrons un exemple réel de la programmation accélérée avec XJFlash, qui est capable d’aller 50 fois plus vite que ce qui serait considéré comme normal en utilisant JTAG conventionnellement. Avec XJFlash, c’est d’ailleurs souvent le temps de programmation intrinsèque de la flash qui devient la limite de vitesse pour le process global de programmation.

Temps théorique minimum pour le boundary scan conventionnel : 35 minutes.
Durée totale d’exécution de XJFlash : 10,5 s à 32,6 s.

XJFlash programming stages

XJFlash passera automatiquement par quatre étapes chaque fois qu’un composant flash est programmé :

  Initialisation – Le FPGA connecté à la flash est configuré avec l’image XJFlash requise pour la carte cible. Pour l’exemple ci-dessus : temps de 2,1 s.

  Erase – La flash peut être effacée en utilisant l’un des deux algorithmes. L’effacement de base efface simplement tous les blocs dans une plage définie. L’effacement plus intelligent utilisera le fait qu’il est plus rapide de lire la flash que de l’effacer ; en tant que tel, il lit à partir de chaque adresse et ne commence à effacer que si certaines données sont trouvées. Cette étape peut être ignorée si l’on sait que la flash sera toujours vide avant sa programmation.
Exemple de durée ci-dessus : effacement intelligent activé de 0,9 s avec un composant déjà effacé, à 23 s avec un composant entièrement programmé (limité par le temps d’effacement du composant).

  Program – Les données provenant des images cibles sont diffusées dans le FPGA via son port JTAG. Le FPGA programme ensuite ces données dans la ou les flashs connectées. Plusieurs fichiers peuvent être spécifiés et programmés à des décalages définis. Cette étape peut être ignorée si seule la vérification est requise.
Exemple de temps ci-dessus : 6,2 s (limité par la vitesse de programmation du composant).

  Verify – La vérification vérifie chaque octet dans le flash par rapport au(x) fichier(s) spécifié(s), en veillant à ce qu’il n’y ait pas d’erreur de bit de données. Cette étape peut être contournée si seule une programmation ou un effacement est nécessaire.
Exemple de temps ci-dessus : 1,8 s avec TCK à 10 MHz, réduit à 1,3 s avec TCK à 20 MHz.

Ces exemples de temps sont fournis pour un Spartan-6 XC6SLX9 programmant un fichier de données de 2 Mo dans la mémoire de configuration SPI du FPGA.

Exemples de temps de programmation utilisant un SoC de la série Xilinx Zynq®-7000

Un fichier de 256 Mbits peut être programmé dans une flash SPI NOR et vérifié en environ 46 s, en fonction de la vitesse du TCK et du type de mémoire utilisé* ; 32 Mbits de code prennent un peu plus de 7 s.

32 Mbit
7 s
64 Mbit
13 s
128 Mbit
24 s
256 Mbit
46 s

L’ajout d’un cycle d’effacement initial n’ajoute que 3,1 s pour une flash de 256 Mbit vide, ou 54 s pour une flash pleine. Cela tombe à 0,4 s et entre 6,5 et 9,2 s respectivement pour un composant 32 Mbit.

* TCK = 66 MHz, fichier de données pseudo-aléatoire. La durée varie selon le type de flash.

Exemples de temps de programmation utilisant un SoC de la série Xilinx Zynq® UltraScale+

Un fichier de 256 Mbits peut être programmé dans une flash SPI NOR et vérifié en environ 42 s, en fonction de la vitesse du TCK et du type de mémoire utilisé** ; 32 Mbit de code prend 7 s.

32 Mbit
7 s
64 Mbit
12 s
128 Mbit
22 s
256 Mbit
42 s

L’ajout d’un cycle d’effacement initial n’ajoute que 2 s pour une flash de 256 Mbit vide, ou 57 s pour une flash pleine. Cela tombe à 0,3 s et 6,9 s respectivement pour un composant 32 Mbit.

** TCK = 30 MHz, fichier de données pseudo-aléatoire. La durée varie selon le type de flash.

Quand XJFlash peut-il être utilisé ?

Pour pouvoir utiliser XJFlash, tous les signaux de données, d’adresse et de contrôle des composants flash doivent être connectés à un FPGA sur la carte cible. Il peut s’agir d’une PROM de configuration ou d’un composant flash connecté à n’importe quelle broche d’E/S à usage général. Ces connexions peuvent être directes, indirectes, dédiées ou partagées :

Connexions directes – oui

XJFlash Configuration - Direct Connections to FPGA

XJFlash Configuration - Direct Connections to FPGA SoC

La flash est directement connectée au FPGA. Fonctionne aussi avec un Soc.

Connexions indirectes – oui

XJFlash Configuration - Indirect Connections

Fonctionne si :

  1. Flash connectée au FPGA via un buffer
  2. Certains des signaux d’adresse sont partagés avec les signaux de données et sont verrouillés
  3. Il existe un autre composant configurable, tel qu’un CPLD, entre le FPGA et la flash

Connexions partagées – oui

XJFlash Configuration - Shared Connections

La flash est connectée au FPGA dans l’un des modes décrits ci-dessus, mais ces connexions sont partagées avec un autre composant (tel qu’un processeur).

Aucune connexion – oui (avec des modifications de conception)

XJFlash Configuration - No Connections

Si votre conception contient un FPGA mais la flash n’est connectée dans aucune des configurations décrites, il peut être possible d’utiliser des broches disponibles sur le FPGA pour établir des connexions à la mémoire flash. Ces connexions ne seraient pas utilisées dans le mode mission de la carte mais vous permettraient d’utiliser XJFlash pour accélérer la programmation flash. Si votre FPGA est déjà connecté au même bus d’adresse/de données que la flash, cela peut ne pas nécessiter beaucoup de signaux supplémentaires.

Pas de FPGA – pas directement

XJFlash Configuration - No FPGA

Malheureusement, il n’est pas possible d’utiliser XJFlash s’il n’y a pas de FPGA. Cependant, s’il est possible d’amener les connexions de la flash à un en-tête ou à des points de test sur la carte, la programmation rapide XJFlash peut être utilisée via ces connexions à l’aide d’une carte XJAccelerator.

Alternativement, il peut être possible d’accélérer la programmation flash en utilisant l’interface de débogage sur un processeur – veuillez nous contacter pour voir si vous pouvez utiliser cette approche sur votre carte.

Compatibilité

  • Intel (Altera) – Arria GX, Arria II GX, Arria II GZ, Arria V, Arria V GZ, Arria 10, Cyclone, Cyclone II, Cyclone III, Cyclone III LS, Cyclone IV E, Cyclone IV GX, Cyclone V, Stratix, Stratix GX, Stratix II, Stratix II GX, Stratix III, Stratix IV, Stratix V, Stratix 10
  • Lattice – MachXO2, LatticeECP3, LatticeXP2
  • Microchip (Microsemi) – IGLOO2, ProASIC3, ProASIC3E, ProASIC3L, SmartFusion2
  • AMD (Xilinx) – Artix-7, Artix UltraScale+, Kintex-7, Kintex UltraScale, Kintex UltraScale+, Spartan-3, Spartan-3A, Spartan-3E, Spartan-6, Spartan-7, Versal, Virtex-II, Virtex-II Pro, Virtex-4, Virtex-5, Virtex-6, Virtex-7, Virtex UltraScale, Virtex UltraScale+, Zynq-7000, Zynq UltraScale+

Cette liste ne cesse de s’allonger – contactez-nous pour les derniers détails.

Toutes les marques déposées sont la propriété de leurs propriétaires respectifs.

Configuration recommandée

  • Processeurs Intel® Core i3, i5, i7 ou équivalent (toutes générations)
  • Microsoft® Windows® 10 (1607) et versions ultérieures (32 ou 64 bit), ou Windows 11
  • 8 Go de RAM

Etes-vous prêt à commencer?

Voir XJTAG à l’oeuvre

Notre équipe d’experts vous montrera comment diagnostiquer les défauts sur votre carte électronique, comment réduire le temps de développement des tests et le temps de réparation grâce aux outils XJTAG.

Demandez une démo

Contact Us icon

Une question? Contactez-nous!

Nous sommes là pour vous aider.
Envoyez-nous un message et un de nos spécialistes vous répondra dans les plus brefs délais.

Contactez-nous

Recevez une configuration de test gratuite pour une de vos cartes

Évaluez le système XJTAG avec toutes ses fonctionnalités pendant 30 jours et nous vous proposons de configurer gratuitement les tests pour votre première carte.
Aucune obligation d’achat.

Commencez dès maintenant

Rejoignez de nombreuses entreprises, leaders mondiaux dans leurs domaines, qui utilisent déjà le système Boundary Scan XJTAG