XJFlash — FPGA-basierter, extrem schneller Flash-Programmierer

XJFlash ist eine fortschrittliche und innovative Methode für die In-System-Programmierung (ISP) von Flash-Komponenten über JTAG.

Mit XJFlash können Sie bis zu 50x schnellere Flash-Programmiergeschwindigkeiten erreichen als dies mit herkömmlichen Boundary-Scan-Techniken möglich ist.

XJFlash Produktblatt  Kontaktieren Sie uns Auswertung

Automatisch generierte, kundenspezifische Lösungen

Mit XJFlash können Sie automatisch benutzerdefinierte Programmierlösungen für die an FPGAs angeschlossenen Flash-Komponenten auf Ihrem Board generieren.

Die Funktionsfähigkeiten der FPGAs werden genutzt, um die schnellstmöglichen Programmiergeschwindigkeiten zu bieten. XJFlash generiert automatisch ein benutzerdefiniertes Design für jede FPGA/Flash-Kombination, so dass Sie die besten Programmierzeiten erreichen, während Sie keinerlei FPGA-Entwicklung erbringen müssen.*

Ob Sie SPI, QSPI oder parallel NOR-Flash verwenden, verbunden mit einem FPGA von Altera, Xilinx, Microsemi oder Lattice: XJFlash bietet Ihnen eine Programmierlösung, die für Ihre Leiterplatte optimiert ist.

*Bei der Konfiguration von XJFlash wird eine lizenzierte Version der entsprechenden Tools des FPGA-Herstellers benötigt. Freie Versionen reichen für viele Geräte aus.

Test-Integration

XJFlash ist voll kompatibel mit dem restlichen XJTAG-Entwicklungssystem. Alle XJFlash-Programmierungen können als Teil eines Boundary-Scan-Testprojekts in XJRunner ausgeführt werden.

Konfigurierbare Flash-Programmierung

Es spielt keine Rolle, ob Sie eine einzelne oder mehrere, in Serie verbundenen, Flash-Komponenten programmieren, den Adressraum oder parallel dazu den Datenbus erweitern: Sie können mit XJFlash Ihre Programmieraktivitäten beschleunigen.

Kundenspezifische Entwicklung

XJFlash kann auch für eigenständige Programmieranforderungen verwendet werden, einschließlich direkten Zugriffs auf I²C- und SPI-Busse oder benutzerdefinierte Protokolle wie Microchips ICSP.

Die benötigten Anschlüsse müssen nicht von einem FPGA auf der Zielleiterplatte kommen. Wenn die Protokollsignale auf einem Header auf dieser Platine zur Verfügung stehen, sollte es möglich sein, XJFlash zu verwenden, um eine schnelle Programmierung als Teil einer XJTAG-Lösung zu erreichen.

XJFlash-Zeitsteuerung (Beispiel)

Theoretische Mindestzeit für konventionellen Boundary-Scan: 35 Minuten.
Gesamte XJFlash-Laufzeit: 10,5 bis 32,6 Sek – Bis zu 50x schneller.

XJFlash programming stages

XJFlash durchläuft jedes Mal automatisch vier Stufen, wenn eine Flash-Komponente programmiert wird:

  Initialisierung – Das mit dem Flash verbundene FPGA wird mit dem für die Zielleiterplatte benötigten XJFlash-Bild konfiguriert. Beispielzeit: 2.1 Sek.

  Löschung – Der Flash kann gelöscht werden, indem einer von zwei Algorithmen angewandt wird. Die Basis-Löschung löscht einfach alle Blöcke innerhalb eines definierten Bereichs (dies kann der ganze Flash oder nur der Platz, der für das zu programmierende Bild benötigt wird, sein). Die intelligentere Löschung wird die Tatsache nutzen, dass es schneller ist, den Flash zu lesen, als ihn komplett zu löschen. So wird von jeder Adresse ausgehend gelesen und nur dann gelöscht, wenn auch wirklich Daten gefunden werden. Dieser Schritt kann übersprungen werden, wenn bekannt ist, dass der Flash immer unbeschrieben ist, bevor er programmiert wird.
Beispielzeit – intelligente Löschung aktiviert: 0,9 Sek. bei bereits gelöschter Komponente, auf 23 Sek. bei voll programmierter Komponente (begrenzt durch die Löschzeit der Komponente).

  Programmierung – Daten aus den Zielbildern werden über den JTAG-Port in den FPGA gestreamt. Der FPGA programmiert diese Daten dann in den/die angeschlossenen Flash(s). Mehrere Dateien können bei definierten Abweichungen spezifiziert und programmiert werden. Dieser Schritt kann ausgelassen werden, wenn lediglich eine Überprüfung erforderlich ist.
Beispielzeit: 6.2 Sek. (begrenzt durch die Programmiergeschwindigkeit der Komponente).

  Verifizierung – Die Verifizierung prüft jedes Byte im Flash gegen die angegebene(n) Datei(en), um sicherzustellen, dass es keine Datenbitfehler gibt. Dieser Schritt kann ausgelassen werden, wenn nur eine Programmierung oder Löschung erforderlich ist.
Beispielzeit: 1,8 Sek. mit TCK bei 10 MHz, reduziert auf 1,3 Sek. mit TCK bei 20 MHz.

Diese Beispielzeiten sind für eine Spartan 6 XC6SLX9-Programmierung einer pseudozufälligen 2 Mbyte-Datendatei in die FPGA SPI-Konfiguration PROM vorgesehen.

Kann ich XJFlash verwenden?

Um XJFlash anwenden zu können, müssen alle Daten, Adress- und Steuersignale auf dem(n) Flash(s) mit einem FPGA auf der Zielleiterplatte verbunden sein. Dies kann eine PROM-Konfiguration oder eine Flash-Komponente sein, die mit einem beliebigen I/O-Pin verbunden ist. Diese Verbindungen können direkt oder indirekt sein, zugewiesen oder gemeinsam genutzt werden:

Direkte Verbindungen – JA

XJFlash Configuration - Direct Connections to FPGA

XJFlash Configuration - Direct Connections to FPGA SoC

Der Flash ist direkt mit dem FPGA verbunden.

Indirekte Verbindungen – JA

XJFlash Configuration - Indirect Connections

  1. Der Flash wird über einen Pufferspeicher mit dem FPGA verbunden
  2. Einige der Adresssignale werden mit den Datensignalen geteilt und über einen Latch verbunden
  3. Zudem gibt es andere konfigurierbare Komponenten, wie z. B. eine CPLD, zwischen Flash und FPGA

Geteilte Verbindung – JA

XJFlash Configuration - Shared Connections

Der Flash ist mit dem FPGA in einem der oben beschriebenen Modi verbunden, aber diese Verbindungen werden mit einer anderen Komponente (wie z.B. einem Prozessor) geteilt.

Keine Verbindung – JA (mit Anpassungen im Design)

XJFlash Configuration - No Connections

Wenn Ihr Design ein FPGA beinhaltet, aber der Flash nicht mit einer der beschriebenen Konfigurationen angeschlossen ist, kann eine Verwendung von Ersatzpins auf dem FPGA möglich sein, um Verbindungen zum Flash herzustellen. Diese Verbindungen werden nicht im Missionsmodus des Boards verwendet, sondern erlauben Ihnen, XJFlash zu verwenden, um schnelles Programmieren des Flashs durchzuführen. Wenn Ihr FPGA ein Slave-Gerät auf der gleichen Adresse/Datenbus wie der Flash ist, wird dies nicht viele zusätzliche Signale erfordern.

Keine FPGA – nicht direkt

XJFlash Configuration - No FPGA

Leider ist die Anwendung von XJFlash nicht möglich, wenn kein FPGA zur Verfügung steht, aber es kann unter Umständen möglich sein, die schnelle Flash-Programmierung mit dem Debug-Interface auf einem Prozessor durchzuführen – bitte kontaktieren Sie uns, um zu sehen, ob Sie diesen Ansatz auf Ihrem Board realisieren können.

Alternativ, wenn die Möglichkeit besteht die Verbindungen des Flashs zu einem Träger auf der Leiterplatte zu bringen, kann die schnelle Programmierung mit XJFlash direkt über diesen Stecker durchgeführt werden.

Kompabilität

  • Altera – Arria GX, Arria II GX, Arria II GZ, Arria V, Arria V GZ, 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
  • Lattice – MachXO2, LatticeECP3, LatticeXP2
  • Microsemi – IGLOO2, ProASIC3, ProASIC3E, ProASIC3L, SmartFusion2
  • Xilinx – Artix-7, Kintex-7, Kintex UltraScale, Spartan-3, Spartan-3A, Spartan-3E, Spartan-6, Virtex-II, Virtex-II Pro, Virtex-4, Virtex-5, Virtex-6, Virtex-7, Virtex UltraScale, Zynq-7000

Diese Liste wird kontinuierlich erweitert, deswegen kontaktieren Sie uns für die aktuellsten Details.

Empfohlene Systemanforderungen

  • Intel® Core i3, i5, i7 Prozessor oder gleichwertig (jede Generation)
  • Microsoft® Windows® 7, Windows 8.1 oder Windows 10 (32 oder 64 bit)
  • 4 GB RAM

Frequently asked questions

General

How can XJFlash be 50 times faster than programming with conventional boundary scan?

With conventional boundary scan each signal change requires one complete test vector to be scanned through the JTAG chain. XJFlash configures the FPGA with a programming algorithm so it can change these signals at its operating clock speed. JTAG is still used to stream the data to be programmed into the FPGA but the control of the signals on the board is done by the FPGA.

I use a fast flash programmer already, why should I consider using XJFlash?

XJFlash makes use of the FPGA resources already designed into the board. This means it is possible to use a single JTAG tool to boundary scan test the board and program it in one step, making it faster than swapping between tools on the production line. Furthermore, using in-system programming removes the need to pre-program flash devices, allowing the latest flash image to always be used and allowing the same tools to be used during development, production, and repair.

Technical questions

What flash devices are supported?

XJFlash has built-in support for a wide range of parallel and serial NOR flash devices. Support for NAND devices is also available.

What if I want to program a type of device that's not listed?

The range of devices programmable using XJFlash is continuing to grow, so if you want to program a device that is not currently listed then let us know.

What FPGAs are supported?

XJFlash can be used on a wide range of FPGAs from Altera, Lattice, Microsemi (formerly Actel), and Xilinx.

Can I use XJFlash on boards I’ve already designed?

Yes. XJFlash transfers all data from the PC to the board via the FPGA’s JTAG port, which is commonly brought to a header on the board for use during development. Therefore, provided this has been done and the flash to be programmed is accessible from the FPGA, XJFlash can be used.

My flash is not connected directly to the FPGA on my board, might I still be able to use XJFlash?

Yes. XJFlash can easily be customised to support scenarios where the FPGA is not directly connected to the flash to be programmed. For example, the signals could go through buffers, latches, a CPLD or other forms of logic, and XJFlash can still be used. Furthermore, even if some of the signals have to be serialised to get them between the FPGA and a CPLD, XJFlash can be used.

Not all the signals on my flash are accessible from the FPGA, surely that makes it impossible to use XJFlash?

This all depends on the type of flash to be programmed and which signals are accessible. XJFlash is designed to allow the FPGA to be included in a JTAG chain with other devices, which means some signals can be controlled using boundary scan from other devices whilst XJFlash runs on the FPGA. Contact us to find out if XJFlash can work in your case.

Is this limited to only programming FPGA configuration devices?

No. Due to XJFlash’s ability to create custom FPGA images for each board design, it is not restricted to only programming the configuration device.

I’m not an FPGA developer, will this be too complicated for me?

No. Although XJFlash requires a custom FPGA image for each design of board, this is an automated process controlled by XJFlash. This requires the relevant FPGA vendor’s tools to be installed on the PC used to develop the tests, but you won’t have to use them yourself.

Will I have to buy extra FPGA tools to be able to use XJFlash?

This depends on the FPGA being used. Many FPGAs are supported by free versions of the various vendors’ own tools. For these FPGAs no additional products would need to be purchased. For larger FPGAs, contact your FPGA developers, or contact us.

Can I simultaneously program multiple PCBs, each with their own flash devices?

Yes – because XJFlash can be added to a sequence of production tests, concurrent programming can be implemented in exactly the same way as concurrent boundary scan testing.

Can I use XJFlash both in high-volume and low-volume/high-mix production situations?

Yes – because XJFlash can be incorporated in your production tests and it uses the FPGA built on to the board, there are very few time overheads and no hardware modifications required when switching between different board designs.

This can’t be faster than the FPGA vendor’s programming tool, can it?

XJFlash has been found to be faster than many commonly used flash programming tools, so why not try it and see for yourself? Contact us.

Do you support fast Flash programming attached to microprocessors, CPUs, DSPs?

Yes – please contact us for more details.

What are the recommended system requirements to run XJFlash?

  • Intel® Core i3, i5, i7 processor or equivalent (any generation)
  • Microsoft® Windows® 7, Windows 8.1 or Windows 10 (32 or 64 bit)
  • 4 GB of RAM

Free evaluation / Licensing

What are the differences between the trial version and the purchased product?

There is no difference between the functionality of the purchased product and the free evaluation version. We provide full technical support by telephone and email, to help with the set-up or troubleshoot any issues during your trial. You will also have access to XJTAG’s device test libraries and latest software upgrades, during your 30-day evaluation period.

Can I convert my trial version to a purchased product?

Yes. If you already have XJFlash for evaluation, you can continue using it without interruption by purchasing the full licence. Contact your XJTAG distributor to make a purchase and have your licence extended.

Do I need to purchase an XJFlash licence for each XJRunner I want to use?

No. An XJFlash licence is required to create the programming configuration for a particular board, after which that configuration can be used with any XJRunner on the same board.

XJFlash JTAG Boundary Scan software module

  • Schnelle Flash-Programmierung
  • Schnelles Firmware-Upgrade

Wesentliche Vorteile
  • Reduziert Flash-Programmierzeiten
  • Flash-Unterstützung von SPI, QSPI, parallelen NOR-Schnittstellen
  • Unterstützung für NAND-Flashgeräte auf Anfrage verfügbar
  • Verkürzt Entwicklungszyklen
  • Kein zusätzliches Equipment notwendig
  • Kann für schnelle Firmware-Upgrades verwendet werden
  • Keine FPGA-Entwicklung erforderlich

Flexible Lizenzoptionen

Bitte kontaktieren Sie Ihren örtlichen Vetriebspartner für weitere Informationen über diesen Service.

Ready to get started? Try XJTAG

computer

See XJTAG in action.

Our experts will be happy to show you how the XJTAG tools can help you diagnose faults on your board as well as cutting test development and repair time.

Ask for a Demo

telephone

Questions? We'll call you back.

We're here to help. Enter your name and phone number and one of our test specialists will call you back shortly.

workstation

Get a free test setup.

Evaluate the XJTAG system with full functionality for 30 days and get the first test project set up for your board – for free. No obligation to purchase.

Get started now

Join world leading companies using XJTAG Boundary Scan