Опубликован: 16.10.2006 | Уровень: для всех | Доступ: свободно | ВУЗ: Национальный исследовательский ядерный университет «МИФИ»
Лекция 12:

Оперативная память

ОЗУ для временного хранения информации

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

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

  • ОЗУ с параллельным или произвольным доступом (это наиболее универсальная схема);
  • ОЗУ с последовательным доступом (это более специфическая схема).

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

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

Можно выделить три основных типа оперативной памяти с последовательным доступом:

  • память типа "первым вошел - первым вышел" ( FIFO, First In - First Out);
  • память магазинного, стекового типа, работающая по принципу "последним вошел - первым вышел" (LIFO, Last In - First Out).
  • память для хранения массивов данных.

Два первых типа памяти подразумевают возможность чередования операций записи и чтения в памяти. При этом память FIFO выдает читаемые данные в том же порядке, в котором они были записаны, а память LIFO - в порядке, обратном тому, в котором они были записаны в память. Память FIFO можно сравнить со сдвиговым регистром, на выходе которого данные появляются в том же порядке, в котором они были в него записаны. А память LIFO обычно сравнивают с магазином для подачи патронов в автомате или пистолете, в котором первым выдается патрон, вставленный в магазин последним. Память с принципом LIFO используется, в частности, в компьютерах ( стек ), где она хранит информацию о параметрах программ и подпрограмм.

Для памяти FIFO требуется хранение двух кодов адреса (адрес для записи и адрес для чтения), для памяти LIFO достаточно одного кода адреса.

Хранение массивов в памяти предполагает, что сначала в память записывается целиком большой массив данных, а потом этот же массив целиком читается из памяти. Эта память также может быть устроена по двум принципам (FIFO и LIFO). В первом случае (FIFO) записанный массив читается в том же порядке, в котором и был записан, во втором случае (LIFO) - в противоположном порядке (начиная с конца). В обоих этих случаях для общения с памятью требуется хранить только один код адреса памяти.

Рассмотрим несколько примеров схем, реализующих перечисленные типы памяти с последовательным доступом.

Функциональная схема памяти типа FIFO

Рис. 12.5. Функциональная схема памяти типа FIFO

На рис. 12.5 представлена функциональная схема памяти типа FIFO на микросхемах с раздельными шинами входных и выходных данных. Адреса памяти задаются двумя счетчиками - счетчиком записи и счетчиком чтения, выходные коды которых мультиплексируются с помощью 2-канального мультиплексора. Запись данных осуществляется по стробу записи "–Зап.", чтение данных - по стробу чтения "–Чт.". Своим задним фронтом сигнал "–Зап." переключает счетчик записи, а задний фронт сигнала "–Чт." переключает счетчик чтения. В результате каждая следующая запись осуществляется в следующий по порядку адрес памяти. Точно так же каждое следующее чтение производится из следующего по порядку адреса памяти.

Перед началом работы необходимо сбросить счетчики в нуль сигналом "Сброс". При отсутствии операций записи и чтения память находится в состоянии чтения (сигнал –WR равен единице), а на адресные входы памяти подается код адреса записи со счетчика записи. При подаче строба записи "–Зап." производится запись входных данных по адресу из счетчика записи. Входные (записываемые) данные должны выставляться раньше начала сигнала "–Зап.", а заканчиваться после этого сигнала. При подаче строба чтения "–Чт." мультиплексор переключается на передачу адреса чтения, и на выходе памяти появляется информация, которая считывается из адреса чтения, задаваемого счетчиком чтения. Действительными выходные (читаемые) данные будут по заднему (положительному) фронту сигнала "–Чт.".

Запись начинается с нулевого адреса памяти и производится по последовательно нарастающим адресам. Точно так же чтение начинается с нулевого адреса памяти и производится по последовательно нарастающим адресам. Операции записи и чтения могут чередоваться. Временные диаграммы циклов записи и чтения показаны на рис. 12.6.

Временные диаграммы циклов записи (а)и чтения (б) для памяти типа FIFO

Рис. 12.6. Временные диаграммы циклов записи (а)и чтения (б) для памяти типа FIFO

В качестве счетчиков можно использовать нужное количество микросхем ИЕ7, в качестве мультиплексора - микросхемы КП11, в качестве памяти - К155РУ7 или любые другие нетактируемые микросхемы памяти с раздельными шинами входных и выходных данных.

Условия правильной работы схемы следующие. Длительность сигнала "–Зап." не должна быть меньше минимально допустимой длительности сигнала –WR памяти. Длительность сигнала "–Чт." не должна быть меньше суммы задержки переключения мультиплексора и задержки выборки адреса памяти. Период следования сигнала "-Зап." не должен быть меньше суммы задержки переключения счетчика записи и длительности сигнала "–Зап.". Период следования сигнала "-Чт." не должен быть меньше суммы задержки переключения счетчика чтения и длительности сигнала "–Чт.".