Компоненты и технологии, № 3'2005
Тестер цифровых БИС,
поддерживающих технологию периферийного сканирования
Андрей Строгонов
[email protected] Сергей Цыбин
[email protected] Алексей Быстрицкий
Сведения по стандарту JTAG в редакции IEEE Std 1149.1
Термином JTAG обозначают совокупность средств и операций, позволяющих проводить тестирование БИС без физического доступа к каждому ее выводу. Аббревиатура JTAG возникла по наименованию разработчика — объединенной группы по тестам Joint Test Action Group. Термином «периферийное сканирование», или по-английски Boundary Scan Test (BST), называют тестирование по стандарту JTAG (IEEE Std 1149.1). Такое тестирование возможно только для ИС, внутри которых имеется набор специальных элементов — ячеек периферийного сканирования (Boundary Scan Cells) и схем управления их работой. Механизм граничного сканирования (Boundary Scan) является промышленным стандартом, который был разработан группой специалистов по проблемам тестирования электронных компонентов. BST-технология может тестировать выводы без использования щупов и пробников (обычный мультиметр) и выполняет сбор необходимых функциональных данных в нормальном режиме функционирования ИС.
Все семейства ПЛИС фирмы Altera (FLEX 10K, MAX9000,APEX20K и др.) в той или иной степени поддерживают этот стандарт. В разных семействах по-разному реализованы схемы поддержки стандарта, они имеют разные временные параметры и состав сигналов интерфейса. Необходимо отметить, что для подобных целей используются также и другие последовательные интерфейсы. Например, двух-проводный интерфейс I2C требует меньше аппаратных затрат и, что более важно, времени для доступа к устройствам. Однако преимущество архитектуры JTAG — в отсутствии необходимости явного задания адресов устройств, поскольку все JTAG-устройства объединяются в последовательную цепочку и неявно адресуются своим положением в ней.
Рассмотрим JTAG-интерфейс. Блок схема JTAG-интерфейса приведена в стандарте IEEE Std 1149.1-2001. Имеется возможность выбирать путь прохождения данных от TDI к TDO: либо через регистр команд (Instruction Register), либо через регистр данных (Data Register). Регистром данных в каждый момент времени может быть один из следующих регистров: последовательный сдвиговый регистр граничного сканирования (Boundary-Scan register); внутренний регистр, предусмотренный разработчиком устройства
(Internai register); регистр обхода (Bypass register); идентификационный регистр (Identification register).
Регистр инструкций состоит из собственно сдвигового регистра, некоторой декодирующей логики (в зависимости от количества и типов реализуемых команд) и секции хранения декодированной команды. Длина IR-регистра должна быть больше двух.
На регистр инструкций (Instruction Register) по сигналу TDI приходит управляющая команда, она преобразуется в дешифраторе (Instruction Decode) и в зависимости от полученного кода к выходу TDO подключается один из внутрисхемных регистров: Boundary-Scan Register (служит для ввода или установки сигналов на выводы испытываемой ИС), Device ID Register (в этом регистре хранится идентификационный код ИС), Bypass Register (однобитный регистр, замыкает сигналы TDI и TDO — уменьшает длину JTAG-пути и обеспечивает возможность прозрачной ретрансляции данных через JTAG-контроллер), UESCODE (в этом регистре пользователь может хранить свою информацию об ИС, например, ее порядок в JTAG-цепочке).
Внешние относительно ТАР-контроллера сигналы: TDI, TMS, TCK, TRST, TDO. Сигналы UPDATEIR, CLOCKIR, SHIFTIR, UPDATEDR, CLOCKDR, SHIFTDR формирует ТАР-контроллер. ТАР-контроллер представляет собой синхронный конечный автомат с шестнадцатью состояниями, изменяющий состояние по фронту сигнала ТСК (синхроимпульса) и по включению питания. Сменой состояний управляет сигнал TMS, воспринимаемый по переднему фронту сигнала ТСК. Граф состояний и переходов управляющего автомата TAP-контроллера приведен в документе AN039, который можно скачать с сайта фирмы Altera (www.altera.com). Переходы граф-автомата кодируются в следующей последовательности: Test_logic/Reset (0), Run_test/Idle (1), Select_DR (2) ... Update_DR (8), Select_IR (9) ... Update_IR (f).
Когда ТАР-контроллер находится в состоянии TEST_LOGIC/RESET, регистры данных не активированы, устройство находится в своем нормальном состоянии и инициализируется регистр инструкций.
При включении питания или при подаче импульса на вывод TRST (сброс), автомат переходит в состояние TEST_LOGIC/RESET. Вывод TDO находится в Z-состоянии при всех состояниях ТАР-котролле-ра, кроме SHIFT_IR (регистр команд работает в режиме сдвига) и SHIFT_DR (регистр данных работает в режиме сдвига). Вывод TDO переходит в актив------www.finestreet.ru-----------------------
Компоненты и технологии, № 3'2GG5
Рис. 1. Архитектура цифрового тестера на базе ПЛИС1, ПЛИС2 с использованием интерфейса JTAG
ное состояние по первому нарастающему фронту сигнала ТСК после перехода ТАР-кон-троллера в состояние SHIFT_IR или в состояние SHIFT_DR. Вывод TDO возвращается в Z-состояние по фронту спада сигнала ТСК после выхода ТАР-контроллера из состояния SHIFT_IR или SHIFT_DR.
Правая часть графа относится к записи в IR-регистр управляющей JTAG-команды. Чтобы загрузить управляющую команду в IR-регистр, нужно:
1. Перейти из состояния TEST_LOGIC/RESET в состояние SHIFT_IR. Для этого на вход TMS подать последовательность 01100, синхронную с сигналами ТСК. В режиме SHIFT_IR ТАР-контроллер подключает сдвиговый IR-регистр к выводам TDI и TDO. Теперь на сигнал TDI в сдвиговый IR-регистр можно подать любую JTAG-команду.
2. Для записи введенной команды в IR-регистр нужно перейти в состояние UPDATE_IR (последовательность на вход 11 TMS) или пройти через состояния EXIT1_IR — > PAUSE_IR — > EXIT2_IR (последовательность 1010 на входе TMS).
3. После записи JTAG-команды осуществляется переход в состояние SHIFT_DR. В состоянии SHIFT_DR возможна запись или чтение данных с регистров данных ТАР-кон-троллера (зависит от введенной команды в состоянии SHIFT_IR). Левая часть графа идентична правой части графа, но вместо работы с командами осуществляется работа с данными. Формирование на входе TMS последовательности 0100 синхронно с нарастающим фронтом синхроимпульса TCK приведет к загрузке регистра данных (какой именно регистр будет загружаться, определяется инструкцией в IR-регистре) с входа TDI. Если у выбранного регистра данных параллельный выход содержит защелку, то защелкивание происходит в состоянии UPDATE_DR. Состояния EXIT1_DR, PAUSE_DR и EXIT2_DR используются только для навигации по граф-автомату.
В стандарте приводятся минимизированные булевы уравнения граф-автомата TAP-контроллера и электрическая схема, построенная по этим уравнениям.
Стандарт IEEE 1149.1 предписывает только три обязательные команды (BYPASS, EXTEST, SAMPLE/PRELOAD), необходимые для функционирования аппарата Boundary-Scan, все остальные являются необязательными (дополнительными). Обязательные и дополнительные команды в стандарте только описываются функционально, а их реализация на аппаратном уровне оставлена полностью на усмотрение разработчика. Команда BYPASS позволяет эффективно организовывать длинные последовательно объединенные цепочки из тестируемых ИС. Команда EXTEST обеспечивает возможность снимать или устанавливать логические значения на контактах ИС. Команда SAMPLE/PRELOAD позволяет тестировать ядро ИС в статическом режиме, выставляя или снимая значения логических уровней на границе его выходных буферов.
В стандарте также приводятся электрические схемы ячейки сдвигового регистра IR-регистра и ячейка BSR-регистра. Ячейка BSR-регистра состоит из двух D-триггеров, работающих по фронту нарастания, двух мультиплексоров. Ранее такие ячейки использовались для реализации элементов памяти в методе сканирования пути (Scan Path). Регистр инструкций может быть 3-битным, как у ПЛИС фирмы Actel, так и 10-битным, как у ПЛИС фирмы Altera.
Ячейки BSR-регистра могут работать в разных режимах. В рабочем режиме они пропускают сигналы через себя слева направо и не изменяют функционирование схемы. Для выходов обычного логического типа нужна одна ячейка, для выходов с третьим состоянием — две, для двунаправленных — три.
Разработка схемы цифрового тестера на базе JTAG
В настоящей работе приводится разработка аппаратной части цифрового тестера на базе JTAG-стандарта для реализации в ПЛИС, предназначенного для лабораторного исследования внутренней схемотехники ПЛИС по архитектуре FLEX10K, упакованных в корпуса типа 240-Pin PQFP/RQFP. Может быть использован для исследования новых образцов зарубежных цифровых БИС в аналогичных
корпусах, поддерживающих технологию JTAG. За основу принята редакция JTAG 1149.1 и техническая документация фирмы Altera (AN039 и cfg_cf51005 с сайта www.altera.com).
Проект (тестер ПЛИС) логически разбит на две части (рис. 1). Каждая часть проекта «зашивается» в отдельную ПЛИС по архитектуре ACEX1K. Первая ПЛИС содержит JTAG-интерфейс и фрагмент BSR-регистра (108 BSR-ячеек), вторая ПЛИС содержит оставшуюся часть BSR-регистра (132 BSR-ячейки). Фрагмент BSR-регистра из 108 BSR-ячеек, в свою очередь, разбивается на две цепочки: 69 BSR-ячеек и 39 BSR-ячеек, фрагмент BSR-регистра из 132 BSR-ячеек так же разбивается на две цепочки: 58 BSR-ячеек и 74 BSR-ячеек. Таким образом, имеется возможность протестировать 240 двунаправленных контактных ножек испытываемой ПЛИС FLEX10K и проверить правильность функционирования внутренней логики.
На рис. 2 показана электрическая схема JTAG-интерфейса без BSR-регистра, реализованная в САПР Max+Plus II. В JTAG-интерфейс входят TAP-контроллер, регистр инструкций, дешифратор команд, регистры BYPASS, регистр UESCODE, регистр IDCODE и вспомогательные схемы управления. Внешние относительно ТАР-контроллера сигналы: TDI, TMS, TCK, TRST, TDO, соответствуют списку сигналов интерфейса IEEE Std.1149.1.
Проектирование ТАР-контроллера
Когда ТАР-контроллер находится в состоянии TEST_LOGIC/RESET, регистры данных JTAG-схематики не активированы, ПЛИС находится в своем нормальном состоянии и инициализируется регистр BST-команд.
Первоначально в регистре инструкций SHIFT_IR находится последовательность из чисел 0101010101 или 341 в десятичной системе счисления. В этом можно убедиться, если записывать любые данные (из 10 чисел) в регистр SHIFT_IR с помощью сигнала TDI, а с помощью сигнала TDO считывать выходную последовательность данных. Регистр SHIFT_DR зависит от выбранной JTAG-команды и в нем могут находиться совершенно различные данные.
Компоненты и технологии, № 3'2005
Дешифратор команд формирует управляющие сигналы ena_BSR, ena_BYPASS, ena_UESCODE, ena_IDCODE (сигналы разрешения работы следующих регистров: Boundary-Scan Register, Device ID Register, Bypass Register, UESCODE Register), а также управляющий сигнал (вектор Sel) для мультиплексора. При SEL<=«01» на выход TDO поступают данные с BSR-регистр, при SEL<=«00» на выход TDO поступают данные с регистра обхода Bypass Register и т. д. Дешифратор команд реализован по схеме комбинаторная часть плюс фиксация сигналов разрешения с помощью 4-разрядного регистра на языке VHDL. TAP-контроллер представляет собой синхронный автомат Мура. Описание работы TAP-контроллера осуществлено на языке VHDL.
Исполнение команды EXTEST
Команда EXTEST используется для проверки соединений между несколькими тестируемыми устройствами. EXTEST позволяет задать тестовые данные на контактные ножки тестируемого устройства (БИС/ПЛИС). В первоначальный момент времени высоким уровнем сигнала TRST регистры захвата и регистры обновления установлены в ноль. Выходы BSR-регистра находятся в Z-состоянии.
Регистр инструкций представляет 10-разрядный сдвиговый регистр на D-триггерах с синхронной установкой sset (активный высокий уровень сигнала), сигналом разрешения enable (активный высокий уровень сигнала), последовательным входом shiftin, последовательным выходом shiftout, параллельным выходом q.
Во время фазы захвата регистра инструкций (фаза CAPTURE_IR TAP-контроллера) контроллером вырабатываются сигналы CAPTUREIR=T и SHIFTIR=T. Загружается число 341 (десятичное).
Для загрузки кода команды EXTEST в регистр инструкций (фаза сдвига регистра инструкций) последовательно на вход TDI по переднему фронту синхроимпульса TCK за десять тактов загружается логический ноль. На выходе регистра инструкций ТАР-контроллера появляется последовательность: 341, 170, 85, 42, 21, 10, 5, 2, 1, 0. ТАР-контроллер находится в состоянии SHIFT_IR, в котором он остается до тех пор, пока сигнал TMS не выйдет из состояния низкого уровня. На вывод TDO последовательно выдвигаются данные кода команд.
Во время фазы обновления ТАР-контрол-лер вырабатывает управляющий сигнал UPDATEIR='1', который является разрешающим для дешифратора команд. Дешифратор команд согласно VHDL-описанию вырабатывает сигнал ena_BSR='1', который высоким уровнем разрешает работу BSR-регистра.
Для того, чтобы проектируемый тестер в точности отрабатывал JTAG-команды, BSR-ячейка была модифицирована (см. AN39.pdf. IEEE 1149.1 (JTAG). Boundary-Scan Testing). На рис. 3 а показана BSR-ячейка ПЛИС фирмы Altera. В фазе захвата на входы OUTJ и OEJ поступают сигналы из ядра ПЛИС и в ядро, с регистров обновления (сигнал INJ). На рис. 3б показана BSR-ячейка тестера.
Во время фазы захвата входные мультиплексоры регистров захвата (Capture Registers) настроены на прием тестовых сиг-
налов. При высоком уровне сигнала ENA_CUP ='1', мультиплексоры регистров захвата захватывают логический ноль, состояние CAPTURE_DR TAP-контроллера. Который принимается на регистры захвата по сигналу TCK при наличии разрешающего сигнала SHIFTDR_BSR='1', формирующийся дешифратором инструкций (сигнал ENA_BSR) и TAP-контроллером (сигнал SHIFTDR). В состоянии CAPTURE_DR низкий уровень сигнала ENA_UPDATE запрещает работу регистров обновления (Update Registers), то есть регистры обновления не настроены на выдачу тестовых сигналов.
Во время фазы сдвига регистр BSR формируется путем сдвига данных через все 240 BSR-ячейки, со входа SDI до выхода TDO_BSR за n тактов. Сигнал управления мультиплексорами регистров захвата принимает значение логического нуля ENA_CUP ='0'. Тестовые данные со входа TDI последовательно сдвигаются при высоком уровне сигнала SHIFTDR_BSR='1' (состояние SHIFT_DR TAP-контроллера) рис. 4.
Во время фазы обновления данных информация из регистров захвата по высокому уровню сигнала ENA_UPDATE='1' переписывается в регистры обновления (состояние UPDATE_DR TAP-контроллера). На выходах регистра BSR появляется тестовая последовательность.
Использование команды BYPASS. Регистр BYPASS представляет собой однобитный регистр (D-триггер) с сигналом разрешения enable, которым управляет сигнал ena_BYPASS дешифратора команд и сигнал SHIFTDR TAP-контроллера. Код команды BYPASS — последова-
Компоненты и технологии, № 3'2005
Рис. 3. Работа BSR -ячейка ПЛИС фирмы Altera в фазе захвата (а) и BSR-ячейка тестера (б)
б)
Name: Value: г , 7,6849us 8,0us 8,5us 9,0us 9,5 us 10,0us 10,5us 11, Ou
CD— TRST 0
CD- TMS 0 п п 1 1 П П 1 1
СО- ТСК 1 лшишшшшшшшллл лшшшшлшшлллши
Q [¡tag:l 16]state Н4 4 )5 6 7X 4 РЫ 1 PPM 6 X7 Хв X
_СЭ STATE_JTAG[3..0] Н4 4 ЫФ1 4 ~Х 5Х 8 X 1 Х2ХЗХ5Х 6 Ï7pT~
AMA СО- TDI 0
-CD TDO 0
1Ш
—CD CAPTUREIR 0
-CD SHIFTIR 0 1
—CD UPDATEIR 0
-CD q_SHIFT_REG[9..0] D0 0
ССь- OUT BSR 0
—d> TD0_2 0
-CD TDO 1 0
—CO ENA_CAP 0 п
—CD SHIFDR BSR 1 п
—d> CAPTUREDR 0 п
-CD SHIFDR 1
—d> ENA UPDATE 0 ~] п
-CD ena_UESCODE 0
—i—~> enaJDCODE 0
—I > ena_BSR 1
—CO sel[1..0] Н 1 1
Рис. 4. Тест на выполнение команды EXTEST. Фаза захвата и сдвига данных в BSR-регистре
тельность единиц. Посылаемые данные сканирования со входа TDI по переднему фронту синхроимпульса TCK записываются в регистр BYPASS и выдаются с регистра на выход TDO по нисходящему фронту ТСК.
Использование команды UESCODE. Регистр UESCODE представляет собой 32-разрядный сдвиговый регистр на D-триггерах с синхронной установкой sset (активный высокий уровень сигнала), сигналом разрешения enable (активный высокий уровень сигнала), последователь---------------------www.finestreet.ru -
ным входом shiftin, последовательным выходом shiftout, параллельным выходом q. Сигналом enable управляет сигнал SHIFTDR TAP-контроллера и сигнал ena_UESCODE дешифратора команд.
Команда UESCODE используется для определения имени пользователя электронного прибора (User Electronic Signature — UES) в цепочке устройств с интерфейсом JTAG (номер ПЛИС в JTAG-цепочке). При исполнении этой команды регистр данных UES включается меж-
ду выводами TDI и TDO и заданное пользователем имя последовательно сдвигается через регистр данных UESCODE.
Использование команды IDCODE. Команда IDCODE используется для опроса в цепочке устройств с интерфейсом JTAG. В этом регистре хранится идентификационный номер ПЛИС, заложенный производителем. При исполнении команды регистр идентификации устройства загружается 32-битным кодом идентификатора устройства, заданным постав--------------------------------- 141
Компоненты и технологии, № 3'2GG5
Jam Compose САПР Max+Plus II
из/в
ByteBlaster
TDI
TMS RSR
ТСК
TDO
TDI
TMS
ТСК
TDO
JAM Player
Цифровой
тестер
240-pin из/в BSR-регистр
■a
TDI I BSR I
TRST(l) TMS nSTATUS CONF DONE TCK nCONFIG MSELO MSEL1 TDO nCE
vccvcc vcc
iïïï Ï
----T1 kOmT 1 к
. Испытуемая ПЛИС FLEX 1 OK
Рис. 5. Использование разработанного тестера в качестве Jam Player
щиком устройства. Далее регистр идентификации устройства включается между выводами TDI и TDO, и идентификатор устройства последовательно сдвигается через регистр данных IDCODE. Разработанный тестер не поддерживает команду SAMPLE/PRELOAD.
Цифровой тестер спроектирован так, чтобы в точности поддерживать JTAG-команды ПЛИС фирмы Altera. Это позволяет отказаться от разработки программного обеспечения и использовать технологию Jam-программирования ПЛИС с использованием программных модулей Jam Composer. Jam — это стандартный язык программирования и тестирования (STAPL — Standard Test and Programming Language).
Jam-технология использует файлы стандартного формата для работы с JTAG-интерфейсом стандарта IEEE Std. 1149.1. Jam-файлы (текстовый ASCII-файл) содержат алгоритм программирования и все данные, необходимые для обновления конфигурации несколь-
ких ПЛИС. Язык Jam поддерживается САПР MAX+PLUS II версий 8.0 и выше. На рис. 5 схематически показано использование тестера в качестве Jam Player.
Тестер работает в двух режимах: режим записи тестовой информации в ПЛИС FLEX10K и режим считывания. В режиме записи тестовой информации с 240 двунаправленных выходных ножек BSR-регистра выставляется тестовая информация на 240 контактных ножек испытываемой ПЛИС (рис. 6). В режиме считывания информация с контактных ножек испытываемой ПЛИС попадает в фазе захвата в BSR-регистр тестера (рис. 7). Далее она сдвигается и поступает на выход TDO для последующего анализа.
С помощью САПР PCAD-2001 разработаны электрическая схема и печатная плата электрической схемы тестера ПЛИС, состоящая из двух однотипных плат с использованием ПЛИС ACEX1K (ACEX EP1K50QC208-3). Обе ПЛИС соединены в цепочку с возможно-
стью исключения любого устройства с помощью перемычек. С использованием конфигурационных ПЗУ EPC2 (режим загрузки Passive Serial, для программирования ПЗУ предусмотрен JTAG-разъем) осуществляется конфигурирование ПЛИС1 и ПЛИС2 (рис. 8). После этого путем JTAG-конфигурирования цепочки ПЛИС1 и ПЛИС2 тестовые данные для испытываемой ПЛИС загружаются через разъемы кабелей MasterBlaster.
Также разработана электрическая схема и печатная плата для испытываемой ПЛИС с JTAG-конфигурированием. В ней требуется два источника питания. Один (5 В) питает испытываемую ПЛИС FLEX10K, второй (3,3 В с ограничением по току) питает обе ПЛИС ACEX 1K. Платы между собой соединяются шлейфами. Предварительно в испытываемую ПЛИС FLEX10K с помощью JTAG-загрузки заносится тестовая прошивка для конфигурирования макроячеек на выполнение определенных логических функций. ИИ
Литература
1. Угрюмов Е. П. Цифровая схемотехника. СПб: БХВ. 2000.
2. Торчигин С. В. Принципы использования стандарта JTAG при отладке вычислительных систем, основанных на программируемых логических интегральных схемах // Электронный журнал «Исследовано в России». http://zhurnal.ape.relarn.ru/articles/ 2002/149.pdf.
3. IEEE Std 1149.1-2001. IEEE Standard Test Access Port and Boundary-Scan Architecture.
C^TMS 0
CD- ТСК 0
_сэ STATE_JTAG[3..0] HA
CD- TDI 0
-CD TDO z
-CD ENA_CAP 0
—CD SHIFTDR BSR 0
—CD ENAJJPDATE 0
—CD OUT_BSR_l 72 0
ay- IN_BSR_113 0
-CD OUT_BSR_75 0
CD— TDO_BSR 0
CD—PIN_240 z
ШШ- PIN_239 z
CD- PIN_238 z
E=>- PINJ237 z
E=>- PIN_236 z
c=^ PINJ235 z
E=^ PIN_234 z
E3- PIN_233 z
CD~ PIN_231 z
E=>- PIN_230 z
CD- PIN_229 z
«
I
I
Рис. 6. Временные диаграммы работы BSR-регистра (режим записи теста в ПЛИС FLEX10K)
Компоненты и технологии, № 3'2005
е-
■ TRST
■ ТМБ . тск
5ТАТЕ_ЛА6[3..0]
■ ТО1 ТОО
ЕЫА_САР ЭН1РТОР_В5Р ЕЫА_иРОАТЕ OUT_BSR_l 72
■ IN_BSR_113 OUT_BSR_75
■ ТОО.ВБР
■ Р1Ы_240
■ Р1Ы_239
■ Р11М_238
■ Р11М_237
■ Р1Ы236
■ Р11М_235
■ Р1Ы_234
- Р1Ы_233
- Р1Ы_231
- Р1Ы_230 -Р1Ы 229
0
0
1
Н 4 0 0 0 1 0 о о о о г г г г г г г г г г г
Рис. 7. Режим считывания информации из ПЛИС FLEX10K в BSR-регистр