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

 
 
> Подключение компьютера к 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

Сообщений в этой теме
- 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 @ Jan 31 2013, 18:34) Вы дума...   Jan 31 2013, 16:59
|- - prig   Цитата(iosifk @ Jan 31 2013, 20:59) Скоре...   Feb 1 2013, 09:03
||- - 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 Текстовая версия Сейчас: 23rd July 2025 - 19:38
Рейтинг@Mail.ru


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