21 мар. 2010 г.

Архитектура стенда SDK1.1

Как и было обещано, в этой статье я опишу архитектуру стенда SDK1.1. Начну со структурного описания, затем приведу характеристики стенда и информацию по отдельным узлам SDK1.1. Также будет дано описание используемой модели памяти и регистров ПЛИС.

Структурная схема стенда выглядит вот так:

Как видно, в стенде есть три основных компонента:
  1. Микроконтроллер ADuC812. Выгодно отличается от микропроцессора наличием встроенной периферии, а также малым энергопотреблением, за счет чего его удобно использовать во встраиваемых системах. "Большие" микропроцессоры, наподобие AMD Athlon или Intel Pentium 4 нельзя использовать в этом качестве! Они требуют слишком много энергии, выделяют слишком много тепла и им требуется слишком много дополнительных элементов, чтобы обрести связь с внешним миром.
  2. ПЛИС EPM3064ATC100. ПЛИС расшифровывается как Программируемая Логическая Интегральная Схема. Достаточная информация о ПЛИС приведена в Википедии. В стенде данная микросхема используется как расширитель портов.микроконтроллера - большая часть портов отведена под шины адреса (данных), поэтому периферия (системная консоль, параллельные порты) подключается не напрямую к ADuC812, а к ПЛИС, которая уже через шину адреса/данных подключается к микроконтроллеру. При этом, в адресном пространстве стенда отображаются несколько регистров ПЛИС, через которые можно управлять периферией.
  3. Системная консоль. Разнообразные средства взаимодействия с оператором, перечисленные на схеме.
Разберем теперь каждый элемент более подробно.
Микроконтроллер 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-памяти и т.п.
К ПЛИС, помимо всего прочего, подключается 16 линий параллельного порта. Для принудительного обнуления первых восьми линий используется блок из 8 DIP-переключателей (в верхнем правом углу стенда). Состояние переключателей этого блока отображается в специальном регистре ПЛИС, поэтому, я считаю, эти переключатели относятся еще и к системной консоли, так как через них можно организовать взаимодействие с пользователем.
В пресловутую системную консоль также входят:
  • Пъезоэлектрический звуковой излучатель. Подключен к выходу ЦАП, а также к ПЛИС - как следствие, им можно управлять через один из регистров ПЛИС.
  • Линейка из 8 красных светодиодов. Можно устроить светопреставление светопредставление - со стороны весьма завораживающе выглядит.
  • Матричная клавиатура 4x4. Узнать какая клавиша на ней нажата, можно опять же, через один из регистров ПЛИС.
  • ЖК-дисплей. 2-строчный (каждая строка по 16 символов) и монохромный. Имеет подсветку и встроенный набор символов (ASCII + кириллица).
Также в стенде есть часы реального времени PCF8583 - часы, календарь, будильник, а также целых 240 байт памяти, доступных пользователю! Часы реального времени весьма важная штука для задач встроенного применения. Например, они позволяют следить за течением времени, когда встроенная система отключена по причине неисправности; на основании полученных от них данных система может менять свое поведение после восстановления работы, в зависимости от поставленной задачи. Часы подключаются к микроконтроллеру через шину I2C (читается как ай-два-цэ, а не ай-туси).
Через эту же шину к стенду подключается внешняя 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.