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

Опрос

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

Реклама

 

2002 №4

К вопросу о производительности микроконтроллеров фирмы CYGNAL

Фрунзе Александр


Появление микроконтроллеров фирмы Cygnal в очередной раз изменило ситуацию на рынке МК. Еще пару лет назад изделия семейства х51 Были самыми представительными по количеству моделей и числу их производителей, самыми «пожилыми» среди популярных, а также одними из самых дешевых (версии Atmel). Но они не могли похвастаться ни рекордной производительностью, ни разнообразием новой периферии, ни наличием встроенных средств отладки и программирования через RS?232 или JTAG-интерфейсы. Казалось, что х51 изжили себя, и их уход с рынка — вопрос ближайшего будущего, в связи с чем все, кто работает с ними, должны начать думать о будущем и обратить свой взор на более современные контроллеры.

Однако, когда год назад Analog Devices все-таки довела до коммерческого уровня свои микроконвертеры, ситуация начала меняться. Теперь же контроллеры от Сygnal изменили ее весьма существенным образом. Предложенное фирмой Сygnal ядро МК обладает, по крайней мере по документам, почти рекордной производительностью среди 8-разрядных МК. Микроконтроллеры снабжены JTAG-интерфейсом, позволяющим осуществлять внутрисистемное программирование кристалла и отлаживать систему без отвлечения на это ее ресурсов. Изделия компании Сygnal имеют несколько независимо функционирующих последовательных портов, а также программируемую структуру параллельных портов (любая линия может работать как в режиме с открытым стоком, так и с «подтягивающим» резистором). Добавлю, что встроенный АЦП может быть программно скоммутирован с любой из линий любого параллельного порта. Можно перечислить и более развитую, чем у прототипа, систему прерываний (два десятка векторов), и сторожевой таймер, и встроенный тактовый генератор с возможностью переключения «на лету» с внутреннего тактового генератора на внешний, и шесть источников сигнала сброса, и возможность записи данных во флэш-память, благодаря чему они сохраняются даже при выключенном питании, и трехвольтовое питание с малым потреблением, и другие нововведенные прелести, но и без них уже очевидно, что микроконтроллеры от Сygnal стали, по крайней мере на мой взгляд, более привлекательными, чем AVR от Atmel или изделия фирмы Microchip.

Какова же реальная производительность новых устройств, насколько она превосходит производительность стандартных МК семейства х51? Ответ можно получить, лишь прогнав на том и другом МК один и тот же программный фрагмент и сравнив полученные результаты. С этой целью в распоряжение автора настоящих строк фирмой АТОС, дистрибьютором Сygnal, был предоставлен Development Kit с контроллером C8051F226. Именно он и был использован для проведения сравнительного теста.

Однако, прежде чем описать полученные результаты, я хотел бы упомянуть об особенностях этих контроллеров, поскольку они недавно появились на рынке и подробно описывались только в одной статье [1]. Приводимые ниже данные относятся к МК С8051F226, но многое из сказанного распространяется и на остальных членов этого семейства (С8051F206, С8051F220/221, С8051F230/231/236).

Структурная схема микроконтроллера С8051F226 приведена на рис. 1.

Диапазон питающих напряжений новых МК — 2,7–3,6 В, максимальный ток потребления (на частоте 25 МГц с работающим АЦП) — 9 мА. При работе на частоте 2 МГц и выключении АЦП потребление снижается до 1 мА, а в режиме IDLE — и вовсе до 100 мкА.

Микроконтроллеры имеют четыре 8-разрядных параллельных порта ввода-вывода. Несмотря на то, что сами МК питаются от 3-вольтового источника, линии портов при этом допускают прямое соединение с 5-вольтовыми входами и выходами других микросхем. Максимально допустимый ток через каждую линию порта, если верить документации, составляет 200 мА (!). Кроме того, приведены данные, гласящие, что при вытекающем токе в 10 мА уровень логической 1 на линии порта снижается не более чем на 0,8 В в сравнении с напряжением питания, а при втекающем в линию порта токе, равном 25 мА, уровень логического нуля не превышает 1 В. Можно сделать вывод, что линии порта в состоянии напрямую управлять светодиодами, по крайней мере до тех пор, пока общая мощность, рассеиваемая кристаллом, не превысит максимально допустимую, равную 1 Вт.

Далее отмечу, что внутренняя структура линий параллельных портов отличается от той, которая была характерна для первых МК семейства х51. Линии всех четырех портов микроконтроллеров фирмы Сygnal одинаковы. Все они путем занесения информации в соответствующие регистры могут быть настроены как на работу в режиме с открытым коллектором, так и в режиме с «подтягивающим» резистором (роль последнего исполняет полевой транзистор соответствующей проводимости). Использование этих линий для выполнения закрепленных за ними альтернативных функций также требует разрешения путем записи единичек в соответствующие разряды регистров, отвечающих за выполнение этих функций. И последнее: каждая из линий каждого порта путем записи соответствующей информации в один из регистров, обслуживающих АЦП, может выполнять функции аналогового входа, то есть возможна оцифровка аналогового сигнала, поданного на любую из 32 линий портов микроконтроллера.

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

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

CLR EA

MOV WDTCN,#0DEH

MOV WDTCN,#0ADH

SETB EA,

где WDTCN — регистр сторожевого таймера, размещенный в регистровом пространстве МК по адресу 0FFH.

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

Поставляемое фирменное ПО работает под Windows или, точнее сказать, не работает под DOS (как ни крути, на дворе уже третье тысячелетие). В связи с этим у похожих на меня любителей работать по старинке, под DOS, появляются некоторые проблемы, обусловленные необходимостью привыкания к новой среде. К тому же может возникнуть необходимость редактирования исходников, если директивы ассемблера в новой и в старой среде пишутся по-разному.

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

При включении микроконтроллер начинает работать с внутренним генератором, функционирующим на частоте 2 МГц. При этом, как будет показано ниже, его быстродействие на операциях, не требующих работы с внешней памятью и портами ввода-вывода, оказывается выше, чем у стандартного х51, работающего с 12-мегагерцовым кварцем. Занесением информации в соответствующий регистр вы можете увеличить частоту внутреннего генератора до 4, 8 или 16 МГц, а также переключиться на работу от внешнего частотозадающего элемента. Все переключения возможны «на лету», работа микроконтроллера при этом не сбивается. Разработчики МК рекомендуют использовать подобные переключения в устройствах, критичных к энергопотреблению: когда нет необходимости в высоком быстродействии, вы можете переключиться на энергосберегающие внутренние 2 МГц, при необходимости в быстром обсчете — переключитесь на работу с внешним 25-мегагерцовым кварцем.

Помимо 8- или 12-разрядного АЦП, в составе всех перечисленных контроллеров есть по 2 компаратора. Их выводы нельзя подключать как АЦП, к любой линии любого порта, так как они привязаны к линиям порта 1 (Р1.0-Р1.5). Кроме того, еще один внутренний (недоступный пользователю) компаратор отслеживает уровень питающего напряжения, и если последний станет ниже допустимого, то компаратор (при наличии разрешающего сигнала на входе MONEN) осуществит пересброс микроконтроллера.

Еще несколько приятных особенностей имеется у АЦП. Первое — предусилитель с программно устанавливаемым коэффициентом усиления (от 0,5 до 16 с шагом 2, по старту он равен 1). Вторая носит название «оконный компаратор». Это аппаратное устройство, которое может отслеживать, находится ли измеренный при помощи АЦП сигнал внутри окна, границы которого заданы содержимым в соответствующих регистрах, и, если сигнал выйдет за установленные рамки, установится флаг соответствующего прерывания.

Система прерываний микроконтроллеров содержит 19 векторов, в отличие от стандартных пяти у первых х51. Это прерывания, обслуживающие все внутренние аппаратные ресурсы новых микроконтроллеров. Отмечу также, что к двум стандартным добавлено еще 4 дополнительных внешних прерывания.

Рассматриваемые микроконтроллеры (С8051F206, С8051F220/221/226, С8051F230/231/236) имеют 8 Кб программной флэш-памяти (микроконтроллеры старших семейств имеют «на борту» 32–64 Кб). Программирование ее осуществляется через JTAG-интерфейс. Помимо флэш-памяти программ, имеется еще 128 байт флэш-памяти данных. Данные, занесенные в этот сегмент, не теряются при выключении питающего напряжения. Необходимо только учитывать, что хранящиеся во флэш-памяти данные нельзя переписывать так же легко, как и данные в обычном ОЗУ. Перед изменением содержимого ячейки флэш-памяти ее нужно стереть. При этом, правда, стирается содержимое всего сегмента (всех 128 ячеек). Поэтому перед стиранием содержимое этого сегмента нужно переписать в ОЗУ (например, в старшие 128 байт внутренней оперативной памяти данных), там осуществить требуемые изменения, стереть содержимое флэш-памяти данных, после чего вернуть во флэш-память данные из внутренней оперативной памяти. Этот способ работы с флэш-памятью данных, в общем, не так уж и сложен.

Кстати, микроконтроллеры от Сygnal имеют возможность программно изменять содержимое флэш-памяти программ (вдумайтесь в сказанное!). Трудно придумать много случаев, зачем это может быть нужно. Но, по крайней мере, один такой случай имеется — это возможность использования флэш-памяти программ для хранения более чем 128 байт данных, не стирающихся при отключении питания. В общем, у вас может быть в распоряжении и 1, и даже 2 Кб такой флэш-памяти данных, что в некоторых применениях оказывается крайне полезно. Если режим записи во флэш-память активирован, информация в нее заносится командой MOVX, а читается командой MOVC. Кстати, разработчики микроконтроллера также позаботились и о том, чтобы случайный сбой не вызвал изменения содержимого памяти программ — процедура активации разрешения записи информации во флэш-память предусматривает несколько обращений к регистрам, и вероятность подобной последовательности действий при сбое ничтожно мала.

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

Теперь перейдем к обещанным результатам сравнения производительности устройств Cygnal и стандартных МК семейства х51. На рис. 2 представлена пиковая производительность новых контроллеров в сравнении с аналогичным параметром других популярных МК.

Пиковая производительность 25-мегагерцового контроллера компании Cygnal составляет 25 MIPS. Это является следствием того, что простые инструкции в нем выполняются за 1 такт, которых в микросекунде при тактовой частоте МК в 25 МГц ровно 25, не больше и не меньше. У 33-мегагерцового 80С51 от Philips этот параметр, как следует из рис. 2, примерно раз в 8 меньше, а у 12-мегагерцового, если следовать этим цифрам, пиковая производительность должна быть ниже, чем у 33-мегагерцового, еще раза в 2,5–3.

Однако приведенные параметры только качественно отражают ситуацию, показывая, что контроллеры от Cygnal быстрее стандартных изделий от Philips или Atmel. Принимать же во внимание при расчетах численные значения этих параметров я не рекомендовал бы. Реальное быстродействие можно оценить лишь при прогоне на МК фрагментов реальных программ, типичных для многих применений. Собственно, именно это и было сделано.

В качестве теста использовался фрагмент программы реализованного программным образом пи-регулятора. В этом фрагменте выполнялись следующие действия: сравнение двух двухбайтовых чисел, нахождение их разности (это разность между заданной величиной и ее измеренным значением), накопление разности в пятибайтовом «интеграторе» с ограничением накопленного сверху и снизу, многобайтовое умножение и деление накопленной суммы и сложение ее с произведением двухбайтовой константы и разности между заданным и измеренным значениями. Длина программы составляет три с половиной сотни строк на ассемблере, чуть более 500 байт после трансляции. Запущенная на 12-мегагерцовом МК 89С51 от Atmel, она была выполнена за 1,208 мс. Контроллер Cygnal, работающий на тактовой частоте 2 МГц, справился с ней за миллисекунду. Другими словами, при тактовой частоте в 6 раз ниже последний показал производительность в 1,2 раза более высокую, чем стандартный х51. Следовательно, на реальной смеси команд, характерной для типичных вычислительных применений (то есть без обращений к внешней памяти и портам ввода-вывода), микроконтроллеры от Cygnal работают в 7–7,5 раз быстрее, чем стандартные х51 на той же тактовой частоте. С учетом того, что верхняя тактовая частота контроллеров Cygnal составляет сегодня 25 МГц, преимущество их на этой частоте над 12-мегагерцовыми стандартными х51 составит примерно 15 раз, а ожидаемые 33-мегагерцовые изделия от Cygnal и вовсе в два десятка раз обгонят старые добрые 12-мегагерцовые х51. Однако, подчеркну еще раз, это справедливо лишь для типичных вычислительных применений, без обращений к внешней памяти и портам ввода-вывода. Если же такие обращения будут иметь место, прирост производительности окажется, по-видимому, раза в полтора ниже.

На рис. 3 приведен план развития семейства микроконтроллеров фирмы Cygnal.

Таким образом, за счет совершенной архитектуры микроконтроллеры компании Cygnal по производительности не уступают даже 16-разрядным х51-совместимым микроконтроллерам, таким, например, как изделия семейства MCS-251 от Intel. А широкие возможности, малое энергопотребление и приемлемые цены делают изделия от Cygnal весьма интересными для разработчиков.

Литература

  1. О. Николайчук. Семейства х51-совместимых микроконтроллеров фирмы Cygnal // Компоненты и технологии. 2002. № 1.

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

 


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

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