UniICE — аппаратно-программная система внутрисхемной эмуляции микропроцессоров различных типов

№ 5’2004
Белорусскими учеными разработана аппаратно-программная система внутрисхемной эмуляции микропроцессоров различных типов — универсальный внутрисхемный эмулятор UniICE.

Белорусскими учеными разработана аппаратно-программная система внутрисхемной эмуляции микропроцессоров различных типов — универсальный внутрисхемный эмулятор UniICE.

Введение

Сроки проектирования современных микропроцессорных систем, определяемые менеджерами, стремительно сокращаются, поскольку время выхода продукта на рынок — едва ли не главный сегодня критерий его успешности. Это вызывает к жизни необходимость создания новых средств автоматизации проектирования, разработки и отладки микропроцессорных систем. Подобные инструменты отладки [1-12] разрабатываются и в белорусской СНИЛ «Новые информационные технологии» (http://NewIT.gsu.unibel.by). Финальная отладка микропроцессорных систем невозможна без использования эмуляторов. В то же время, самые разнообразные требования к проектам по срокам разработки, стоимости, производительности, потребляемой мощности и т. д. вынуждают разработчиков использовать различные семейства микропроцессоров и микроконтроллеров, например, такие как Intel 8051, Atmel AVR, Microchip PIC, Motorola 68HC, Texas Instruments TMS370. Каждый раз необходимо приобретать и соответствующий программно-аппаратный комплекс эмуляции. Еще более сложные проблемы стоят перед разработчиками, которые намерены создавать свой проект как систему на кристалле. В то же время, значительное количество функциональных компонентов программно-аппаратных комплексов эмуляции является общим для всех систем. Отталкиваясь от этой посылки, в СНИЛ «Новые информационные технологии» разработана аппаратно-программная система [1-5] внутрисхемной эмуляции микропроцессоров различных типов (именуемая в дальнейшем как универсальный внутрисхемный эмулятор UniICE). В 2003 году на универсальный эмулятор получены три патента [2-4], один из них — патент Российской Федерации, два других — патенты Республики Беларусь. Данная статья посвящена описанию аппаратного обеспечения эмулятора и комплекта низкоуровневого программного обеспечения эмулятора. Интерфейс пользователя с программно-аппаратным комплексом универсального внутрисхемного эмулятора обеспечивается посредством ранее описанной системы WInter [10].

Принципы построения

Универсальный внутрисхемный эмулятор UniICE представляет собой аппаратно-программную систему для отладки аппаратного и програмного обеспечения разрабатываемых микропроцессорных систем в реальном времени.

В качестве программного обеспечения для эмулятора используется среда отладки программ WInter [10]. Для этого описывается специальная аппаратная модель того или иного микропроцессора (МП), которая работает с реальным МП, установленным в эмуляторе.

Универсальность достигается за счет реализации трех основных принципов: модульность, программируемая внутренняя структура и поддержка интерфейса JTAG. Рассмотрим каждый из принципов в отдельности.

Модульность. Промышленностью выпускается весьма широкий спектр микропроцессоров и микроконтроллеров (МП/МК). Они имеют самые разнообразные способы реализации процессорного ядра, различные разрядности, наборы команд, способы организации шин, внутренние периферийные устройства, параметры сигналов, типы корпусов и пр. Для эффективной поддержки этого многообразия предлагается объединить общие для всех эмуляторов узлы в одном базовом модуле, а настройку под конкретный МП/МК осуществлять при помощи стыкуемого с ним сменного модуля. Причем в большинстве случаев на сменном модуле будет находиться лишь целевой МП/МК, так что затраты на разработку и изготовление сменного модуля будут минимальными.

Программируемая структура. Универсальный эмулятор реализуется на микросхеме программируемой логики. Наряду с такими преимуществами этого подхода, как упрощение конструкции, снижение трудоемкости разработки и стоимости производства, уменьшение габаритов и потребляемой мощности конечных изделий, появляется возможность изменять внутреннюю структуру базового модуля эмулятора в соответствии с особенностями того или иного МП/МК.

Для реализации этого принципа выбраны микросхемы программируемой логики с загружаемой структурой на основе быстродействующих ОЗУ с изменяемой конфигурацией (семейство ACEX фирмы Altera).

Поддержка JTAG. В 1985 году группой ведущих производителей электронной техники был создан комитет JTAG, который принял новый стандарт тестирования и проверки цифровых устройств. Стандарт предусматривает наличие у каждой микросхемы четырех дополнительных выводов для последовательного ввода тестов и вывода результатов тестирования. В настоящее время выпускаются серии логических микросхем, а также МП/МК с поддержкой этого стандарта. Использование схемы интерфейса JTAG в универсальном эмуляторе позволяет унифицировать методы подключения и отладки соответствующих МП/МК. Также при использовании JTAG можно производить отладку МП/МК, не вынимая их из отлаживаемых устройств, что весьма важно для высо-коинтегрированных систем с затрудненным доступом к электронным цепям.

Кроме того, интерфейс JTAG может применяться для загрузки схемы эмулятора в микросхемы программируемой логики.

Состав, конструкция и способ подключения

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

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

В базовом модуле сосредоточены основные узлы эмулятора. Конструктивно он представляет собой печатную плату с установленными на ней интегральными схемами и разъемами. Один из разъемов предназначен для соединения с управляющим ПК, другой — для соединения со сменным модулем.

Соединение с ПК осуществляется при помощи параллельного интерфейса. Этот интерфейс должен поддерживать режим двунаправленной передачи данных.

Сменный модуль отвечает за непосредственную эмуляцию заданного типа МП. Конструктивно он представляет собой печатную плату. На ней располагаются эмулирующий МП и разъемы для соединения с базовым модулем и сменной насадкой.

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

Рисунок. Структурная схема подключения универсального эмулятора
Рисунок. Структурная схема подключения универсального эмулятора

Структурная схема подключения универсального эмулятора приведена на рисунке. В состав базового модуля входят следующие конструктивные элементы: разъем интерфейса с ПК, ПЛИС, загрузчик (интерфейс JTAG), эмуляционная память, память контрольных точек, генератор тактовых импульсов, разъем интерфейса со сменным модулем и разъем интерфейса JTAG. Внутри ПЛИС реализована вся логическая структура эмулятора, за исключением памяти. Память вынесена за пределы ПЛИС, поскольку в противном случае потребовалась бы очень емкая и дорогая ПЛИС. Загрузчик предназначен для программирования ПЛИС в момент включения. При этом данные для загрузки поступают из ПК.

Схема универсального эмулятора и его функционирование

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

  • Эмулятор
  • Базовый модуль
  • Загрузчик
  • Внешняя память
  • ПЛИС
  • Блок адресации
  • Блок памяти
  • Контроллер точек останова
  • Операционный блок
  • Анализатор кода
  • Блок захвата адреса
  • Блок захвата шины
  • Блок сравнения адреса
  • Блок переадресации
  • Блок окна
  • Блок страниц
  • Буфер обмена
  • Генератор
  • Сменный модуль

В приведенной иерархии перечисляются уникальные составные части и не учитываются стандартные элементы (логика, регистры, триггеры и пр.).

В базовом модуле эмулятора загрузчик и вспомогательный буфер реализованы на основе стандартных логических микросхем. Блок внешней памяти реализован на основе стандартных микросхем ОЗУ. Все основные функциональные блоки эмулятора сосредоточены внутри блока ПЛИС. Загрузчик предназначен для отладки систем на базе процессоров со встроенной поддержкой стандарта тестирования JTAG, а также он служит для программирования ПЛИС на начальном этапе работы эмулятора. Схема является стандартной для средств разработки устройств на ПЛИС фирмы Altera и представляет собой буферный согласователь.

Соединение блоков внутри ПЛИС осуществляется по шинной архитектуре. Все основные блоки имеют выход на 8-разрядную внутреннюю шину. Блоки адресуются при помощи сигналов выбора. Память внутри блоков адресуется по внутренней адресной 21-разрядной шине. Чтение и запись данных внутри эмулятора стробируется сигналами IRD и IWR. Такая шинная архитектура позволяет легко добавлять новые блоки при необходимости. Ограничение на размер эмулируемой памяти — 2 Мбайт определяется разрядностью внутренней шины адреса, но при необходимости память можно расширять, добавляя новые блоки.

Доступ к целевому МП, расположенному в сменном модуле, осуществляется при помощи внешней 32-разрядной шины данных, внешней 32-разрядной шины адреса и управляющих сигналов. Шина данных может быть мультиплексированной (то есть содержать информацию о данных и адресах). При этом формирование адреса на шине адреса происходит внутри эмулятора по сигналу ALE.

Рассмотрим назначение каждого из основных структурных элементов, входящих в состав базового модуля эмулятора.

Блок адресации предназначен для обеспечения обмена с ПК, адресации блоков эмулятора, а также выработки сигналов, управляющих записью и чтением блоков эмулятора. Сигналы RD и WR, поступающие на входные контакты, стробируют чтение и запись. Сигнал А управляет выбором объекта записи. При низком уровне выбирается адресный регистр, при высоком разрешается непосредственный доступ к остальным функциональным блокам.

Выход адресного регистра соединен с дешифратором, выходы которого используются для выбора конкретного функционального блока. Следует отметить, что дешифратор использует не все комбинации входного сигнала и таким образом схема открыта для расширения. Каждый адресуемый функциональный блок может быть входным или выходным. Нулевой адрес зарезервирован за устройствами вне блока эмулятора и через него проходят все обращения к этим устройствам. При этом вырабатываются сигналы IRD и IWR. Три адресных регистра формируют внутреннюю адресную шину эмулятора. Три старших бита дешифрируются здесь же, позволяя подключить к шине эмулятора до восьми 21-разрядного устройства.

Блок памяти предназначен для хранения программ и данных пользователя, а также системной программы-монитора, управляющей обменом информацией между ПК и целевым МП. Блок памяти открыт для доступа как со стороны эмулятора, так и со стороны целевого МП. При доступе со стороны эмулятора используется 8-разрядная шина данных и 21-разрядная шина адреса. Таким образом адресуется 2 Мбайт эмулируемой памяти. Со стороны целевого МП возможен доступ к памяти по 8, 16, 24 и 32-разрядной шине.

Контроллер точек останова предназначен для отслеживания хода выполнения программы и переключения выполнения с отлаживаемой программы на монитор по достижении контрольной точки, при пошаговом режиме или по другому условию останова. Информация о точках останова хранится в блоке памяти. Этот блок отслеживает изменение внешней адресной шины и, по достижении адреса останова, вырабатывает сигнал BP, который поступает в контроллер точек останова. Для того чтобы не возникало ложных срабатываний, блок анализатора кода отслеживает текущее состояние выполняемой программы. Если работа механизма останова в контрольных точках разрешена, устанавливается сигнал на выходе триггера. При этом блок захвата шины выставляет на шину данных команду перехода на начало монитора. Блок сравнения адреса анализирует состояние на шине адреса и, по достижении адреса начала монитора, вырабатывает сигнал снятия блокировки шины. Эмулятор переходит к выполнению монитора. Для обеспечения возможности возврата в исходную позицию отлаживаемой программы, в момент срабатывания условия останова текущее состояние адресной шины сохраняется в блоке захвата адреса. Основу анализатора кода составляет ОЗУ, в котором хранится информация о количестве обращений к памяти при выполнении той или иной инструкции.

При выполнении программы данные с шины поступают на адресный вход ОЗУ, а информация о количестве обращений команды с выхода ОЗУ поступает на счетчик. Счетчик отсчитывает нужное количество обращений и при обнулении формируется сигнал, свидетельствующий о том, что началось выполнение следующей инструкции. Блок захвата адреса представляет собой 32-разрядный регистр с защелкой, буфер для возможности считывания адреса и управляющий дешифратор. Блок захвата шины состоит из набора регистров, в которые прописывается команда перехода на начало монитора, и управляющей логики. Блок сравнения адреса состоит из набора регистров, хранящих эталонный адрес, и компаратора. Операционный блок отвечает за взаимодействие всех остальных блоков контроллера точек информации. На входы операционного блока поступает информация о текущем состоянии эмулятора и команды управления от инструментального компьютера, а к его выходам подключены управляющие входы остальных блоков.

Блок переадресации предназначен для адаптивного изменения адресов, выставляемых целевым МП. Поскольку адресное пространство эмулируемой памяти ограничено 19 разрядами, адреса преобразуются в соответствии с установленной картой адресного пространства. Это дает возможность задавать расположение эмулируемой памяти блоками в 32-разрядном адресном пространстве.

Эмулятор обеспечивает гибкую настройку 8 блоков памяти по 64К слов внутри 4-гигабайтного адресного пространства. Регистры защелки адреса позволяют производить выделение адресов из потока адресов и данных при использовании в целевом МП мультиплексированной шины. При этом возможна работа по отдельным 8-разрядным участкам шины. Блок окна состоит из регистра, хранящего заданное положение окна и компаратора, отслеживающего текущее.

Блок страниц основан на ОЗУ, хранящем положение каждой из 8 страниц. Наличие страницы в текущей области памяти кодируется 1 на выходе.

Буфер обмена предназначен для выкачивания данных о состоянии внутренних ресурсов целевого МП под управлением монитора, а также для их модификации в случае необходимости.

В основе буфера обмена лежит ОЗУ емкостью 256 байт. Данные между ПК и целевым МП пересылаются пакетами. При этом величина пакета может варьироваться. Для хранения информации о текущей величине пакета используется регистр.

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

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

Сменный модуль предназначен для непосредственного выполнения программ и содержит целевой МП или его аналог.

Обычно схема сменного модуля максимально проста и сводится к соединению выводов микроконтроллера с базовым модулем. Для формирования некоторых сигналов используется несложная логика, но и этого можно избежать, переместив ее в ПЛИС с эмулятором.

Функционирование внутрисхемного эмулятора

Рассмотрим более подробно функционирование эмулятора в процессе отладки программ. Вначале программируется ПЛИС базового модуля эмулятора. При этом данные поступают через параллельный порт ПК в загрузчик, который формирует необходимые управляющие сигналы. После загрузки внутренней структуры эмулятор переходит в режим инициализации и самотестирования, в котором проверяются правильность соединения элементов, наличие микросхем ОЗУ, сменного модуля, инициализируются регистры, триггеры и пр.

Далее, при помощи блока управления с ПК загружаются коды программ и данных пользователя в память эмулятора. Туда же загружается служебная программа-монитор. Информация об установленных пользователем точках останова заносится в блок памяти точек останова.

После этого с блока управления поступает сигнал инициализации целевого МП и начинается выполнение программы пользователя, записанной в памяти эмулятора.

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

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

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

Низкоуровневое программное обеспечение внутрисхемного эмулятора UniICE

Низкоуровневое программное обеспечение внутрисхемного эмулятора UniICE состоит в общем случае из трех модулей — ACEXprog, UniICEsys и InterfaceSupport. Причем модули ACEXprog и UniICEsys неизменны, а InterfaceSupport может модифицироваться для поддержки тех или иных сред проектирования.

Модуль ACEXprog используется при инициализации эмулятора для прошивки ПЛИС данными из внешнего rbf-файла.

Модуль UniICEsys содержит несколько функций для низкоуровневого управления эмулятором. Управление эмулятором осуществляется с помощью контрольных и статусных регистров. Всего существует 4 специальных 8-битных регистра и 5 управляющих битов.

Модуль InterfaceSupport реализует поддержку интерфейса с оконной средой.

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

В самом начале сеанса работы с эмулятором инициализируются массивы, записывается программа-монитор и устанавливается точка останова на нулевой адрес. Монитор запускается на выполнение до точки останова, по достижении которой происходит чтение регистров по умолчанию.

Далее при помощи функции WriteCode в эмуляционную память записывается программа пользователя с точками останова (если нужно). Затем выполняется процедура запуска МП, внутри которой производится установка значений регистров по умолчанию. По достижении очередного условия останова происходит получение текущих значений регистров. В состав регистров по умолчанию входят ACC, PSW, SP, IE, а также регистры для работы с таймерамисчетчиками. При необходимости считывать или модифицировать значения других регистров существуют специальные функции.

Методика использования внутрисхемного эмулятора

Для использования внутрисхемного эмулятора при разработке и отладке того или иного микропроцессорного устройства требуется произвести настройку эмулятора на целевой МП. Настройка осуществляется с помощью описания соответствующей модели МП, а также проектирования и подключения сменного модуля целевого МП.

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

Перед началом работы базовый модуль эмулятора подключается к параллельному порту ПК при помощи соединительного кабеля. К базовому модулю при помощи разъема подключается сменный модуль, со сменным модулем стыкуется сменная насадка. Выбор типа сменой насадки диктуется типом корпуса эмулируемого процессора. Далее сменная насадка вставляется в розетку эмулируемого процессора в целевом устройстве.

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

Все соединения должны быть надежно зафиксированы во избежание нарушения контактов во время работы. Далее следует последовательно включить питание ПК, эмулятора и целевого устройства. Следует убедиться, что в настройках BIOS ПК выбран режим двунаправленной передачи данных через параллельный интерфейс (EPP или ECP).

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

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

Заключение

Использование UniICE совместно с системой WInter может в значительной степени сократить сроки и стоимость разработки цифровой системы. Синтезируемое описание UniICE может быть использовано в качестве основы при разработке специализированных средств отладки для сложных мультипроцессорных систем на кристалле.

Литература

  1. Долинский М. С., Зисельман И. М., Федор-цов А. О. Внутрисхемные эмуляторы микропроцессоров и микроконтроллеров // Автоматика и вычислительная техника. Рига. 1999. № 1.
  2. Внутрисхемный эмулятор. Описание изобретения к патенту Российской Федерации № 2214621. МПК G 06 F 9/455, RU 2214621 C2, оп. 20.10.03. Бюл. № 29.
  3. Внутрисхемный эмулятор. Описание изобретения к патенту Республики Беларусь № 5454. МПК G 06 F 9/44, 9/445 BY 5454 C1, оп. 30.09.03.
  4. Внутрисхемный эмулятор. Описание изобретения к патенту Республики Беларусь № 5494. МПК G 06 F 9/44, BY 5494 C1, оп. 30.09.03.
  5. Федорцов А., Долинский М. Устройство для отладки микропроцессорных систем // Электроника. Минск. 1999. № 1.
  6. Dolinsky M. High-level design of embedded hardware-software systems // Advances in Engineering Software. ELSEVIER. Oxford, UK. Vol. 31. No. 3. March 2000.
  7. Долинский М. С. Интегрированная среда для разработки встроенных систем IEESD-2000 // Автоматика и вычислительная техника. Рига. 1999. № 3.
  8. Долинский М. Концептуальные основы и компонентный состав IEESD-2000 — интегрированной среды сквозной совместной разработки аппаратного и программного обеспечения встроенных цифровых систем // Компоненты и технологии. 2002. № 8.
  9. Долинский М., Литвинов В., Галатин А., Ермолаев И. HLCCAD — среда редактирования, симуляции и отладки аппаратного обеспечения // Компоненты и технологии. № 1.
  10. Долинский М., Ермолаев И., Толкачев А., Гончаренко И. WInter — среда отладки программного обеспечения мультипроцессорных систем // Компоненты и технологии. 2003. № 2.
  11. Долинский М., Литвинов В., Федорцов А., Ермолаев И. Система высокоуровневого проектирования аппаратного обеспечения HLCCAD: технология разработки по-тактовой модели микроконтроллера с использованием языка программирования высокого уровня на примере Intel 8051/Object Pascal // Компоненты и технологии. 2003. № 5.
  12. Долинский М., Ермолаев И., Федорцов А., Литвинов В., Толкачев А., Гончаренко И., Коршунов И. Технология разработки моделей микроконтроллеров с использованием декларативно-алгоритмических языков описания ядра и периферии // Компоненты и технологии. 2003. № 7.

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

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