DSP56F800 компании MOTOROLA: новые идеи объединения DSP процессора и MCU
История появления DSP процессоров DSP56F800
Сегодня микропроцессорные устройства и системы сопровождают человека всюду. Они становятся все более интеллектуальными и хитроумными. Большое количество вычислительных задач требует решения в реальном масштабе времени. Поэтому во многих современных микропроцессорных приложениях совместно используются два вычислительных устройства: микроконтроллеры, которые выполняют разнообразные управляющие функции общего назначения, и узлы, предназначенные для быстрой обработки большого объема цифровых данных в реальном масштабе времени. Последние реализуются на базе программируемой логики или с использованием цифровых сигнальных процессоров (DSP процессоров).
Развитие полупроводниковой технологии, идущее по пути снижения проектных норм и повышения степени интеграции, поставило сегодня проблему создания микросхем, которые могли бы одновременно выполнять и задачи микроконтроллеров и быструю обработку цифровой информации. Появившиеся недавно «системы на кристалле» (семейства FPSLIC фирмы Atmel, E5 и А7 фирмы Triscend) объединяют в одном корпусе микроконтроллер и массив программируемой логики.
Компания Motorola, издавна специализировавшаяся на выпуске микроконтроллеров и цифровых сигнальных процессоров, поставила перед собой задачу разработать архитектуру, объединяющую микроконтроллер с DSP процессором. Изначально были предложены две различные идеи для такого объединения, которые нашли свое воплощение соответственно в семействах DSP56600 и DSP56F800.
Семейство DSP56600, ориентированное на мобильную беспроводную связь, реализовало идею объединения двух ядер: 32-разрядного RISC-ядра MCORE и ядра DSP на одном кристалле. Использование такой архитектуры требовало от разработчика написания отдельных программ для каждого ядра и их последующей совместной отладки, что являлось достаточно трудоемким процессом.
В настоящее время компания Motorola отказалась от дальнейшей поддержки архитектуры DSP56600 и сосредоточила свои усилия на развитии семейства DSP56F800, процессоры которого выпускаются по гибридной технологии 0,25 мкм и также имеют цель объединить производительность DSP процессора и функциональность микроконтроллера в одной микросхеме.
DSP56F800 содержит не два процессорных ядра, размещенных в одном корпусе и требующих от разработчика написания двух различных программ, но представляет собой одно новое ядро, обладающее чертами как DSP процессора, так и микроконтроллера, способное выполнять и задачи управления, и быстрые DSP-алгоритмы по обработке данных. Необходимость при этом работать только с одной программой значительно упрощает процесс разработки приложения.
Архитектура ядра DSP56F800
В качестве базы для DSP56F800 было выбрано 16-разрядное DSP-ядро, являющееся развитием архитектуры DSP56100 компании Motorola. В систему команд были введены инструкции для работы с целыми числами, ориентированные на задачи управления, а также введен битовый процессор. Разнообразие режимов адресации DSP56F800 напоминает скорее микроконтроллер, чем DSP процессор. Для поддержки эффективного программирования на языке высокого уровня в архитектуру был добавлен характерный для микроконтроллеров регистр — указатель стека, который позволяет организовать программный стек и иметь неограниченную глубину вложенности подпрограмм.
На рис. 1 представлена архитектура ядра DSP56F800, которое обеспечивает производительность до 40 MIPS и имеет четыре вычислительных устройства, способных работать параллельно: арифметико-логическое устройство данных (DATA ALU), устройство генерации адреса (AGU), программный контроллер и устройство для выполнения битовых операций. Каждое из вычислительных устройств имеет свой собственный набор регистров и управляющую логику. Вычислительные устройства взаимодействуют между собой, с блоками памяти, а также с регистрами периферийных устройств при помощи трех внутренних шин адреса и четырех шин данных.
Арифметико-логическое устройство данных является основным вычислительным устройством. Здесь, в соответствии с названием, выполняются все арифметические и логические операции над данными. DATA ALU содержит три 16-разрядных входных регистра и два 36-разрядных регистра-аккумулятора, умножитель-аккумулятор (MAC), устройство ограничения результата (LIMITER) и параллельный 16-разрядный сдвигатель (SHIFTER). В DATA ALU возможно выполнение операций как над содержимым входных регистров, так и над содержимым аккумуляторов, а также над содержимым ячеек памяти и непосредственными данными. Результат чаще всего размещается в аккумуляторах, но некоторые команды позволяют размещать результат и во входных регистрах, и в ячейках памяти. Можно сказать, что DATA ALU имеет не аккумуляторную структуру, а более гибкую архитектуру, базирующуюся на работе с регистровым файлом. Благодаря наличиютрех адресных шин и четырех шин данных, одновременно с выполнением текущей операции во входные регистры DATA ALU могут загружаться из памяти два операнда. При выполнении операций над данными возможноиспользование как целочисленной арифметики (поддержка функций микроконтроллера), так и арифметики над дробными числами (поддержка DSP-алгоритмов).
Устройство генерации адреса содержит регистры R0…R3 и регистр-указатель стека SP, которые используются в качестве регистров косвенной адресации, а также регистр смещения N и модульный регистр M01. Благодаря наличию в AGU двух вычислительных устройств, за один цикл параллельно могут формироваться два адреса: один — для памяти данных, другой — для памяти программ. При вычислении адреса может использоваться как обычная линейная арифметика, так и модульная. Последняя позволяет без дополнительных программных затрат организовывать в памяти циклические буферы, очереди типа FIFO, стеки.
Введение программного стека в архитектуру DSP56F800 позволяет иметь неограниченную вложенность подпрограмм, что дает возможность создавать хорошо структурированные программы и является одним из ключевых моментов для создания эффективных компиляторов C. Кроме того, возможность использовать при косвенной адресации регистр-указатель стека в качестве адресного регистра позволяет хранить в стеке локальные переменные и эффективно осуществлять передачу параметров в подпрограммы.
Устройство для выполнения битовых операций, введенное на кристалл для поддержки управляющих функций, позволяет тестировать и модифицировать одиночные биты, выполнять команды условных переходов по состоянию отдельных разрядов. Отличительной особенностью битового процессора является то, что для битовых операций доступны абсолютно все запоминающие узлы процессора: регистры вычислительных устройств, регистры периферийных устройств и все ячейки памяти.
Программный контроллер (Program Controller) управляет ходом выполнения программы и имеет в своем составе конвейер команд, дешифратор команд, контроллер прерываний и блок аппаратного выполненияциклов, а также регистры статуса и управления.
Стремясь создать процессор, который бы вобрал все современные достижения микроэлектроники, разработчики DSP56F800 снабдили свое детище быстрой Flash-памятью программ и данных.
Организация памяти позволяет называть DSP56F800 процессорами гарвардского типа, так как они имеют два независимых адресных пространства (по 64K слов каждое) для размещения кода программы и хранения данных. Часть памяти программ и часть памяти данных размещена непосредственно на кристалле.
В таблице 1 представлены размеры встроенных на кристалле блоков памяти для различных представителей семейства DSP56F800.
DSP56F801 | DSP56F802* | DSP56F803 | DSP56F805 | DSP56F807 | DSP56F826 | DSP56F827 | |
Корпус | 48LQFP | 32LQFP | 100LQFP | 144LQFP | 160LQFP | 100LQFP | 128LQFP |
Flash-память программ, Кб | 16 | 16 | 64 | 64 | 120 | 63 | 126 |
RAM-память программ, Кб | 2 | 2 | 1 | 1 | 4 | 1 | 2 |
Flash Boot-блок памяти программ, Кб | 2 | 2 | — | ||||
RAM-память данных,Кб | 2 | 2 | 4 | 4 | 8 | 8 | 8 |
Flash-память данных, Кб | 4 | 4 | 8 | 8 | 16 | 4 | 8 |
Таймеры | Quad Timer module | Quad Timer module | 2 х Quad Timer module | 4 х Quad Timer module | 4 х Quad Timer module | Quad Timer module | Quad Timer module |
АЦП | Dual ADC Module(2.4 Input,12 Bit) | Dual ADC Module (2+3 Input,12 Bit) | Dual ADC Module (2.4 Input,12 Bit) | Dual ADC Module (2×4 Input,12 Bit) | 2x Dual ADC Module 2 x(2×4 Input,12 Bit) | — | 10 Input 12 Bit |
Модуль ШИМ | PWM module на 6 каналов | PWM module на 6 каналов | PWM module на 6 каналов | 2 x PWM module на 6 каналов | 2 x PWM module на 6 каналов | — | — |
Дешифратор квадратурной импульсной последовательности | — | — | Quadrature Decoder | 2 x Quadrature Decoder | 2 x Quadrature Decoder | — | — |
Последовательный аcинхронный интерфейс | SCI | SCI | SCI | 2 x SCI | 2 x SCI | SCI | SCI |
Последовательный периферийный интерфейс | SPI | — | SPI | SPI | SPI | SPI | SPI |
Последовательный синхронный интерфейс | — | — | — | — | — | SSI | SSI |
Контроллер CAN-шины | — | — | Spec. 2 A/B | Spec. 2 A/B | Spec. 2 A/B | — | — |
Календарь-часы | — | — | — | — | — | TOD | — |
Видно, что встроенные блоки и памяти программ и памяти данных состоят из двух частей: энергонезависимых Flash-блоков памяти и блоков статической RAM.
Flash-память программ имеет функцию самопрограммирования, то есть процессор во время работы может подгружать себе части программы через имеющиеся интерфейсы. При этом программу-загрузчик удобнее всего располагать в имеющемся Flash Boot — блоке памяти программ. Все блоки Flash-памяти на кристалле также доступны для программирования через JTAG-интерфейс.
Кроме встроенной памяти, DSP56F800 дополнительно могут адресовать внешнюю память программ и данных. При этом имеется возможность задавать различные режимы конфигурации памяти (вся память внешняя; или вся память внутренняя; или часть памяти — внешняя, а часть — внутренняя).
Предлагаемые для DSP56F800 способы «прошивки» кристалла и отладки программного обеспечения также соответствуют современному уровню развития аппаратно-программных отладочных средств. Процессоры DSP56F800 содержат на кристалле внутрисхемный эмулятор (ONCE — «ON-Chip Emulator»), доступный через JTAG-порт, который позволяет вести полноценную отладку программы в системе и программировать внутреннюю Flash-память при помощи недорогого JTAG-кабеля.
Система команд DSP56F800 содержит характерные для микроконтроллеров группы: арифметических и логических операций, операций работы с битами, команд пересылки и команд управления ходом выполнения программы.
Таким образом, для разработчика переход от программирования микроконтроллеров к программированию DSP56F800 не должен показаться очень сложным. Вместе с тем, программист, работавший ранее с DSP, обнаружит в группе команд арифметических операций команды, характерные для DSP процессора, такие как умножение с накоплением, округление, нормализация.
На рис. 2 показан формат ассемблерной строки, из которого видно, что за один машинный цикл DSP56F800 может выполнять одну или две параллельные пересылки между памятью данных и входными регистрами DATA ALU. Такая возможность увеличивает эффективность программы, снижает размер программного кода.
Богатый набор из 19 режимов адресации подразделяют на три группы. Прямая адресация позволяет непосредственно обращаться к регистрам вычислительных устройств. Группа режимов косвенной адресации включает в себя индексную адресацию, несколько режимов индексной адресации со смещением и индексной адресации с постмодификацией. При этом в качестве регистров косвенного адреса используются адресные регистры устройства генерации адреса. В третью группу специальных режимов адресации выделяют непосредственную адресацию, когда операнд содержится непосредственно в программе, абсолютную, когда в программе содержится абсолютный адрес, и неявную адресацию, которая используется процессором при работесо стеком, выполнении аппаратного цикла DO, возвратах из подпрограмм.
Периферийные узлы и состав семейства DSP56F800
Приведенное выше описание архитектуры DSP56F800 показывает, что уже само ядро этого семейства, оставаясь ядром сигнального процессора, обладает чертами микроконтроллера, ориентированного на выполнение задач управления. Но, кроме этого, процессоры семейства DSP56F800 содержат развитый наборвстроенных периферийных узлов — порты ввода-вывода, таймеры, несколько 12-разрядных микросекундных АЦП, модуль ШИМ, узлы асинхронного и синхронного последовательных интерфейсов, CAN-узел, календарь-часы.
В таблице 1 представлен состав семейства DSP56F800 и перечислены периферийные узлы каждого процессора. Следует отметить, что особенностью микропроцессорных устройств компании Motorola всегда была строгая ориентация на определенные приложения. Семейство DSP56800 не является исключением. Областью применения этих процессоров являются приложения, в которых динамический диапазон обрабатываемого при помощи DSP-алгоритмов сигнала таков, что оцифровка данных без потери качества может осуществляться 12-битным АЦП, а цифровая обработка затем выполняться 16-разрядным DSP.
Изначально DSP56F801/803/805/807 были ориентированы на решение задач электропривода, а DSP56F826/827 — на использование в устройствах цифровой телефонии. В феврале 2002 года компания Motorola объявила, что вскоре появится еще один представитель этого семейства — DSP56F802, ориентированный на низкостоимостные приложения. DSP56F802 будет иметь самый маленький в этом семействе корпус 32LQFP, меньшее количество каналов АЦП и только один последовательный интерфейс. При этом ожидается, что цена этого процессора будет иметь порядок, характерный для 8-разрядных микроконтроллеров.
В декабре 2001 года Motorola еще раз продемонстрировала свою приверженность архитектуре DSP56F800, объявив о создании на ее базе нового ядра DSP56F800E и соответствующего семейства DSP56F85xx.
Новое ядро DSP56F800E будет отличаться повышением производительности до 120 MIPS (против 40 MIPS у DSP56F800) и более низким потреблением. Оно ориентировано на такие приложения, как «Embedded Internet», цифровая телефония, домашнее сетевое оборудование. В новом семействе анонсированы шесть микросхем: DSP56F852, DSP56F853, DSP56F854, DSP56F855 и DSP56F857, которые пока недоступны.
Рассмотрим более подробно периферийные узлы процессоров семейства DSP56F800.
Счетверенный таймерный модуль (Quad Timer) представляет собой совокупность четырех идентичных 16-битных таймерных групп, которые могут работать согласованно, например, одновременно запускаться или считываться в один момент времени, или быть включенными каскадно. Каждая таймерная группа содержит предделитель, собственно счетчик/таймер, два компаратора и набор регистров, позволяющих использовать счетчик в режимах сравнения и захвата, задавать его коэффициент пересчета. Кроме внешнего счетного входа счетчик может использовать дополнительный внешний сигнал для управления разрешением подсчета импульсов или для управления направлением счета. В последнем случае счетчик может использоваться для дешифрации квадратурных импульсных сигналов от датчиков положения.
Сдвоенный модуль АЦП (Dual ADC module) содержит два мультиплексора на 4 входа, два устройства выборки и хранения, два 12-разрядных АЦП с минимальным временем преобразования 1,2 мкс. Набор регистров позволяет одновременно хранить результаты преобразования восьми измерений.
Имеется возможность задавать последовательный или одновременный режимы работы двух АЦП. Независимо от этого схемотехника входных цепей позволяет каждую пару соседних аналоговых входов рассматривать или как два отдельных сигнала, или как один дифференциальный. Таким образом, возможно задавать различные режимы сканирования аналоговых входов, например, осуществлять последовательную выборку 8 аналоговых сигналов или иметь 4 дифференциальных сигнала и при помощи двух АЦП одновременно опрашивать сразу два из них. Возможно также иметь комбинации дифференциальных и одиночных сигналов.
Результат преобразования может быть представлен как число со знаком или без знака и автоматически скорректирован путем вычитания заданного смещения.
Имеется возможность синхронизировать запуск АЦП с работой модуля генерации управляющих ШИМ-сигналов и между собой. Для каждого аналогового канала отведено по три компаратора, которые позволяют аппаратно, без участия процессора, определять момент, когда сигнал меняет знак или выходит за границы заданного диапазона.
Модуль ШИМ (PWM module) имеется в составе процессоров DSP56F801/803/805/807. Он предназначен для управления всеми типами двигателей постоянного и переменного тока и аналогичен модулю, встроенному на кристалле 8-разрядных микроконтроллеров Motorola. Этот узел позволяет формировать 6 независимых ШИМ-сигналов или 3 пары комплементарных ШИМ-синалов и обладает следующими особенностями:
- Возможна генерация как выровненного по фронту, так и центрированного ШИМ-сигнала.
- Регистры, в которые записываются параметры ШИМ-сигнала, имеют буферизацию, то есть программному обеспечению доступен только набор буферных регистров, значения из которых в начале каждого периоданесущей частоты переписываются в рабочие регистры, непосредственно управляющие работой модуля.
- Имеется возможность устанавливать полярность управляющих сигналов независимо для верхнего и нижнего ключей.
- Выводы, на которых формируется управляющий ШИМ-сигнал, способны обеспечивать вытекающий ток 20 мА.
- Генератор «мертвого» времени может принудительно переводить оба вывода комплементарной пары в третье состояние на заданное время после каждого перепада ШИМ-сигнала.
- Имеется возможность корректировать искажения кривой тока нагрузки, вызванные введением интервалов «мертвого» времени. Для реализации этой функции узел имеет входы от датчиков направления тока на нагрузке и может автоматически, без участия процессора, изменять режим вставки интервалов «мертвого» времени в зависимости от направления тока нагрузки.
- Имеется возможность запрещать управление выводами от генератора ШИМ и программно устанавливать выводы в требуемое состояние.
- Имеющиеся входы защиты позволяют контролировать состояние 4 различных параметров электродвигателя. Сигналы на этих цифровых входах аппаратным способом переводят управляющие выводы в третье состояние. Имеется возможность гибко назначать соответствие защитных входов и управляющих ШИМ-выводов.
Дешифратор квадратурной импульсной последовательности (Quadrature Decoder), предназначен для работы с датчиками положения электродвигателей (например, c датчиками Холла). Этот узел имеет в своем составе счетчик положения, счетчик числа оборотов и дифференциальный счетчик. Последний содержит код, пропорциональный скорости вращения двигателя. Дешифратор имеет в своем составе входной фильтр импульсных помех и специализированный сторожевой таймер, который позволяет устанавливать факт остановки двигателя.
Последовательный асинхронный интерфейс (Serial Communication Interface — SCI) позволяет выполнять обмен данными как в дуплексном, так и в полудуплексном режиме с использованием стандартного формата NRZ (старт-бит, 8 или 9 бит данных, бит паритета, стоп-бит(ы)). Возможно программирование полярности приемника и передатчика и очередности передаваемых бит. Предделитель тактовой частоты, имеющий 13 разрядов, обеспечивает широкий диапазон скоростей обмена. Узел SCI может генерировать 8 различных прерываний и выводить процессор из режимов пониженного энергопотребления.
Последовательный периферийный интерфейс (Serial Peripheral Interface — SPI) позволяет осуществлять синхронный дуплексный последовательный обмен данными с использованием четырех стандартных SPI выводов. Узел SPI может работать в режимах Master и Slave, имеет раздельные буферные регистры на прием и передачу. Количество разрядов в посылке программируется и может составлять от 2 до 16 бит. Максимальная частота обмена данными составляет 20 МГц и 40 МГц в режимах Master и Slave соответственно.
Последовательный синхронный интерфейс (Synchronous Serial Interface — SSI) является дуплексным синхронным портом, позволяющим DSP процессору связываться с другими последовательными устройствами, включая стандартные промышленные кодеки и другие процессоры, оснащенные узлом SPI. SSI содержит независимые блоки передатчика и приемника, которые тактируются раздельно, имеют в своем составе аппаратные буферы FIFO (7×16 бит) на прием и передачу и могут программироваться на обмен словами различной длины (8, 10, 12, 16 бит). При работе в сетевом режиме через порт SSI к DSP процессору может быть подключено до 32-х последовательных устройств. Программируемый предделитель позволяет обмениваться данными на стандартных для промышленных кодеков частотах.
Контроллер CAN-шины, который имеется у процессоров DSP56F803/805/807, поддерживает спецификацию 2.0 А/B фирмы Bosh, имеет встроенные буферы на передачу и прием данных.
Календарь-часы (Time-of-Day — TOD) имеется только в составе DSP56F826. Этот модуль содержит отдельные счетчики и регистры предустановки для секунд, минут, часов и дней. Емкость календаря составляет 65535 дней или 179,5 лет. Возможно программирование в заданное время таких событий, как генерация сигнала тревоги или выход из режимов пониженного энергопотребления.
Порты ввода-вывода (General Purpose Input/Output) процессоров DSP56F800 отличаются своей полнофункциональностью. Для задания режима работы порта имеется 8 управляющих регистров. Если вывод не назначен на выполнение альтернативной функции, связанной с работой какого-либо периферийного узла, то он может использоваться как цифровой вывод общего назначения и может быть запрограммирован на работу как вход или как выход. В режиме входа к выводу может быть подключен внутренний резистор подтяжки к шине питания.
При чтении состояния порта можно опрашивать как собственно состояние вывода, так и данные, записанные в регистре защелки порта. Каждая линия ввода-вывода может использоваться как источник внешнего прерывания. Ограничение состоит в том, что все прерывания, принадлежащие одному порту, имеют один и тот же вектор, так что на программу обработки прерывания ложится задача опроса специальных статусных регистров, в которых фиксируется конкретный источник прерывания.
Нагрузочная способность большинства линий ввода-вывода по вытекающему току составляет 10 мА. Шесть выводов, предназначенных для генерации управляющих ШИМ-синалов, могут обеспечивать вытекающийток 20 мА.
Контроллер прерываний (Interrupt controller) принимает запросы на прерывания от периферийных узлов. Система прерываний DSP56F800 обладает следующими возможностями:
- Количество источников прерываний — 64.
- Количество приоритетных уровней прерывания — 7.
- Каждому источнику прерывания может быть назначен любой из 7 уровней приоритета.
- За каждым источником прерывания жестко закреплен вектор прерывания, который определяет приоритет внутри уровня.
- Каждый периферийный узел сам отвечает за маскирование своих прерываний, и, кроме того, имеется один общий регистр, при помощи которого можно разрешать или запрещать прерывания группами, принадлежащими к определенному уровню.
Отладочные средства
В качестве программного обеспечения для DSP56F80x фирма Metrowerks предлагает пакет CodeWarrior v. 5.0, включающий интегрированную среду для создания проекта, ассемблер, оптимизированный компилятор С/С++, компоновщик, отладчик. Последний поддерживает связь с целевой платой через LPT-порт компьютера для загрузки и отладки программы в рабочей системе по JTAG- интерфейсу.
Для работы с CodeWarrior разработана библиотека Embedded Software Development Kit (SDK v. 2.4.1), которая помимо драйверов периферийных устройств и многочисленных математических функций содержит библиотеки DSP-подпрограмм, модемных функций (V8bis, V22bis, V42bis), телефонных функций (DTMF, CPT, G.165, G711,G7.26 и др.), функций шифрования (DES, 3DES), подпрограмм управления двигателями.
Минимально необходимым аппаратным отладочным средством для DSP56F800 является программирующий JTAG-кабель, который связывает LPT-порт компьютера с JTAG-портом процессора на целевой плате и позволяет под управлением отладчика CodeWarrior вести внутрисхемную отладку программы непосредственно в системе, а также программировать встроенные блоки энергонезависимой памяти.
Для быстрейшего освоения пользователями новых сигнальных процессоров фирма Motorola разработала и выпускает для каждого процессора семейства DSP56F800 целевые отладочные платы (Evaluation Board), платы гальванической развязки и силовые платы.
Области применения
Производительность и функциональность, наличие Flash-памяти, простота и удобство программирования, а также невысокая стоимость обеспечили сегодня для DSP56F800 широкий круг возможных приложений. На своем сайте
www.mot-sps.com. Motorola приводит примеры использования новых процессоров для решения задач электропривода, в робототехнике, для построения систем учета электроэнергии, в промышленной автоматике, на транспорте, в цифровой телефонии и в системах обработки речи.