Татьяна Мамаева,
к. т. н.
IDT: Память FIFO и ее применение
1. Сравнительный анализ
памяти FIFO, RAM и ROM
Характерной особенностью памяти FIFO по сравнению с обычной памятью RAM или ROM является отсутствие адресных линий. Базовая архитектура FIFO представлена в виде массива (RAM ARRAY) с перемещаемыми при считывании и записи указателями начала (READ POINTER) и конца (WRITE POINTER) свободного пространства памяти (рис. 1). Преимуществом такого способа организации памяти является выводная совместимость микросхем FIFO, имеющих разную информационную емкость.
Другим отличительным свойством памяти FIFO является наличие отдельного порта для чтения и отдельного — для записи данных. Благодаря наличию указателей и двухпортовой структуре памяти FIFO, стробы считывания и записи данных могут поступать на одноименные входы микросхемы в произвольном порядке. И если в памяти RAM операции чтения и записи данных выполняются строго последовательно во времени, то в памяти FIFO допускается выполнение записи и считывания в независимых друг от друга асинхронных режимах.
Недостатком FIFO является то, что содержимое уже прочитанной ячейки памяти может быть автоматически замещено новым значением, тогда как в RAM или ROM содержимое ячеек может быть изменено только путем непосредственной адресации и записи в них новых значений. Для предотвращения непредусмотренной потери данных в состав микросхем памяти FIFO введены флаги заполненности. В процессе функционирования память FIFO может находиться в одном из следующих возможных состояний: «нормальная работа», «буфер пуст», «буфер почти пуст», «буфер заполнен на 1/2 от максимального размера пространства памяти», «буфер почти полон», «буфер полон». Флаги заполненности являются индикаторами этих состояний и позволяют внешним устройствам осуществлять гибкий контроль над потоками считываемых или записываемых данных. С целью обеспечения помехоустойчивой передачи данных в канале связи, в состав большинства современных микросхем памяти FIFO добавлена функция повторного считывания данных из буфера, начиная с первого слова. Расширением этой функции является возможность повторного считывания произвольного сегмента памяти путем пользовательской установки указателя начала записи.
Рис. 1. Базовая архитектура памяти FIFO
Общими характеристиками памяти FIFO, RAM и ROM, принимаемыми в расчет на этапе проектирования, остаются быстродействие, разрядность слова и информационная емкость. Быстродействие характеризуют временем цикла считывания или записи, разрядность определяют числом бит в слове чтения или записи, информационную емкость характеризуют числом единиц информации в битах или словах, которое микросхема памяти может хранить одновременно.
2. Классификация памяти
FIFO производства IDT Inc.
Все устройства FIFO можно подразделить на классы, определяемые по способу воздействия входных управляющих сигналов (асинхронная и синхронная память) и по способу управления передачей данных (однонаправленная и двунаправленная память). В качестве подкласса асинхронной памяти можно выделить микросхемы Serial-to-Parallel FIFOs (последовательная запись/параллельное считывание) и Parallel-to-Serial FIFOs (параллельная запись/последовательное считывание). В микросхему Parallel-to-Serial FIFO данные записываются всеми разрядами одновременно, а считываются с одного выхода последовательно во времени. По аналогии осуществляется обращение к данным в микросхеме Serial-to-Parallel FIFO. Классификацию устройств памяти
FIFO, производимых корпорацией IDT, можно представить в следующем виде:
Асинхронная память
- семейство Asynchronous x9 и Asynchronous Dual x9
256…64Kx9;
- семейство Specialty FIFOs
Parallel-to-Serial FIFOs 256…1Kx16, 1K…4Kx9
Serial-to-Parallel FIFOs 2K…4Kx9
Low Density 64x4, 64x5
Синхронная память
- семейство Super Sync II (133 МГц)
512…64Kx72
512…128Kx36
8K…256Kx18
16K…512Kx9
- семейство Super Sync (100 МГц)
8K…256Kx18
16K…512Kx9
- семейство Sync FIFO и Synchronous Dual x9, x18 (100 МГц)
64…128Kx36
256…4Kx18
64…8Kx9
Двунаправленная память
- семейство Bi-directional Asynchronous FIFOs x18
512…1Kx18(x2)
- семейство Bi-directional Synchronous FIFOs x18
256…512x18(x2)
- семейство Bi-directional Synchronous FIFOs x36
64…64Kx36(x2)
Рис. 2. Структура асинхронной памяти FIFO
3. Принцип работы
асинхронной памяти FIFO
В асинхронной памяти FIFO операции записи и чтения из памяти производятся сигналами W' и R' соответственно (рис. 2). Запись информации осуществляется через порт DATA IN, а считывание — через порт DATA OUT с тремя состояниями. В структуре памяти предусмотрена схема формирования флагов заполненности FF' и EF'.
Рис. 3. Временные диаграммы циклов записи и чтения
Для успешной работы интерфейса памяти FIFO большое значение имеют временные соотношения между сигналами. На рис. 3 показаны типичные временные диаграммы циклов записи и чтения данных. В цикле записи внешнее устройство выставляет записываемые данные на линиях D0–D8 и сопровождает их стробом записи W'. Данные должны быть установлены за время tDS до прихода фронта сигнала W'. В цикле чтения информация на выходной шине данных Q0–Q8 появляется через время tA после спада сигнала R'.
Рис. 4. Временные диаграммы переключения флагов заполненности
Состояния флагов заполненности FF' и EF' определяются на основе сопоставления значений указателей. Активный уровень на выходе EF' устанавливается в том случае, если разность между значениями указателей начала и конца записи равна нулю, и информирует о неготовности выхода к считыванию следующего слова. Активный уровень на выходе FF' устанавливается, если эта разность соответствует значению максимального размера памяти FIFO, и информирует о неготовности входа принять для записи следующее слово.
Рис. 5. Структура синхронной памяти FIFO
На рис. 4 приведены временные диаграммы переключения флага EF' («буфер пуст»). Сигнал на выходе EF' становится активным через время tREF после прихода спада сигнала на входе R' при чтении последнего записанного слова из памяти.
Рис. 6. Временные диаграммы циклов записи и чтения
Как видно из временных диаграмм, следующий цикл чтения из памяти игнорируется. Через время tWEF после записи в память нового слова состояние флага EF' восстанавливается и принимает уровень логической «1». По состоянию сигналов на выводах EF' или EF' внешние управляющие устройства определяют, возможно ли обращение к буферу памяти для записи или считывания данных.
Если буфер FIFO пуст, то игнорируется чтение, в противном случае игнорируется запись. В асинхронной памяти FIFO длительность активного сигнала на выходе EF' непосредственно зависит от временного соотношения между сигналами W' и R'. В большинстве схемных реализаций сами флаги заполненности используются для управления прохождением внешних сигналов чтения или записи и обеспечивают необходимую достоверность обмена данными. Однако в ряде приложений в составе внешнего управляющего устройства требуется введение дополнительной функции контроля за длительностью сигналов заполненности памяти FIFO для предотвращения потери передаваемых данных.
4. Принцип работы
синхронной памяти FIFO
Особенностью синхронной памяти FIFO является наличие синхронного интерфейса для управления передачей данных (рис. 5). Под управлением сигнала разрешения записи WEN' и сигнала синхронизации WCLK осуществляется запись данных в порт DATA IN, а под управлением сигнала разрешения чтения REN' и сигнала синхронизации RCLK — считывание данных из порта DATA OUT с тремя состояниями. Контроль за состоянием буфера, как и в асинхронной памяти, производится с помощью флагов заполненности EF', FF'. Сигналы синхронизации могут быть представлены одиночными импульсами или в виде пачек импульсов и подаваться на соответствующие входы памяти FIFO в асинхронном порядке.
На рис. 6 приводятся временные диаграммы циклов записи и чтения данных для синхронной памяти FIFO. Цикл записи начинается с выставления внешним устройством данных на линиях D0–D17 и сигнала разрешения записи WEN'. Сигнал разрешения записи WEN' должен быть установлен за время tENS, а данные — за время tDS до прихода фронта сигнала WCLK. Цикл чтения начинается с выставления внешним устройством сигнала разрешения чтения REN'. Информация на выходной шине данных Q0–Q17 появляется через время tA после фронта сигнала RCLK.
Рис. 7. Временные диаграммы переключения флага FF'
Сигналы на выходах флагов заполненности, как и в асинхронной памяти, изменяются с некоторой задержкой после выполнения операций чтения или записи, влияющих на состояние буфера. Но преимуществом синхронной памяти является то, что сигнал на выходе FF' переключается синхронно с фронтом сигнала WCLK, а сигнал на выходе EF' переключается синхронно с фронтом сигнала RCLK. Таким образом, длительность сигнала любого логического уровня на выходах FF' и EF' не может быть меньше одного периода тактовой частоты записи или чтения соответственно. Временные диаграммы сигналов, формируемых на выводах флагов заполненности FF' и EF', представлены на рис. 7, 8.
Рис. 8. Временные диаграммы переключения флага EF'
Время tSKEW1 (см. рис. 7) характеризует минимальный интервал, требуемый для гарантированного переключения флага FF' по первому фронту WCLK, следующему после фронта RCLK. Состояние сигнала на выходе FF' изменится через время tWEF после прихода фронта WCLK. По аналогии, время tSKEW2 (см. рис. 8) характеризует минимальный интервал между появлением фронта WCLK и следующим фронтом RCLK. Сигнал на выходе EF' переключится через время tREF после прихода фронта RCLK.
5. Наращивание разрядности
и информационной емкости FIFO
В процессе проектирования новых устройств нередко возникает задача объединения микросхем памяти FIFO в один модуль. Наращивание разрядности достигается путем соединения всех одноименных входов микросхем, кроме информационных. Для контроля за потоками данных могут использоваться флаги заполненности одной из микросхем в модуле. Способ решения этой задачи иллюстрирует рис. 9, на котором показан блок FIFO емкостью 512 слов и разрядностью слова 18 бит, построенный на микросхемах IDT7201. Каждая микросхема имеет организацию 512ґ9 бит.
Рис. 9. Наращивание разрядности
Пример наращивания информационной емкости приведен на рис. 10. Блок FIFO емкостью 1536 слов и разрядностью слова 9 бит построен на трех микросхемах IDT7201. Для этого соединяют все одноименные выводы микросхем D9-D0, Q9-Q0, W', R', RS'. Исключение составляют выводы флагов заполненности и выводы управления расширением. Выводы флагов заполненности объединяются по схеме «ИЛИ». Композитные сигналы заполненности FULL' и EMPTY' позволяют отразить состояние модуля памяти как единого целого. С помощью выводов управления расширением организуется эстафетный доступ к микросхемам модуля: сигналы расширения XI' и XO' последовательно проходят через все микросхемы FIFO, обеспечивая обращение только к одному сегменту модуля памяти в каждый момент времени. Выходы остальных микросхем в этот момент находятся в третьем состоянии, а сигналы чтения и записи данных игнорируются. Низкий уровень на входе FL' указывает на первый сегмент модуля.
Рис. 10. Наращивание информационной мощности
6. Рекомендации
по применению памяти FIFO
Основными областями применения памяти FIFO являются устройства с последовательными потоками параллельных данных (например, цифровая видеокамера, сетевой концентратор и др.). В их составе память FIFO может применяться в качестве буфера для приема, накопления и выдачи по запросу накопленных данных. Наличие такого буфера позволяет высвободить ресурсы процессора от постоянного сканирования магистрали при приеме медленных асинхронных потоков данных. Процессор в этом случае можно будет подключать к буферу FIFO только для выгрузки накопленных данных, пользуясь информацией о состоянии флагов заполненности.
Другим примером применения памяти FIFO является преобразование скорости передачи данных в процессе взаимодействия двух асинхронных устройств с разной пропускной способностью. Для организации непрерывного обмена потоками данных преобразованию подлежит также разрядность входной и выходной шины данных.
В случае применения RAM для решения аналогичных задач требуется наличие дополнительной схемы управления, представляющей собой контроллер прямого доступа к памяти. Это связано с необходимостью формирования адресов ячеек в процессе выполнения операций записи и чтения. Преимущество в применении памяти FIFO состоит в естественном порядке прохождения данных (первым поступил — первым выводится) и в отсутствии внешней схемы для формирования адресов ячеек.
В качестве реальных примеров применения памяти FIFO можно привести следующие: устройство цифровой обработки и вывода на монитор сигналов, поступающих от рентгеновской установки; устройство сопряжения мультипроцессорного модуля на базе DSP с PCI-шиной; кодек MPEG для телевидения высокой четкости.
В первом случае микросхемы «IDT72V21105, 256Kx18 FIFO» применяются для согласования скорости передачи данных между тремя асинхронными устройствами: источником цифрового рентгеновского сигнала, модулем цифровой обработки данных на базе нескольких DSP- процессоров и видеоконтрольного устройства. Для обеспечения требуемой ширины пакета передаваемых данных микросхемы FIFO включены в режиме наращивания информационной емкости и образуют модуль памяти с организацией 1,5Mґ18.
Во втором случае две однонаправленные микросхемы «IDT72V36110, 128Kx36 FIFO» используются для организации двунаправленного обмена данными между 32-разрядным PCI-интерфейсом с тактовой частотой 33 МГц и модулем, состоящим из двух DSP-процессоров с пропускной способностью шины данных 66 МГц и разрядностью 16 бит. Для поддержания обмена данными между 32-разрядной и 16-разрядной шинами используется дополнительная функция BUS MATCHING.
В кодеке MPEG-2 для телевидения высокой четкости удачным решением является использование памяти FIFO и, в частности, «IDT72V2113, 512Kx9». Стандарт MPEG-2 предусматривает возможность гибкого изменения скорости передачи видеоданных в очень широких пределах, а также работы как с чересстрочной, так и с прогрессивной развертками при частоте полей 50 или 60 Гц.
Итак, микросхемы памяти FIFO можно рекомендовать к применению:
- в качестве буфера обмена данными между быстродействующим процессором и более медленными периферийными устройствами;
- для согласования устройств с различной скоростью передачи данных;
- для организации обмена данными между шинами с разным форматом слова
tm@efo.spb.su
|