Исследование 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
Устройство состоит из
Источник данных для устройства передачи формирует синхронные данные data_in[]. Середине передаваемого слова соответствует положительный перепад синхронизирующих импульсов clk_in (см. рис.4).
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.