Pavel_SSS
Feb 17 2013, 11:20
Уважаемый All! Помогите!
Жизнь заставила самому взяться за написание стека протоколов UDP/IP на microblaze для обертки HARD TEMAC на virtex5. Причем имеется критичность по быстродействию. Но, как назло, Ethernet кадр, получаемый из TEMAC, содержит 14-байтовый заголовок, состоящий из МАС-адреса источника, - 6 байт, МАС-адреса получателя - 6 байт, и кода типа протокола - 2 байта. Всего 14 байт. В результате собственно IP или ARP заголовок является не выровненным по 32 битам, что не позволяет при его копировании использовать 32-битные команды пересылки, а вынуждает использовать 16-битные команды. Что, в свою очередь. убивает быстродействие. По моему мнению, решением могла бы быть вставка произвольного 16-битного слова в начало кадра, но как это сделать? Ну или я торможу в чем-то очень тривиальном...
Tampler
Feb 17 2013, 14:50
Цитата(Pavel_SSS @ Feb 17 2013, 04:20)

Уважаемый All! Помогите!
Жизнь заставила самому взяться за написание стека протоколов UDP/IP на microblaze для обертки HARD TEMAC на virtex5. Причем имеется критичность по быстродействию.
Что за приложение?
Pavel_SSS
Feb 17 2013, 20:25
Цитата(Tampler @ Feb 17 2013, 18:50)

Что за приложение?
Коммуникационное приложение на Virtex 5, с одной стороны ethernet, с другой 4 интерфейса 16хLVDS. Задача Virtex'а - обработать данные, двигающиеся в обе стороны, задача процессора на microblase - собрать все в UDP и отправить, а так же принять из UDP рассовать по интерфейсам. Скорость порядка 30 мегабайт в секунду. Сейчас, с 16-битными пересылками, скорость не достигается. Есть мнение, что с 32-битными пересылками будет достигаться с запасом. Сейчас TEMAC FIFO опрашиваются поллингом, вот думаю, если применить ДМА корку, сможет она сместить 32-битные слова на 2 позиции? Пока даже собираюсь от безысходности переписать TEMAC FIFO...
Pavel_SSS
Feb 19 2013, 05:22
Проблема решена очень просто. SDMA, который часть MPMC, позволяет копировать данные в буфер, начинающегося с любого адреса байта.