2015-09-28 4 views
1

Я разрабатываю логическое ядро ​​для выполнения передачи данных между ПЛИС и ПК через Ethernet, используя LAN8710 PHY на моей плате FPGA.Передача данных Ethernet между FPGA-ПК

Я достиг передачи некоторых пакетов данных UDP с FPGA на ПК. Это простое ядро, которое соответствует требованиям передачи PHY. Он создает UDP-пакет и переносит его на ПК.

Чтобы проверить прием на ПК, я использую Wireshark, и, как сказано выше, я получаю пакеты правильно. Я проверил прием с помощью простого UDP-приемника, написанного мной.

Но я заметил, что получаю эти пакеты только тогда, когда Wireshark работает на ПК. Я имею в виду, что если Wireshark включен, мое приложение также получает пакеты, и счетчик полученных пакетов следующего изображения увеличивается. (Эта фотография не моя, просто один из Интернета)

http://i.stack.imgur.com/wsChT.gif

Если я закрываю Wireshark, компьютер прекращает прием пакетов и счетчик принятых пакетов прекращается. Мое приложение также перестает получать.

  1. Будучи новичком в сетевых темах, я подозреваю, что эта проблема связана с ПК. Похоже, Wireshark - это «открытие/закрытие» канала связи Ethernet, или что-то в этом роде. Кто-нибудь знает об этой проблеме?

  2. Чтобы создать функциональное ядро ​​для передачи данных между ПК и ПЛИС, я разработал ядро ​​для передачи и приема пакетов UDP. Следующим шагом будет реализация ARP (чтобы, как я понял, ПК определил мою панель FPGA). Какие протоколы необходимы для осуществления полнодуплексной передачи данных между этими двумя устройствами?

Большое спасибо заранее,

Migue.

ответ

0

Проверьте, есть ли у вас возможность получить соответствующее прерывание приема на уровне драйвера Ethernet на ПК-стороне для одного переданного пакета по FPGA. Если вы не получаете прерывание приема, проверьте на стороне передачи (FPGA) соответствующие прерывания передачи для передаваемого пакета. Это должно помочь вам в решении проблемы.

Насколько я знаю, wirehark - это просто анализатор пакетов/сниффер. Тем не менее, если подозревается WireHark, один из вариантов может состоять в том, чтобы попытаться использовать альтернативный пакетный сниффер, чтобы исключить, если какой-либо такой сценарий происходит.

Удобный инструмент для определения проблем в сети, а также для определения сетевой статистики должен быть netstat. netstat -sp udp перечисляет статистику только для UDP. Есть много других параметров, которые можно использовать с netstat для диагностики.

+0

Благодарим за отзыв Karthik. Как я могу проверить прерывание приема на ПК? – jmigue

+0

Это зависит от вашего процессора и дизайна. Соответственно, вам может потребоваться проверить соответствующие счетчики прерываний или иметь собственные счетчики или вести журналы отладки. –

0

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

Наконец-то я понял, что Wireshark использует инструмент для доступа к сетевому каналу связи. Этот инструмент позволяет Wireshark обнюхивать все входящие и исходящие пакеты на определенном сетевом устройстве. Для этого первым шагом является ОТКРЫТИЕ сетевого устройства, и именно поэтому моя программа работала только в том случае, если Wireshark был открыт.

С уважением.

Смежные вопросы