В гл. 5 мы говорили о необходимости схем, предназначенных для хранения последовательностей команд и изменяющейся информации (данных), используемой в процессе обработки. Выпускается несколько разновидностей микросхем полупроводниковой памяти. Некоторые из них обеспечивают постоянное хранение программ и данных, поэтому их называют энергонезависимыми. В энергозависимой памяти при выключении питания ее содержимое теряется.

Несмотря на то что в некоторых специализированных микропроцессорах (рассчитанных, например, на простые и дешевые системы управления) предусматривается небольшая внутренняя память для программ и данных, для большинства микропроцессоров обычно требуется внешняя память. Напомним, что такая память подразделяется на ЗУПВ и ПЗУ.

Память, в которую можно записывать и из которой можно считывать, — это ЗУПВ. Иными словами, мы сами изменяем ее содержимое. Из ПЗУ же можно только считывать информацию; попытка записать в такую память не изменяет ее содержимого. Примерами ПЗУ и ЗУПВ служат компакт-диски и компакт-кассеты, используемые для записи музыки и речи. После записи содержимое компакт-диска изменить нельзя, а содержимое кассеты можно стереть и записать на нее снова.

В микропроцессорных системах для хранения данных применяется малогабаритная и быстродействующая полупроводниковая память. Выпускается несколько типов микросхем ПЗУ для различных целей. В термине ЗУПВ слова «произвольная выборка» просто означают, что в такой памяти одинаково легко осуществляется обращение к любым хранимым в ней данным. В отличие от ЗУПВ имеется память с последовательным доступом, например на магнитной ленте.

6.1. Постоянные запоминающие устройства

Энергонезависимая память в микропроцессорных системах необходима для хранения управляющих программ, операционных систем и интерпретаторов языков программирования высокого уровня. Именно на такие применения и рассчитаны ПЗУ. Если требуется сменить управляющую программу или перейти к другой версии операционной системы, микросхему(ы) ПЗУ следует заменить.

В ПЗУ 8-битного микрокомпьютера примерно 4К байт отводятся для операционной системы, которая обеспечивает ввод с клавиатуры, управляет выводом на дисплей, кассетным накопителем и т. п. Интерпретатор БЕЙСИКа обычно занимает 12К байт. Реализовать ПЗУ емкостью 16К можно на одной микросхеме 16К, двух микросхемах 8К или четырех микросхемах 4К.

Программируемые маской ПЗУ. Если микропроцессорная система рассчитывается на массовый выпуск, например домашний компьютер, наиболее целесообразно применять ПЗУ, программируемые маской или фотошаблоном. Запись в такие устройства осуществляется в процессе производства — хранящиеся данные определяются применяемой маской. Разработчик системы сообщает спецификации содержимого ПЗУ фирме-изготовителю. Поскольку заказ оказывается выгодным только для партии в десятки тысяч микросхем, разработчик должен быть полностью уверен в том, что данные и программы безошибочны и не потребуют изменений.

Программируемые ПЗУ с плавкими перемычками. Такие ПЗУ (ППЗУ) оказываются экономичными при среднем объеме производства, и их программирует сам разработчик. Внутри микросхемы находится матрица из нихромовых или поликремниевых перемычек, которые можно расплавить, подав импульс тока с соответствующими параметрами. Программирование занимает значительное время, но сам прибор (программатор) оказывается простым и относительно недорогим. Довольно часто опытные образцы микропроцессорных систем поставляются с ППЗУ, которые после выявления ошибок и при переходе к массовому выпуску заменяются на ПЗУ.

Стираемые ППЗУ. После программирования изменить содержимое рассмотренных выше микросхем ППЗУ нельзя, т. е. они не допускают стирания содержимого и повторного программирования. В то же время стираемые ППЗУ (СППЗУ) обеспечивают многократные стирание их содержимого и программирование.

В корпусе СППЗУ сделано «окно», через которое на матрицу запоминающих элементов попадает свет. При экспонировании ультрафиолетовым светом в течение нескольких минут хранимые данные стираются. После этого в микросхему с помощью дешевого программатора импульсами тока можно записать новую информацию. Процесс программирования длится несколько минут, однако некоторые программаторы позволяют записывать информацию в несколько микросхем одновременно.

Стираемые ППЗУ удобно применять при мелкосерийном производстве и на этапе проектирования, однако относителыю высокая стоимость устройств препятствует их использованию в серийных изделиях. В табл. 6.1 приведены основные характеристики наиболее популярных микросхем СППЗУ, а разводка контактов их корпусов показана на рис. 6.1.

Рис. 6.1. Разводка контактов распространенных микросхем СППЗУ .

Электрически стираемые ППЗУ. В относительно новых микросхемах электрически стираемых (изменяемых) ППЗУ в отличие от СППЗУ можно стереть содержимое электрическими импульсами; при этом микросхемы не нужно вынимать из гнезд. К сожалению, такие микросхемы довольно дороги и пока не получили широкого распространения, тем более что имеются экономичные КМОП-ЗУПВ, оправдывающие использование батарейного резервного питания.

Не следует полагать, что последние два вида микросхем можно отнести к памяти с записью и считыванием, т. е. к ЗУПВ. Хотя в них реализуются обе операции, следует все же отчетливо представлять себе различие между ними и истинными ЗУПВ, обеспечивающими моментальное изменение содержимого любого байта. Важными характеристиками являются также время и простота репрограммирования микросхем. Типичное время обращения к любому байту в ЗУПВ составляет около 150 нс. Следовательно, все содержимое микросхемы ЗУПВ 8К можно изменить за 150x8192 не (плюс некоторое дополнительное время на действия процессора). Общее время обращения измеряется несколькими миллисекундами.

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

6.2. Запоминающие устройства с произвольной выборкой

Такие устройства необходимы в любой микропроцессорной системе. Часть их памяти используется операционной системой для хранения системных переменных и в качестве рабочей области. Кроме того, ЗУПВ также требуется операционной системе и управляющей программе в целях организации стека для временного хранения данных. Еще одна область ЗУПВ необходима пользователю для его программ и данных. Кроме того, при наличии растрового дисплея часть ЗУПВ выделяется для экранной памяти; обычно при этом применяется точечное отображение, т. е. каждый бит экранного ЗУПВ соответствует конкретной точке на экране (пикселу). Типичное распределение ЗУПВ в 8-битном микрокомпьютере приведено в табл. 6.2.

Биполярные ЗУПВ. Основу биполярных ЗУПВ образует обычный транзисторный триггер, схема которого показана на рис. 6.2.

Такая память потребляет значительную мощность, поэтому емкость ее ограничена. Однако быстродействие биполярных ЗУПВ очень высоко, что объясняет их применение в высокопроизводительных системах и в качестве буферов между быстродействующими устройствами и обычной более медленной памятью.

Рис. 6.2. Элемент биполярной статической памяти.

Статическая NМОП-память. Основным запоминающим элементом статической NMOП-памяти также является триггер (рис. 6.3). Такая память потребляет значительно меньшую мощность, чем биполярные ЗУПВ, что позволяет достичь намного большей плотности упаковки.

Рис. 6.3. Элемент статической NМОП -памяти.

Статическая КМОП-память. Запоминающий элемент статической КМОП-памяти аналогичен элементу статической NМОП-памяти. В режиме пассивного хранения данных КМОП-память потребляет ничтожную мощность, поэтому она применяется в тех системах, которые должны работать от батарейного питания.

Динамическая NМОП-память. Принцип действия динамической NМОП-памяти основан на хранении заряда на конденсаторе, а не на применении триггера. Упрощенная схема элемента динамической NMOП-памяти показана на рис. 6.4.

Рис. 6.4. Элемент динамической NМОП -памяти.

Заряд, имеющийся на конденсаторе С, неизбежно «растекается», поэтому динамическую память необходимо периодически регенерирозать. Процесс регенерации заключается в периодическом считывании хранимых данных с их последующей записью. Регенерацию осуществляет либо микропроцессор, либо микросхема контроллера регенерации динамической памяти.

В табл. 6.3 приведены характеристики наиболее популярных микросхем ЗУПВ.

Разводка контактов некоторых распространенных микросхем ЗУПВ показана на рис. 6.5.

Рис. 6.5. Разводка контактов распространенных микросхем ЗУПВ .

6.3. Дешифрирование адреса

Каждая ячейка полупроводниковых ПЗУ и ЗУПВ имеет свой уникальный адрес: по этому адресу хранится байт, состоящий из 8 бит. Каждая микросхема ПЗУ или ЗУПВ (или банк микросхем ЗУПВ) считается отдельным блоком памяти, размер которого зависит от емкости используемых микросхем. Например, система может иметь ПЗУ 16К и три блока ЗУПВ по 16К (каждый из блоков состоит из восьми микросхем 16КХ1), которые перекрывают весь адресный диапазон 64К. Одно из возможных назначений адресов блокам представлено в табл. 6.4, а соответствующая карта памяти показана на рис. 6.6.

Рис. 6.6. Типичная карта полностью занятой памяти 64К.

Входы и выходы данных микросхем ЗУПВ вместе с выходами данных микросхем ПЗУ подключаются к соответствующим линиям системной шины данных.

Каждая микросхема ЗУПВ имеет 14 входных линий адреса А0—А13 и одну линию выбора кристалла . На линии  активным является сигнал низкого уровня, поэтому для подключения выходов выбранных ЗУПВ или ПЗУ к шине на вход  необходимо подать именно такой сигнал. Кроме того, ко всем микросхемам памяти подключается линия считывания/записи или специальная линия считывания/записи памяти.

Линии адреса всех микросхем ЗУПВ и ПЗУ подключаются к соответствующим линиям шины адреса. Следовательно, если не принять специальных мер, все четыре блока памяти будут выполнять операции считывания и записи одновременно. Конечно же, для этого применяется дешифрирование сигналов на двух старших линиях А15 и А14, чтобы активизировать соответствующие линии . Подходящий способ дешифрирования приведен в табл. 6.5.

Дешифрирование сигналов на двух старших линиях адреса осуществляется простой схемой, показанной на рис. 6.7. Ее можно реализовать на обычных логических элементах или встроить в программируемую логическую матрицу (ПЛМ).

Рис. 6.7. Схема дешифратора адреса.

Для дешифрирования адреса можно использовать также специально предназначенные для этого микросхемы. Их называют дешифраторами или демультиплексорами. Распространенные дешифраторы приведены в табл. 6.6.

На рис. 6.8 показано применение одного из дешифраторов микросхемы 74LS139 в целях формирования четырех сигналов  для ПЗУ и ЗУПВ из предыдущего примера.

Рис. 6.8. Типичный дешифратор адреса с микросхемой 74LS139 .

Отметим, что дешифратор 74LS139 имеет вход разрешения . Его можно использовать для запрещения дешифратора, чтобы сразу запретить обращение ко всей памяти. Такая возможность очень удобна в тех ситуациях, когда в одном и том же адресном пространстве необходимо разместить несколько банков ПЗУ, ЗУПВ и вспомогательные микросхемы.

6.4. Практические схемы ЗУПВ

На рис. 6.9 показана практическая реализация памяти с емкостью 64К из восьми микросхем. Микросхема 6264 имеет организацию 8КХ8, поэтому все пространство памяти 64К разделяется на восемь блоков по 8К (каждый блок соответствует отдельной микросхеме). Дешифрирование адреса осуществляется микросхемой IС9.

Рис. 6.9. Практическая схема ЗУПВ 64К на микросхемах 6264 .

Еще один вариант построения памяти 64К предстален на рис. 6.10. Микросхемы 4864 имеют организацию 64КХ1, поэтому из-за отсутствия «конфликтов» между блоками дешифратор адреса для блоков не нужен. Конечно, в зависимости от типов применяемых микросхем существуют и другие варианты построения памяти (мы привели наиболее распространенные конфигурации).

Рис. 6.10. Практическая-схема ЗУПВ 64К на микросхемах 4864 .

6.5. Поиск неисправностей в полупроводниковой памяти

В операционные системы большинства современных микропроцессорных систем встроены простые диагностические процедуры, выполняемые при запуске системы.

Довольно часто они проверяют функционирование микросхем ПЗУ и ЗУПВ. Для проверки ПЗУ обычно применяется метод нахождения контрольной суммы. Полученная сумма сравнивается с эталонной, и в случае их различия выдается соответствующее сообщение об ошибке.

Для диагностики ЗУПВ применяется совершенно другой метод, связанный с поочередной записью и считыванием каждого байта. При этом контролируется правильность выполнения требуемого изменения. Если какой-то бит не изменяется, диагностическая процедура временно останавливается и выдается идентифицирующее сообщение об ошибке. Обычно показывается адрес неисправного байта, что позволяет выявить конкретную микросхему или банк микросхем.

Более совершенные способы диагностики ЗУПВ включают в себя запись и считывание определенных двоичных наборов по более сложному алгоритму. Диагностику ЗУПВ можно также выполнить на неразрушающейся основе, и считанный из ЗУПВ байт заменяется сразу же после его проверки. При этом появляется возможность осуществить диагностический контроль через некоторое время после инициализации системы.

При наличии диагностических процедур поиск неисправностей в полупроводниковой памяти значительно упрощается. Однако иногда отказ микросхем ПЗУ или ЗУПВ препятствует нормальной инициализации системы, и в такой ситуации следует выполнить действия, описанные в гл. 5.

Обычно отказ отдельных элементов памяти можно обнаружить с помощью диагностических процедур, а затем требуется отыскать отказавшую микросхему. Иногда выход данных микросхемы зависает в том или ином состоянии. Такой отказ легко обнаружить с помощью логического пробника. В других случаях отказ в памяти может быть серьезнее, и отказавшая микросхема начинает потреблять излишнюю мощность, что приводит к ее перегреву. Рекомендуется придерживаться следующей процедуры определения отказа.

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

2. Когда микросхемы ПЗУ или ЗУПВ находятся в гнездах, поочередно вынимайте и заменяйте каждую из них (не забывая, конечно, выключать питание). Пользуйтесь заведомо работоспособными микросхемами. Если микросхемы ПЗУ или ЗУПВ впаяны в печатную плату, для поиска отказавшей микросхемы удобно использовать индикатор тока. С его помощью нужно проверить токи в критических точках печатной платы (например, по линии питания каждой микросхемы). Микросхема, потребляющая значительно больший (или значительно меньший) ток, чем другие, становится подозрительной.

Наконец, в качестве общего правила укажем, что когда подозрительная микросхема выпаяна из печатной платы, настоятельно рекомендуется пользоваться гнездом, а не просто впаивать в плату новую микросхему.