Цитата(Golikov A. @ Jul 9 2014, 13:15)

FIFO
1. Размер отправляемого пакета - любой задается через порог фифо не пусто. В любой момент можно изменить, даже на лету.
Вариант с 2 буферами
1. Размер отправляемого пакета - минимум ограничен заполняемостью буфера, если поставите 1 байт то оба буфера будут забиты. Второе ограничение ширина шины адреса, она определяет максимальную длину пакета
Размер отправляемого пакета известен заранее, можно выбрать необходимый размер RAM или FIFO для хранения необходимого количества данных. Менять размер накапливаемых данных в сторону уменьшения возможно в обоих случаях,
в сторону увеличения везде столкнёмся с ограничением, которое задали при создании IP-ядра. Но в изменении длины накапливаемых данных и нет необходимости. По поводу того, что два буфера памяти могут заполниться одновременно,
объяснять Вам не буду, читайте выше. С шиной адреса тоже проблем не вижу, естественно, закладываем такую, чтоб обеспечить адресацию всех накопленных данных.
Цитата(Golikov A. @ Jul 9 2014, 13:15)

FIFO
2. Число буферизуемых пакетов без потерь - ограничен только объемом памяти, число пакетов меняется на лету с их размером
Вариант с 2 буферами
2. Число буферизуемых пакетов без потерь - 1. Чтобы их стало больше необходимо ставить еще блоки памяти. Усложнять мультиплексор выбор блока. На лету изменить с изменением размера пакета невозможно.
Хранение/передачу данных в обоих случаях можно организовать без потерь, объяснять как Вам не буду, смотрите выше.
Цитата(Golikov A. @ Jul 9 2014, 13:15)

FIFO
3. Потери памяти (используемая физически, но не используемая для хранения данных) 0. Все пакеты лежат друг за другом байт в байт, выравнивания не требуется
Вариант с 2 буферами
3. На каждый буфер вы используете один брам 18К, весь хвост 18К - размер пакета у вас не используется.
Что мешает выбрать оптимальный размер данных, чтобы и работать было удобно и память максимально эффективно использовалась, потери памяти были по нулям. Всё реализуемо.
Цитата(Golikov A. @ Jul 9 2014, 13:15)

FIFO
4. Адрес чтения данных - один
Вариант с 2 буферами
4. Адрес чтения пакета сменный, и зависит от размера пакета, с изменением размера пакета необходимо менять диапазон адресов
Один раз выбирается длина данных с которой хотим работать и больше ничего менять не надо.
Цитата(Golikov A. @ Jul 9 2014, 13:15)

FIFO
5. Автомат управления адресом чтения - отсутствует
Вариант с 2 буферами
5. Необходим автомат управления адресом при чтении очередью, либо программные циклы с инкрементом
Вы опять о чём-то своём. Говорим DMA адрес буфера данных и на этом наше участие в формировании адресов заканчивается, для FIFO DMA не инкреметирует адрес, для RAM - инкремитирует. Всё просто в обеих случаях.
Если процессор использовать то цикл чтения будет и для FIFO и для RAM, для вычитки RAM ещё можно memcpy использовать и тогда совсем никаких циклов не видно и адрес инкреметировать не нужно.
Цитата(Golikov A. @ Jul 9 2014, 13:15)

Достаточно или есть еще вопросы почему FIFO однозначно лучше? 2 буфера - решение для простоты, но если есть готовое FIFO надо брать его и использовать.
Все Ваши доводы неубедительны.