Каково общее влияние игнорирования данных на входе FIFO в FPGA? - PullRequest
0 голосов
/ 29 августа 2018

Я понимаю работу FIFO, но мне кажется, что я что-то упускаю из-за его полезности.

При реализации FIFO в FPGA, скажем, для перекрестных тактовых доменов, кажется, что вы часто сталкиваетесь с ситуацией, когда FIFO заполнен, но есть данные, которые должны синхронизироваться в каждом цикле. Это может произойти, если механизм записи синхронизирует данные быстрее, чем механизм чтения считывает данные. Очевидно, что после заполнения FIFO он начнет игнорировать данные, пока у него не останется места для продолжения хранения данных.

Мой вопрос, разве это не имеет большого значения? Мы в основном просто теряем данные? Конечно, FIFO выполняет свою работу, но вся система просто выбрасывает данные

Я сделал два возможных вывода

1) В этом сценарии (где скорость входных данных больше скорости выходных данных), если мы действительно заботимся о том, чтобы не потерять какие-либо данные, возможно, FIFO не лучший способ пересечь эти домены (особенно если механизм записи гораздо быстрее часов, чем в домене чтения). Если это так, то есть ли лучший способ пересечь домены с часами, чем с FIFO? Может быть, ответ заключается в том, что вам нужно использовать другой элемент, например, дециматор, перед FIFO?

2) Мы накладываем ограничение на систему, которая гласит: «Вы можете писать только для количества данных Х (циклов, или времени и т. Д.)», Прежде чем FIFO потребуется время для очистки своих данных. Мне кажется неудовлетворительным, что мы должны на некоторое время отключить поток данных и подождать, пока FIFO освободит место, пока мы не продолжим запись. Но опять же, я новичок в цифровых системах и, возможно, это просто суровая реальность, к которой я не привык:)

Похоже, что наилучшее использование для FIFO при пересечении часовых доменов - это просто когда скорость передачи данных в FIFO и скорость передачи данных из FIFO одинаковы, потому что тогда он может идти в ногу с самим собой.

Ответы [ 2 ]

0 голосов
/ 07 сентября 2018

FIFO также имеют функции различной ширины ввода и вывода. Это означает, например, что у вас есть 32-битный вход 100 МГц и 64-битный выход 50 МГц. Скорость передачи данных в и из половины составляет половину, но скорость передачи данных в два раза выше.

0 голосов
/ 29 августа 2018

Кажется, вы смешиваете две проблемы в одну.

Есть пересечение часового домена и буферизация входных данных. Просто так получается, что FIFO объединяет реализации для этих двух задач в одном объекте.

Если приемник не может идти в ногу с передатчиком, и нет управления потоком, тогда данные будут потеряны, и не имеет значения, пересекали ли данные часовые домены или нет. Вы не можете решить проблему потери данных, не добавив какие-либо линии рукопожатия или управления потоком.

Без управления потоком вы должны убедиться, что размер входного буфера достаточен для обработки пиков нагрузки в вашем конкретном случае.

Что касается воздействий - это либо несуществующее, если ваш дизайн в порядке с потерей данных, либо у вас будет нефункциональное устройство, если потеря данных не допускается проектом.

...