Исследование FIFO (First In First Out)

Страницы работы

Содержание работы

Исследование FIFO

            Очередь (First In First Out, FIFO) – разновидность запоминающего устройства с последовательным доступом, из которого слова считываются в том порядке, в котором они были записаны. Запись в FIFO и считывание из него – независимые операции и могут выполняться в произвольном темпе, в том числе одновременно. Конечно, считывание данных из FIFO имеет смысл только, если в очереди есть хотя бы одно слово. Для управления записью и считыванием каждое FIFO имеет специальные управляющие сигналы для обеспечения чтения и записи. Основное назначение FIFO – организация временного буфера для сопряжения потоков данных с различной интенсивностью, например, между источником заявок и исполнительным устройством.

В работе используется модуль LPM_FIFO из библиотеки мегафункций. Входные порты FIFO перечислены в табл.1, выходные порты FIFO перечислены в табл.2, настраиваемые параметры FIFO с единым сигналом тактирования для записи и чтения приведены в табл. 3, режимы работы приведены в табл. 4. Символ буфера FIFO с минимальным количеством необходимых для работы сигналов представлен на рис.1.

Рис.1.

В этом FIFO синхронизация операций записи и чтения осуществляется единым сигналом тактирования clock. Для записи слова в FIFO необходимо подать записываемое слово на вход данных DATA[] и установить в единичное состояние сигнал разрешения записи wr_req (“write request”). Считываемые слова появляются на выходе Q[] FIFO при подаче единицы на вход rd_req (“read request”).. В LPM_FIFO возможны две реализации очереди (см.рис.2).

Рис.2.

Они отличаются временем появления считываемых из FIFO слов. В режиме Normal сигнал rd_req выступает как требование чтения. При установке  rd_req = 1  требуемое слово на выходе Q[] появляется после появления фронта сигнала clock. Этот режим обеспечивает максимальную тактовую частоту FIFO, поэтому он установлен по умолчанию. Во втором режиме работы Show-ahead первое текущее слово очереди выставлено на выходе Q[], а сигнал rd_req используется как подтверждение считывания и с приходом тактового импульса обеспечивает переход к следующему слову.

Очередь LPM_FIFO имеет ограниченные размеры, задаваемые при создании параметром LPM_NUMWORDS. Для контроля состояния очереди используются следующие сигналы. Сигнал FULL устанавливается в единицу, если в очереди нет свободного места. Попытка записи в такую очередь приведет к потере информации. Сигнал EMPTY устанавливается в единицу, если очередь пуста (в ней нет несчитанных слов). Сигнал USEDW[] показывает текущее количество слов в очереди.

В индивидуальных вариантах задания рассматривается один из типовых случаев применения FIFO. Структурная схема разрабатываемого устройства передачи данных с FIFO приведена на рис.3.

Рис. 3

            Устройство состоит из

  • Блока синхронизации входных данных synchr;
  • Буферного FIFO;
  • Передатчика tx_control, формирующего в канал связи пакеты данных с требуемыми характеристиками.

Источник данных для устройства передачи формирует синхронные данные data_in[]. Середине передаваемого слова соответствует положительный перепад синхронизирующих импульсов clk_in (см. рис.4).

Похожие материалы

Информация о работе