Подписка на новости

Опрос

Нужны ли комментарии к статьям? Комментировали бы вы?

Реклама

 

2004 №4

ColdFire — семейство 32-разрядных интегрированных микропроцессоров производства Motorola

Шагурин Игорь


Компания Motorola выпускает семейство 32-разрядных микропроцессоров ColdFire (условное обозначение MCF5xxx) с 1995 года. Целью его разработки было создание микропроцессоров с более высокой производительностью и меньшей стоимостью, чем микропроцессоры семейства MC68xxx, которые до этого времени были основной продукцией компании Motorola в классе высокопроизводительных микропроцессоров. Для достижения этой цели процессоры ColdFire проектировались с использованием ряда принципов, характерных для RISC-архитектуры (Reduced Instruction Set Computer). В то же время микропроцессоры MCF5xxx имеют такую же регистровую модель пользователя, как семейство MC68xxx, реализуют основные команды и способы адресации этого семейства. Поэтому микропроцессоры MCF5xxx могут использовать значительный объем программного обеспечения, разработанного для семейства MC68xxx.

Особенностью семейства ColdFire является использование команд переменной длины: 2, 4 или 6 байт. Благодаря этому микропроцессоры MCF5xxx обеспечивают уменьшение объема требуемой памяти программ по сравнению с традиционными RISC-процессорами, для которых характерна фиксированная (обычно 32-битная) длина команд. Большинство моделей семейства ColdFire содержат на кристалле таймеры, параллельные и последовательные порты, контроллер прерываний и ряд других периферийных устройств, что позволяет существенно сократить количество микросхем, необходимых для реализации микропроцессорных систем. Поэтому микропроцессоры семейства MCF5xxx называют интегрированными. В статье рассматриваются особенности функционирования процессорного ядра ColdFire, дается обзор основных характеристик этого семейства, описывается структура его типичных представителей.

Процессорные ядра ColdFire

Процессорное ядро CFPU (ColdFire Processor Unit), используемое в микропроцессорах семейства MCF5xxx, имеет ряд модификаций, которые называются ColdFire 1, ColdFire 2/2M, ColdFire 3 и ColdFire 4. В состав большинства современных моделей (MCF5206, MCF5249, MCF5272, MCF5280, MCF5282) входит ядро ColdFire 2/2M. При этом в моделях MCF5206e и MCF5272 используется расширенная версия этого ядра ColdFire 2M, реализующая команды деления и MAC-операций. Более поздние версии ColdFire 3 и ColdFire 4 служат процессорными ядрами в моделях MCF5307 и MCF5407.

Все процессорные ядра ColdFire имеют два режима функционирования: супервизора и пользователя. В режиме супервизора разрешается выполнение любых команд процессора и доступ ко всем его регистрам. В режиме пользователя запрещается выполнение ряда команд и доступ к некоторым регистрам, чтобы ограничить возможности таких изменений состояния процессора, которые могут помешать выполнению других пользовательских программ или нарушить установленный супервизором режим работы процессора. Режим функционирования определяется значением бита S в регистре состояния SR (рис. 2). Команды, которые выполняются только в режиме супервизора, называются привилегированными.

Рис. 1. Регистровая модель процессорных ядер ColdFire 2/2M, 3, 4
Рис. 1. Регистровая модель процессорных ядер ColdFire 2/2M, 3, 4
Рис. 2. Формат содержимого регистров состояния SR (а) и MACSR (б) процессорных ядер ColdFire
Рис. 2. Формат содержимого регистров состояния SR (а) и MACSR (б) процессорных ядер ColdFire
Таблица 1. Характеристики процессорных ядер ColdFire
Таблица 1. Характеристики процессорных ядер ColdFire

Процессорные ядра ColdFire различаются уровнем технологии изготовления (определяется минимальным размером создаваемых элементов d), максимальной тактовой частотой Ft и количеством ступеней Sк в конвейере выборки и выполнения команд. Эти характеристики, приведенные в таблице 1, определяют производительность интегрированных процессоров, реализованных на базе ядер ColdFire. Имеется также ряд различий в функционировании процессорных ядер, которые проявляются в организации работы внутренней кэш-памяти и реализации обработки исключений.

Все процессоры ColdFire обеспечивают конвейерное выполнение команд с числом ступеней конвейера от 5 до 9. Для повышения эффективности работы конвейера в ядре ColdFire 4 реализовано предсказание направлений ветвления, которое существенно сокращает количество перезагрузок конвейера при выполнении условных ветвлений. Процессорные ядра ColdFire 2/2M, 3, 4 имеют одинаковую регистровую модель, реализуют общий набор команд и способов адресации. Основное отличие состоит в том, что ядра ColdFire 2M, 3, 4 дополнительно выполняют команды деления и умножения с накоплением (MAC-операции, см. табл. 3).

Регистровая модель процессорных ядер ColdFire приведена на рис. 1. Модель пользователя содержит восемь регистров данных D7-0, восемь регистров адреса A7-0, один из которых (A7) используется как указатель стека SP, программный счетчик PC и регистр состояния SR, в котором пользователю доступен только младший байт CCR, хранящий признаки результата выполненной команды. Регистры ACC, MASK, MACSR входят в состав ядер ColdFire 2M, 3, 4 и служат для выполнения MAC-операций.

Регистровая модель супервизора содержит все регистры пользователя, регистр тостояния SR, включая его старший (системный) байт, где содержатся биты управления прерываниями и режимом работы процессора, регистр базового адреса таблицы исключений VBR, регистр управления кэш-памятью CACR, регистры ACRn, управляющие обращением к памяти. В модель супервизора входят также регистры RAMBARn и MBAR, задающие базовый адрес и режим работы для внутреннего ОЗУ (RAM) и регистров периферийных устройств.

Регистр состояния SR (рис. 2, а), содержит системный байт и байт пользователя (регистр CCR). В регистре CCR содержатся признаки:

  • С — перенос;
  • V — переполнение;
  • Z — нулевой результат;
  • N — знак;
  • X — расширение.

В системном (старшем) байте регистра SR хранятся биты, определяющие режимы функционирования процессора:

  • T — признак трассировки;
  • S — признак супервизора;
  • I2-0 — поле маски прерываний.

В системный байт введен признак M, который принимает значение M=1 и сохраняет его в процессе выполнения программы. При обработке прерываний устанавливается значение M=0, которое сохраняется, пока не поступит команда возврата RTE или команда MOVE to SR, вызывающая переключение этого признака в состояние M=1.

Регистры VBR, CACR, ACRn и RAMBARn доступны только при работе процессора в режиме супервизора. Обращение к этим регистрам производится с помощью привилегированной команды MOVEC (см. табл. 2). В 32-разрядный регистр VBR заносятся 12 старших разрядов базового адреса таблицы векторов исключений, которая размещается в начале заданного массива памяти размером 1 Мбайт. Регистры ACRn определяют правила обращения для разделов памяти, базовые адреса которых задаются значением старших разрядов содержимого этих регистров. Процессорные ядра ColdFire 2/2M, ColdFire 3 содержат регистры ACR0, ACR1, задающие правила обращения для двух разделов памяти. В ядре ColdFire 4 используется четыре регистра ACR0-ACR3, из которых два контролируют обращение к памяти при выборке данных, и два — при выборке команд. Регистр CACR определяет режим работы внутренней кэш-памяти. Большинство моделей содержат один блок ОЗУ, функционирование которого определяется содержимым регистра RAMBAR. В модели MCF5407 реализовано два блока ОЗУ, обращение к которым контролируется регистрами RAMBAR0,

Таблица 3. Дополнительные команды процессорных ядер ColdFire 2M, 3, 4
Таблица 3. Дополнительные команды процессорных ядер ColdFire 2M, 3, 4
Таблица 2. Основной набор команд процессорных ядер ColdFire
Таблица 2. Основной набор команд процессорных ядер ColdFire
* Привилегированные команды, выполняемые в режиме супервизора

RAMBAR1.

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

  • регистровая (операнд в регистре данных или адреса);
  • косвенно-регистровая (операнд в ячейке памяти, адресуемой содержимым регистра адреса);
  • косвенно-регистровая с пост-инкрементом
  • в ячейке памяти, адресуемой содержимым регистра адреса, которое автоматически увеличивается после выборки операнда для адресации следующей ячейки);
  • косвенно-регистровая с пре-декрементом (операнд в ячейке памяти, адресуемой содержимым регистра адреса, которое автоматически уменьшается перед выборкой операнда для адресации предыдущей ячейки);
  • косвенно-регистровая со смещением
  • в ячейке памяти, адрес которой является суммой содержимого регистра адреса и 16-разрядного смещения d16, заданного в команде);
  • косвенно-регистровая с индексированием (операнд в ячейке памяти, адрес которой является суммой содержимого регистра адреса, индексного регистра c масштабированием и заданного в команде 8-разрядного смещения d8);
  • прямая (операнд в ячейке памяти, адрес которой задается в команде);
  • относительная (операнд в ячейке памяти, адрес которой является суммой содержимого программного счетчика PC и заданного в команде 16-разрядного смещения d16);
  • относительная с индексированием (операнд в ячейке памяти, адрес которой является суммой содержимого программного счетчика PC, индексного регистра и заданного в команде 8-разрядного смещения d8);
  • непосредственная (значение операнда дано в команде).

Основной набор команд процессорных ядер ColdFire приведен в таблице 2. Все команды имеют один из трех фиксированных форматов с разрядностью 2, 4 или 6 байт. Такое ограничение используемых форматов упрощает структуру устройства управления и обеспечивает эффективную работу конвейера исполняемых команд. В процессорах организован конвейер выполнения команд, который содержит от 5 до 9 ступеней (см. табл. 1). Первые ступени конвейера (выдача адреса команды; выборка команды и другие) реализуются устройством управления, а последующие ступени (декодирование и выбор операндов из регистров; выполнение команды и, в случае необходимости, формирование адреса операнда) — в исполнительном устройстве. Между этими устройствами имеется буферная память, в которой располагается очередь команд, ожидающих исполнения.

Выполнение большинства команд занимает 1-2 такта при регистровой адресации и 3-5 тактов при косвенно-регистровой и индексной адресации. Отдельные команды требуют большего времени выполнения: например, MOVEC — 9 тактов, RTE — 8 тактов, MOVE to SR — 7 тактов. Команды умножения в ядре ColdFire 2 выполняются в течение 9-12 тактов при умножении 16-разрядных операндов и 18-20 тактов — для 32-разрядных операндов. Однако в последующих вариантах ядер — ColdFire 2M, 3, 4, время умножения сокращено до 3-8 тактов.

Процессорные ядра ColdFire 2M, 3, 4 дополнительно реализуют операции деления и вычисления остатка, а также умножения с накоплением (MAC-операции) (табл. 3).

При выполнении операций умножения с накоплением (MAC-операций) используются дополнительные MAC-регистры (рис. 1), которые входят в состав регистровой модели пользователя. Регистр-аккумулятор ACC служит для сохранения результата MAC-опера-ции. Регистр MASK содержит 16-битную маску, которая логически умножается на младшие разряды адреса, если задан режим загрузки с маскированием адреса (команды MACL, MSACL, табл. 3). В регистре состояния MACSR (рис. 2, б) содержатся управляющие биты и признаки результата:

OMC определяет режим работы при возникновении переполнения: при OMC=0 — установка признака переполнения V=1 и запись в аккумулятор ACC младших 16 или 32 битов результата (нормальный режим), при OMC=0 — запись в аккумулятор ACC максимально возможного значения результата (все биты равны 1) без установки признака переполнения (режим «насыщения»);

S/U — задает вид операндов, обрабатываемых при MAC-операциях: при S/U=0 — числа без знака, при S/U=1 — числа со знаком; N — знак результата MAC-операции: N=0 — положительный, N=1 — отрицательный; Z — признак нулевого результата MAC-операции: Z=1, если результат равен 0; V — признак переполнения при выполнении MAC-операции: V=1, если возникает переполнение, сохраняет ранее установленное значение, если нет переполнения; C — признак переноса (при выполнении MAC-операций С всегда равно 0). Команда умножения с накоплением MAC производит умножение двух 16- или 32-разрядных операндов, хранящихся в регистрах данных или адреса, и прибавляет полученное 32-разрядное произведение к содержимому аккумулятора ACC. Произведение может быть сдвинуто на один разряд влево или вправо.

Команда умножения с накоплением и загрузкой MACL выполняет такую же операцию, как команда MAC, и одновременно загружает в регистр 32-разрядный операнд, который выбирается из ячейки памяти. Полученный адрес маскируется путем логического умножения его младших 16 разрядов на содержимое 16-разрядного регистра MASK. Команды умножения с вычитанием MSAC, MSACL производят вычитание 32-разрядного произведения содержимого регистров из содержимого аккумулятора ACC. В остальном они выполняются аналогично командам

MAC, MACL.

Выполнение MAC-операций в процессорных ядрах ColdFire занимает от 1-3 до 3-5 тактов. Деление и вычисление остатка занимает от 20 до 35 тактов.

Ряд вариантов команды MOVE реализует загрузку в регистры ACC, MASK и MACSR непосредственного операнда или содержимого регистра данных или адреса. Возможна также пересылка содержимого регистров ACC, MASK, MACSR в заданный регистр адреса или данных. С помощью команды MOVE.L MACSR, CCR значения признаков MAC-операций N,Z,VиC пересылаются в регистр CCR, занимая в нем позиции аналогичных признаков.

Процессорное ядро ColdFire 4 выполняет некоторые дополнительные команды. Команда INTOUCH, которая выполняется только вре-жиме супервизора, производит загрузку строки (16 байт) в кэш-память команд. Эта команда используется для предварительной загрузки в кэш группы команд. Двухбайтная команда MOV3Q служит для быстрой загрузки в регистр или память коротких констант (от 0 до 7). Команды MVS, MVZ используются для преобразования байта или слова в длинное слово путем заполнения старших битов знаковым разрядом или нулями.

Ядро ColdFire 4 реализует два дополнительных способа адресации:

  • косвенно-регистровая с индексированием — операнд размещается в ячейке памяти, адрес которой является суммой содержимого регистра адреса An, индексного регистра Xn с масштабированием и заданного в команде 8-разрядного смещения d8;
  • относительная с индексированием — операнд размещается в ячейке памяти, адрес которой является суммой содержимого программного счетчика PC, индексного регистра Xn c масштабированием и заданного в команде 8-разрядного смещения d8. Эти варианты адресации позволяют более эффективно организовать обработку двумерных массивов данных.
  • и функционирование интегрированных микропроцессоров ColdFire

Микропроцессоры семейства ColdFire имеют модульную структуру (рис. 3), в состав которой входят:

  • процессорное RISC-ядро CFPU (ColdFire Processor Unit);
  • кэш-память;
  • статическое ОЗУ;
  • модуль системного интерфейса SIM;
  • набор периферийных устройств — параллельные и последовательные порты, тай-мерные блоки, контроллер прямого доступа к памяти (DMA).

Основные параметры внутренних модулей, входящих в состав различных моделей семейства MCF5xxx, приведены в таблице 4. Контроль работы служебных и периферийных модулей и блоков осуществляется путем записи и чтения содержимого их регистров. Обращение к этим регистрам производится как к ячейкам памяти. Адреса регистров располагаются в адресном пространстве в виде единого блока, начальный (базовый адрес которого задается содержимым регистра MBAR, входящего в регистровую модель супервизора). В регистре MBAR имеются также бит достоверности V, разрешающий при V=1 обращение к регистрам служебных и периферийных модулей, и биты, определяющие допустимый вид обращения.

Внутренняя кэш-память, которая входит в состав всех моделей семейства, имеет емкость от 512 байт до 16 кбайт. Цикл обращения к кэш-памяти выполняется за два такта. Большинство моделей содержит только кэш команд IC (Instruction Cash). В MCF5307 используется общая кэш-память для команд и данных, в MCF5407 имеются отдельные кэши команд IC и данных ID (Data Cash). Режим работы кэш-памяти определяется содержимым регистра CACR, входящего в регистровую модель супервизора.

Внутреннее статическое ОЗУ имеет в различных моделях емкость от 512 байт до 96 кбайт. Обращение к нему выполняется за 1 такт. Это ОЗУ может быть размещено в любой позиции адресуемой памяти, его базовый адрес задается путем записи соответствующих значений в регистр RAMBAR. В регистре содержатся также бит достоверности V, который разрешает (при V=1) или запрещает (при V=0) обращение к внутреннему ОЗУ, и бит защиты WP, который запрещает при WP=1 запись в это ОЗУ. Отдельные биты в этом регистре запрещают или разрешают доступ к внутреннему ОЗУ для различных видов обращения: выборка данных или команд пользователя, данных или команд супервизора, подтверждение прерывания.

Если внутреннее ОЗУ отключено (бит V=0) или выполняется цикл, для которого запрещен доступ к этому ОЗУ, то процессор производит обращение к внешней памяти.

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

Блок внешнего интерфейса (БВИ), входящий в состав SIM, имеет отдельные 32-разрядные шины данных D31-0 и адреса A31-0. Работающий совместно с БВИ блок выборки кристаллов (БВК) формирует сигналы разрешения выборки CS#, количество которых для различных моделей составляет от 4 до 8. С помощью этих сигналов обеспечивается возможность обращения к различным банкам данных емкостью по 4 Мбайт, для каждого из которых программируется определенный протокол обмена. БВИ формирует сигналы управления обменом, состав которых определяется протоколом, заданным для выбираемого банка.

Рис. 3. Типовая структура микропроцессоров семейства ColdFire
Рис. 3. Типовая структура микропроцессоров семейства ColdFire

При обращении к памяти с помощью регистров ACRn, входящих в модель супервизора, задаются определенные правила обращения для выделенных разделов адресного пространства. Процессорные ядра ColdFire 2/2M, ColdFire 3 содержат регистры ACR0, ACR1, задающие правила обращения для двух разделов памяти, в ядре ColdFire 4 используется четыре регистра ACR0-ACR3, из которых два контролируют обращение к памяти при выборке данных, и два — при выборке команд. Выделяемые разделы памяти могут иметь объем от 16 Мбайт и более. Содержимое регистров ACRn определяет адреса размещения и объемы этих разделов. В этих регистрах содержатся также биты, которые разрешают или запрещают контроль обращения к данному разделу памяти, определяют режим функционирования, при котором разрешен контроль обращения (режим пользователя, супервизора или любой режим), разрешают или запрещают кэширование при обращении к выделенным разделам памяти, разрешают запись в данный раздел или допускают только считывание.

Таблица 4. Основные характеристики микропроцессоров семейства MCF5xxx
Таблица 4. Основные характеристики микропроцессоров семейства MCF5xxx

БВК содержит наборов регистров, обеспечивающих выборку одного из банков данных, обращение к которому разрешается при выдаче сигнала CSx#=0. Для каждого банка соответствующий регистр CSARx содержит базовый адрес; регистр CSMRx — маску базового адреса, которая определяет размер банка и его размещение, бит разрешения записи и биты, определяющие разрешенные виды обращения; регистр CSCRx — управляющие биты, разрешающие или запрещающие обращение к данному банку, указывающие разрядность используемой шины данных (8 или 16 бит), задающие режим подтверждения обмена (внешний сигнал DTACK# или внутренний сигнал, формируемый с заданным числом тактов ожидания), разрешающие выполнение пакетного обмена.

Блок конфигурации и контроля (БКК) содержит регистр MBAR, задающий базовый адрес блока памяти, в котором располагаются адреса служебных регистров всех внутренних модулей: SIM-M, таймерного модуля и последовательного порта типа UART. В регистре MBAR содержатся старшие разряды базового адреса, а также бит достоверности V и биты, определяющие допустимый вид обращения к служебным регистрам.

В состав БКК входят также монитор шины и сторожевой таймер SWT (Software Watchdog Timer). Монитор шины программируется на выдачу запроса прерывания, если сигнал подтверждения обмена по внешней шине не поступает в течение заданного числа тактов. Таймер SWT контролирует правильность выполнения программы, проверяя периодичность загрузки контрольных кодов $AA-$55 в служебный регистр SWSR. Если в течение заданного промежутка времени Tw не проведена перезагрузка в регистр SWSR очередного контрольного кода, то выполняется прерывание с максимальным уровнем приоритета или перезапуск процессора (Reset).

Контроллер динамического ОЗУ, который входит в состав всех моделей семейства MCF5xxx, обеспечивает обращение к двум банкам динамической памяти емкостью от 128 кбайт до 256 Мбайт. Разрядность шины при выборке динамического ОЗУ может составлять 8, 16 или 32 бит. В различных моделях микропроцессоров реализованы возможности обращения к разным типам синхронных и асинхронных микросхем динамической памяти, включая память типа EDO и SDRAM.

Контроллер прерываний (КПР) обеспечивает обслуживание трех или четырех внешних запросов прерывания, поступающих на входы IRQ3-0#, которые имеют различные уровни приоритета. Контроллер также обслуживает запросы, которые формируются внутренними блоками микропроцессора: монитором шины и сторожевым таймером SWT, последовательными портами UART1, UART0, каналами прямого доступа к памяти (контроллер DMA), таймерами и рядом других устройств, которые входят в состав различных моделей семейства MCF5xxx.

В состав некоторых моделей (MCF5307, MCF5407) входит внутренний генератор тактовых импульсов (ГТИ), который обеспечивает умножение частоты внешних тактовых сигналов с помощью схемы фазовой автоподстройки (PLL — Phase-Locked Loop). Это позволяет использовать для тактирования внешние сигналы с частотой в несколько раз (от 2 для MCF5307 до 6 для MCF5407) ниже требуемой тактовой частоты Ft.

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

  • два асинхронных последовательных порта UART;
  • таймерный блок, содержащий два или четыре 16-разрядных таймера;
  • один или несколько параллельных портов;
  • контроллер прямого доступа к памяти DMA, имеющий два или четыре канала

В состав отдельных моделей входят также контроллеры шин I2C и USB, блок PWM, формирующий сигналы с широтно-им-пульсной модуляцией (ШИМ-сигналы), буферизованный синхронный последовательный порт QSPI и другие устройства.

Последовательный порт UART обеспечивает асинхронный последовательный вывод данных на выход передатчика TxD или ввод данных, поступающих на вход приемника RxD. Все микропроцессоры семейства MCF5xxx имеют блок DUART (Double UART), содержащий два порта UART. Данные передаются в виде символов, содержащих от 5 до 8 бит, которые сопровождаются старт-битом в начале и стоп-битами в конце кадра. Кадр может содержать контрольный бит четности или нечетности. Время передачи каждого бита задается генератором синхросигналов, который входит в состав UART. Формат кадра и скорость обмена программируются путем загрузки соответствующего содержимого в регистр управления UCSR.

Данные для передачи предварительно загружаются в буферный регистр передатчика UTB. При работе передатчика они переписываются в сдвиговый регистр, из которого по-битно поступают на выход TxD. Принимаемые данные поступают на вход RxD и последовательно вводятся в сдвиговый регистр приемника, откуда поступают в буферную память типа очереди FIFO (First Input — First Output). В этой памяти может храниться до 4 поступивших символов. При чтении содержимого буферного регистра приемника URB из очереди FIFO выбирается первый принятый символ. Таким образом уменьшается вероятность потери данных в случае приема следующего символа до считывания ранее принятых.

UART может также использовать при обмене сигналы:

  • RTS# — выходной сигнал запроса на посылку данных;
  • CTS# — входной сигнал готовности к посылке, которые обычно служат для установления связи с модемом.

Контроллер прямого доступа к памяти DMA (Direct Memory Access) обеспечивает быструю передачу массивов данных между памятью и внешним устройством или пересылку данных между блоками ОЗУ (двухадресная пересылка). Контроллер DMA содержит два или четыре независимых канала, для которых программируются режим работы, начальные значения адресов, объем пересылаемых массивов (до 64 кбайт), номер вектора прерывания. Работа каналов инициируется при подаче запросов от внешних устройств или программно путем установки значения бита START=1 в регистре управления соответствующего канала. В процессе передачи контролируется возникновение ошибок обращения (сигнал ошибки при обращении к внешней шине, обращение к запрещенным адресам), при их обнаружении процесс пересылки прекращается. При завершении пересылки формируется запрос прерывания.

Параллельный порт A имеет 8 или 16 двунаправленных линий, которые могут использоваться для ввода-вывода данных. Ввод и вывод реализуются путем чтения или записи данных в регистр порта PADAT, направление передачи задается для каждой линии с помощью записи соответствующего содержимого в регистр управления PADDR. В ряде моделей (MCF5249, MCF5272, MCF5280, MCF5282) имеется несколько параллельных портов, обеспечивающих от 32 до 150 линий ввода-вывода данных.

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

Отладка и тестирование систем, реализованных на базе микропроцессоров ColdFire

Микропроцессоры семейства MCF5xxx обеспечивают широкие возможности тестирования и отладки:

  • тестирование в соответствии со стандартом JTAG (IEEE 1149.1);
  • реализация режима отладки BDM, при котором процессор работает под управлением внешнего отладочного устройства (персонального компьютера);
  • контроль внутреннего состояния процессора при выполнении текущей программы;
  • выполнение программы с остановами в контрольных точках.

Эти возможности реализуются с помощью блока тестирования и отладки (БТО).

Тестирование по стандарту JTAG (IEEE 1149.1) осуществляется по методу «сканирования границ» (boundary scan), при котором все входы и выходы микропроцессора подключаются к отдельным разрядам единого сдвигового регистра. Путем последовательного ввода в этот регистр загружаются тестовые комбинации, а при последовательном выводе из регистра считывается информация о реакции микропроцессора на поступивший тест. Расположенный на кристалле тестовый контроллер получает специальные команды, обеспечивающие требуемые режимы тестирования. Ввод тестовых комбинаций (входных сигналов) и вывод данных об ответной реакции (состоянии выходов) микропроцессора осуществляется через специальный последовательный порт TAP, который имеет следующие выводы:

TCK — вход синхросигналов, используемых в режиме тестирования;

TMS — вход управляющего сигнала, определяющего режим работы порта TAP;

TDI — вход для последовательного ввода тестовых команд и сигналов;

TDO — выход для последовательного вывода данных о состоянии входов и выходов;

TRST — вход тестового сброса, устанавливающий порт TAP в начальное состояние.

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

В режиме отладки BDM (Background Debug Mode) микропроцессор работает под управлением внешней системы отладки (персонального компьютера), c помощью которой производятся необходимые процедуры контроля и модификации содержимого регистров и ячеек памяти, позволяющие реализовать нормальное выполнение рабочей программы. Ввод микропроцессора в этот режим происходит в следующих случаях:

  • при подаче внешнего сигнала BKPT# =0;
  • при поступлении команды HALT;
  • при двойной ошибке (ошибка при обработке прерывания, вызванного ошибкой).

В режиме BDM процессор выполняет команды, поступающие от внешней системы отладки через специальный синхронный последовательный BDM-порт. Эта система вырабатывает синхросигналы, поступающие навход DSCLK микропроцессора. От системы отладки на вход DSI микропроцессора поступают команды, адреса и данные. Выполняя поступившую команду, микропроцессор выдает на выход DSO данные или управляющую информацию, принимаемые системой отладки.

В режиме отладки процессор выполняет следующие команды:

  • запись в регистры адреса An или данных Dn (команды WAREG или WDREG) и чтение из них (команды RAREG или RDREG);
  • запись в системные регистры или чтение из них (команды WSREG или RSREG);
  • запись или чтение содержимого регистров БТО (команды WDMREG, RDMREG);
  • запись или чтение содержимого ячейки памяти (команды WRITE или READ);
  • заполнение блока ячеек памяти (команда FILL, которая должна следовать за командой WRITE, задающей начальный адрес блока, повторяясь до окончания его заполнения);
  • вывод содержимого блока ячеек памяти (команда DUMP, которая должна следовать за командой READ, задающей начальный адрес блока, повторяясь до окончания его вывода);
  • отсутствие операции (команда NOP);
  • выход из режима BDM и возврат к выполнению основной программы (команда GO).

Команды системы отладки поступают на вход DSI процессора в виде 16-разрядного последовательного кода, задающего вид операции, разрядность передаваемых операндов и код регистра, к которому производится обращение. С помощью команды RSREG система отладки может считать содержимое служебных регистров ATEMP, который указывает причину, вызвавшую переход в режим отладки, и FAR, где хранится адрес, который вызвал ошибку обращения к шине или ошибку адреса. После команд WAREG,

WDREG, WSREG, FILL на вход DSI поступает операнд в виде одного или двух последовательно передаваемых 16-разрядных слов.

После команд RAREG, RDREG, RSREG,

DUMP процессор последовательно выдает на выход DSI считываемый операнд. После команд READ, WRITE на вход DSI сначала поступает 32-разрядный адрес в виде двух последовательно передаваемых 16-разрядных слов, а затем производится ввод (по команде WRITE) или вывод (по команде READ) адресованного операнда.

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

Контроль внутреннего состояния и останов в контрольных точках осуществляются с помощью входящих в состав БТО регистров управления и регистров установки контрольных точек. Запись в эти регистры производится с помощью команды WDEBUG (см. табл. 2). Запись-считывание их содержимого в режиме отладки производится с помощью команд WDMREG, RDMREG.

Контроль внутреннего состояния обеспечивается путем выдачи на выводы PST3-0 4-разрядного кода, указывающего текущее состояние микропроцессора в данном цикле: начало или продолжение выполнения очередной команды, обслуживание исключения, выборка команд ветвления или возврата из обработки исключения (команда RTE), останов и другие. Введенная в микропроцессорах ColdFire специальная команда PULSE (см. табл. 2) вызывает выдачу кода PST=0100, который может использоваться для синхронизации работы внешних устройств с ходом выполнения текущей программы. Можно также контролировать значения данных на внутренней шине, которые заносятся в регистр данных отладки DDATE и могут последовательно (по 4 разряда) выводиться на выходы DDATE3-0. Путем записи соответствующего содержимого в регистр управления CSR можно запрограммировать БТО для выдачи на DDATE3-0 данных или адреса ветвления. Команда WDDATE (см. табл. 2) позволяет выбирать из ОЗУ и записывать в регистр DDATE данные, которые затем будут поступать на выводы DDATE3-0, обеспечивая возможность текущего контроля содержимого ОЗУ.

Останов в контрольных точках осуществляется при отладке программы в следующих вариантах:

  1. останов при выборке команды из заданного адресного массива или группы массивов;
  2. останов при обращении к данным, размещенным в заданном диапазоне адресов, при определенных атрибутах обращения;
  3. останов при выборке данных, значения которых находятся в заданном диапазоне. Если происходит какой-либо из вариантов останова, то выполняется прерывание останова в контрольной точке с вызовом специальной программы обработки. При этом на выводы DDATE3-0 выдается код, указывающий вариант реализованного останова.

Для реализации варианта 1 в регистр PBR заносится значение адреса команды, при выборке которой реализуется исключение. В регистр PBMR загружается маска адреса — при значении 1 бита маски останов производится при любом значении соответствующего разряда адреса команды. Таким образом, контролируется обращение к определенной команде, к массиву команд или командам, расположенным в разных массивах.

Вариант 2 останова обеспечивается путем загрузки в регистры ABLR, ABHR верхней и нижней границы заданного диапазона адресов операнда. При этом содержимое регистра AATR определяет атрибуты обращения, при которых выполняется останов: разрядность выбираемого операнда (8, 16, 32 бит или пакетный цикл пересылки 16 байт), тип цикла (обращение к ОЗУ, подтверждение исключения, выполнение отладки), вид обращения (выборка команды или данных в режиме пользователя или супервизора).

Вариант 3 останова осуществляется при совпадении значения выбранных данных и содержимого регистра DBR. Содержимое регистра DBMR служит маской данных — при значении 1 бита маски останов выполняется при любом значении соответствующего разряда данных. Данный вариант позволяет контролировать поступление данных, значения которых находятся в заданном диапазоне.

БТО имеет вход отключения, при подаче на который сигнала HIZ#=0 все выходы микропроцессора переводятся в отключенное состояние. Этот режим используется при отладке микропроцессорных систем с помощью схемного эмулятора, а также при тестировании других устройств системы и проверке монтажных плат.

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

Номенклатура и применение микропроцессоров семействаMCF5xxx

В настоящее время семейство MCF5xxx имеет в своем составе 8 моделей, основные характеристики которых приведены в таблице 4. Все модели содержат внутреннее ОЗУ емкостью от 512 байт до 96 кбайт и кэш-память емкостью от 512 байт до 16 кбайт. В MCF5307 используется общая кэш-память для команд и данных, в MCF5407 имеются отдельные кэши команд и данных, в остальных моделях реализован только кэш команд.

Для последовательного обмена в большинстве моделей используются два или три асинхронных порта типа UART и синхронный порт, обеспечивающий пересылку данных по стандартной двухпроводной шине I2C со скоростью до 100 кбит/с.

Модели MCF5249, 5272, 5280, 5282 имеют расширенный состав периферийных модулей. В этих моделях увеличено число таймеров и параллельных портов, в их состав включен буферизованный синхронный последовательный порт QSPI. В ряде моделей имеются контроллеры шины CAN и контроллеры сети Ethernet, выполняющие обмен со скоростью до 100 Мбит/с. Микропроцессор MCF5249, предназначенный для применения в аудиоаппаратуре, содержит 12-разрядный аналого-цифровой преобразователь, аудиодекодер и контроллер проигрывателя компакт-дисков. В состав микропроцессора MCF5272, обладающего расширенными коммуникационными возможностями, дополнительно входят контроллер, реализующий стандартный протокол сетевого обмена HDLC, и контроллер шины USB. Он содержит также 3-канальный блок PWM, на выходах которого формируются ШИМ-сигналы заданной частоты и длительности. Модели MCF5280 и MCF5282 полностью аналогичны по своим функциональным возможностям и совместимы по внешним выводам. Они отличаются только тем, что MCF5282 содержит на кристалле Flash-память емкостью 512 кбайт.

В старших моделях MCF5307 и MCF5407 используются высокопроизводительные варианты процессорных ядер ColdFire 3 и ColdFire 4. Разрядность шины адреса увеличена до 32, что позволяет адресовать до 4 Гбайт памяти. Микропроцессор MCF5307 содержит процессорное ядро ColdFire 3, которое выполняет такой же набор команд, как и ядро ColdFire 2M, включая команды деления и MAC-операции. В процессоре реализован 7-ступенчатый конвейер команд, его тактовая частота повышена до 90 МГц. На кристалле размещается общая кэш-память команд и данных емкостью 8 кбайт и внутреннее ОЗУ емкостью 4 кбайт. Производительность процессора на 40% выше, чем производительность MCF5206e, и составляет 70 млн операций в секунду.

Интегрированный микропроцессор MCF5407 имеет такую же структуру, как MCF5307, отличаясь в основном типом процессорного ядра и расширенным объемом внутренней кэш-памяти. Процессорное ядро ColdFire 4 имеет 9-ступенчатый конвейер команд. В этом ядре реализована гарвардская архитектура с отдельными кэшами для хранения команд (16 кбайт) и данных (8 кбайт). Процессор содержит блок предсказания ветвлений, который позволяет повысить эффективность работы конвейера команд. Для этого используется специальный кэш ветвлений, где хранятся адреса перехода для 128 последних команд ветвления. Микропроцессор выпускается по усовершенствованной технологии, его максимальная тактовая частота составляет 220 МГц. Благодаря применению указанных архитектурно-схемотехнических и технологических решений производительность микропроцессора MCF5407 достигает 316 миллионов операций в секунду, более чем в 4 раза превышая производительность MCF5307. Обе модели размещаются в 208-выводных корпусах и совместимы по внешним выводам. Поэтому MCF5407 может быть использован для замены микропроцессоров MCF5307 в разработках, требующих повышенной скорости обработки информации.

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

Использование RISC-архитектуры, оптимизация набора выполняемых команд и способов адресации позволили существенно сократить площадь кристалла микропроцессора, что обеспечило снижение его стоимости. В результате цена микропроцессоров семейства MCF5xxx составляет от 7 до 19 долларов, что значительно ниже стоимости других микропроцессоров аналогичного класса.

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

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

Более подробную информацию о микропроцессорах семейства ColdFire можно найти в монографии И. И. Шагурина «Современные микроконтроллеры и микропроцессоры Motorola», которая выпускается издательством «Горячая линия-Телеком» во 2-м квартале 2004 года.

Скачать статью в формате PDF  Скачать статью Компоненты и технологии PDF

 


Другие статьи по данной теме:

Сообщить об ошибке