Описание схемы модуля «Ядро-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» тема следующего рассказа.