В.Чучалов
Серия 16-разрядных микроконтроллеров фирмы Siemens AG разработана специально для обеспечения
требований задач управления встроенных систем реального времени. Первым представителем семейства был
выпущен кристалл SAB-80C166-M и поэтому всю серию принято называть C166. Многочисленное семейство этих
микроконтроллеров (в настоящее время около двух десятков) имеет в своем составе ядро процессора, использующего
концепцию RISC (Reduced Instruction Set Computer). Система команд семейства C166 оптимизирована для быстрого
выполнения инструкций и для уменьшения времени отклика на прерывание. Интегрированные интеллектуальные
периферийные модули микроконтроллеров построены таким образом, чтобы минимизировать вмешательство
процессора при их работе. Наличие мощного процессорного ядра, полного набора периферийных модулей, различных
системных функций (гибкая системная шина, режимы энергосохранения, умножение/деление тактовой частоты)
позволило достигнуть хорошего соотношения качество/цена. Микроконтроллеры этой серии сейчас применяются
очень широко: в автомобилях, промышленных системах автоматизации и электропривода, связи,
медицинском оборудовании и т.д.
Для управления электроприводами различных систем наиболее подходят микроконтроллеры, перечисленные в табл. 1.
Они позволяют формировать сигналы управления преобразователем с минимальным вмешательством ЦПУ, подключать
аналоговые и импульсные сигналы обратных связей, организовывать связь с удаленным управляющим контроллером
высшего уровня и решать другие вспомогательные задачи.
Новый многофункциональный 16-разрядный микроконтроллер фирмы Siemens AG получил наименование C164CI.
И поскольку он содержит такой же модуль захвата-сравнения CAPCOM6, как и в микроконтроллере C504, основная
область его применения системы управления электроприводами. Особенности микроконтроллера C164CI, благодаря
которым возможно успешное его применение для таких систем, это ядро процессора, система прерываний и
модуль CAPCOM6.
Основные характеристики микроконтроллера:
- минимальное время цикла инструкций 100 нсек с выполнением большинства инструкций за один цикл;
- умножение 500 нсек (16 бит ╢ 16 бит), деление 1 мксек (32 бит / 16 бит);
- регистровая структура с переключаемыми регистровыми банками;
- 16 Мбайт линейное адресное пространство для кодов программ и данных;
- системный стек с автоматическим контролем границ стека;
- биты, байты и слова типы обрабатываемых данных;
- гибкая и эффективная система адресации для создания компактных выходных кодов;
- поддержка языков высокого уровня комплексными инструкциями условных переходов;
- 2 Кбайт внутреннее ОЗУ для переменных, регистровых банков, системного стека и кода;
- 64 Кбайт встроенная однократно-программируемая память программ (OTP);
- мультиплексированная внешняя шина;
- возможность сегментации памяти и наличие сигналов выборки микросхем;
- динамическое изменение шины 8 бит / 16 бит;
- 16 уровней приоритетов прерываний;
- 32 узла прерываний с раздельными векторами прерываний;
- 300/500 нсек типичное/максимальное время перехода по прерыванию при работе с внутренней памятью;
- периферийный контроллер событий для передачи данных по прерыванию за один цикл;
- 8-канальный 10-разрядный АЦП с временем преобразования 9,7 мксек;
- два модуля захвата-сравнения с независимыми базовыми таймерами для генерации различных ШИМ сигналов и обработки временных интервалов;
- многофункциональный модуль таймеров, содержащий три 16-разрядных таймера-счетчика с разрешением 400 нсек;
- универсальный синхронно-асинхронный последовательный порт (USART);
- высокоскоростной синхронный последовательный канал SSC;
- встроенный CAN-модуль версии 2.0B;
- часы реального времени на кристалле;
- рабочий диапазон температур -40...125C;
- корпус MQFP-80.
Таблица 1
Тип | Такт. частота, мГц |
ПЗУ, байт |
ОЗУ, байт |
Адр. простр., байт |
САР СОМ |
ШИМ | АЦП | Тай- меры |
CAN, V2.0 | Корпус |
C164CI-8EM | 20 | 64k OTP | 2k | 4M | 8+7 | - | 8 | 3 | 1 | PMQFP-80 |
SAB80C166-M | 20,25 | -/32k ROM | 1k | 256k | 16 | - | 10 | 5 | - | PMQFP-100 |
C167-LM | 20 | - | 2k | 16M | 32 | 4 | 16 | 5 | - | PMQFP-144 |
C167SR-LM | 20,25 | - | 4k | 16M | 32 | 4 | 16 | 5 | - | PMQFP-144 |
C167CR-LM | 20,25 | -/128k ROM | 4k | 16M | 32 | 4 | 16 | 5 | 1 | PMQFP-144 |
C167CR-16FM | 20 | 128k FLASH | 4k | 16M | 32 | 4 | 16 | 5 | 1 | PMQFP-144 |
C167CS-32FM | 20 | 256k FLASH | 4k | 16M | 32 | 4 | 24 | 5 | 2 | PMQFP-144 |
Устройство микроконтроллера
Микроконтроллер имеет модульную организацию и его блок-схема представлена на рис. 1. В нем можно
выделить три основные системы: центральное процессорное устройство, систему обработки прерываний и набор
модулей периферийных устройств. Эффективная работа микроконтроллера и быстрый обмен между отдельными системами
обеспечивается четырьмя внутренними шинами. Одна из них 32-разрядная связывает процессор и внутреннюю ROM-память.
Благодаря этому 4-байтные инструкции извлекаются за одно обращение к памяти, и микроконтроллер с внутренней
памятью программ работает более эффективно. Двухпортовая RAM-память и процессор связаны двумя 16-разрядными
шинами. 16-разрядная шина связывает процессор с основным набором периферийных модулей (таймеры, АЦП, модули
захвата-сравнения и др.). Другая 16-разрядная шина (X-шина) связывает процессор с дополнительным набором
периферийных модулей (модуль CAN) и с контроллером внешней шины.
Рис. 1
Центральное процессорное устройство
Высокопроизводительный процессор, использующий технологию RISC, имеет в своем составе 4-х ступенчатый
конвейер для обработки инструкций, 16-разрядное АЛУ, регистры общего назначения и регистры специальных функций
процессора. Для сокращения времени выполнения инструкций имеется арифметический модуль (MUL, DIV), генератор
битовых масок (для операций с битами) и модуль операций сдвига (SHIFT, ROTATE).
Процессор не имеет регистра-аккумулятора для манипуляций с данными. Для этих целей используется банк регистров
общего назначения (GPR), который содержит шестнадцать 16-разрядных регистров (R0-R15). Из них восемь регистров
обрабатываются как двухбайтные, а к остальным восьми можно обращаться побайтно. Банк GPR может быть определен
в области RAM-памяти при помощи контекстного указателя CP, который задает адрес регистра R0. В банке регистров
имеется возможность побитового доступа к каждому из регистров.
Наличие модуля умножения-деления позволяет производить быстрые операции с 32-разрядными операндами. Для этого
имеются специальные регистры MDH и MDL. Чтобы уменьшить время отклика на прерывание, операции умножения-деления
сделаны прерываемыми.
Процессор оптимизирован для выполнения многочисленных операций переходов и вызовов подпрограмм. При выполнении
условия перехода требуется только один дополнительный цикл. Все операции побитового сдвига выполняются за один
цикл инструкций, независимо от количества бит сдвига.
В приведенной ниже табл. 2 указано минимальное время выполнения инструкций процессором при работе с внутренней
памятью ROM.
Таблица 2
Инструкции | Tmin,(циклы) | Tмин(нсек) (@20мГц) |
ADD[B], ADDC[B], SUB[B], SUBC[B] | 1 | 100 |
AND[B], OR[B], XOR[B] | 1 | 100 |
ASHR, SHL, SHR, ROL, ROR | 1 | 100 |
BAND,BCLR,BCMP,BFLDH,BFLDL, BMOV,BMOVN,BOR,BSET,BXOR |
1 | 100 |
CALLA, CALLI | 4(+2) | 200(+100) |
CALLR, CALLS, PCALL | 4 | 200 |
CMP,CMPB,CMPD1,CMPD2,CMPI1,CMPI2 | 1 | 100 |
CLP[B] | 1 | 100 |
JB,JBC, JNB, JNBS | 4(+2) | 200(+100) |
JMPS | 4 | 200 |
JMPA, JMPI, JMPR | 4(+2) | 200(+100) |
MUL, MULU | 10 | 500 |
DIV, DIVL, DIVU, DIVLU | 20 | 1000 |
MOV[B], MOVBS, MOBZ | 1 | 100 |
MOV[B] Rn,[Rm+#data16] | 4 | 200 |
NEG[B] | 1 | 100 |
POP, PUSH, SCXT | 1 | 100 |
PRIOR | 1 | 100 |
RET, RETI, RETP, RETS | 4 | 200 |
TRAP | 4 | 200 |
ATOMIC,DISWDT,EINIT,EXNIT,EXTR,EXTP[R],EXTS[R],IDLE,PWRDN,NOP,SRST,SRVWDT | 1 | 100 |
Организация памяти микроконтроллера
Область памяти C164CI организована в единое линейное адресное пространство, общее для кодов программ и данных.
Все физически разделенные области памяти, включая OTP-память, внутреннюю RAM, регистры специальных функций
(SFR и ESFR), адресное пространство X-шины, отражаются в едином адресном поле.
Рис. 2
Общее адресное пространство C164CI составляет 16 Мбайт и разделено на 256 сегментов по 64 Кбайта, и каждый
сегмент, в свою очередь, разделен на четыре страницы данных по 16 Кбайт каждая.
На рис. 2 приведено распределение памяти микроконтроллера и примеры типичного объявления переменных,
битов пользователя и регистров управления для С-компилятора в различных областях памяти.
Система прерываний
Архитектура кристалла C164CI обеспечивает несколько механизмов для быстрого и гибкого
обслуживания запросов прерываний, которые генерируются различными внутренними и внешними источниками.
Эти механизмы включают:
- Обработка нормальных прерываний. ЦПУ приостанавливает текущую программу, сохраняя состояния необходимых
регистров в стеке, и переключается на выполнение процедуры обработки прерывания. При одновременном запросе
прерываний от нескольких устройств, 16-ти уровневая схема приоритетов позволяет определить очередность
их обработки.
- Обработка прерываний при помощи периферийного контроллера событий (PEC). Периферийный конт-роллер
событий предназначен для передачи данных из одной области памяти в другую по запросу прерывания. При этом
процессор не сохраняет текущее состояние регистров и от него требуется только один цикл для выполнения
пересылки данных.
- Trap-функции инициализируются в ответ на ошибочные ситуации, возникающие при работе процессора.
Trap-функция также может быть вызвана по входу внешнего немаскируемого прерывания (NMI). Имеется возможность
программной инициализации прерываний при помощи инструкции TRAP, которая генерирует программное прерывание
с указанным вектором.
- Внешние прерывания. Хотя процессор не имеет выделенных выводов для внешних прерываний, имеется
возможность подключения внешних прерываний как альтернативных функций портов ввода-вывода.
- Время отклика на прерывание. Время отклика на нормальное прерывание определяется как время от
установки флага запроса на прерывание до начала выполнения инструкции по вектору прерывания. Это время
для C164 может быть минимум три цикла инструкций. Время отклика увеличивается в зависимости от состояния
процессора и максимально составляет 5 циклов инструкций. В случае работы периферийного контроллера
событий все происходит быстрее. Здесь время отклика определяется от установки флага прерывания до
начала пересылки данных и минимум составляет 2 цикла инструкций, а максимум 4 цикла.
- Обработка прерываний и регистры общего назначения. Благодаря наличию переключаемых банков регистров
общего назначения (GPR), имеется возможность минимизировать или вовсе исключить обращения к стеку
пользователя. При этом каждому модулю или функции прерывания отводится свой банк регистров, содержащий до
16 регистров. Каждый из этих банков определяется контекстным указателем (CP), указывающим на регистр R0
и все регистры в банке до-ступны при помощи быстрой адресации с 4-битным смещением. Переключение банков
регистров осуществляется с помощью специальной инструкции SCXT op1,op2. При ее выполнении содержимое регистра,
определенного операндом op1 помещается в стек и в этот регистр записывается значение из операнда op2. Ниже
приведен пример реализации такого алгоритма при обработке процедуры прерывания.
Модуль CAPCOM6 для управления преобразователем
Модуль захвата-сравнения CAPCOM6 уже был реализован в 8-разрядном микроконтроллере C504,
но ввиду небольшой производительности 8-разрядного процессора, можно было реализовать только простейшие
функции управления двигателем. ЦПУ кристалла C164CI в состоянии обеспечить точное регулирование момента
и скорости двигателя постоянного или переменного тока и при этом все функции формирования сигналов ШИМ
осуществляются в модуле CAPCOM6 без вмешательства процессора.
Блок-схема модуля приведена на рис. 3.
Рис. 3
;FUNCTION timer0 (BEGIN) SCXT CP,#INTREGS ; переключение банка регистров NOP ; на новую задачу .. ; обработка функции прерывания .. ; POP CP ; восстановление банка регистров RETI ; прерванной задачи и возврат из ; прерывания ; FUNCTION timer0 (END) |
Модуль CAPCOM6 обеспечивает независимую работу трех программируемых каналов сравнения. Каждый из
каналов содержит по два выхода, которые могут иметь инверсные выходные уровни (CC60..CC62, COUT60..COUT62).
Базовый таймер для этих каналов T12 имеет разрядность 16 бит. Входная частота для этого таймера
программируется от fCPU до fCPU/128 (fCPU = 20 мГц).
Дополнительно имеется выход ШИМ, который может использоваться или самостоятельно, или для модуляции основных
каналов. Он связан с 10-разрядным таймером T13.
Таймер T12 имеет два основных режима работы: стандартный ШИМ и симметричный ШИМ.
В стандартном режиме таймер начинает считать от 0000H. Когда он достигает значения периода, записанного в
регистре T12P, регистр таймера обнуляется (рис. 4a,b).
Рис. 4
а)Нессиметричная ШИМ (стандартная)
б)Несимметричная ШИМ со смещением
В режиме симметричной ШИМ таймер T12 начинает считать также от значения 0000H, а достигнув значения,
записанного в T12P, меняет направление счета. Выходные сигналы переключаются при совпадении значения таймера
со значением в регистре компаратора CC6x (рис. 4c,d).
Рис. 4
с)Симметричная ШИМ (центрированная)
d)Симметричная ШИМ со смещением
Для программирования паузы между импульсами имеется регистр T12OF, значение которого суммируется со значением
таймера T12 для задания переключения выходов COUT60...COUT62 (рис. 4d).
Одна из особенностей модуля CAPCOM6 возможность генерации выходных сигналов в многоканальном режиме.
Модуль программируется для работы с 4-, 5- и 6-фазным однополярным ШИМ. В этом режиме коммутация производится
по соответствующей таблице состояний, имеющейся в модуле. Пример формирования выходных импульсов для 5-фазного
ШИМ приведен на рис. 5.
Рис. 5
Другой специальный режим работы модуля режим коммутации блоков (рис. 6). В этом случае выдачей
последовательностей импульсов управляют не таймеры модуля CAPCOM6, а датчики Холла, подключенные к входам
внешних прерываний CC6POS0...CC6POS2. Канал 0 модуля автоматически конфигурируется в режим захвата и любое
переключение на входах CC6POS0...CC6POS2 генерирует импульс захвата. Это значение затем может использоваться
для измерения скорости вращения двигателя.
Рис. 6
Благодаря наличию модуля CAPCOM6 возможно организовать более эффективное управление электродвигателями самых
различных типов: постоянного и переменного тока, шаговыми биполярными и однополярными.
CAN интерфейс
Систему управления электропривода на C164CI можно легко интегрировать в систему более
высокого уровня. И для этого нет необходимости встраивать в систему дорогие сетевые контроллеры
(как, например, ProfiBus). На кристалле уже имеется надежный, помехозащищенный контроллер последовательной
линии CAN-интерфейса, который функционирует в соответствии со спецификацией V2.0B фирмы BOSH. Он хорошо
себя зарекомендовал в промышленных сетях связи.
Во внутреннем ОЗУ микроконтроллера содержится область регистровой памяти для хранения 15-ти объектов-сообщений,
с которыми работает CAN-интерфейс. Каждый объект-сообщение включает восемь байт данных, идентификатор длиной
11 или 29 бит и собственные биты управления и состояния. При передаче данных CAN-контроллер формирует пакет,
содержащий идентификатор сообщения, до 8 байт информации, биты управления и контрольную сумму.
При возникновении ошибки, повтор сообщения производится автоматиче-ски. Максимальная скорость передачи
может быть до 1 мбод при длине линии связи до 40 м.
Заключение
Полный набор периферийных модулей микроконтроллера и имеющихся встроенных ресурсов процессора позволяет
строить систему управления различными объектами практически без применения внешних периферийных микросхем.
Это дает возможность минимизировать устройство и снизить его стоимость.
Уже сейчас фирма Siemens AG планирует выпустить новые кристаллы C164 с встроенной Flash-памятью, масочной
ROM-памятью и нарастить их функциональные возможности.
В связи с растущими требованиями к вычислительной мощности микроконтроллеров для встроенных систем управления,
фирма Siemens AG разработала новую 32-разрядную архитектуру TriCore, объединяющую микроконтроллер и DSP на
одном кристалле. Система команд TriCore сочетает возможности обработки в реальном времени микроконтроллера,
вычислительные способности DSP и высокое соотношение качество/цена RISC архитектуры на одном компактном
перепрограммируемом кристалле. TriCore поддерживает все возможные типы встроенной памяти: ROM, OTP, FLASH,
SRAM, DRAM. Архитектура предусматривает малое время для перехода по прерыванию и быстрое контекстное
переключение от задачи к задаче. Это позволяет использовать кристалл как "виртуальный" мультипроцессор
(например, переключение от DSP к микроконтроллеру происходит всего за два такта). Первые образцы кристаллов
(SAB-CT10) обеспечат быстродействие до 80 млн.оп./сек. В дальнейшем будет производиться наращивание
производительности кристаллов за счет увеличения тактовой частоты и расширению системы команд (TriCore-2).
ТОО "ИНТЕХ", Москва
Тел. (095) 451-8608, 451-9737
E-mail: vc-intec@aha.ru
Ваш комментарий к статье | ||||