XJFlash — Сверхбыстрое программирование Flash-памяти через ПЛИС

XJFlash — это дополнение к программной части комплекса XJTAG, предназначенное для сверхбыстрого внутрисистемного программирования Flash-памяти через ПЛИС (In-System Programming — ISP). Поддерживаются все типы микросхем, работающих как по последовательным, таки по параллельным протоколам. Как правило XJFlash применяется для программирования SPI/QSPI NOR Flash-памяти, используемой для хранения конфигурации ПЛИС.

XJFlash позволяет ускорить процесс программирования до 50-ти раз по сравнению со стандартным программированием через boundary scan, при этом скорость программирования зачастую достигает предельной скорости записи конкретной микросхемы Flash-памяти.

PDF-Брошюра XJFlash Задать вопрос Бесплатный демо-комплект

Индивидуальная «прошивка» – Генерируется автоматически

XJFlash автоматически генерирует «прошивку» ПЛИС и ПЛИС/SoC (например, Xilinx Zynq® и Intel Cyclone® V), к которой подключена flash память, которую требуется программировать.

Для максимально возможного ускорения программирования задействуются все имеющиеся возможности конкретной использованной ПЛИС. Конфигурация ПЛИС генерируется индивидуально в каждом конкретном случае. Также анализируется конкретное сочетание ПЛИС/Память и оптимальная конфигурация ПЛИС генерируется под данную пару.*

Вне зависимости от типа flash памяти — SPI, QSPI или parallel NOR, и вне зависимости от использованной ПЛИС — Intel (Altera), Xilinx, Microsemi или Lattice — XJFlash сгенерирует максимально оптимальную для конкретной печатной платы конфигурацию ПЛИС.

* В процессе конфигурирования ПЛИС приложению XJFlash требуется лицензионная версия программных приложений от производителей ПЛИС. Как правило, существуют бесплатные версии требуемых приложений.

Как часть процеса тестирования

XJFlash полностью совместим с остальными инструментами системы XJTAG и может выполнять все свои функции как часть процесса тестирования, выполняемого в XJRunner.

Адаптивность

XJFlash применим для ускорения программирования как одной микросхемы памяти, так и нескольких микросхем, соединённых как последовательно, для увеличения адресного пространства, так и параллельно, для увеличения разрядности шины данных.

Частный случай

XJFlash применим в том числе и в случае наличия специфических требований, например, прямой доступ к шинам I2C и SPI или использование частных протоколов, таких как Microchips ICSP.

Перечисленные выше шины и интерфейсы не обязательно должны быть подключены к ПЛИС. Простой вывод этих шин и интерфейсов на коннектор платы уже должен позволить XJFlash выполнить быстрое программирование.

Пример затрат времени на процесс программирования

Минимум при использовании boundary scan: 35 мин.
Через XJFlash: от 10.5 сек. до 32.6 сек.

XJFlash programming stages

Каждый раз во время программирования XJFlash автоматически выполняет следующую последовательность действий:

  Инициализация – XJFlash загружает в ПЛИС, подключенную к flash памяти, двоичный образ конфигурации ПЛИС. Данный этап может длиться, например, 2.1 сек.

  Стирание – flash память может быть очищена при помощи одного из двух алгоритмов. Базовый алгоритм просто удаляет данные из всех блоков в заданном диапазоне (это может быть как вся имеющаяся память, так и точный объём, необходимый под загрузку образа). Интеллектуальный алгоритм стирания данных учитывает тот факт, что предварительное чтение данных перед их стиранием ускоряет процесс стирания; в связи с этим, производится последовательное чтение данных, а стирание начинается, если найдены определённые данные. Стирание можно не выполнять, если точно известно, что перед записью flash память будет всегда пустой.
Интеллектуальный алгоритм может длиться, например, от 0.9 сек., в случае, когда память уже пуста, до 23 сек., в случае, когда требуется стирание данных.

  Программирование – данные образа для записи в память передаются в ПЛИС через JTAG порт. Затем сама ПЛИС записывает данные образа в подключенную flash память. Можно записать сразу несколько образов с заданными смещениями. Данный этап можно пропустить если требуется только проверка целостности данных памяти.
Данный этап может длиться, например, 6.2 сек. и ограничен только скоростью записи данных во flash память.

  Проверка – выполняется побайтовое сравнение данных flash памяти с данными переданного образа. Данный этап можно пропустить, если требуется только программирование или только стирание.
Данный этап может длиться, например, 1.8 сек. при частоте TCK 10 MHz, или 1.3 сек. при частоте TCK 20 MHz.

Примеры временны́х затрат приведены для записи псевдо-случайных данных в объёме 2 MByte в SPI configuration PROM, подключенную к ПЛИС Spartan 6 XC6SLX9.

Применим ли XJFlash в конкретном проекте?

Для того, чтобы XJFlash можно было применить, требуется, чтобы все шины данных и адресов, а также все управляющие сигналы были подключены к ПЛИС. То есть и конфигурационная PROM и любая другая микросхема flash памяти должна быть подключена к контактам ввода/вывода общего назначения (general purpose I/O) ПЛИС. Такое подключение может быть прямым, опосредованным, специализированным или общим:

Прямое Подключение — Применим

XJFlash Configuration - Direct Connections to FPGA

XJFlash Configuration - Direct Connections to FPGA SoC

Flash память напрямую подключена к ПЛИС.

Опосредованное Подключение — Применим

XJFlash Configuration - Indirect Connections

  1. Flash память подключена к ПЛИС через буфер.
  2. Некоторые шины адреса используются ещё и как шины данных и подключаются через защёлку.
  3. Есть ещё одна конфигурируемая микросхема, например, ещё одна ПЛИС между основной ПЛИС и памятью.

Общее Подключение — Применим

XJFlash Configuration - Shared Connections

Flash память подключена к ПЛИС одним из способов, перечисленных выше, но использованные шины одновременно подключены ещё и к другой микросхеме (например, к процессору).

Нет Подключения — Применим (требуется внести изменения в проект)

XJFlash Configuration - No Connections

Если проект содержит ПЛИС, но flash память не подключена к этой ПЛИС ни одним из перечисленных выше способов, возможно, получится подключиться к памяти при помощи незадействованных контактов ПЛИС. Эти незадействованные контакты ПЛИС можно подключить к памяти исключительно с целью быстрого программирования через XJFlash. Если ПЛИС на плате работает в режиме slave и подключена к тем же шинам адреса/данных, что и flash память, то в этом случае потребуется провести совсем немного дополнительных цепей.

Плис Отсутствует — Применим обходными путями

XJFlash Configuration - No FPGA

К сожалению, если ПЛИС на плате отсутствует, то применить XJFlash, скорее всего, не получится, но есть вероятность, что получится использовать отладочные возможности процессора, если таковой имеется на плате — пожалуйста, свяжитесь с нами, мы рассмотрим проект и ответим на вопрос получится ли ускорить программирование памяти.

Другой вариант — если есть возможность вывести контакты flash памяти на какой-нибудь коннектор платы, то можно выполнить быстрое программирование непосредственно через коннектор.

Совместимость

  • 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+

Список постоянно пополняется, свяжитесь с нами, мы вышлем актуальный!

Все торговые марки являются собственностью их владельцев.

Recommended system requirements

Рекомендованные системные требования

  • Процессор Intel® Core i3, i5, i7 или эквивалентный (любого поколения)
  • Microsoft® Windows® 10 1607 и новее (32 или 64 бит), или Windows 11
  • 8 Гб оперативной памяти

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 FPGAs are supported?

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

What Xilinx Zynq SoCs are supported?

XJFlash provides NOR flash programming of memories connected to Xilinx Zynq-7000 and Zynq-UltraScale+ SoCs. This includes the following families: Xilinx XC7Z007S, XC7Z010, XC7Z012S, XC7Z014S, XC7Z015, XC7Z020, XC7Z030, XC7Z-35, XC7Z045, XC7Z100, XCZU2, XCZU3, XCZU4, XCZU5, XCZU6, XCZU7, XCZU9, XCZU11, XCZU15, XCZU17, XCZU17, XCZU19. New parts are always being added, so please contact us if your device isn’t listed.

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.

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 или эквивалентный (любого поколения)
  • Microsoft® Windows® 10 1607 и новее (32 или 64 бит), или Windows 11
  • 8 Гб оперативной памяти

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

  • Сверхбыстрое программирование Flash-памяти
  • Ускоренное обновление « прошивки »

Выгоды
  • Ускорение программирования Flash-памяти
  • Поддержка SPI, QSPI, parallel NOR
  • Работа с NAND flash — по запросу
  • Ускорение проектирования всего прибора
  • Не требуется дополнительное оборудование
  • Применимо для ускоренного обновления « прошивки »
  • Не требуется разработка проекта ПЛИС

Гибкие возможности лицензирования

Пожалуйста, свяжитесь с нами для обсуждения деталей проекта платы.

Хотели бы попробовать? Запросить демо-комплект

computer

Посмотрите систему XJTAG в действии.

Наши эксперты будут рады продемонстрировать как система XJTAG может помочь Вам найти причины неисправности Вашей платы и покажут как подготовить тест быстро, чтобы в дальнейшем экономить много времени на исправлении неисправностей.

Запрос демо-комплекта

contact us icon

Есть вопросы? Свяжитесь с нами.

Будем рады ответить на все вопросы.
Отправьте нам сообщение и один из наших технических специалистов свяжется с Вами в ближайшее время.

Отправить сообщение

workstation

Бесплатный демо-образец.

Полнофункциональный демонстрационный комплект может быть предоставлен бесплатно сроком на 30 дней (с возвратом), при этом Ваш первый проект может быть подготовлен или полностью нами или с нашей помощью.

Начать процесс получения демо

Присоединяйтесь к числу успешных компаний,
использующих систему пограничного сканирования XJTAG