Структурная схема стенда выглядит вот так:
Как видно, в стенде есть три основных компонента:
- Микроконтроллер ADuC812. Выгодно отличается от микропроцессора наличием встроенной периферии, а также малым энергопотреблением, за счет чего его удобно использовать во встраиваемых системах. "Большие" микропроцессоры, наподобие AMD Athlon или Intel Pentium 4 нельзя использовать в этом качестве! Они требуют слишком много энергии, выделяют слишком много тепла и им требуется слишком много дополнительных элементов, чтобы обрести связь с внешним миром.
- ПЛИС EPM3064ATC100. ПЛИС расшифровывается как Программируемая Логическая Интегральная Схема. Достаточная информация о ПЛИС приведена в Википедии. В стенде данная микросхема используется как расширитель портов.микроконтроллера - большая часть портов отведена под шины адреса (данных), поэтому периферия (системная консоль, параллельные порты) подключается не напрямую к ADuC812, а к ПЛИС, которая уже через шину адреса/данных подключается к микроконтроллеру. При этом, в адресном пространстве стенда отображаются несколько регистров ПЛИС, через которые можно управлять периферией.
- Системная консоль. Разнообразные средства взаимодействия с оператором, перечисленные на схеме.
Микроконтроллер ADuC812 имеет вычислительное ядро, основанное на Intel 8051 - как следствие, ему присуща архитектура MCS51, схожее распределение памяти, схожие регистры и т.п. Если вы уже имели удовольствие программировать под эту архитектуру (особенно под началом Владимира Ивановича Скорубского), то с ADuC812 вы справитесь без проблем :-).
Помимо вычислительного ядра в микроконтроллер входит:
- 8-и канальный аналого-цифровой преобразователь (АЦП)
- 2-х канальный цифро-аналоговый преобразователь (ЦАП). Посредством специальных DIP-переключателей на стенде, может объединять свой выход со входом АЦП, для отладки работы последнего (удобно, когда под рукой нет генератора сигналов)
- 3 16-разрядный таймера (счетчика)
- EEPROM данных размером 640 байт. Имеет страничную организацию - 160 страниц по 4 байта. EEPROM - это энергонезависимая память, стираемая электрически.
- Flash память программ размером 8 килобайт. Flash-память тоже энергонезависима и стирается электрически, но в отличие от EEPROM она позволяет стирать информацию только всю сразу или целыми большими блоками. Это, а также ее относительная дешевизна, по сравнению с EEPROM, сделали Flash-память идеальной для хранения редко меняемых, но часто используемых программ. В стенде, в этой памяти хранится загрузчик программ пользователя (в виде скомпилированных исполняемых файлов) во внешнюю память.
- ОЗУ данных (256 байт)
- Контроллер SPI/I2C (специальные последовательные протоколы передачи данных, для обмена оными между микроконтроллером и периферией).
- UART - специальное устройство, преобразующее данные из параллельной формы в последовательную (и наоборот). В стенде используется для обеспечения работы со стандартом последовательной передачи данных RS-232.
- 4-линейный параллельный порт для отлова прерываний, исполнения обязанностей счетного входа и т.п. Имеет свой блок из четырех DIP-переключателей (расположен в верхнем правом углу стенда), замыкающих выводы порта на корпус - нужно для генерации прерываний, счета импульсов и т.п.
- Всякая мелочь, наподобие контроллера системной шины, программатора для Flash-памяти и т.п.
В пресловутую системную консоль также входят:
- Пъезоэлектрический звуковой излучатель. Подключен к выходу ЦАП, а также к ПЛИС - как следствие, им можно управлять через один из регистров ПЛИС.
- Линейка из 8 красных светодиодов. Можно устроить
светопреставлениесветопредставление - со стороны весьма завораживающе выглядит. - Матричная клавиатура 4x4. Узнать какая клавиша на ней нажата, можно опять же, через один из регистров ПЛИС.
- ЖК-дисплей. 2-строчный (каждая строка по 16 символов) и монохромный. Имеет подсветку и встроенный набор символов (ASCII + кириллица).
Через эту же шину к стенду подключается внешняя EEPROM объемом 128 байт. Имеет страничную организацию - 16 страниц по 8 байт каждая.
Стенд может общаться с компьютером по протоколу RS232 через COM-порт. Такая возможность обеспечивается UART'ом и драйвером RS232 с гальванической изоляцией.
Гальваническая изоляция служит для, как ни странно, изолирования между собой стенда и персонального компьютера. В случае внезапного пробоя на корпус ваша техника и вы останетесь живы. Кроме того, гальваническая изоляция может использоваться, когда нужно соединить между собой две схемы, имеющие различные уровни рабочего напряжения. В стенде SDK1.1 для гальванической изоляции используются оптопары.
Драйвер RS232 осуществляет генерацию стартовых и стоповых битов и контроль за ошибками. Таким образом, нам не нужно возлагать эту работу на микроконтроллер - все сделает отдельная микросхема на плате.
Остался без внимания лишь один элемент, столь же важный, как и микроконтроллер - память.
В стенде конечно же используется модель памяти стандартная для архитектуры 8051 (банки регистров, SFR и т.п.), но ее рассмотрение выходит за рамки данной статьи. Далее будет описываться внешняя по отношению к микроконтроллеру память, отмеченная на схеме как SRAM.
Вначале я сделаю небольшое отступление и расскажу про два основных типа памяти - SRAM и DRAM. Память типа DRAM - "классическая" компьютерная память, скорее всего именно она используется в качестве оперативной памяти в вашем компьютере. Эта память еще называется "динамической" памятью и свое название она заслужила за счет конденсаторов, представляющих минимальные запоминающие элементы памяти. Эти конденсаторы нужно постоянно подзаряжать, иначе информация, накопленная в них, теряется. Как следствие, память типа DRAM имеет повышенное энергопотребление и сложную схему "подзарядки" - регенерации.
В противовес ей, память типа SRAM (называемая еще "статической") не требует перезарядки, потому что построена на триггерных ячейках, а не на конденсаторах. Но к сожалению, эта память дороже DRAM, поэтому используется она не так повсеместно, как хотелось бы. Впрочем, для встраиваемых устройств SRAM вполне подходит.
Максимальный объем используемой в стенде памяти: 512 Кб - шина адреса, подходящая к памяти, имеет 19 разрядов. Используется страничная организация памяти - 8 страниц по 64 Кб каждая.
Память распределена следующим образом:
В начало нулевой страницы памяти отображается содержимое Flash-памяти микроконтроллера ADuC812. Оставшееся пространство (52 Кб) доступно для размещения как программ, так и данных. Фактически, туда загружается пользовательская программа, прошиваемая в стенд через COM-порт инструментальными средствами. Оставшаяся часть нулевой страницы зарезервирована загрузчиком (HEX202), который обеспечивает прием и загрузку в память программы пользователя.
Оставшиеся семь страниц можно использовать только под данные.
Существует еще "виртуальная" восьмая страница. На самом деле ее нет в SRAM, поскольку под нее просто нет места. В младшие восемь адресов этой страницы отображаются регистры ПЛИС, предназначенные для работы с периферийными устройствами:
- Регистр клавиатуры
- Регистр шины данных ЖК-дисплея
- Регистр данных параллельного порта [0..7]
- Регистр данных параллельного порта [8..15]
- Регистр управления портами ввода-вывода, звуком, сигналом INT0 и прерыванием от клавиатуры
- Регистр управления ЖК-дисплеем
- Регистр управления светодиодами
В следующей статье, на основе знаний полученных в этой статье, будет рассмотрена принципиальная схема стенда SDK1.1.