Синхронный FIFO
Реализуйте синхронную очередь FIFO на DEPTH слов по WIDTH бит. Запись и чтение идут по одному тактовому сигналу clk.
По переднему фронту clk:
- если
rst_n = 0, очередь опустошается (сброс синхронный; содержимое памяти обнулять не нужно); - если
push = 1и очередь не полна,wdataдобавляется в конец; - если
pop = 1и очередь не пуста, слово с вершины удаляется; pushиpopв одном такте выполняются оба, если каждый допустим сам по себе: в полной очереди выполняется толькоpop, в пустой — толькоpush. Запись в полную очередь и чтение из пустой игнорируются.
Выходы:
rdata— слово на вершине очереди, видно сразу, без отдельного такта чтения (first-word fall-through):popудаляет то слово, которое сейчас наrdata. Пока очередь пуста, значениеrdataне важно;empty = 1, когда в очереди нет слов;full = 1, когда в нейDEPTHслов.
Параметры: WIDTH — разрядность слова (по умолчанию 8), DEPTH — ёмкость, степень двойки (по умолчанию 16).
| Порт | Направление | Ширина | Назначение |
|---|---|---|---|
| clk | вход | 1 | Общий тактовый сигнал |
| rst_n | вход | 1 | Синхронный сброс, активный 0 |
| push |