Л.Н. Гумилев атындағы ЕҰҮ Хабаршы - Вестник ЕНУ им.Л.Н. Гумилева, 2010, №6 А.А. Садыков, А.Д. Адамова Элементы памяти микроконтроллеров (Евразийский национальный университет им. Л.Н.Гумилева, г.Астана, Казахстан) Многие современные микроконтроллеры имеют развитую встроенную цифровую и аналоговую периферию. В статье представлен анализ компонентных баз встроенных информационно-управляющих систем, приведены различные интерфейсы ввода-вывода. Одной из наиболее динамично развивающихся областей современной вычислительной техники является микроконтроллерная техника. Без микроконтроллеров сегодня немыслим ни один бытовой прибор, не говоря уже о более сложных изделиях. Сегодняшний микроконтроллер - это достаточно мощный и быстро действующий "интеллектуальный"элемент, как правило, имеющий достаточно высокую производительность, значительные объемы встроенной памяти программ и оперативной памяти, мощное вычислительное ядро с системой команд, ориентированной на решение задач управления и контроля. Многие современные микроконтроллеры имеют развитую встроенную цифровую и аналоговую периферию: подсистемы прерываний, таймеры/счетчики, охранные таймеры, супервизоры питания, широкий набор быстродействующих усовершенствованных последовательных интерфейсов, таких как UART, SPI, SMBus (I2C),CAN, JTAG, аналого-цифровые и цифроаналоговые преобразователи, компараторы, мультиплексоры, масштабирующие усилители и другие узлы. микроконтроллерах используются три вида памяти. Вообще говоря, память программ представляет собой постоянную память, где хранится программный код и константы. Это память не может быть подвергнута каким-либо изменениям в процессе выполнения программ. Так же существует и память данных, где хранятся переменные используемые в ходе выполнения программы. Регистры микроконтроллера - память, включающая внутренние регистры процессора и регистры, служащие для управления периферийными устройствами. В микроконтроллерах используются энергонезависимые виды памяти, т.е. содержимое памяти сохраняется после выключения питания микроконтроллера. Такая память необходима, так как микроконтроллер не содержит в себе каких-либо устройств массовой памяти, с которых производится загрузка программ на компьютерах, программа постоянно хранится в микроконтроллере. В таких случаях обычно служит один из видов постоянной памяти: PROM - однократно программируемое ПЗУ; EPROM - электрически программируемое ПЗУ с ультрафиолетовым стиранием; EEPROM - ПЗУ с электрической записью и стиранием, например FLASH-памяти; ROM - масочно-программируемое ПЗУ. Разрядность 8-, 16-, 32-, 64-бит микроконтроллеров имеют разрядности в соответствии с разрядностью его шины данных. Микроконтроллеры PIC в зависимости от модели используют команды с разрядностью 12, 14 или 16 бит. Микроконтроллеры AVR команда имеет разрядность 16 бит, хотя все эти микроконтроллеры имеют шину данных разрядностью 8 бит. В случае, когда речь идет 8-разрядном устройстве, то это означает разрядность данных, которые способен обработать микроконтроллер. ROM является самым доступным типом постоянной памяти. В основном он применятся для массового производства. Он используется тогда, когда программный код заносится в микроконтроллер на этапе производства. Преобразованная в маску стеклянного-фотошаблона программа используется в процессе создания соединений между элементами, из которых состоит память программ. Поэтому и называют память ROM - масочно-программируемой. Но, учитывая что в последние годы этот тип памяти почти не используют, большим недостатком являются то, что значительные затраты средств и времени уходит на создание нового комплекта фотошаблонов и их внедрение в производство, что является экономически не выгодным процессом, лишь при больших объемах будет целесообразно использовать память ROM. Если рассматривать EPROM, то этот вид памяти состоит из ячеек которые 74 А.А. Садыков, А.Д. Адамова программируются путем электрических сигналов и стираются с помощью ультрафиолетового света. PROM память может быть запрограммирована только единожды, он содержит плавкие перемычки, которые пережигаются во время программирования. Этот вид памяти на сегодняшний день если используют, то очень редко. Ячейка памяти EPROM представляет собой MOS-транзистор с плавающим затвором, который окружен диоксидом кремния (Si O2 ). Сток транзистора соединен с "землей", а исток подключен к напряжению питания с помощью резистора. До записи плавающий затвор не содержит заряда, и MOS-транзистор закрыт. В таком случае поддерживается высокий потенциал, и при обращении к ячейке считывается логическая единица. Программирование памяти сводится к записи в соответствующие ячейки логических нулей. Программирование осуществляется путем подачи на управляющий затвор высокого напряжения (рис 1). Этого напряжения должно быть достаточно, чтобы обеспечить пробой между управляющим и плавающим затвором, после чего заряд с управляющего затвора переносится на плавающий. MOS-транзистор переключается в открытое состояние, прекращая исток с землей. В этом случае при обращении к ячейке считывается логический нуль. Чтобы стереть содержимое ячейки, она освещается ультрафиолетовым светом, который дает заряду на плавающем затворе достаточную энергию, чтобы он мог покинуть затвор. Этот процесс может занимать от нескольких секунд до нескольких минут. Рисунок 1.Ячейка памяти EPROM Рисунок 2. Условно-графическое обозначение EPROM на принципиальных схемах Обычно, микросхемы EPROM производятся в керамическом корпусе с кварцевым окошком для доступа ультрафиолетового света. Такой корпус довольно дорог, что значительно увеличивает стоимость микросхемы. Для уменьшения цены микросхемы EPROM заключают в корпус без окошка (версия EPROM с однократным программированием). Сокращение 75 Л.Н. Гумилев атындағы ЕҰҮ Хабаршы - Вестник ЕНУ им.Л.Н. Гумилева, 2010, №6 стоимости при использовании таких корпусов может быть настолько значительным, что эти версии EPROM в настоящее время часто используются вместо масочно-программируемых ROM. Раньше микроконтроллеры программировались только с помощью параллельных протоколов, достаточно сложных для реализации. В настоящее время протоколы программирования современной EPROM и EEPROM памяти существенно изменились, что позволило выполнять программирование микроконтроллера непосредственно в составе системе, где он работает. Такой способ программирования получил название "in-system programming"или "ISP". ISP-микроконтроллеры могут быть запрограммированы после того, как их припаяли на плату. При этом сокращаются расходы на программирование, так как нет необходимости в использовании специального оборудования - программаторов. Память EEPROM более дорогая, чем EPROM (в два раза дороже EPROM с однократным программированием). EEPROM работает немного медленнее, чем EPROM. Рисунок 3. Условно-графическое обозначение электрически стираемого постоянного запоминающего устройства EEPROM на принципиальных схемах Основное преимущество использования памяти EEPROM заключается в возможности ее многократного перепрограммирования без удаления из платы. В такой памяти ячейка стирается не ультрафиолетовым светом, а путем электрического соединения плавающего затвора с "землей". Использование EEPROM позволяет стирать и программировать микроконтроллер, не снимая его с платы. Это дает огромный выигрыш на начальных этапах разработки систем на базе микроконтроллеров или в процессе их изучения, когда масса времени уходит на многократный поиск причин неработоспособности системы и выполнение последующих циклов стирания-программирования памяти программ. Функционально Flash-память мало отличается от EEPROM. Основное различие состоит в способе стирания записанной информации. В памяти EEPROM стирание производится отдельно для каждой ячейки, а во Flash-памяти стирание осуществляется целыми блоками. Если Вы хотите изменить содержимое одной ячейки Flash-памяти, то Вам потребуется перепрограммировать целый блок (или всю микросхему). В микроконтроллерах с памятью EEPROM можно изменять отдельные участки программы без необходимости перепрограммировать все устройство. При первом знакомстве с описанием микроконтроллера многих удивит малый объем их оперативной памяти данных RAM, который обычно составляет десятки или сотни байт. Если микроконтроллер использует для хранения данных память EEPROM, то ее объем также не превышает нескольких десятков байт. 76 А.А. Садыков, А.Д. Адамова Если программа предназначена для персонального компьютера (PC), то вероятно, возникнет вопрос, что можно сделать с таким маленьким объемом памяти. Вероятно, приложения для PC содержат переменные, объем которых измеряется в килобайтах, не считая используемых массивов данных. При использовании массивов требуемый объем памяти может составлять сотни килобайт. При программировании микроконтроллеров константы, если возможно, не хранятся как переменные. Максимально используются аппаратные возможности микроконтроллеров (такие как таймеры, индексные регистры), чтобы по возможности ограничить размещение данных в RAM. Это означает, что при разработке прикладных программ необходимо предварительно позаботиться о распределении ресурсов памяти. Прикладные программы должны ориентироваться на работу без использования больших массивов данных. Стеки в микроконтроллерах RAM используется для организации вызова подпрограмм и обработки прерываний. При этих операциях содержимое программного счетчика и основных регистров (аккумулятор, регистр состояния, индексные регистры и т.д.) сохраняется и затем восстанавливается при возврате к основной программе. В Принстонской архитектуре RAM используется для реализации множества аппаратных функций, включая функции стека. При этом снижается производительность устройства, так как для доступа к различным видам памяти требуются многократные обращения, которые не могут выполняться одновременно. По этой же причине Принстонская архитектура обычно требует большего количества тактов на выполнение команды, чем Гарвардская. Процессоры Гарвардской архитектуры могут иметь три области памяти, которые адресуются параллельно (в одно и тоже время): память программ, память данных, включающая пространство ввода-вывода, и стек. В Гарвардской архитектуре стековые операции могут производиться в памяти, специально выделенной для этой цели. Это означает, что при выполнении команды вызова подпрограммы "call"процессор с Гарвардской архитектурой выполняет несколько действий одновременно. В Принстонской архитектуре при выполнении команды "call"следующая команда выбирается после того, как в стек будет помещено содержимое программного счетчика. Необходимо помнить, что микроконтроллеры обоих архитектур имеют ограниченную емкость памяти для хранения данных. Превышение этого предела может вызвать проблемы при выполнении программы. Если в процессоре выделен отдельный стек, и объем записанных в него данных превышает его емкость, то происходит циклическое изменение содержимого указателя стека, и указатель стека начинает ссылаться на ранее заполненную ячейку стека. Это означает, что после слишком большого количества команд "call"в стеке окажется неправильный адрес возврата, который был записан вместо правильного адреса. Если микропроцессор использует общую область памяти для размещения данных и стека, то существует опасность, что при переполнении стека произойдет запись в область данных, либо будет сделана попытка записи загружаемых в стек данных в область ROM. На сегодняшний день чтобы удовлетворить запросы потребителей выпускается большая номенклатура микроконтроллеров, которые принято подразделять на 8-, 16- и 32- разрядные. 8-разрядные микроконтроллеры представляют наиболее многочисленную группу этого класса микропроцессоров, которые имеют относительно низкую производительность, которая, вполне может быть достаточна для решения широкого круга задач управления различными объектами. Это простые и дешевые микроконтроллеры, ориентированные на использование в относительно несложных устройствах массового выпуска. Основными областями их применения являются бытовая и измерительная техника, промышленная автоматика, автомобильная электроника и т.д. Для этих микроконтроллеров характерна реализация Гарвардской архитектуры, где используется отдельная память для хранения программ и данных. Для хранения программ в различных типах микроконтроллеров применяется либо 77 Л.Н. Гумилев атындағы ЕҰҮ Хабаршы - Вестник ЕНУ им.Л.Н. Гумилева, 2010, №6 ROM, либо PROM, либо EPROM, EEPROM или FLASH. Внутренняя память программ обычно имеет объем от нескольких единиц до десятков Кбайт. Для хранения данных используется регистровый блок или внутреннее ОЗУ. Микроконтроллеры этой группы обычно выполняют относительно небольшой набор команд, использующих наиболее простые способы адресации. Повысить производительность, помогает реализация принципов RISC архитектуры. 16-разрядные микроконтроллеры в основном являются усовершенствованной моделью своих 8-разрядных прототипов. Они характеризуются расширенной системой команд и способов адресации, увеличен набор регистров и объем адресуемой памяти, а также рядом других возможностей которые способствуют повышению производительности и обеспечению новых областей применения. Обычно эти микроконтроллеры позволяют расширить объем памяти программ и данных с помощью подключения внешних микросхем памяти. В основном реализуется их программная совместимость с младшими 8-разрядными моделями. Сфера применения таких микроконтроллеров - сложная промышленная автоматика, телекоммуникационная аппаратура, медицинская и измерительная техника. 32-разрядные микроконтроллеры содержат высокопроизводительный процессор, соответствующий по своим возможностям младшим моделям микропроцессоров общего назначения. В некоторых случаях процессор, используемый в этих микроконтроллерах, аналогичен с CISC- или RISC-процессорам, которые выпускаются в качестве микропроцессоров общего назначения. Например, в 32-разрядных микроконтроллерах компании Intel используется процессор i386, в микроконтроллерах компании Motorola широко применятся процессор 680х0, в ряде других микроконтроллеров в качестве процессорного ядра служат Risc-процессоры типа PowerPC. Кроме 32-разрядного процессора на кристалле микроконтроллера размещается внутренняя память команд, ее емкость может быть десятки Кбайт, а память данных может быть несколько Кбайт, а так же там могут расположиться таймерный процессор, коммуникационный процессор, модуль последовательного обмена и т.д. микроконтроллеры работают с внешней памятью объемом до 16 Мбайт и выше. Они находят широкое применение в системах управления сложными объектами промышленной автоматики, в контрольноизмерительной аппаратуре и телекоммуникационном оборудовании. СПИСОК ЛИТЕРАТУРЫ 1. Микропроцессорные системы: Учебное пособие для вузов/ Е.К. Александров, Р.И. Грушивицкий, М.С. Куприянов, О.Е. Мартынов; Под общ. ред. Д.В.Пузанкова. СПб.:Политехника, 2002.-953 с. 2. Материалы из Википедии: ru.wikipedia.org 3. Болл Стюарт Р. Аналоговые интерфейсы микроконтроллеров. - М.: Издательский дом "Додэка-ХХI", 2007.- 360с. Садыков Ә.А., Адамова А.Д. Микроконтроллер жадысының элементтерi Мақалада микроконтроллердердегi қолданылатын жадтың әр түрлерi сипатталған. Негiзi ықылас жадтың энергия тәуелсiз түрлерiне бөлiнген: ROM, PROM, EPROM, EEPROM. Онымен қоса, гарвард архитектурасы және пристан архитектурасының микроконтроллерiндегi жадтың қолдануының мәселесi қарастырылған. Sadykov A.A., Adamova A.D. Memory elements of microcontrollers The article describes the different types of memory used in microcontrollers. Emphasis is placed on non-volatile memory types: ROM, PROM, EPROM, EEPROM. Likewise, the problems of memory microcontrollers in the Harvard architecture and Pristanskaya architecture. Поступила в редакцию 12.10.10 Рекомендована к печати 29.10.10 78