реклама на сайте
подробности

 
 
> Подключение компьютера к LAN через FPGA
EgorTol
сообщение Jan 24 2013, 14:41
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 23-01-13
Пользователь №: 75 311



Задача: требуется подключить компьютер через FPGA с помощью Ethernet к локальной сети с интернетом и другими компьютерами.

Исходные данные:
1) Компьютер (обычный)
2) Плата с FPGA (Cyclone III), двумя микросхемами PHY (RTL8201bl) и двумя трансформаторами для сети Ethernet.
3) Роутер D-LINK (DI-804 HV)
4) Кабели категории 5Е с разъёмами RJ-45.

Решение:
1) Схема подключения:
Компьютер<--->плата с FPGA<--->роутер<--->сеть/интернет.

2) Берем кабели и подключаем все компоненты согласно схеме подключения.

3) Пишем код в FPGA и программируем её.

4) Работаем.

Описание работы и взаимодействия FPGA и PHY:
Плата с FPGA, микросхемами и разъемами выглядит так:
Трансформатор<--->PHY<--->FPGA<--->PHY<--->Трансформатор
PHY и FPGA связаны интерфейсом MII.

Описание кода для FPGA:
В FPGA реализован асинхронный буфер, который с одной стороны принмает данные от PHY по интерфейсу MII и потом передает эти же данные в другой PHY также по интерфейсу MII и наоборот (т.е. в обратную сторону).

Описание проблемы: Если компьютер подключить просто к сети, без FPGA, то максимальная скорость передачи данных равна 11,5 МБайт/сек, если подключить через FPGA, то скорость падает до 10,9 МБайт/сек.

Диагностика:
1) с помощью SignalTap определно, что буфер не переполняется и не опустошается (гарантированно), пакеты не обрываются (гарантированно), преамбула не повреждена (гарантированно), данные не повреждаются (маловероятно, что повреждаются в FPGA).
2) с помощью программы Wireshark было установленно, что компьютер или сервер посылает дублированные запросы на передачу данных, что говорит о том, что некая часть данных теряется, а теряется скорее всего из-за того что в каком-то месте пакет повреждается, а поврежденный пакет отбрасывается.

Просьба о помощи: Задача вроде крайне простая, но никак не удается достичь передачи данных без потерь и на максимальной скорости, если кто сталкивался с подобной задачей, просьба подсказать в чем может быть проблема. Буду очень благодарен.

P.S. буфер реализован с помощью MegaWizard. Управление буфером тоже очень простое, могу выложить код на Verilog.
P.S.2 не знаю в какую тему форума писать, так как задача объединяет и язык Verilog, и интерфейсы, и FPGA.

Спасибо за внимание. sm.gif


Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
EgorTol
сообщение Jan 25 2013, 08:03
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 23-01-13
Пользователь №: 75 311



Цитата(telix @ Jan 24 2013, 21:07) *
Фото платы в студию, может у Вас LAN разведен так, что данные теряются, может FIFO теряет пакеты, нужно больше информации. Раз пакеты теряются, то либо на физическом уровне, либо на программном. Запустите тесты на просто передачу пакетов от FPGA к компьютеру на максимальной скорости и посмотрите, какая скорость. Чтобы FPGA сама генерила разные пакеты и пуляла их в комп. Затем повторите это со вторым каналом. Если скорость будет максимальная и потерь не будет, значит проблема в программе и FIFO.
А если пакеты будут теряться значит искать что именно портит пакеты.


Фото пока не могу предоставить, в понедельник может быть. Могу сказать сразу, что разведено всё "соплями". Где они там в FIFO могут потеряться? Считал количество принятых и переданных пакетов на входе и выходе FPGA, вроде всё совпадает. Сделать тест для генерации можно, хотя не слишком просто, надо поднимать сеть: компьютер<--->FPGA, для этого надо MAC-контроллер реализовывать? А еще как скорость в таком случае посмотреть? На данный момент я просто скачиваю большой файл из сети и смотрю скорость.

Цитата(iosifk @ Jan 24 2013, 21:59) *
А почему вместо FPGA не взять микросхемку 3 или 5-ти портового свитча? И гарантированно будет работать без всяких прошивок... Например у Микрела свитч с физикой сразу...


В дальнейшем необходимо обрабатывать некоторые пакеты с помощью FPGA.

Цитата(Alex11 @ Jan 25 2013, 01:59) *
Вообще-то странно. На 100 Мб должно работать абсолютно без сбоев. Циклон3 даже гига-ethernet тянет без сбоев. Попробуйте для начала выкинуть буфера и соединить две физики проводами в Циклоне. Если будет работать правильно, надо будет искать ошибки в проекте, а если нет - в разводке и электричестве.


Попробовал. Потери большие, скорость настолько низкая, что нельзя определить какая она sm.gif
Go to the top of the page
 
+Quote Post
prig
сообщение Jan 31 2013, 14:34
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 869
Регистрация: 30-01-08
Из: СПб
Пользователь №: 34 595



Цитата(EgorTol @ Jan 25 2013, 12:03) *
Фото пока не могу предоставить, в понедельник может быть. Могу сказать сразу, что разведено всё "соплями". Где они там в FIFO могут потеряться? Считал количество принятых и переданных пакетов на входе и выходе FPGA, вроде всё совпадает. Сделать тест для генерации можно, хотя не слишком просто, надо поднимать сеть: компьютер<--->FPGA, для этого надо MAC-контроллер реализовывать? А еще как скорость в таком случае посмотреть? На данный момент я просто скачиваю большой файл из сети и смотрю скорость.



В дальнейшем необходимо обрабатывать некоторые пакеты с помощью FPGA.



Попробовал. Потери большие, скорость настолько низкая, что нельзя определить какая она sm.gif


Не всё, что сопля, есть плохо. Если сигнал RXER с PHY в порядке, то это в ПЛИСе. Честно говоря, это ещё какие сопли должны быть, что бы убить сигнал 100Мбит.
Ну, разве что некорректно сделано подключение PHY или "левая" комплектация.

С MAC-контроллерами на фирменном ядре и "тестером" у Вас появится возможность нормально посчитать все пакеты, включая битые, сравнить их количество с количеством посланных из тестера и проверить потерю пакетов в ПЛИСе по разбежке счётчиков. Это стандартный путь. Остальное - от лукавого.

Если получится, что RXER в порядке, а пакеты по входу битые, то м.б. это проблема с тактированием по MII. Но для MII это маловероятно, разве что клок перевёрнут.
Ну, и т.д., от точки к точке, пока не локализуется место потери пакетов.


Цитата(iosifk @ Jan 25 2013, 23:21) *
Ну так и надо делать все по человечески. Смело ставьте свитч, как минимум 3-х портовый, управляемый... И тогда через 2 порта у Вас будет вот это:
Компьютер<--->свитч<--->второй компьютер

а на третий будете зеркалить нужные Вам пакеты и прицепите его к ПЛИС. Или к быстрому процессору, что тоже неплохо.
При этом, поскольку в свитче есть буфер, то при сбоях в линии он сам перезапустит передачу пакета. И справится с автопереговорами. А если возьмете 5-ти портовый, а цена у микросхем примерно одинаковая, то в 4-й порт воткнете ноутбук и произведете отладку...
А уж в ПЛИС проект будет значительно проще...
Да, еще учтите, что "на соплях" порты работать не будут. Там 125 МГц аналоговые сигналы.
У меня на сайте найдите статью про 8842, там написано, как конструировать и отлаживать...
Удачи!


Вы думаете, что человек для развлечения FPGA ставит? Если нет, то зачем такие советы?
А некоторые категоричные утверждения крайне сомнительны. Там оно конечно аналог, но ещё тот. Убить его не так просто.
Старая разводка сетей под 10/100Мбит в большинстве офисов - сплошные "сопли", да ещё на хороших дистанциях, и ничего, работает.

Сообщение отредактировал prig - Jan 31 2013, 16:37
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jan 31 2013, 16:59
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 4 011
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(prig @ Jan 31 2013, 18:34) *
Вы думаете, что человек для развлечения FPGA ставит? Если нет, то зачем такие советы?
А некоторые категоричные утверждения крайне сомнительны. Там оно конечно аналог, но ещё тот. Убить его не так просто.
Старая разводка сетей под 10/100Мбит в большинстве офисов - сплошные "сопли", да ещё на хороших дистанциях, и ничего, работает.


Скорее всего человек просто не в курсе того, что есть микросхемы свитчей. Потому и пытается сделать "по Суворовски, через Альпы"... только на одних ПЛИС. Потому и советую...
И не забудьте про память для пакетов. Внутри ПЛИС пакет в 1,5Кб не поместится. Надо использовать внешнюю память. И перезапуск пакетов в линию при колиззиях, ну и т.д. А уж про уровни обслуживания я и совсем молчу. Это в ПЛИС сделать трудно. Хотя, если для развлечения, то почему бы не поставить дорогую ПЛИС с МАСами, вместо дешевого свитча...
А конструкция платы и сетевые провода - это совершенно разные вещи... И утверждения мои сделаны не на пустом месте, поверьте.


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
prig
сообщение Feb 1 2013, 09:03
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 869
Регистрация: 30-01-08
Из: СПб
Пользователь №: 34 595



Цитата(iosifk @ Jan 31 2013, 20:59) *
Скорее всего человек просто не в курсе того, что есть микросхемы свитчей.
...


Вообще-то, такое утверждение очень похоже на оскорбление.
Скорее всего, Вы просто не в курсе, что есть множество случаев, когда приходится делать обработку пакетов именно в FPGA. А речь шла именно об обработке.
А уж чего только не помещается в FPGA... Вы даже представить не можете, если судить по Вашим замечаниям.


Цитата(polyakovav @ Jan 31 2013, 19:18) *
Попробуйте найти компьютер с двумя портами и закольцевать передачу. Обратите внимание на статистику задержек. Может быть при неравномерном потоке буфер маловат?


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

Сообщение отредактировал prig - Feb 1 2013, 09:09
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- EgorTol   Подключение компьютера к LAN через FPGA   Jan 24 2013, 14:41
- - telix   Фото платы в студию, может у Вас LAN разведен так,...   Jan 24 2013, 17:07
- - iosifk   Цитата(EgorTol @ Jan 24 2013, 18:41) Зада...   Jan 24 2013, 17:59
- - Alex11   Вообще-то странно. На 100 Мб должно работать абсол...   Jan 24 2013, 21:59
|- - telix   Цитата(EgorTol @ Jan 25 2013, 12:03) Могу...   Jan 25 2013, 18:28
|- - iosifk   Цитата(EgorTol @ Jan 25 2013, 12:03) В да...   Jan 25 2013, 19:21
||- - iosifk   Цитата(prig @ Feb 1 2013, 13:03) Вообще-т...   Feb 1 2013, 10:43
|- - gosu-art   Цитата(iosifk @ Jan 31 2013, 20:59) Внутр...   Feb 4 2013, 04:16
|- - EgorTol   Цитата(gosu-art @ Feb 4 2013, 08:16)...   Feb 5 2013, 13:29
|- - iosifk   Цитата(EgorTol @ Feb 5 2013, 17:29) Кстат...   Feb 5 2013, 13:55
||- - gosu-art   По поводу реализации езернета на плис: http://elec...   Feb 5 2013, 20:08
||- - EgorTol   Вы предлагаете мне МАК-контроллер сделать? Мне нуж...   Feb 6 2013, 07:46
|- - prig   Цитата(EgorTol @ Feb 5 2013, 17:29) ... И...   Feb 6 2013, 08:41
|- - EgorTol   Простите, не мог ответить. Продолжение следует... ...   Feb 22 2013, 07:27
- - sorok-odin   Цитата(EgorTol @ Jan 24 2013, 18:41) 1) С...   Jan 25 2013, 18:19
- - polyakovav   Цитата(EgorTol @ Jan 24 2013, 18:41) Зада...   Jan 31 2013, 15:18
- - prig   iosifk, дело не в том, что лучше или хуже. М.б. 10...   Feb 1 2013, 14:18


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 11:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01443 секунд с 7
ELECTRONIX ©2004-2016