Программирование последовательных конфигурационных ПЗУ фирмы Altera по JTAG-интерфейсу

№ 2’2005
Для упрощения процесса отладки фирма Altera предлагает метод программирования последовательных конфигурационных ПЗУ с помощью JTAG$интерфейса. Этот метод можно использовать и для загрузки конфигурации в FPGA, и для программирования последовательных конфигурационных ПЗУ.

Для упрощения процесса отладки фирма Altera предлагает метод программирования
последовательных конфигурационных ПЗУ с помощью JTAG$интерфейса.
Этот метод можно использовать и для загрузки конфигурации в FPGA,
и для программирования последовательных конфигурационных ПЗУ.

Микросхемы FPGA фирмы Altera выпускаются по технологии SRAM, в процессе работы
конфигурация FPGA хранится в ячейках ОЗУ.
Поскольку конфигурационное ОЗУ является энергозависимым, его необходимо загружать каждый раз
после включения питания.

В процессе разработки и отладки менять конфигурацию FPGA приходится часто, для этого, как правило, используют загрузку по JTAG-интерфейсу с помощью специальных аппаратных средств — загрузочных кабелей.

После завершения процесса разработки и отладки
автономного устройства на основе FPGA необходимо
обеспечить его энергонезависимость. Для конфигурации FPGA в автономных устройствах используются два способа: загрузка из внешнего параллельного
ПЗУ или микропроцессора (режим Passive Parallel)
и загрузка из последовательного конфигурационного ПЗУ (режимы Passive serial и Active Serial) [1]. Фирма Altera выпускает последовательные конфигурационные ПЗУ, поддерживающие различные режимы
конфигурации. Выпускаются и однократно программируемые, и репрограммируемые конфигурационные ПЗУ. Репрограммируемые конфигураторы могут быть прошиты непосредственно на плате целевого устройства по последовательному интерфейсу.

Все семейства FPGA фирмы Altera поддерживают
режим конфигурации Passive Serial. В процессе отладки устройств этот режим может эмулироваться
любым загрузочным кабелем фирмы Altera. Источником тактового сигнала в этом режиме является
конфигурационное ПЗУ или загрузочный кабель.
Для обеспечения этого режима можно использовать
следующие конфигурационные ПЗУ: EPC1441, EPC1,
EPC2, EPC4, EPC8, EPC16. Последние три микросхемы образуют семейство Enhanced-конфигураторовкроме режима Passive Serial эти микросхемы поддерживают также режим Fast Passive Parallel.

Микросхемы EPC1441 и EPC1 являются однократно программируемыми (One-Time Programmable,
OTP). Для прошивки этих микросхем служит автономный программатор ASAP2.

Микросхемы EPC2, EPC4, EPC8, EPC16 — репрограммируемые. Они могут быть запрограммированы непосредственно в целевом устройстве по JTAG-
интерфейсу.

Фирма Altera предлагает несколько загрузочных
кабелей для конфигурации FPGA и внутрисхемного
программирования конфигурационных ПЗУ — MasterBlaster, USB Blaster, ByteBlaster MV и ByteBlaster II.
Эти устройства различаются по способу подключения к персональному компьютеру и обладают различными возможностями.

Новые семейства FPGA фирмы Altera — Cyclone,
Cyclone II и Stratix II—кроме режимов Passive Parallel
и Passive Serial поддерживают еще один режим конфигурации — Active Serial. Режим Active Serial поддерживается последовательными конфигурационными ПЗУ EPCS1, EPCS4, EPCS16, EPCS64. Невысокая
цена этих конфигураторов делает их применение
весьма оправданным, особенно при серийном выпуске устройств. Далее в статье под «последовательными конфигурационными ПЗУ» будем понимать именно эти конфигураторы с интерфейсом Active Serial.

Режим Active Serial имеет две отличительные особенности:

  • источником тактового сигнала конфигурации
    (DCLK) является FPGA;
  • конфигурационное ПЗУ программируется через
    те же выводы, через которые оно загружает проект в FPGA.

Последовательные конфигурационные ПЗУ с интерфейсом Active Serial могут быть запрограммированы в целевом устройстве с помощью загрузочных
кабелей USB Blaster или ByteBlaster II или с помощью
внешнего микропроцессора, реализующего программно интерфейс Active Serial (фактически это хорошо известный интерфейс SPI).

Однако применение последовательных конфигурационных ПЗУ со своим собственным интерфей-
сом программирования вносит в процесс отладки
ряд неудобств. Разработчик вынужден либо каждый
раз перепрограммировать конфигуратор для того,
чтобы загрузить в FPGA отлаживаемый проект, либо использовать два разных интерфейса: JTAG для
загрузки отлаживаемого проекта в FPGA и Active
Serial для программирования последовательного конфигурационного ПЗУ.

Чтобы упростить процесс отладки, фирма
Altera предлагает альтернативный метод программирования последовательных конфигурационных ПЗУ с интерфейсом Active Serial.
Этот метод заключается в использовании
JTAG-интерфейса и для загрузки конфигура-
ции в FPGA, и для программирования после-
довательных конфигурационных ПЗУ [2].

Суть метода заключается в следующем:
для программирования конфигурационного
ПЗУ в FPGA по JTAG-интерфейсу загружает-
ся специально подготовленный проект — Serial
FlashLoader (SFL). SFL представляет собой мост
между интерфейсами JTAG и Active Serial
и преобразует поток данных, поступающих
по JTAG-интерфейсу, в формат, необходимый
для программирования последовательного
конфигурационного ПЗУ.

Применение этого метода позволяет использовать для программирования последовательных конфигурационных ПЗУ любой
загрузочный кабель фирмы Altera, а также несколько упростить разрабатываемое устройство (поскольку отпадает необходимость устанавливать отдельный разъем для программирования конфигуратора).

Поддержка такого метода программирования последовательных конфигурационных
ПЗУ осуществляется в САПР Quartus II начиная с версии 4.1 Service Pack 1.

Оба метода программирования последовательных конфигурационных ПЗУ представлены на рис. 1.

Методы программирования последовательных конфигурационных ПЗУ
Рис. 1. Методы программирования последовательных конфигурационных ПЗУ

Преимущества и недостатки обоих методов
программирования последовательных конфигурационных ПЗУ представлены в таблице.

Таблица. Методы программирования последовательных конфигурационных ПЗУ
Методы программирования последовательных конфигурационных ПЗУ

Процесс программирования последовательных конфигурационных ПЗУ по JTAG-интерфейсу включает три этапа.

Этап 1. Создание файла для программирования по JTAG-интерфейсу.

Для программирования последовательных
конфигурационных ПЗУ по JTAG-интерфей-
су используются файлы в форматах JTAG
Indirect Configuration (jic) или JAM Standard
Test And Programming Language, STAPL (jam).

Jic-файл формируется в САПР Quartus II путем преобразования файла для конфигурации
FPGA — SRAM Object File (sof).

Преобразование происходит следующим
образом:

  1. В меню «File» выбирается пункт «Convert
    Programming Files».
  2. В открывшемся окне (рис. 2) в поле
    «Programming file type» выбирается формат
    «JTAG Indirect Configuratuon File (.jic)».
  3. В поле «Configuration device» из списка выбирается используемая в устройстве микросхема последовательного конфигурационного ПЗУ.
  4. В поле «File name» вводится имя выходного jic-файла.
  5. В секции «Input file to convert» активизируется раздел «SOF Data» и указывается входной sof-файл для преобразования (кнопка
    «Add File»). При этом в разделе «SOF Data» отображается тип целевой микросхемы
    FPGA (информация о нем содержится в sofфайле).
  6. В секции «Input file to convert» активизируется раздел «Flash Loader» и выбирается используемая в устройстве микросхема FPGA
    (кнопка «Add Device»).
  7. После того как выполнены все установки,
    запускается процесс преобразования (кнопка «Ok»).
Преобразование sof-файла в формат JTAG Indirect Configuration (jic)
Рис. 2. Преобразование sof-файла в формат JTAG Indirect Configuration (jic)

При желании разработчик может преобразовать jic-файл в формат JAM STAPL. Для преобразования нужно сделать следующее:

  1. В САПР Quartus II открыть окно програм-
    матора (меню «Tools», пункт «Programmer»).
  2. Выбрать jic-файл в качестве входного (кнопка «Add File»).
  3. В меню «File» выбрать пункт «Create/Update»,
    затем во всплывающем меню выбрать
    «Create JAM, SVF or ISC File».

Окно создания jam-файла представлено
на рис. 3.

Преобразование jic-файла в формат JAM STAPL
Рис. 3. Преобразование jic-файла в формат JAM STAPL

Структура полученных в результате таких
преобразований jic- или jam-файлов представлена на рис. 4. Файл состоит из двух секций.
Первая содержит Serial FlashLoader (или SFL образ) — мост между интерфейсами JTAG
и Active Serial. SFL-образ создается в пакете
Quartus II автоматически в процессе преобразования sof-файла в формат JTAG Indirect
Configuration (jic). Вторая секция содержит
блок данных для прошивки последовательного конфигурационного ПЗУ, который переносится в jic-файл из sof-файла.

Структура jic/jam-файла
Рис. 4. Структура jic/jam-файла

Рассмотрим ситуацию, когда в устройстве
используется несколько микросхем FPGA
(каждая со своим собственным конфигурационным ПЗУ), которые образуют JTAG-цепочку . В этом случае для каждой FPGA нужно создать ее собственный jic-файл. Если разработчик желает использовать формат JAM STAPL,
то при преобразовании он может объединить
jic-файлы для всех микросхем цепочки в один
выходной jam-файл, который позволит запрограммировать все последовательные конфигурационные ПЗУ, подключенные к микросхемам FPGA, образующим цепочку.

Этап 2. Загрузка SFL-образа в FPGA
и программирование последовательного
конфигурационного ПЗУ.

Для прошивки последовательных конфигурационных ПЗУ по JTAG-интерфейсу с использованием jic-файла нужно воспользоваться
программатором из состава пакета Quartus II
(меню «Tools», пункт «Programmer»). В окне
программатора нужно открыть jic-файл (кнопка «Add File»). При этом будут отображены
типы целевых FPGA и конфигуратора.

Операции «Program/Configure» в окне программатора должны быть активизированы для
обоих устройств — и FPGA, и последовательного конфигурационного ПЗУ. Если микросхема FPGA не будет сконфигурирована как
мост между интерфейсами JTAG и Active Serial
(то есть не будет содержать SFL-образа), то попытка запрограммировать последовательное
конфигурационное ПЗУ будет безуспешной.

Для того чтобы запрограммировать конфигурационные ПЗУ для нескольких FPGA, образующих JTAG-цепочку, надо в окне программатора открыть jic-файлы для соответствующих микросхем цепочки и активизировать
операции «Program/Configure» для каждого
файла.

Если в программаторе пакета Quartus II
открыть jam-файл, то активизация режима
«Program/Configure» для этого файла автоматически вызовет нужную последовательность
действий — сначала произойдет загрузка образа SFL в FPGA, затем программирование
конфигуратора (другими словами, активизировать процессы загрузки и программирования по отдельности в этом случае не нужно).

При использовании jam-файла разработчик
может пользоваться не только программатором пакета Quartus II, но и любым JAM-плеером, поддерживающим STAPL (такой плеер
может быть реализован как на персональном
компьютере, так и во встраиваемом микропроцессоре на целевой плате).

На рис. 5 представлена ситуация, когда в целевом устройстве имеется JTAG-цепочка
из двух FPGA — EP1C20 и EP1C6. Для прошивки конфигуратора первой из этих FPGA сформирован jam-файл, для второй — jic-файл.
Для того чтобы изменить содержимое конфигурационного ПЗУ, подключенного к EP1C6
(в нашем случае это EPCS4SI8), нужно активизировать операции «Program/Configure» только для jic-файла (в этом случае при выполнении программирования микросхема EP1C20
будет «прозрачной» для JTAG- интерфейса).

Программирование последовательных конфигурационных ПЗУ по JTAG-интерфейсу в пакете Quartus II (FPGA образуют JTAG-цепочку)
Рис. 5. Программирование последовательных конфигурационных ПЗУ по JTAG-интерфейсу в пакете Quartus II (FPGA образуют JTAG-цепочку)

Этап 3. Реконфигурация FPGA (загрузка
нового проекта, прошитого в конфигурационное ПЗУ)

Для того чтобы после окончания процесса
программирования последовательного конфигурационного ПЗУ загрузить новый проект в FPGA, нужно на вход nCONFIG подать
импульс низкого логического уровня либо
просто выключить и включить питание устройства. При этом будет активизирован процесс конфигурации в режиме Active Serial,
и проект, записанный в ПЗУ, загрузится
в FPGA, заменяя находящийся там в момент
программирования ПЗУ Serial FlashLoader.

Схема включения FPGA семейств Cyclone
и Cyclone II и последовательного конфигурационного ПЗУ представлена на рис. 6. Состояние входов MSEL[1..0] FPGA определяет режим конфигурации Active Serial. Во время загрузки SFL-образа в FPGA состояние входов
MSEL[1..0] игнорируется, так как загрузка
конфигурации в FPGA по JTAG-интерфейсу
имеет наивысший приоритет. После завершения процесса программирования новый
проект будет загружаться в FPGA в режиме
Active Serial.

Включение FPGA семейств Cyclone и Cyclone II для реализации программирования последовательного конфигурационного ПЗУ по JTAG-интерфейсу
Рис. 6. Включение FPGA семейств Cyclone и Cyclone II для реализации программирования последовательного конфигурационного ПЗУ по JTAG-интерфейсу

Литература

  1. AlteraConfiguration Handbook.
    http://www.altera.com/literature/hb/cfg/
    config_handbook.pdf.
  2. Using the Serial FlashLoader With the Quartus
    II Software. Altera Application Note 370.
    http://www.altera.com/literature/an/an370.pdf.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *