Микропроцессоры 2 лекция (1084889), страница 4
Текст из файла (страница 4)
Эмулятор - дорогостоящее устройство, поэтому вряд ли имеет смысл покупать его для проведения единичных или эпизодических разработок.
Достоинства эмулятора очевидны - быстрый и легкий доступ к «внутренностям» эмулируемого микроконтроллера, высокая скорость обновления отлаживаемой программы (поскольку реально она записывается не в программную память микроконтроллера, а в ОЗУ, которое подменяет память программ).
Но у эмуляторов также есть ряд недостатков. Во-первых, это большая сложность и высокая цена. Во-вторых, отладка основана на работе эмуляционного кристалла, хотя и близкого по технологии к серийным образцам, но все же имеющего некоторые отличия. В-третьих, для каждого нового семейства (группы) микроконтроллеров нужен новый эмуляционный кристалл, что ведет к дополнительным материальным затратам. Ну и последнее, как правило, внутрисхемный эмулятор подключается через переходное устройство, которое должно предварительно припаяно на месте размещения микроконтроллера.
Рис.1.4.Структура внутрикристального эмулятора
1.12. Внутрикристальные эмуляторы
1.12.1. Структурная схема
Дороговизна и сложность применения внутрисхемных эмуляторов заставили искать новые средства отладки, обеспечивающие возможность проверки работоспособности разрабатываемой микропроцессорной системы в комплексе с подключенными к микроконтроллеру различных внешних периферийных устройств. на начальных этапах проектирования. Одним из вариантов такого подхода является создание на кристалле специального функционального узла, способного осуществить проверку функционирования микропроцессорной системы в различных режимах. Такие функциональные узлы получили название внутрикристальных эмуляторов. Префикс «внутри» в данном случае указывает на место размещение эмулятора, в то время как, тот же префикс в термине внутрисхемный эмулятор отражает функциональное назначение, хотя сам эмулятор находится вне кристалла микроконтроллера.
Проблеме построения внутрикристального эмулятора посвящён стандарт IEEE 1149, определяющий структуру и принцип функционирования внутрикристального эмулятора.
Стандарт был разработан Объединённой Группой Разработки Тестового Контроля (Joint Test Action Group -JTAG). Поэтому архитектура, определённая этим стандартом, известна как "JTAG boundary scan", что можно перевести как "JTAG пограничное сканирование" или кратко JTAG. Структура JTAG показана на рис.1.4.
1.12.2. Основные компоненты JTAG
Все сигналы между процессорным ядром (CORE LOGIC) и внешними выводами микроконтроллера перехватываются и фиксируются в так называемом "Регистре Сканирования Границ Boundary Scan Registor (BSR)." Отдельные элементы этого регистра (пути и цепи диагностического сканирования) показаны на рис. 1.4. как ячейки "C0", "C1", "C2", "C3", и "C4".
В нормальном режиме работы процессорное ядро связано напрямую со штырьками и диагностические элементы становятся невидимыми. При тестировании внешних устройств, подключенных к выходным штырькам микроконтроллера, с помощью этих диагностических элементов можно отключить процессорное ядро микроконтроллера от выходных штырьков и управлять самостоятельно выходными штырьками ("Pin1", и "Pin2" на рис.1.4). При этом можно фиксировать и считывать состояние входных штырьков, что может быть весьма полезно в замкнутых системах регулирования.
При тестировании логического ядра микроконтроллера с помощью этих диагностических элементов можно отключить входные штырьки от логического ядра, управлять входными сигналами непосредственно на входе логического ядра самостоятельно, и считывать и фиксировать состояния логического ядра на выходных штырьках.
Рассмотрим назначение отдельных элементов JTAG.
Ячейка C0 - ячейка BSR, которая захватывает состояние входного штырька 0 (pin 0). Ячейка C1 - ячейка BSR, управляющая выходным штырьком 1 (pin 1).
Ячейка C2 – ячейка BSR, которая не связана непосредственно с каким- либо выводом, но она определяет "направление передачи" через двунаправленный вывод 2 (pin 2).
Ячейка C3 - входная ячейка BSR, захватывающая состояние двунаправленного штырька 2, когда он является входным.
Ячейка C4 - выходная ячейка BSR, определяющая состояние двунаправленного штырька 2, когда он является выходным.
Суммируя сказанное, можно выделить три типа ячеек BSR:
Входные ячейки подобные C0 и C3. Они всегда связаны со специфическими штырьками микроконтроллера, через которые в нормальном рабочем режиме поступают входные сигналы. Обычно это сигналы датчиков.
Выходные ячейки подобные C1 и C4. Они всегда связаны со специфическими штырьками, через которые в нормальном рабочем режиме производится вывод из микроконтроллера. Обычно к этим выводам подключаются исполнительные механизмы и индикаторы.
Разрешающие ячейки подобные C2. Они не связаны непосредственно с какими-либо штырьками, но они или управляют направлением передачи через двунаправленные выводы.
Каждая ячейка окружена тремя типами клапанов, обозначенными на рис.1.4 буквами Е, I, N.
Клапаны E0, E3, и E4 разрешают/запрещают передачу между ячейками BSR и штырьками. Клапаны I0, I3, и I4 разрешают/запрещают передачу между ячейками BSR и логическим ядром микроконтроллера.
Клапаны N0, N1, и N3 открываются только, когда микроконтроллер работает в нормальном режиме (то есть когда аппаратные средства, связанные с функционированием JTAG находятся в неактивном состоянии). Они соединяют напрямую выводы корпуса с логическим ядром, как будто Система Сканирования Границ отсутствует.
1.12.3. Регистры JTAG
Согласно стандарта IEEE 1149, JTAG должен иметь четыре обязательных регистра.
Регистр Инструкций (IR). Принимает команды последовательным кодом и передаёт их параллельным кодом на дешифратор. Обычно имеет длину 5 бит и не имеет бита контроля чётности. После сброса в него записывается двоичный код 10000 (младший бит ближайший к выводу TDO). При обращении к Регистру Инструкций загружается новая команда и одновременно считывается старая. На основе кода, предварительно загруженного в Регистр Инструкций, производится выбор регистра данных.
Регистры Данных. Выбор Регистра Данных определяется кодом команды, записанной в регистр Инструкций. Три регистра данных практически присутствуют во всех реализациях JTAG.
Регистр Сканирования Границы (BSR). В нём фиксируются все сигналы, курсирующие между логическим ядром микроконтроллера и внешними выводами. Разрядность BSR определяется числом внешних выводов микроконтроллера. Обычный порядок выполнения операций теста состоит в том, что сначала в регистр Команд вводится команда (инструкция), которая определяет тип выполняемого затем теста, и Регистр Данных, который используется в данном тесте.
Регистр Идентификации ID (IDR) -32-разрядный. Содержит три идентификационный поля: идентификационный код изготовителя, идентификационный код партии и номер версии микроконтроллера.
Регистр Обхода (BR), - это одноразрядный регистр, через который соединяются выводы TDI и TDO с задержкой на один такт, что даёт возможность организовать последовательный доступ к другим микроконтроллерам, оборудованным JTAG и расположенным на той же плате.
Кроме обязательных могут присутствовать дополнительные регистры, иногда вводимые некоторыми изготовителями.
Действия отладочного узла JTAG организует и управляет Test Access Port (TAP), который по существу является управляющим автоматом JTAG.
1.12.4. Сигналы управления JTAG
Согласно стандарту IEEE 1149 интерфейс JTAG использует четыре обязательных специальных сигнала:
1.TCK - входной сигнал синхронизации Test CLocK .Сигнал TCK генерируется оборудованием, управляющим тестированием. Частота синхронизации может лежать в широких пределах от килогерц до нескольких МГц). Она может даже быть переменной.
2.TMS - входной сигнал Test Mode Select- Выбора Способа Тестирования, который управляет сменой состояний конечного автомата ТАР, определяющего алгоритм функционирования JTAG в процессе отладки.
3.TDI - входной сигнал. Вводит побитно данные в регистры JTAG (в Регистр Сканирования Границы (BSR), в Регистра Инструкций (IR) или другие регистры данных).
4.TDO - выходной сигнал, который побитно выводит данные из регистров JTAG на оборудование, управляющего тестом.
Содержание регистров может быть побитно записано и считано через последовательный канал, используя выводы TDI и TDO интерфейса JTAG. Процесс записи в регистр BSR и чтения из BSR происходит одновременно. В то время новая величина побитно задвигается в BSR через вывод TDI, его прежнее значение выдвигается наружу через вывод TDO. Такой же способ обновления данных используется и для других JTAG-регистров. Подключение их к выводам TDI и TDO производится под управлением блока TAP.
Некоторые изготовители иногда вводят один или два дополнительных управляющих сигнала, например, сигнал TRST*.
5.TRST* - входной сигнал начальной установки Test-ReSeT, который инициализирует или отключает интерфейс системы отладки JTAG.
Если на плате установлены несколько микроконтроллеров, имеющих внутрикристальные JTAG, то выводы TRST*, TCK, и TMS каждого микроконтроллера должны соединяться параллельно, а вывод TDO одной микросхемы должен быть соединён с выводом TDI следующей, образуя единую замкнутую последовательную цепь.
При таком соединении плата, содержащая несколько микроконтроллеров с поддержкой JTAG, может рассматриваться как единая микросхема, имеющая те же 5 управляющих сигналов, описанных выше.
В более простом случае для платы, имеющей несколько микроконтроллеров, оборудованных внутрикристальными эмуляторами JTAG, отладка каждого микроконтроллера производится отдельно и независимо подачей всех сигналов управления только на отлаживаемый микроконтроллер.
1.12.5. Команды JTAG
Стандарт IEEE-1149 определяет обязательный набор инструкций, которые должны присутствовать во всех JTAG. Этот обязательный набор включает четыре команды: EXTEST, SAMPLE/PRELOAD (INTEST), IDCODE, BYPASS, обеспечивающие доступа к трём обязательным регистрам данных: BSR, IDR и BR.
Команда EXTEST (ВНЕШНИЙ ТЕСТ), (код 00000) позволяет установить нужные логические уровни в выходных ячейках регистра BSR, благодаря чему обеспечивается проверка устройств, подключённых к выходным контактам микроконтроллера. Непосредственно после команды должна производиться загрузка данных в регистр BSR через вход TDI.
Команда SAMPLE/PRELOAD (INTEST), (код 000100) даёт возможность установки нужных логических уровней во входных ячейках регистра BSR, благодаря чему обеспечивается проверка логического ядра микроконтроллера в статическом режиме. Непосредственно после команды должна производиться загрузка данных в регистр BSR через вход TDI. В некоторых случаях эту команду называют INTEST (ВНУТРЕННИЙ ТЕСТ).
Команда IDCODE (КОД ИДЕНТИФИКАЦИИ), (код 00001 обеспечивает вывод через контакт TDO содержимого регистра IDR. Вход TDI после этой команды не задействован.
Команда BYPASS (код 11111) подключает выводы TDI и TDO к одноразрядному регистру, который обеспечивает задержку на один такт сигнала синхронизации ТСК. Она позволяет эффективно использовать возможности последовательного интерфейса при организации проверки нескольких микросхем, оборудованных JTAG и находящихся на одной плате. После загрузки этой команды в микроконтроллер, находящийся в единой последовательной тест-цепочке, он будет пропускать сквозь себя со сдвигом на один такт всю информацию, поступающую с входа TDI, не реагируя на неё.
Благодаря этой команде удаётся выделить микроконтроллер в единой последовательной тест-цепочке для тестирования в текущий момент и организовать поочерёдное тестирование всех микроконтроллеров, находящихся в едином тест-цепочке.
1.12.6. Функционирование JTAG
На рис.1.5 показана диаграмма состояний ТАР-контроллера и порядок их смены.
Все состояния имеют два выхода. Поэтому сменой состояний управляет один бинарный сигнал. Таким сигналом является TMS.
Исходным состоянием после подачи питания является Test- Logic- Reset. Независимо от исходного состояния ТАР-контроллер перейдёт в исходное состояние при удержании входа TMS в высоком состоянии в течение 5 тактов ТСК.
Рассмотрим работу ТАР-контроллера, считая, что текущим состоянием является Run-Test/Idle. Тогда типичным сценарием использования JTAG является:
1.Формирование на входе TMS последовательности 1,1,0,0 синхронно с нарастающим фронтом ТСК для перевода Регистра Инструкции в состояние сдвига Shift-IR.
2.Удержание на входе TMS низкого уровня в течение 4 тактов ТСК. В течение этого периода 4 младших разряда команды со входа TDI будут записаны в Регистр Инструкций синхронно с сигналом ТСК. Старший разряд команды задвигается в Регистр Инструкций при выходе из данного состояния установкой 1 на входе TMS. В процессе ввода команды через вход TDI на выходе TDO выводится код 0х01, означающий при загрузке первой команды нахождение в состоянии сдвига Shift-IR или код ранее загруженной команды.
3.Формирование на входе TMS последовательности, обеспечивающей переход в состояние Update-IR, в котором код команды защёлкивается на выходе Регистра Инструкций и параллельным кодом передаются в дешифратор команд.
4.Формирование на входе TMS последовательности 1,0.0, обеспечивающей переход в состояние сдвига регистра данных Shift-DR, в котором производится загрузка данных через вход TDI в регистр BSR при исполнении команд EXTEST, SAMP LE/PRELOAD (INTEST), команды IDCODE, BYPASS не требуют ввода данных.
Рис.1.5.Диаграмма состояний JTAG-системы