Skip to content

mfkiwl/scfifo

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Синхронные фифо / Synchronous FIFOs

Данный репозиторий содержит реализацию синхронных FIFO (First In, First Out): класссический FIFO с сигналами wr, rd; AXI-Stream FIFO; Multi Push Multi Pop FIFO.

Оглавление

Структура репозитория

.
├── README.md
├── RTL
│   ├── axis_fifo_fr.sv
│   ├── axis_fifo.sv
│   ├── mpmp_ram.sv
│   ├── multi_push_multi_pop_fifo.sv
│   └── sc_fifo.sv
└── SIM
    ├── axis_fifo
    │   ├── axis_fifo_tb.sv
    │   ├── wave.do
    ├── mpush_mpop
    │   ├── multi_push_multi_pop_fifo_tb.sv
    │   ├── wave.do
    └── sc_fifo
        ├── sc_fifo_tb.sv
        └── wave.do

Директория RTL - содержит RTL-код для синтеза в FPGA/ASIC

  • axis_fifo.sv - AXI-Stream FIFO с регистровыми входами и выходами (в т.ч. сигналами ready)

  • axis_fifo_fr.sv - то же, что и axis_fifo.sv, но с расширенным списком портов

  • mpmp_ram.sv - FIFO для модуля multi_push_multi_pop_fifo.sv

  • multi_push_multi_pop_fifo.sv - FIFO с N-вталкиваниями и N-выталкиваниями

  • sc_fifo.sv - класссический FIFO

Директория SIM - содержит файлы для тестирования модулей из директории RTL.

Директория axis_fifo - набор файлов для тестирования модулей axis_fifo.sv и axis_fifo_fr.sv

  • axis_fifo_tb.sv - тестбенч с автоматической генерацией случайных воздействий
  • wave.do - подгрузка сигналов в окно wave для ModelSim/QuestaSim через пункт Tools-Tcl-Execute Macro

Директория mpush_mpop - набор файлов для тестирования модуля multi_push_multi_pop_fifo.sv

  • multi_push_multi_pop_fifo_tb.sv - тестбенч с автоматической генерацией случайных воздействий
  • wave.do - подгрузка сигналов в окно wave для ModelSim/QuestaSim через пункт Tools-Tcl-Execute Macro

Директория sc_fifo - набор файлов для тестирования модуля sc_fifo.sv

  • sc_fifo_tb.sv - тестбенч с автоматической генерацией случайных воздействий
  • wave.do - подгрузка сигналов в окно wave для ModelSim/QuestaSim через пункт Tools-Tcl-Execute Macro

Описание модулей

axis_fifo

Параметры:

  • T_DATA_WIDTH - ширина шины данных
  • SIZE - размер FIFO в словах

Интерфейсы:

Common

  • clk - тактовый сигнал для работы модуля
  • reset_n - асинхронный сброс по заднему фронту

AXI-Stream Sink

  • s_data_i - шина данных
  • s_valid_i - сигнал валидности входных даннных
  • s_ready_o - сигнал готовности принимать данные

AXI-Stream Source

  • m_data_o - шина данных
  • m_valid_o - сигнал валидности выходных даннных
  • m_ready_i - сигнал готовности выдавать данные

Status

  • fifo_empty_o - сигнал информирует об отсутствии данных в FIFO
  • fifo_full_o - сигнал информирует о полном заполнении FIFO

axis_fifo_fr

Список параметров и сигналов аналогичен axis_fifo, добавляются дополнительные статусные сигналы:

  • fifo_usedw_o - указывает сколько слов данных на текущий момент записано в FIFO
  • fifo_avalwd_o - указывает сколько слов данных на текущий момент доступно для записи в FIFO

multi_push_multi_pop_fifo

Параметры:

  • WIDTH_DATA - ширина шины данных
  • SIZE_FIFO - размер FIFO в словах
  • AMOUNT_PUSH_POP - максимальное количество одновременных вталкиваний или выталкиваний в/из FIFO

Интерфейсы:

Common

  • clk - тактовый сигнал для работы модуля
  • reset_n - асинхронный сброс по заднему фронту

Push

  • push - количество данных для вталкивания
  • push_data - данные для вталкивания
  • can_push - количество доступных вталкиваний (больше этой величины пользователь не имеет права выставить значение push'а)

Pop

  • pop - количество данных выталкивания
  • can_pop - количество доступных выталкиваний (больше этой величины пользователь не имеет права выставить значение pop'а)
  • pop_data - значение вытолкнутых данных
  • pop_resp количество вытолкнутых данных. Этот сигнал вводится из-за того, что данные из памяти возвращаются не сразу, а с некоторой задержкой, поскольку в противном случае будут проблемы с таймингами.

sc_fifo

Параметры:

  • data_width - ширина шины данных
  • fifo_depth - глубина FIFO (вместимость FIFO равна $2^{fifo_depth}$ слов)

Интерфейсы:

Common

  • clk - тактовый сигнал для работы модуля
  • reset_n - асинхронный сброс по заднему фронту

Write

  • wr - сигнал записи в FIFO
  • data_in - данные для записи в FIFO

Read

  • rd - сигнал чтения из FIFO
  • data_out - прочитанные данные

Status

  • full - сигнал информирует о полном заполнении FIFO
  • empty - сигнал информирует об отсутствии данных в FIFO
  • use_words - количество слов, содержащихся в данный момент в FIFO
  • clear - синхронная очистка FIFO

About

Synchronous FIFO: AXI Stream FIFO, Multi Push Multi Pop FIFO, classical FIFO and e.t.c.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • SystemVerilog 87.5%
  • Stata 12.5%