Описание схемы модуля «Ядро-51»

Александр Бельченко
8 сентября 2003
Итак, продолжаем начинать. Сегодня я расскажу о том, как работает схема модуля «Ядро-51». Перед тем как перейти к программированию этого модуля, необходимо четко представлять, с чем мы имеем дело.

Схема процессорного модуля «Ядро-51» типична для большинства систем, построенных на основе микроконтроллеров семейства MCS-51. В модуле собран тот минимальный набор, который позволяет работать с микроконтроллером 8051: собственно сам микроконтроллер D1 в корпусе DIP40 (как самый распространенный до недавнего времени; вторым достоинством такого корпуса есть легкость монтажа в радиолюбительских конструкциях). Для генерации тактовой частоты микроконтроллера используется внешний кварц Q1 частотой 11,0592 МГц. Такая частота кварца выбрана не случайно — она позволяет получать наиболее точные значения для скорости обмена по интерфейсу RS-232. Максимально возможная скорость — 57600 бит/с. Схема сброса микроконтроллера выполнена на RC-цепочке R1 C3. Диод V1 играет защитную роль. На контакты джампера JP1 можно подключать внешнюю кнопку сброса.

На микросхеме D2 собрана защелка младших адресов: при обращении к внешней памяти данных или программ, младшие 8 бит адреса защелкиваются по сигналу ALE (выв. 30 D1). Внешняя память данных собрана на микросхеме D4 статической памяти объемом 32К. Память можно использовать любую со временем чтения/записи не более 90...100нс.

В качестве внешней памяти программ используется микросхема ПЗУ D3 объемом 8К или 32К. Выбор того или иного типа ПЗУ производится при помощи джампера JP3: если перемычка в положении 1-2, то используется ПЗУ 32К; если же перемычка в положении 2-3, то используется ПЗУ 8К. Следует заметить, что внешняя память программ D3 необходима лишь в том случае, когда микроконтроллер D1 не имеет внутри встроенного ПЗУ для программы (т.е. используется микроконтроллер типа 80C31/80C32 или отечественный аналог К1816ВЕ31). В случае если внешняя память программ D3 не используется и микроконтроллер работает со своей встроенной памятью программ, должна быть установлена перемычка на джампер JP2.

Если у вас нет специального программатора для программирования микросхем ПЗУ, то для вас лучшим вариантом будет использовать микроконтроллер типа AT89S8252 (производства фирмы Atmel). Этот микроконтроллер совместим по архитектуре с семейством 8052, имеет 8К памяти программ на кристалле, и имеет возможность программирования по последовательному интерфейсу. Для его программирования можно использовать простой программатор «ПониПрог».

Микросхема D7 представляет собой преобразователь уровней TTL/RS232. Через этот преобразователь встроенный UART микроконтроллера может обмениваться данными с СОМ-портом компьютера.

Большое число различных фирм выпускают микросхемы преобразователей уровней TTL/RS232 (MAX232, ADM232, HIN232 и т.п.). Названия микросхем незначительно отличаются от фирмы к фирме, но общим остается в названии одно: число 232. Как легко догадаться, число 232 указывает на то, что это преобразователь уровней для интерфейса RS232.

Теперь разберемся со схемой имитации фон-неймановской памяти на микросхемах D5 и D6.

Те, кто знаком с архитектурой микроконтроллеров семейства MCS-51, знают, что эти микроконтроллеры построены по Гарвардской архитектуре, которая подразумевает раздельные области памяти для данных и для программ. В дополнение к этому, возможности изменять память программ не имеется (что вполне логично — изменить содержимое ПЗУ без специального программатора обычно очень сложно).

Схема на микросхемах D5 и D6 преобразует раздельное (гарвардское) пространство внешней памяти данных и программ в единое (фон-неймановское). При этом ОЗУ D4 выступает в двух ролях: как память данных, расположенная по адресам 0x0000…0x7FFF (младшие 32К памяти данных, сигнал RD_DM), и как память программ, расположенная по адресам 0x8000…0xFFFF (старшие 32К памяти программ, сигнал RD_PM). Обращения к младшим 32К памяти программ направляются на микросхему ПЗУ D3 (сигнал CS_ROM).

Таким образом, у самого микроконтроллера появляется возможность модифицировать часть памяти программ — записывать новую программу и запускать ее выполнение. Эти операции должна делать специальная программа-загрузчик, изначально записанная в ПЗУ памяти программ микроконтроллера. Я написал такую программу-загрузчик, которая позволяет по командам от компьютера через интерфейс RS-232 писать/читать ОЗУ и запускать пользовательскую программу на исполнение с адреса 0x8000. Кроме того, после сброса микроконтроллера программа-загрузчик анализирует состояние вывода P3.5/T1 (выв.15 D1). Если на этом выводе будет присутствовать уровень лог. «0», то программа-загрузчик сделает попытку запуска пользовательской программы с адреса 0x8000. Для формирования условия автозапуска предназначен джампер JP4 — когда он замкнут, то подает на вывод P3.5/T1 уровень логического нуля. Функция автозапуска удобна в том случае, если в качестве микросхемы ОЗУ использовать специальную энергонезависимую память. В этом случае пользовательская программа будет сохраняться в энергонезависимой памяти после выключения питания модуля. Соответственно, необходимость перезагрузки программы с компьютера при каждом включении отпадает, и модуль приобретает достаточную автономность.

Рассмотрение программы-загрузчика для модуля «ядро-51» — тема следующего рассказа.