Осциллографы расширяют возможности отладки системы JTAG

№ 10’2011
PDF версия
Стандарт JTAG, который называют также стандартом IEEE 1149.1, — один из самых успешных в электронике. Разработанный более 20 лет назад для производственного тестирования устройств на печатных платах, он продолжает совершенствоваться и используется сейчас практически во всех изделиях с печатным монтажом. Кроме того, этот стандарт нашел применение в большом числе интегральных схем (ИС), где он стал играть очень важную роль. Микропроцессоры, ПЛИС и другие сложные ИС, как правило, имеют в своем составе контроллер JTAG и TAP-порт, обеспечивающие доступ к внутренним функциональным блокам ИС для выполнения конфигурирования, передачи данных и отладки.

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

Необходимость декодирования протокола JTAG

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

Во многих случаях необходимо быстрое декодирование сигналов JTAG. Например, в устройстве разработчик может осуществлять считывание и запись в регистр ПЛИС через JTAG, но не потому, что это очень удобно, а потому что эта шина является единственной доступной возможностью внешнего подключения. Компаниям, выпускающим кабели для программирования JTAG через интерфейсы Ethernet или USB, возможно, потребуется проверка корректности преобразования данных. Для медицинского или военного прибора разработчику может потребоваться доступ к его подсистемам через JTAG и декодирование информации на ней. Производителю ИС может понадобиться разрешить какой-то вопрос со сторонним поставщиком прибора, взаимодействующего с данной ИС через JTAG. Это лишь несколько примеров, когда необходимо декодирование протокола JTAG в масштабе реального времени и с использованием инструмента, не требующего вмешательства в работу схемы или программы. В описанных случаях решаются задачи, рассматриваемые на уровне протокола или на физическом уровне шины при самом широком разнообразии вариантов его реализации.

Большинство разработчиков не часто оказываются перед необходимостью декодировать сигналы JTAG. Но когда эта задача возникает, она оказывается чрезвычайно сложной, чреватой ошибками и отнимающей много времени. Инженеры, имеющие опыт в этой области, знают проблемы и трудности декодирования последовательных сигналов JTAG. Этим можно заниматься неделями, полностью посвящая все время сложностям, связанным с декодированием протокола. Процесс обычно начинается со снятия временны́х диаграмм всех четырех сигналов шины (с помощью логического анализатора или осциллографа) и попыток расшифровки этой загадочной информации вручную. Краткое описание системы JTAG, которое приводится ниже, наглядно иллюстрирует степень ее сложности.

В последние годы некоторые осциллографы оснащаются функцией декодирования протоколов стандартных последовательных шин. Обычно эта функция доступна в виде программного приложения, приобретаемого на основе лицензии на использование протокола. Разработчик может выбрать, добавлять ли ему в свой осциллограф функцию декодирования данных последовательных шин I2C и PCI, чтобы расширить измерительные возможности прибора. Для производителей осциллографов задача разработки средств декодирования протоколов, подобных I2C, SPI и RS-232, хотя и не является тривиальной, но она намного легче, чем «возня» с JTAG. Большинство последовательных шин позволяют декодировать получаемые данные в прямом или обратном направлениях или допускают декодирование некоторой части полученных данных, независимо от всей выборки. С JTAG все намного сложнее.

Хотя шина JTAG считается последовательной, в силу природы периферийного сканирования она включает в себя четыре основные сигнальные линии (TCK, TMS, TDO и TDI) и одну дополнительную пятую линию, TRST. Порт тестового доступа (TAP) системы JTAG может находиться в 16 различных состояниях, каждое из которых определяется предыдущим состоянием и сигналом TMS (точнее, перепадом уровня этого сигнала). Для декодирования вручную сигналов JTAG, полученных в виде временны́х диаграмм с помощью традиционного логического анализатора или осциллографа, нужно, чтобы пользователь начинал декодирование с момента, когда контроллер TAP обнулился или находится в состоянии ожидания. Затем пользователь начинает работать с каждым последующим тактом состояния контроллера. Сигналы шины JTAG нельзя записать и декодировать, если начинать с произвольных моментов времени. Декодирование имеет смысл только тогда, когда оно синхронизировано сигналом TMS, поскольку этот сигнал определяет состояние контроллера JTAG TAP, и понимание принципов его работы играет решающую роль (рис. 1). В правой колонке изображена последовательность состояний, включающая в себя операции регистра команд (IR); состояния в левой колонке относятся непосредственно к регистрам данных (DR).

Блок-схема работы контроллера JTAG TAP

Рис. 1. Блок-схема работы контроллера JTAG TAP

Сложность работы контроллера TAP — только одна сторона проблемы декодирования протокола JTAG. Другая трудность заключается в том, что число устройств на шине JTAG может быть произвольным и эти устройства могут располагаться в произвольном порядке. При этом у каждого может быть свой собственный уникальный набор кодов операций. Например, программа сканирования шины с 12 устройствами может содержать коды инструкций для третьего устройства, согласно которым оно должно выполнить некий тест, а результаты этого теста вернуть по шине. К шине подключаются IR и ID, размеры которых могут быть разными для разных устройств. Каждое устройство имеет свой уникальный набор кодов операций, которые могут иметь разную длину в зависимости от устройства. Пользователи, которые попытаются вручную декодировать информацию JTAG, должны отслеживать состояние контроллера TAP и учитывать огромный объем информации о каждом конкретном устройстве, о порядке устройств на шине и о кодах операций для каждого из них. Это задача огромного объема, решение ее может оказаться чрезвычайно сложным. Кроме того, эта задача может быть нерешаема в режиме реального времени. Иногда разработчики прибегают к самостоятельному созданию средств декодирования для автоматизации этой процедуры в каком-либо конкретном устройстве. Это отнимает много времени и вынуждает повышать свою квалификацию в области, не относящейся непосредственно к текущему проекту.

Декодирование сигналов JTAG в осциллографе

Производители осциллографов предлагают прикладное программное обеспечение, позволяющее декодировать сигналы, поступающие на входы осциллографа. Осциллографы смешанных сигналов имеют дополнительные цифровые каналы, которые могут использоваться также и для декодирования протоколов, освобождая аналоговые каналы для одновременного наблюдения других сигналов. Все основные производители осциллографов предлагают ПО декодирования протоколов для таких распространенных шин, как I2C, RS-232, SPI. Часто это ПО обеспечивает функции запуска по условиям, задаваемым на уровне протокола.

Выше говорилось, что сложность системы JTAG требует от производителей осциллографов больше изобретательности для декодирования этого протокола, чем при реализации декодирования любых других протоколов. Одним из новых вспомогательных средств является способность открытия файлов формата BSDL. Формат BSDL был включен в стандарт IEEE и является подмножеством VHDL. Файлы BSDL предоставляются производителями ИС, каждый описывает определенную версию микросхемы и содержит описание регистров и общедоступных кодов команд, которые используются в JTAG-совместимой ИС. Те команды, которые производитель использует у себя на производстве, но не считает их общедоступными, не включаются в BSDL-файл. В него входят один регистр команд, одноразрядный (как минимум) обходной регистр (bypass register), один регистр периферийного сканирования и дополнительно 32-разрядный регистр идентификатора устройства (ID-register). Все регистры, кроме IR, называются регистрами данных (DR).

Оснастить осциллограф Agilent серии Infiniium 9000 функцией декодирования протокола JTAG можно за одну минуту (рис. 2). После этого пользователь получает возможность вводить информацию о шине JTAG и импортировать стандартные файлы BSDL. Это позволяет системе выполнять корректное декодирование с представлением идентификатора устройства для каждой инструкции и кода команды вместо их двоичного эквивалента.

Оснастка осциллографа функцией декодирования протокола JTAG

Рис. 2. Оснастка осциллографа Agilent серии Infiniium 9000 функцией декодирования протокола JTAG

Чтобы обеспечить корректное декодирование сигналов JTAG, должна быть предусмотрена возможность импортирования файлов BSDL для каждого компонента, подключенного к шине. Если для какого-либо компонента такой файл недоступен, для него должны устанавливаться режим обхода (BYPASS) и определяться соответствующая длина команд.

Итак, BSDL-файлы включают в себя мнемокоды общедоступных команд, которым соответствуют их двоичные представления определенной длины. Команды, которые не включены в файл, называют закрытыми. Если закрытые команды предоставлены пользователю, они могут быть добавлены к файлу BSDL с помощью текстового редактора, что дает возможность системе декодирования показать и закрытые, и общедоступные команды. Импорт и использование информации BSDL-файла позволяют системе декодирования протокола, установленной в осциллограф, более эффективно предоставлять пользователю декодированную полезную информацию. Например, в окне визуализации декодированного протокола будут отображаться имена устройств на шине JTAG, что очень ценно для понимания функционирования системы, когда устройств много.

Осциллографы серии Agilent Infiniium 9000 — первые, поддерживающие декодирование протокола JTAG. Хотя эти осциллографы уже давно использовались для работы с сигналами JTAG (IEEE 1149.1), их возможности ограничивались лишь оценкой формы и временных соотношений. При установке в осциллограф опции N8817A у него появляется возможность декодирования сигналов JTAG. Сигналы TMS, TDI, TDO и TCK можно подавать как на аналоговые, так и на цифровые входы (модели MSO). В режиме декодирования на экране отображаются данные JTAG в масштабе реального времени вместе с сигналами физического уровня. Кроме того, на экране помечаются некоторые виды ошибок (рис. 3).

Экран в режиме декодирования

Рис. 3. Экран в режиме декодирования

Осциллограф также может обладать дополнительными возможностями по обнаружению ошибок, основываясь на информации, содержащейся в BSDL-файле, и информации об исследуемой шине. Например, осциллограф может отметить на экране ошибочный пакет, сигнал TDO неправильной длины на выходе сдвигового регистра данных, если число перемещенных битов не соответствует ожидаемой разрядности регистра, заданной в наборе команд. Или на экране отображается имя ошибки: «ошибка длины TDO» (bad shift-DR TDO length), если фактическое имя устройства (IDCODE) в сдвиговом регистре не соответствует IDCODE в файле BSDL.

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

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

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