Читаем Искусство схемотехники. Том 3 (Изд.4-е) полностью

Память. Получив сигнал начальной загрузки (установка RESET и HALT), МП 68008 обращается к началу памяти с целью извлечения двух важных адресов: 32-разрядного стартового адреса, хранящегося в байтах памяти $04-$07, и начального значения указателя стека, располагающегося в байтах $00-$03. Прочитав эти адреса, МП инициализирует указатель стека, после чего осуществляет переход по стартовому адресу.

Поскольку эти ячейки в начале памяти считываются ЦП еще до загрузки какой-либо программы, эта область памяти должна быть энергонезависимой, т. е. ее содержимое должно сохраняться при полном отключении питания. Естественно использовать здесь РПЗУ (репрограммируемое постоянное запоминающее устройство, см. разд. 11.12), недорогое ПЗУ с байтовой организацией, стираемое ультрафиолетовым облучением. Эти ПЗУ легко распознать по небольшому стеклянному (собственно, кварцевому) окошку, расположенному «на спине» каждой микросхемы. Стирание РПЗУ требует полчаса, а запись-около минуты. Такие ПЗУ могут иметь емкость до мегабита, и данные сохраняются в них дольше, чем будет жить конструируемый вами прибор. Единственный недостаток размещения ПЗУ в начале памяти заключается в том, что там же располагаются разнообразные векторы (прерываний, ошибок шины и других «исключений»), содержимое которых хотелось бы изменять программно.

Решение проблемы может заключаться в использовании варианта РПЗУ, называемого ЭРПЗУ (электрически стираемое репрограммируемое постоянное запоминающее устройство). Можно также организовать двухступенчатый процесс: в ПЗУ постоянно хранятся векторы, указывающие на таблицу переходов в обычной памяти (ОЗУ, см. ниже). Есть, однако, более изящный способ. Вы конструируете схему таким образом, что при загрузке в начале памяти оказывается ПЗУ, но позже оно заменяется (под управлением программы) на обычную память с возможностью записи в нее, т. е. ОЗУ. Посмотрим снова на рис. 11.10. Мы использовали РПЗУ 27256, микросхему с организацией 32Кx8, имеющую, по нынешним стандартам, умеренную емкость. У нее есть 15 адресных входов, 8 трехстабильных выходов данных, вход выбора микросхемы (CS') и вход разрешения выхода (OE'). Каждый адресуемый байт (записанный в микросхему заранее в помощью программатора и более неизменяемый) поступает на линии данных только если установлены оба входа разрешения. Обычно вход CS' устанавливается как можно раньше сигналом с дешифратора адреса, а вход ОЕ стробируется сигналом чтения. В нашем случае память (ПЗУ или ОЗУ) активизируется только если сброшен сигнал А19; другими словами, память располагается в младшей половине адресного пространства. Кроме того, чтение ПЗУ разрешается только если а) установлен сигнал А18 или б) установлен бит BOOT (устанавливается при включении, сбрасывается программой). ОЗУ также располагается в нижней половине адресного пространства, но активизируется только если чтение ПЗУ запрещено. Таким образом, когда выполняется начальная загрузка, триггер BOOT установлен, и в адресном пространстве $0000-$7FFF временно располагается ПЗУ; ОЗУ как бы не существует. Обращение к ПЗУ осуществляется также и в области его «постоянного проживания», по адресам $40000-$47FFF.

Первые 8 байт ПЗУ остроумно запрограммированы так, что осуществляется переход на продолжение программы начальной загрузки, но уже в старшем адресном пространстве, где (среди прочего) очищается порт ЭЛД (адрес $86000). Запись в порт ЭЛД имеет побочный эффект сброса триггера BOOT, в результате чего временный образ ПЗУ в начале адресного пространства замещается образом ОЗУ. Для пояснения сказанного, ниже приведено содержимое первых 24 байт ПЗУ, реализующих описанную процедуру:

Заметьте, что две последние команды выполняются по адресам $40008 и $40010 соответственно благодаря стартовому адресу, извлеченному из ячейки $0004. Подключение микросхемы ОЗУ 8Кx8 осуществляется очень просто. ОЗУ воспринимает младшие 13 бит адреса (8К) и активизируется, когда сигнал А19 снят и ПЗУ отключено. Стробирующие сигналы RD' и WR' подключены ко входам разрешения выхода (OE') и разрешения записи (WE') соответственно. Будем пока считать, что схема декодирования, обозначенная на рис. 11.10 пунктиром, отсутствует. Тогда ОЗУ располагается в самом низу адресного пространства, за исключением момента начальной загрузки, когда оно замещается временным образом ПЗУ.

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже