Как при помощи FPGA можно парсить Ethernet фреймы?
Добрый день!
Возник следующий вопрос. Имеюются отладочная плата на Altera Cyclone IV, Arduino Mega и Raspberry Pi.
Задача заключается в том, чтобы создать прозрачное(без собственного IP-адреса) устройство, которое бы выполняло такие функции: получало ethernet frame, деинкапсулировало и изменяло его содержимое, запаковывало бы назад в ethernet frame и отправляло дальше получателю.
Пока мыслю так: можно ли каким-то образом поднять прием/передачу данных на Raspberry, затем отпралять их на FPGA, там обрабатывать(предположим шифровать), затем возвращать на Raspberry и отправлять дальше по сети.
Физически это выглядит, как "разрез" провода UTP, в который и подключается мой девайс.
Скорее всего, можно создать такое устройство не используя Raspberry или Arduino, но мне хотелось бы уменьшить количество дополнительной схемотехнику, и я думаю, что малинка или ардуино могут в этом помочь.
Начать надо с увязки технических параметров. Какая скорость у Ethernet? 100? 1000?
Какие интерфейсы есть на отладочной плате?
Какие интерфейсы есть на Rpi?
Получится ли организовать двухсторонний канал достаточной пропускной способности между RPI и FPGA?
Хватит ли способностей FPGA по тактовой частоте лопать кадры Ethernet на потоке?
Главный вопрос - нафига тут FPGA, когда все это можно сделать (и наверняка, все уже сделано) на традиционной машине? Поупражняться?
Спасибо за ответ.
Начну с главного вопроса.
В основном - поупражняться. И интересно шифрование на FPGA.
Скорость Ethernet - достаточно 10/100 FE.
Отладочная плата - громко сказано. По факту, это просто FPGA с разведенными выводами и питанием.
На Rasp Pi - стандартный комплект для 2 Rpi - 1 Ethernet, 40 свободных GPIO. Всего есть 2 Rapberry.
Собственно говоря, основная проблема, как мне сейчас кажется, это поднять на Raspberry прозрачный сетевой интерфейс и наладить передачу данных между Rpi и FPGA.
Сергей Дубовик: начните с малого - научитесь лить в FPGA обычный файл и сливать результат в другой файл. Сократите работы, которые не относятся непосредственно к шифрованию на FPGA до минимума.
Поищите информацию о том, поддерживают ли GPIO что-то вроде DMA, какая у них скорость, тактовая частота и так далее.