ОЗУ как информационный буфер
Перед началом работы оба триггера сброшены в нуль, счетчик также сброшен в нуль сигналом «Сброс». Сначала в память записывается передаваемый в сеть массив данных. Запись производится сигналом «-Зап.», задний фронт которого увеличивает выходной код счетчика (адрес памяти) на единицу. После окончания записи массива сигналом «Разр.пер.» разрешается передача массива в сеть. В режиме передачи… Читать ещё >
ОЗУ как информационный буфер (реферат, курсовая, диплом, контрольная)
Второе важнейшее применение микросхем оперативной памяти состоит в организации разнообразных информационных буферов, то есть буферной памяти для промежуточного хранения данных, передаваемых между двумя устройствами или системами. Суть информационного буфера состоит в следующем: передающее устройство записывает передаваемые данные в буфер, а принимающее устройство читает принимаемые данные из буфера (рис. 12.10).
Рис. 12.10. Включение буферной памяти Такое промежуточное хранение позволяет лучше скоординировать работу устройств, участвующих в обмене данными, повысить их независимость друг от друга, согласовать скорости передачи и приема данных.
Пусть, например, в качестве первого устройства выступает компьютер, а в качестве второго — кабель локальной сети. Компьютеру значительно удобнее выдавать данные со скоростью, определяемой его собственным быстродействием, но в локальную сеть надо передавать данные со строго определенной скоростью, задаваемой стандартом на сеть (например, 100 Мбит/с). Кроме того, компьютер, по возможности, не должен отвлекаться на контроль за текущим состоянием сети, за ее занятостью и освобождением. Поэтому буферная память в данном случае необходима. И точно так же она нужна при приеме данных из локальной сети в компьютер.
Главное отличие буферной памяти от памяти для временного хранения информации, рассмотренной в предыдущем разделе, состоит в том, что к информационному буферу всегда имеют доступ не одно внешнее устройство, а два (или даже более). Из-за этого иногда существенно усложняется как схема задания адреса микросхемы памяти, так и схема разделения потоков данных (записываемых в память и читаемых из памяти).
Информационные буферы могут обеспечивать периодический обмен между устройствами или непрерывный обмен между ними. Примером буфера с непрерывным режимом обмена может служить контроллер видеомонитора, информация из которого постоянно выдается на видеомонитор, но может изменяться по инициативе компьютера.
Информационные буферы с периодическим режимом обмена могут быть организованы по типу FIFO или по типу LIFO.
В случае FIFO массив данных читается из памяти одним устройством в том же порядке, в каком он был записан в память другим устройством. Выпускаются даже специальные микросхемы быстродействующей буферной памяти типа FIFO, которые не имеют адресной шины и представляют собой, по сути, многоразрядный сдвиговый регистр. В отличие от обычной микросхемы сдвигового регистра, где читать вдвигаемую информацию можно только тогда, когда она продвинется по всем ячейкам регистра, информацию с выходов буфера FIFO можно начинать читать с выходов сразу же после того, как она начала записываться в его входы. Но мы будем рассматривать здесь только буферы на обычных, традиционных микросхемах памяти, как более универсальные.
В случае информационного буфера LIFO массив данных читается из памяти в порядке, противоположном тому, в котором он был записан в память. Такое решение иногда позволяет проще организовать схему перебора адресов памяти.
Тем самым, разнообразие информационных буферов огромно. Мы же рассмотрим здесь всего три примера схем буферной памяти.
Первая схема — это простейший однонаправленный буфер с периодическим режимом обмена по принципу FIFO (рис. 12.12). Одно устройство записывает информацию в буфер, на другое устройство выдается информация из буфера. Память всегда записывается полностью, по всем адресам, и читается также полностью. Строб записи «-Зап.» поступает в режиме записи с частотой, необходимой для записи, строб чтения «-Чт.» поступает при чтении с частотой, необходимой для чтения. Шины данных для записи и чтения в память в случае, показанном на рисунке, отдельные.
При таких условиях необходим всего лишь один счетчик для перебора адресов памяти, причем счетчик, работающий только в режиме прямого счета и имеющий вход начального сброса в нуль.
Рис. 12.12. Однонаправленный буфер типа FIFO.
Перед началом работы устройство, производящее запись в память, сбрасывает счетчик в нуль сигналом «-Сброс» и устанавливает режим записи в память, перебрасывая в нуль управляющий триггер (единица на инверсном выходе). Затем начинается процесс записи: записываемые данные поступают с однонаправленного входного буфера (АП 5) и записываются в память сигналом «-Зап.», который своим задним фронтом переключает адреса памяти. Полная процедура записи включает в себя столько циклов записи, сколько имеется ячеек у используемой памяти.
После окончания процедуры записи устройство, производившее запись, разрешает чтение из памяти, устанавливая в единицу триггер положительным фронтом сигнала «Пуск» (нуль на инверсном выходе). При этом разрешается прохождение сигнала «-Чт.». Адреса памяти переключаются по заднему фронту сигнала «-Чт.», и по этому же фронту данные, читаемые из памяти, фиксируются в выходном регистре, срабатывающем по фронту (например, ИР 27). Выходной регистр выполняет две функции: он не пропускает на выход данные, записываемые в память (по сигналуWE запрещается запись в триггер), а также обеспечивает одновременность изменения всех разрядов читаемых данных. Выходная информация из-за этого регистра задерживается на один период сигнала «-Чт.», что необходимо учитывать. Если взять регистр со входом сброса в нуль, то можно сделать, чтобы при процедуре записи в память на выходе схемы был нулевой код.
После окончания чтения всего объема памяти вырабатывается сигнал переноса счетчикаР, который снова переводит всю схему в режим записи, сбрасывая триггер в нуль (единица на инверсном выходе). После этого записывающее внешнее устройство снова может начинать процедуру записи в память.
Условия правильной работы схемы следующие. Длительность сигнала «-Зап.» не должна быть меньше минимальной длительности сигналаWR памяти. Период следования сигналов «-Зап.» не должен быть меньше суммы длительности сигнала «-Зап.» и задержки переключения счетчика. Период следования сигналов «-Чт.» не должен быть меньше суммы времени выборки адреса памяти и задержки переключения счетчика. Память должна быть нетактируемой (например, КР 541РУ 2).
Более сложную структуру имеет двунаправленный буфер с периодическим режимом обмена типа LIFO. Он позволяет выдавать и принимать массивы данных произвольной длины (а не фиксированной длины, как в предыдущем случае) с заданной скоростью. Такая задача возникает, в частности, при проектировании адаптеров локальных сетей. Несмотря на то, что данные читаются из буфера в порядке, обратном тому, в котором они были записаны в буфер, на обмене информацией между двумя буферами это никак не отражается.
Пусть, например, устройство 1 передает информацию в устройство 2, а в качестве промежуточного устройства (устройство 3) выступает кабель сети (рис. 12.13).
Рис. 12.13. Обмен между двумя устройствами через два буфера типа LIFO.
Устройство 1 записывает в буфер 1 массив в прямом порядке, буфер 1 выдает этот массив в устройство 3 (сеть) в обратном порядке, буфер 2 принимает массив из сети в обратном порядке, а устройство 2 читает принятую информацию опять же в прямом порядке: то есть читается информация в том же порядке, в каком она и писалась. То же самое происходит и при передаче информации из устройства 2 в устройство 1.
Схема буфера LIFO (рис. 12.14) включает в себя, помимо памяти и двунаправленного буфера, реверсивный счетчик (типа ИЕ 7) и реверсивный регистр сдвига (типа ИР 24), служащий для преобразования параллельного кода в последовательный при передаче в сеть и последовательного кода в параллельный при приеме из сети. Режимы работы буфера задаются двумя триггерами, один из которых разрешает режим передачи в сеть, а другой — режим приема из сети.
Рис. 12.14. Двунаправленный буфер типа LIFO.
Перед началом работы оба триггера сброшены в нуль, счетчик также сброшен в нуль сигналом «Сброс». Сначала в память записывается передаваемый в сеть массив данных. Запись производится сигналом «-Зап.», задний фронт которого увеличивает выходной код счетчика (адрес памяти) на единицу. После окончания записи массива сигналом «Разр.пер.» разрешается передача массива в сеть. В режиме передачи по сигналу строба передачи (TxC) перебираются адреса памяти в обратном порядке (счетчик работает в режиме обратного счета). Данные, читаемые из памяти, записываются в сдвиговый регистр и выдаются в сеть в последовательном коде (TxD). После того как счетчик досчитает до нуля, вырабатывается сигнал переноса <0, который сбрасывает в нуль триггер передачи. То есть в сеть выдается весь массив, записанный в память, независимо от его длины, причем массив выдается в обратном порядке.
В режиме приема информации из сети записывается единица в триггер разрешения приема по сигналу «Разр. пр.». Принимаемые из сети данные в последовательном коде RxD записываются в сдвиговый регистр, а из него уже в параллельном коде — в память. Запись производится по сигналу строба приема RxC, задним фронтом которого переключается счетчик, работающий в режиме инверсного счета. После окончания приема по сигналу «Конец приема» сбрасывается триггер разрешения приема. После этого производится чтение информации из памяти по сигналу «-Чт.». Задним фронтом этого сигнала переключается счетчик, работающий в режиме прямого счета. То есть массив читается в порядке, обратном тому, в котором он пришел из сети.
Условия правильной работы данной схемы аналогичны тем, что были сформулированы для предыдущих рассмотренных схем буферов. Сигналы стробов записи и чтения должны иметь такую длительность, чтобы осуществлять соответственно запись в память и чтение из памяти. Период следования этих сигналов должен быть таким, чтобы успевали производиться операции записи и чтения, а также успевал переключаться счетчик.
Наконец, последняя схема, которую мы рассмотрим, это буфер с непрерывным режимом работы: с одним из устройств такой буфер общается непрерывно, а с другим — только в момент обращения со стороны этого устройства. В данном случае уже необходимо иметь два счетчика адреса памяти, выходные коды которых надо мультиплексировать с помощью мультиплексора.
Примем для простоты, что буфер — однонаправленный и передающий, то есть одно устройство только записывает в память информацию (в нужные моменты), а на другое устройство постоянно выдается читаемая из всех подряд адресов памяти информация (рис. 12.15).
Рис. 12.15. Передающий буфер с непрерывным режимом работы Счетчик чтения непрерывно перебирает адреса памяти с частотой тактового генератора. Читаемая из памяти информация записывается в выходной регистр и выдается на выход. В момент записи по сигналу «-Зап.» мультиплексор подает на адресные входы памяти выходной код счетчика записи. На память подается сигналWR, вложенный в сигнал «-Зап.» (он начинается после начала сигнала «-Зап.» и заканчивается раньше этого сигнала). Это достигается применением цепочки из двух инверторов и элемента 2И-НЕ. Такая последовательность сигналов позволяет записать в память входные данные по адресу записи со счетчика записи и не изменять содержимое ячеек памяти с другими адресами.
Перед началом записи памяти счетчик записи сбрасывается в нуль по сигналу «Сброс». После каждой операции записи по заднему фронту сигнала «-Зап.» код на выходе счетчика записи увеличивается на единицу. То есть для того чтобы записать всю память, необходимо сбросить счетчик и произвести столько циклов записи, сколько ячеек имеется в памяти.
Условия правильной работы схемы следующие. Счетчики должны быть синхронными для быстрого переключения. Память должна быть нетактируемая и с раздельными входами и выходами данных. Емкость конденсатора должна быть такой, чтобы формируемый импульсWR имел достаточную длительность для записи информации в память. За длительность сигнала «-Зап.» должен успеть сработать мультиплексор, и должна записаться информация в память. Выходной регистр должен срабатывать по фронту. Длительность периода тактового сигнала должна быть не меньше суммы задержки выборки адреса памяти и задержки переключения счетчика чтения. За период следования сигнала «-Зап.» должна успеть записаться информация в память, и должен переключиться счетчик записи.
Недостаток приведенной организации буфера состоит в том, что при проведении цикла записи в память на выходе схемы будет не та информация, которая должна читаться из памяти в данный момент. Преодолеть этот недостаток можно двумя путями.
Первый путь состоит в том, что надо производить запись в память только в те моменты, когда выходная информация буфера не важна. Например, если речь идет о буфере контроллера видеомонитора, то запись в память можно производить только во время кадрового гасящего импульса, когда на экране ничего не отображается.
Второй путь более сложен. Он состоит в том, чтобы разделить во времени запись в память и чтение из памяти. Например, в первой половине такта (то есть периода тактового генератора) производится запись в память (если есть внешний сигнал записи), а во второй половине такта всегда производится чтение информации из памяти и запись ее в выходной регистр. Соответственно мультиплексор в первой половине периода подает на адресные входы памяти адрес записи, а во второй половине — адрес чтения. Временную привязку момента записи к ближайшей первой половине такта можно осуществить с помощью микропрограммного автомата. При таком решении запись в память можно производить в любой момент без искажения читаемой информации, однако существенно (минимум вдвое) возрастают требования к быстродействию всех микросхем.