Цитата
Другими словами, Вы реализовали в ПЛИС обычный Ethernet Switch? Да, согласен с des333, тут вопрос: вы использовали готовые корки MAC подуровня или писали всё сами с нуля? Если второе, то влезть в структуру пакета вполне возможно так, как Вы задумывали в первом сообщении. Можно и другими способами. Но если MAC готовый - то всё сложнее.
Мак свой, т.к. делаю не совсем обычный свич.
Цитата
ПЛИС может общаться с внешним миром и CPU посредством UDP пакетов. Во первых, это сильно упрощает жизнь как CPU так и внешнему миру - не надо никаких вмешательств в TCP/IP стек. А во вторых, это не сильно накладно для самой ПЛИС - UDP пакет довольно простой и отсутствуют какие либо протоколы вокруг него, т.е. достаточно уметь принять/отправить один Ethernet кадр (с IP/UDP уровнями).
NB. При такой схеме фрагментация UDP конечно не поддерживается.
К сожалению не может, основная работа с ip-пакетами. Нужно из ip-пакета извлечь данные, отдать их на один из модулей обработки, затем снова собрать пакет и отдать в сеть. Либо принять пакет, проанализировать ip-заголовок и отдать пакет на CPU без всякой обработки.
Цитата
Имелось в виду - насколько низко по протоколам у Вас есть доступ к формирование пакетов.
Понял, в CPU ip-уровень для внешнего мира, для общения с ПЛИС думаю можно и любой другой уровень использовать.
Цитата
Просто, если другого интерфейса между FPGA и CPU нет - то, естественно, придется чтение/записть регистров делать через GMII.
Но вот формировать настойщий IP-пакет для этого - излишество, только лишний оверхед. Если есть доступ к GMII непосредственно, то я бы лучше сделал для команд от CPU к FPGA другой формат, отличный от Ethernet-кадра. Но или, хотя бы, не использовал IP-уровень.
Если же такой возможности нет, то тогда вставить какую-либо метку поверх IP (или, например, в поле Protocol указывать неиспользуемое значение), наверное, единственный вариант.
Тогда, наверное, лучше теги VLAN использовать для работы с ПЛИС.