Принципы использования стандарта JTAG при отладке вычислительных систем, основанных на программируемых логических интегральных схемах.
Торчигин С.В. ([email protected])
Институт проблем информатики РАН
Введение
Последние два-три года производители программируемых логических интегральных схем (ПЛИС) стали рекламировать свои изделия в качестве альтернативы классическим процессорам цифровой обработки сигналов. Для многих разработчиков аппаратуры стало ясно, что ПЛИС — удобная в освоении и применении элементная база, альтернативы которой зачастую не найти. В связи с этим возникает огромная необходимость в средствах отладки и тестирования гетерогенных многопроцессорных вычислительных систем, где помимо микропроцессорных элементов присутствуют интегральные программируемые контроллеры промышленных интерфейсов, ПЛИС, блоки памяти с различной организацией, другие интегральные компоненты. В отличие от многочисленных доступных средств автоматизации проектирования электронной аппаратуры, средства тестирования и диагностики неисправностей практически полностью отсутствуют. Каждый разработчик вынужден либо пользоваться традиционными старыми средствами, связанными с подсоединением осциллографов или логических анализаторов к различным точкам схемы, разработкой собственных тестовых программ и тестирующих схем, либо вообще обходиться без тестирования, полагаясь на высокое качество проектирования и изготовления
В настоящее время большинство фирм-производителей электронных компонент встраивают в свои изделия средства тестирования и отладки, соответствующие стандарту JTAG. Столь высокая популярность данного стандарта объясняется его гибкостью и возможностью решения с его помощью ряда важных задач. Это задачи тестирования, внутрисхемной инициализации и отладки.
Механизм граничного сканирования (Boundary Scan) является промышленным стандартом, который был разработан группой специалистов по проблемам тестирования электронных компонент и зарегистрирован в IEEE 1149.1 - 1990 "Standard Test Access Port and Boundary Scan Architecture" (JTAG). Все семейства ПЛИС фирмы ALTERA (FLEX 10K, MAX9000,APEX20K и др.) в той или иной степени поддерживают этот стандарт. В разных семействах по-разному реализованы схемы поддержки стандарта, они имеют разные временные параметры и состав
сигналов интерфейса. Номер контакта интерфейсного сигнала зависит как от семейства ПЛИС, так и от ее корпуса. Необходимо отметить, что для подобных целей используются также и другие последовательные интерфейсы. Например, двухпроводный I2C интерфейс требует меньше аппаратных затрат и, что более важно, времени для доступа к устройствам. Однако, преимуществом архитектуры JTAG является отсутствие необходимости явного задания адресов устройств, поскольку все JTAG-устройства объединяются в последовательную цепочку и неявно адресуются своим положением в ней.
В настоящей работе приводится методика использования этого стандарта, оправдавшая себя при наладке и тестировании достаточно большого устройства, состоящего из нескольких десятков достаточно больших ПЛИС, размещенных на восьми печатных платах, объединенных шестидесяти четырех разрядными шинами.
Использование технологии JTAG
Встраивание архитектуры BST в современные чипы обеспечивает доступ к выводам чипа (точнее, к специальным блокам ввода-вывода) с помощью 4-х проводного последовательного интерфейса JTAG. Эта архитектура позволяет не только контролировать их состояние, но и управлять ими. Таким образом можно обойтись без громоздких пробников с физическим контактом. В дополнении к этому, эта архитектура может быть дополнена возможностью обмениваться и иной информацией с чипом, например, получать результат внутреннего теста, как это делается в современных процессорах. В ПЛИС эта архитектура обеспечивает альтернативную (или основную) возможность ввода конфигурационных данных.
Производители микросхем предоставляют информацию о конкретной реализации BST для каждого типа своей продукции в виде BSDL-файла (Boundary-Scan Description Language). Более подробно об этом формате можно узнать на http://www.asset-intertech.com/.
Используемые термины и определения
Каждая ПЛИС имеет в своем составе ТАР-контроллер (Test Acces Port Controller) обеспечивающий выполнение функций JTAG - схематики.
Структурная схема ТАР - контроллера показана на рис1.
Рис.1 Структурная схема ТАР - контроллера.
Внешние относительно ТАР - контроллера сигналы : TDI, TMS, TCK, TRST, TDO описаны в таблице!.
Сигналы UPDATEIR, CLOCKIR, SHIFTIR, UODATEDR, CLOCKDR, SHIFTDR и
работа ТАР контроллера рассмотрены ниже.
На регистр (Instruction Register) по сигналу TDI приходит управляющая команда, она дешифрируется в дешифраторе (Instruction Decode) и в зависимости от полученного кода к выходу TDO подключается один из внутрисхемных регистров:
Boundary-Scan Register - служит для сохранения или установки сигналов на выводы микросхемы.
Device ID Register - в этом регистре хранится идентификационный код микросхемы заложенный производителем.
ByPass Register - замыкает сигналы TDI и TDO (это нужно если данная микросхема не участвует в тестировании)
UESCODE - в этом регистре пользователь может хранить свою информацию о микросхеме (например ее порядок в JTAG - цепочке).
Интерфейс JTAG -это последовательный интерфейс, позволяющий записывать и считывать информацию с триггеров и регистров сложной логической схемы Перечень сигналов интерфейса JTAG и их функции приведены в таблице 1.
Таблица 1. Перечень сигналов интерфейса IEEE Std.1149.1 (JTAG)
Наименование сигнала Название Примечания
TCK Сигнал синхронизации последовательных данных Частота синхронизации.
TDI Входные данные в последовательном двоичном коде. Последовательный вход сдвигового регистра. Данные защелкиваются по переднему фронту импульса на TCK
TDO Выходные данные в последовательном двоичном коде. Последовательный выход сдвигового регистра. Данные выводятся по срезу импульса TCK.
TMS Сигнал выбора тестового режима Управление сменой состояний ТАР-контроллера. Сигнал TMS принимается по восходящему фронту сигнала TCK. При включение питания ТАР - контроллер переводится в исходное состояние высоким уровнем сигнала, удерживаемым не менее пяти тактов сигнала ТСК. Возможные типы тестового режима и их коды приведены в таблице 2.
TRST Перезапуск схемы сканирования границ. Асинхронный перезапуск схемы сканирования границ выполняется по низкому уровню сигнала TRST. В соответствии со стандартом IEEE Std.1149.1 сигнал является необязательным.
Описание команд предоставляемых интерфейсом JTAG.
В таблице 2 приведены краткая кодировка и краткое описание команд ПЛИС фирмы ALTRA для семейства АРЕХ20К, поддерживающего стандарт IEEE Std 1149.1
Таблица 2. BST-команды для APEX20K.
BST- команда Код команды APEX20K Описание
SAMPLE/PRELOAD 0001010101 Позволяет сделать моментальный снимок сигналов на выходах ПЛИС и исследовать его во время нормальной работы ПЛИС. Подготовка данных для инструкций управления.
EXTEST 0000000000 Позволяет протестировать внешние цепи и связи на уровне платы путем установки тестового набора на выходные выводы ПЛИС и получения результата на входных выводах ПЛИС.
BYPASS 1111111111 Помещает однобитный ББР-регистр между выводами ТБ1 и ТБО, что позволяет ББТ -данным синхронно пройти через выбранную ПЛИС на смежную микросхему во время нормальной работы ПЛИС.
UESCODE 0000000111 Выбирает регистр ЦЕБСОБЕ и помещает его между выводами ТБ1 и ТБО, затем последовательно считывает содержимое этого регистра через вывод ТБО. (В этом регистре можно хранить информацию разработчика такую как номер ПЛИС в 1ТАО цепочке).
IDCODE 0000000110 Выбирает регистр ГОСОБЕ и помещает его между выводами ТБ1 и ТБО, затем последовательно считывает содержимое этого регистра через вывод ТБО. (В этом регистре хранится идентификационный номер ПЛИС, заложенный производителем данной ПЛИС).
Прием и выдача BST - команды.
ТАР - контроллер представляет собой синхронный конечный автомат с шестнадцатью состояниями, изменяющий состояние по фронту сигнала ТСК (синхроимпульса) и по включению питания. Сменой состояний управляет сигнал ТМS, воспринимаемый по восходящему фронту сигнала ТСК см. Рис.2.
Когда ТАР - контроллер находится в состоянии TEST_LOGIC/RESET, регистры данных JTAG - схематики не активированы, ПЛИС находится в своем нормальном состоянии и инициализируется регистр BST - команд.
Рис.2 Граф состояний и переходов управляющего автомата TAP-контроллера (Test Access Port)
При включении питания или при подаче импульса на вывод TRST (сброс), ПЛИС переходит в состояние TEST_LOGIC/RESET.
Вывод TDO находится в Z-состоянии при всех состояниях ТАР - котроллера кроме
состояний SHIFT_IR (регистр BST -команд работает в режиме сдвига) и SHIFT_DR (регистр данных работает в режиме сдвига) см рис.3. Вывод TDO переходит в активное состояние по первому исходящему фронту сигнала ТСК после перехода ТАР - контроллера в состояние SHIFT_IR или в состояние SHIFT_DR. Вывод TDO возвращается в Z-состояние по нисходящему фронту сигнала ТСК после выхода ТАР - контроллера из состояния SHIFT_IR или состояния SHIFT_DR.
Рис.3 Приемный регистр Б8Т - команд.
Первоначально в регистре 8НГРТ_ГО. находится последовательность из чисел 0101010101. В этом можно убедиться, если записывать любые данные (из 10 чисел) в регистр 8Н1ЕТ_ГО. с помощью сигнала ТБ1, а с помощью сигнала ТБО считывать выходную последовательность дынных. Регистр 8Н1РТ_ВЯ зависит от выбранной 1ТАО команды и в нем могут находиться совершенно различные данные.
Состояния графа ТАР контроллера.
Правая часть графа рис.2(а) относится к записи в приемный сдвиговый регистр (BSR-регистр) управляющей JTAG команды, описанной в таблице 2. Чтобы записать управляющую команду на приемный сдвиговый BSR-регистр нужно:
1) Перейти из состояния TEST_LOGIC/RESET в состояние SHIFT_IR. Для этого на вход ТМБ подать последовательность 01100, синхронную с сигналами ТСК. В режиме SHIFT_IR ТАР - контроллер подключает сдвиговый BSR- регистр (регистр JTAG команд) к выводу TDI и выводу TDO. Теперь на сигнал TDI в сдвиговый BSR-регистр можно подать любую JTAG команду из таблицы 2.
2) Для записи введенной команды в ТАР контроллер нужно перейти в состояние UPDATE_IR (последовательность на вход 11 TMS). Для изменения подаваемой JTAG команды нужно пройти через состояния EXIT1_IR- > PAUSE_IR - > EXIT2_IR (последовательность 1010 на входе TMS).
3) После записи JTAG команды осуществляется переход в состояние SHIFT_DR. В состоянии SHIFT_DR возможна запис или чтение данных с внутренних регистров ТАР - контроллера (зависит от введенной команды в состоянии SHIFT_IR). Часть графа рис.2(б) идентична части графа рис.2(а), но вместо работы с командами осуществляется работа с данными.
Замечание: Из состояния UPDATE IR в состояние SHIFT DR лучше проходить через состояние RUN TEST/IDLE. Как установлено экспериментально это более надежный способ. Чтобы сбросить ТАР - контроллер (перейти в состояние TEST LOGIC/RESET ) из любого состояния ТАР - контроллера достаточно на вход TMS подать последовательность 11111.
Пример временной диаграммы работы с BST - командами приведен на Рис.4.
Рис.4 Прием BST - команды.
Исполнение команды SAMPLE/PRELOAD
Ниже используются следующие обозначения:
OEJ - управляющий сигнал вывода ПЛИС.
OUTJ - выходной сигнал из ядра ПЛИС на вывод ПЛИС.
SDI - входная последовательность JTAG данных (BSR регистра) (на этот вход подаются данные с TDI входа).
INJ - входной сигнал с вывода ПЛИС на ядро ПЛИС.
SDO - выходная последовательность JTAG данных (BSR регистра) (с этого выхода
считываются данные на вывод TDO).
Сигнады : SHIFT , CLOCK, UPDATE, MODE - генерируются ТАР - контроллером при выполнении какой-либо команды из таблицы 2.
Команда SAMPLE/PRELOAD позволяет сделать мгновенный снимок состояния тестируемого устройства без прерывания его нормальной работы. Работа ячеек сканирования при выполнении команды SAMPLE/PRELOAD поясняется с помощью Рис.5.
Рис.5. Фаза Захвата для команды (SAMPLE\PRELOAD)
Во время фазы захвата входные мультиплексоры регистров захвата (Capture Registers) (см. Рис.5) настроены на прием рабочих сигналов тестируемого устройства; рабочее состояние устройства принимается на регистры захвата по сигналу CLOCK. Выходные мультиплексоры регистров обновления (Update Registers) также настроены на выдачу рабочих сигналов тестируемого устройства, чтобы не влиять на нормальную работу устройства.
Во время фазы сдвига регистр BSR формируется путем сдвига данных через регистры захвата по всей периферии тестируемого устройства на вывод TDO (см. Рис. 5). Новые тестовые данные могут быть одновременно приняты на регистры захвата с вывода TDI.
Во время фазы обновления данных информация из регистров захвата переписывается в регистры обновления (см. Рис.6). Эти данные могут быть использованы при выполнении команды EXTEST. (см. ниже).
Рис.6 Фаза обновления данных для команды (SAMPLE\PRELOAD)
На рис.6. видно что код команды SAMPLE/PRELOAD последовательно принимается с вывода TDI. ТАР - контроллер переходит в состояние CAPTURE_DR, а затем в состояние SHIFT_DR, в котором он и остается до тех пор, пока сигнал TMS не выйдет из состояния низкого уровня. На вывод TDO последовательно выдвигаются сначала данные о состоянии тестируемого устройства, зафиксированные в регистрах захвата, а затем поступают новые тестовые данные, записанные в устройство с вывода TDI и прошедшие через весь регистр BSR. Если сигнал TMS остается в состоянии высокого уровня в течение двух периодов сигнала ТСК, ТАР - контроллер переходит в состояние UPDATE_DR, и выполняется фаза обновления.
Рис.7. Временная диаграмма сдвига регистра данных при выполнении BST-
команды SAMPLE/PRELOAD.
Примечание 1. Данные, сохраненные в BSR-регистре, выдвигаются по сигналу TDO.
Примечание 2. После того, как данные из BSR-регистра выдвинулись, данные, поступившие по сигналу TDI, будут выдвинуты по сигналу TDO.
Исполнение команды EXTEST.
Команда EXTEST обычно используется для проверки соединений между несколькими тестируемыми устройствами. В отличие от команды SAMPLE/PRELOAD, команда EXTEST позволяет записать тестовые данные на выводы тестируемого устройства. Подавая известные значения на выходы тестируемого устройства, можно легко обнаружить как закоротки, так и обрывы во внешних цепях. В отличие от команды SAMPLE/PRLOAD, при выполнении команды EXTEST выходные мультиплексоры регистров обновления настроены на выдачу состояния регистров обновления. Таким образом, данные, записанные в эти регистры во время предыдущих команд SAMPLE/PRELOAD или EXTEST, передаются на выходные контакты тестируемого устройства (см Рис. 8).
Рис.8. Фаза захвата для команды (EXTEST)
В фазе захвата результаты этого теста сохраняются в регистрах захвата, а в фазе сдвига результаты теста последовательно выдаются с регистров захвата на выход TDO (см. Рис.10). Новые тестовые данные могут быть сохранены в регистрах обновления во время
фазы обновления (см. рис 9).
Рис.9. Фаза обновления для команды (EXTEST)
Рис. 9 Временная диаграмма сдвига регистра данных при выполнении BST-команды EXTEST.
Примечание 1. Данные, сохраненные в BSR-регистре, выдвигаются по сигналу TDO.
Примечание 2. После того, как данные из ВБЯ-регистра выдвинулись, данные, поступившие по сигналу ТБ1, будут выдвинуты по сигналу ТБО.
Использование команды BYPASS
Код команды BYPASS - последовательность единиц. Посылаемые данные сканирования проходят через устройство, ТАР - контроллер, который находится в состоянии SHIFT _DR. В этом состоянии каждый бит последовательных данных принимается с выхода TDI на регистр данных BSR по восходящему фронту импульса ТСК и выдается с регистра данных BSR на выход TDO по нисходящему фронту ТСК.
Использование команды UESCODE
Команда UESCODE используется для определения имени пользователя электронного прибора (User Electronic Signature - UES) в цепочке устройств с интерфейсом JTAG. При исполнении этой команды регистр данных UES включается между выводами TDI и TDO, и заданное пользователем имя последовательно сдвигается через регистр данных UESCODE.
Использование команды IDCODE
Команда IDCODE используется для слепого опроса в цепочке устройств с интерфейсом JTAG. При исполнении этой команды регистр идентификации устройства загружается 32 - битным кодом идентификатора устройства, заданным поставщиком устройства. Далее регистр идентификации устройства включается между выводами TDI и TDO и идентификатор устройства последовательно сдвигается через регистр данных IDCODE.
Важно. В регистре доступа для каждого блока ввода-вывода ПЛИС, как правило, отведены три последовательных бита: вход (I), выход (О) и запрет выхода (Т). Порядок вывода бит на TDO различен для ПЛИС разных фирм. Например, для Xilinx- (T,O,I), а для Altera (I,T,O).
JTAG - цепочки
Несколько устройств, поддерживающих JTAG, могут быть объединены в цепочку и подсоединены к одному тестируемому устройству. Цепочка устройств с интерфейсом JTAG изображена на Рис 11. а. Объединение в JTAG цепочку нескольких микросхем необходимо для тестирования связей, и устройства в целом при его нормальной работе, а также программирование
устройств из нескольких ПЛИС.
Сканируеиая граничная ячейка
Se liai Data In
Входная последовательность данных
Bütjnridfy-Scaji Ce//.
Сигнал на Микросхеиа контактной площадке
Serial Data О
Выходная последовательность данных
J TAG Device 1 ПЛИС 1
Основная логическая схеиа
interconnection ю Be Tested
Тестируеиое иежсоединение
JTAG Device 2
ПЛИС 2
Основная логическая схеиа
а)
б)
Рис.11. Цепочка устройств с интерфейсом JTAG. а) Объединение в цепочку сдвиговых регистров тестируемых устройств. б) Подача сигналов на цепочку из нескольких устройств.
Заключение
Из функциональных особенностей работы тестового механизма следует реальная возможность решения многих задач тестирования, среди которых следует отметить следующие:
1) Начального тестирования. С помощью 1ТЛО достаточно просто проверить целостность электрических цепей подсоединенных к тестируемому ПЛИС. Средства 1ТЛО позволяют тестировать ядро электронного элемента в статическом режиме, выставляя или снимая значения логических уровней на границе его выходных буферов.
2) конфигурирования ПЛИС по JTAG интерфейсу. Программирование ПЛИС, контроллеров и памятей (FLASH, EEPROM ) разных производителей возможно по одному интерфейсу (только для тех электронных компонент которые имеют JTAG интерфейс).
3) Возможность объединения множества ПЛИС в цепочки и тестирования комплекса
ПЛИС.
4)Тестирование устройств с очень плотным монтажом, где нет возможности тестирования с помощью дополнительной аппаратуры.
5)В некоторых семействах ПЛИС ALTERA есть возможность подключения логического анализатора, с помощью которого имеется уникальная возможность тестирования созданного инженером проекта.
Возможности логического анализатора:
- Устанавливать контрольные точки в любом месте проекта.
- Настраиваемая глубина логического анализатора.
- Запуск логического анализатора по заданному сигналу.
- Очень удобная и наглядная визуализация полученной информации.
Однако уместно привести в заключении и недостатки технологии JTAG.
1) Невозможно осуществлять комплексную динамическую отладку в реальном масштабе времени;
2) При объединении множества тестируемых ПЛИС в цепочку возникает достаточно большой регистр граничного сканирования и трудность обработки полученной информации;
3) Достаточно не развитый стандартный инструментарий тестирования и вывода полученной информации, что делает тестирование или отладку продолжительной, трудоемкой и неудобной.
Использование современных средств хранения, анализа и отображения обрабатываемой информации может значительно упростить эту задачу.
Список литературы:
1. Документ фирмы ALTERA файл dsbytemv.pdf
2. Документ фирмы ALTERA файл an039.pdf
3. www.altera.com