цифровая электроника
вычислительная техника
встраиваемые системы

 
» » Введение в JTAG и порт тестового доступа (TAP)

Введение в JTAG и порт тестового доступа (TAP)

Автор: Mike(admin) от 20-11-2020, 23:55

Что такое JTAG и порт тестового доступа


JTAG стал стандартом для встраиваемых систем и доступен почти для каждого микроконтроллера и FPGA, которые присутствуют сегодня на рынке. Этот интерфейс назван в честь группы, которая его разработала: Joint Test Action Group.


Введение в JTAG и порт тестового доступа (TAP)

Если вы программировали микроконтроллер за последние несколько лет, есть большая вероятность, что вы использовали JTAG или один из связанных стандартов. А дле некоторых эта аббревиатура полна загадок. Поэтому стоит спросить: что такое JTAG? Как это работает? И что с этим делать?


Что такое JTAG


Раньше для тестирования платы со многими линиями ввода-вывода требовалось что-то вроде испытательного стенда. Однако по мере того, как плотность выводов увеличивалась и корпус с шариковыми выводами (BGA) становился все более распространенным, требовался новый метод тестирования. Требовалось решение, которое тестировало бы аппаратные соединения между несколькими микросхемами.


В итоге в 1980-х годах было разработано и стандартизовано граничное сканирование в IEEE 1149.1-1990, стандарте IEEE для тестового порта доступа и архитектуры граничного сканирования. Эта стандартная технология стала известна разработчикам и инженерам как JTAG.


Граничное сканирование JTAG


Сам стандарт обеспечивает реализацию граничного сканирования: каждый вывод на устройстве снабжен небольшой логической ячейкой между внутренней логикой и физическим контактом, и все эти логические ячейки соединены таким образом, что они могут перемещать данные в одном направлении. Значения контактов могут быть прочитаны или записаны для проверки функциональности.


Кроме того, он определяет порт тестового доступа (TAP), который представляет собой логический блок, отвечающий за выполнение тестов и управление потоком данных вдоль граничных ячеек. TAP, который по сути представляет собой конечный автомат и несколько регистров сдвига, можно заставить выполнять такие команды, как загрузка и чтение данных. При этом структура достаточно универсальна, чтобы производители могли свободно добавлять команды и логические блоки, которые обеспечивают такие вещи, как доступ для программирования и отладки.


Введение в JTAG и порт тестового доступа (TAP)

Почему JTAG популярен


Так как же JTAG стал синонимом программирования устройств? Напомним, что любое устройство, имеющее память, можно запрограммировать, во-первых, адресовав слово, а во-вторых, записав данные по этому адресу. Ранние устройства памяти использовали асинхронную адресацию, часто без декодирования, с использованием матричной схемы адресации. Данные передаются через отдельные выводы данных, по одному на каждый бит слова памяти. Вскоре двоичное декодирование адресов уменьшило необходимое количество выводов и позволило увеличить объем памяти, а позже применение последовательных протоколов позволило программисту связываться с устройством, используя всего несколько выводов, для памяти любого размера.


Затем, когда гибкость JTAG позволила разработчикам реализовать собственную логику, он также стал использоваться для программирования. Конвейер данных, который предоставляет JTAG TAP, хорошо подходит для задач программирования микроконтроллеров и ПЛИС, а стандартизация интерфейса помогла создать единообразие между устройствами (хотя существует большое разнообразие реализаций). Дальнейшие расширения стандарта, такие как Serial Wire Debug (SWD) ARM, а также дополнительные стандарты IEEE 1149.x, расширили применимость и полезность стандарта, позволив JTAG стать тем, что мы знаем сегодня.


Хотя это стандарт, IEEE 1149.1 многое оставляет разработчику. Стандартных распиновок, стандартных разъемов нет, есть только несколько встроенных команд. Помимо основного конечного автомата, многие функции могут не соответствовать требованиям; даже функция граничного сканирования не является обязательной. Закончив этот урок истории, перейдем к самому стандарту.


Порт тестового доступа (TAP)


На следующем рисунке показана базовая архитектура JTAG.


Введение в JTAG и порт тестового доступа (TAP)

Давайте посмотрим на схему снизу вверх. В стандарте JTAG есть четыре обязательных сигнала и один дополнительный сигнал. Все JTAG-совместимые устройства должны иметь:


  • Контакты ввода тестовых данных (TDI)
  • Контакты вывода тестовых данных (TDO)
  • Тестовый тактовый вывод (TCK)
  • Вывод выбора тестового режима (TMS) для управления конечным автоматом TAP

Контакт сброса тестового режима (TRST), который переводит конечный автомат в состояние сброса, является необязательным, потому что состояние сброса всегда можно получить, удерживая TMS на низком уровне и синхронизируя TCK пять раз.


Контроллер TAP


Точка доступа для тестирования состоит из контроллера TAP, регистра инструкций и нескольких регистров тестовых данных, а также некоторой связующей логики. Контроллер TAP содержит конечный автомат тестирования и отвечает за интерпретацию сигналов TCK и TMS. Вывод данных используется для загрузки данных в граничные ячейки между физическими выводами и ядром микросхемы, а также для загрузки данных в регистр команд или один из регистров данных. Вывод данных используется для чтения данных из граничных ячеек или для чтения данных из инструкций или регистров данных.


Конечный автомат контроллера TAP управляется сигналом выбора режима, TMS, который синхронизируется TCK. Конечный автомат принимает только два «пути», представляющих два разных режима: режим команд и режим данных. Режим выбирается синхронизацией в битах TMS HIGH или TMS LOW. Затем, находясь в заданном режиме, конечный автомат либо продвигается (TMS HIGH), либо переходит в состояние сброса (TMS LOW).


Как использовать JTAG


Работа с JTAG обычно производится следующим образом:


  1. Сначала выбирается режим инструкции. Одно из состояний в режиме команд «путь» позволяет пользователю синхронизировать команду через TDI.
  2. Затем конечный автомат работает до тех пор, пока не будет сброшен.
  3. Для большинства инструкций следующим шагом является выбор режима данных. В этом режиме данные загружаются через TDI и/или читаются из TDO. Пути данных для TDI и TDO будут настроены в соответствии с командой, которая была синхронизирована.
  4. Когда операция чтения или записи завершена, конечный автомат снова переходит в состояние сброса.

Инструкции режима тестирования и регистры данных


Стандарт JTAG требует наличия двух регистров данных и четырех инструкций для всех устройств. Еще шесть регистров данных и 13 инструкций также стандартизированы, но не требуются. Требуемые регистры данных следующие:


  • BSR – «регистр граничного сканирования», основной регистр для передачи данных в ячейки граничного сканирования
  • BYPASS – однобитный проходной регистр, соединяющий TDI с TDO без предварительного прохождения через ячейки граничного сканирования

Поставщики могут реализовать другие регистры данных в зависимости от своих проектных потребностей, будь то стандартизованные или специфичные для проекта. Единственные инструкции, которые стандарт JTAG требует для реализации, это:


  • EXTEST – выполнить «внешний» тест с граничным сканированием, используя ячейки с граничным сканированием
  • SAMPLE и PRELOAD – граничное сканирование, пока устройство работает
  • BYPASS – полностью обходит ячейки граничного сканирования

Стандартные инструкции JTAG


К другим рекомендуемым инструкциям относятся:


  • IDCODE – вывод идентификационного кода, хранящегося в регистре идентификационных данных.
  • CLAMP и HIGHZ – используются для изоляции частей устройства без риска повреждения. HIGHZ переводит все логические выходы в высокоимпедансный режим, в то время как CLAMP переводит логические выходы на определенные значения, например чтобы гарантировать, что устройство не отвечает, когда другие устройства тестируются.
  • IC_RESET – когда реализован регистр выбора сброса, позволяет управлять сбросом устройства и питанием.
  • CLAMP_HOLD, CLAMP_RELEASE и TMP_STATUS – обязательно, если сохранение в тестовом режиме (TMP) реализовано через контроллер TMP
  • INIT_SETUP, INIT_SETUP_CLAMP и INIT_RUN – рекомендуется, когда устройство имеет программируемые контакты ввода-вывода.

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


  • RUNBIST – встроенные системные тесты с внутренним контролем
  • INTEST – Внутренний тест граничного сканирования
  • USERCODE – программируемый пользователем идентификационный код смещен
  • ECIDCODE – код идентификации электронного чипа, идентификатор самого кремниевого кристалла

Инструкциям назначаются двоичные коды, и они могут считаться общедоступными (для конечного пользователя/разработчика) или частными (для проверки устройства поставщиком устройства). Большинство инструкций не содержат требований к двоичному значению, что означает, что это выбор производителя. Единственным исключением является инструкция BYPASS, которая равна (1,1,…, 1), т.е. все единицы. Стандарт действительно требует, чтобы все возможные двоичные коды команд, действительные или недействительные, по умолчанию имели четко определенное поведение.


Большинство инструкций JTAG можно в общих чертах описать как подключение разных регистров данных к пути TDI/TDO. Инструкция BYPASS подключает TDI напрямую к TDO через 1-битный регистр сдвига, инструкция IDCODE подключает регистр идентификационного кода к TDO, инструкции EXTEST, INTEST, SAMPLE, PRELOAD все подключают регистр данных регистра граничного сканирования (BSR) к TDI. и TDO, и так далее.


Теперь вы можете спросить, как нам узнать, что такое коды инструкций? Как уже упоминалось, это зависит от производителя, но обычно интерфейс JTAG будет заключен в архитектуру «промежуточного программного обеспечения», которая включает не только JTAG TAP, но также интерфейс и соединения с ядром устройства, такими как флэш-память или ПЗУ, или регистры процессора. Примером архитектуры промежуточного программного обеспечения является архитектура Arm CoreSight и, в частности, Arm Debug Interface (ADI), который добавляет дополнительную структуру в JTAG TAP в виде порта отладки, портов доступа и ресурса устройства.


Заключение


Теперь мы в общих чертах понимаем, что такое JTAG и на что он способен. Мы узнали про JTAG TAP (порт тестового доступа), а также несколько инструкций и регистров данных.




© digitrode.ru


Теги: JTAG




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий