Журнал РАДИОЛОЦМАН, апрель 2012
Tom Starnes
Digi-Key
Сегодня в мире микроконтроллеров безраздельно доминирует Flash-память, однако ее организация становится все более сложной вследствие внедрения последних достижений 32-разрядной архитектуры и расширения набора и функционала периферии. Увлеченность экзотической периферией, которая делает микроконтроллер целой системой-на-кристалле и охватывает области от управления электродвигателями до организации пользовательского интерфейса и построения сетей, может увести внимание разработчика от внутренней памяти микроконтроллера.
Тем не менее, сведения о Flash- и других типах памяти исключительно важны для правильного выбора микроконтроллера под конкретные требования приложения. Быстрое распространение высокоскоростных микроконтроллеров с архитектурой ARM Cortex-M также требует внимательного рассмотрения характеристик встроенной памяти, поскольку каждый производитель использует собственные решения в отношении организации памяти на кристалле, которые могут оказаться определяющими при выборе микроконтроллера.
В наиболее мощных современных микроконтроллерах доступно до 1 МБайт Flash-памяти. Соотношение объемов памяти программ, памяти данных и блокнотного ОЗУ изменилось, так как микроконтроллеры нашли новые ниши приложений и приобрели новую функциональность. Лидирующие модели микроконтроллеров, вероятно, программируются на языке высокого уровня, управляются операционной системой реального времени, а также используют готовые стеки и программные пакеты. Каждый из этих факторов влияет на потребность в памяти и ее использовании.
Типичное время доступа к встроенной Flash-памяти позволяет поддерживать работу на тактовых частотах процессоров от 25 до 50 МГц. Но при высокопроизводительных процессорных ядрах с рабочей частотой свыше 200 МГц могут потребоваться длительные состояния ожидания в операциях чтения/записи, при которых напрасно расходуются время и энергия источника питания. В борьбе с проблемой трафика в загруженных микроконтроллерах могут быть весьма полезными множественные встроенные шины и специальные механизмы маршрутизации.
Архитектура ядра процессора ARM имеет очень хорошую плотность кода благодаря поддержке коротких инструкций Thumb2, требующих для хранения инструкций всего 16 бит, вместо ожидаемых 32. Ядра ARM Cortex-M0, Cortex-M3 и Cortex-M4 очень популярны в микроконтроллерах различных производителей и некоторые подходы к организации их встроенной памяти мы рассмотрим ниже.
NXP Semiconductor LPC4000 – средства обработки данных в реальном времени
Со времени адаптации ядер ARM7TDMI для своих микроконтроллеров, в области приборов на основе ARM NXP Semiconductors достигла впечатляющих успехов. Она очень быстро перешла к использованию ядра ARM Cortex-M и была одним из лидеров интеграции Cortex-M3, Cortex-M0, Cortex-M4 в высокоскоростные микроконтроллеры. NXP одной из первых стала применять сверхширокую организацию Flash-памяти для буферизации выборок из смежных ячеек в целях исключения циклов ожидания.
![]() |
|
Рисунок 1. | Архитектура микроконтроллеров LPC4000. |
Последнее семейство микроконтроллеров LPC4000 (Рисунок 1) интересно по целому ряду причин. Среди них:
- интеграция ядра Cortex-M4 для поддержки цифровой обработки данных,
- векторная (SIMD) архитектура процессора,
- дополнительные инструкции вычислений с плавающей точкой с собственным процессорным ядром Cortex-M0.
Чтобы поддерживать высокую скорость работы микроконтроллера и низкое энергопотребление, компания применила два банка Flash-памяти с 256-битным доступом. Это самая широкая шина памяти в отрасли.
NXP использует довольно простую систему буферов для хранения последних 32 линий, считанных из Flash-памяти, что дает немедленный доступ к недавно выбранным инструкциям. Такая система обеспечивает более последовательный прирост производительности микроконтроллера, чем всякие экзотические схемы. Некоторые алгоритмы замены КЭШа, могут работать за счет сгенерированного компилятором кода, но они трудны в симуляции и отладке.
Два банка изолируют и секционируют Flash-память, и дают абсолютную уверенность в целостности данных, когда при перепрограммировании одного банка памяти приложение продолжает работать с другим банком.
Микроконтроллеры семейства LPC4000 имеют до 1 Мбайт Flash и колоссальный объем SRAM – 264 КБайт. При желании, инструкции могут выполняться непосредственно из SRAM с нулевым временем ожидания – идеальное решение для обработки данных в реальном времени. В микроконтроллере доступно множество блоков SRAM, поэтому различные процедуры и функции ввода/вывода не будут конфликтовать при использовании системной шины.
К микроконтроллерам LPC4000 легко подключается недорогая внешняя Flash-память, позволяющая расширить пространство памяти программ, или даже хранить большие графические изображения с образами экрана. Для более быстрого исполнения коды команд будут сначала копироваться в SRAM. Доступны микросхемы Flash-памяти с интерфейсом SPI, включая Quad-SPI, которые, фактически, могут быть включены в пространство памяти микроконтроллера, и программисту не нужно будет думать, является ли это встроенной памятью, или подключенной по последовательному интерфейсу внешней памятью. Интерфейс SPI Flash (SPIFI) предоставляет 4 потоковых линии к внешней Flash, что позволяет передавать данные графического изображения непосредственно к контроллеру ЖК дисплея с использованием механизма прямого доступа к памяти (DMA) на скорости до 40 Мбит/с.
Ядро Cortex-M0 имеет собственную память программ объемом 8 КБайт, а для обмена со старшим братом Cortex-M4 использует общую область памяти.
Микроконтроллеры LPC4000 имеют также ROM объемом 32 КБайт, в которой содержатся программные драйверы, код загрузчика, и другие полезные утилиты, освобождающие разработчиков от необходимости писать этот код и расходовать столь дефицитный ресурс, каковым является Flash-память. Кроме того, очевидно, что скорость исполнения кода из ROM выше, а затраты энергии ниже. В некоторых микроконтроллерах имеется библиотека функций для деления чисел с плавающей точкой.
В большинстве более ранних микроконтроллеров NXP ARM Cortex, изготавливавшихся по проектным нормам 180 нм или 140 нм, использовалась Flash-память шириной 128 бит. Для своих контроллеров NXP разработала специальную Flash-память с коррекцией одиночных и детектированием двойных ошибок. Сейчас спектр микроконтроллеров включает в себя устройства с ядром Cortex-M0, Cortex-M3 и Cortex-M4, причем выпускаются варианты даже в 16-выводных корпусах, а их стоимость сравнима со стоимостью 8-разрядных микроконтроллеров.