Перейти к содержанию
    

Как быстро передавать данные через Ethernet

Приветствую!

 

Какой Cyclone V у Вас ?

Если в нем есть MGT то можно сразу делать MAC и PHY внутри и цеплять все сразу напрямую к SFP

Если MGT нет - то МАС делаете в FPGA а снаружи нужен тогда просто внешний PHY типа Marvell 88E1111 или аналог

Cтавить AX88180. я смысла не вижу к нему все равно нужен тот же PHY

 

В любом варианте генерировать UDP внутри FPGA несложно - простая FSM. Так же как и парсить приходящие пакеты на предмет конфигурации/управления или минимальной поддержки сети (ARP, ICMP) Для этого даже внешний MCU не нужен.

 

Успехов! Rob.

 

P.S. вот тут как раз обсуждали PHY

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Какой Cyclone V у Вас ?

Взглянул на живую плату - сейчас 4-й, EP4CE, ошибся я, думал уже 5-й. Но, полагаю, без проблем поставим и 5-й. Посмотрел по документации - нужно GX. Еще Мегафункцию покупать. С учетом используемых целлов (более 3 тысяч) вполне может получиться, что отдельная микросхема MAC-контроллера с PHY дешевле выйдет.

 

Cтавить AX88180. я смысла не вижу к нему все равно нужен тот же PHY

Тут меня привлекло то, что ее интерфейс больно удобен: просто еще одна память с параллельным 32-битовым интерфейсом. Все знакомо, прозрачно и не нужно заморачиваться с каким-нибудь PCIe.

 

В любом варианте генерировать UDP внутри FPGA несложно - простая FSM. Так же как и парсить приходящие пакеты на предмет конфигурации/управления или минимальной поддержки сети (ARP, ICMP) Для этого даже внешний MCU не нужен.

Мне тоже показалось, что такой вариант для начинающего - самое то.

 

Успехов! Rob.

Большое спасибо!

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Однако... Все не так радужно, как мне мечталось... Похоже, что эта AX88180 - единственная на Гигабитную скорость с таким удобным интерфейсом. Черт! Наверное придется использовать альтеровскую мегафункцию (или мегафункции).

 

Варианты:

 

1. Установить внутри ПЛИС готовую мегафункцию Ethernet MAC. Настораживает величина стоимости такой мегафункции. Подскажите пожалуйста, сколько эта радость стоит?

 

2. Использовать Cyclone V со встроенной PCIe внутри. Дополнительно установить внешнюю микросхему Ethernet MAC. Таких чипов достаточно много, есть и двухканальные (что мне как раз и нужно). Что плохо: для того, чтобы выкопать ямку для цветочка приходится вместо совочка использовать шагающий экскаватор... (Это касаемо интерфейса ПЛИС<->Ethernet чип.)

 

В общем, лишний раз подтверждается, что свой хлеб инженеры едят далеко не зря...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

1. Установить внутри ПЛИС готовую мегафункцию Ethernet MAC. Настораживает величина стоимости такой мегафункции. Подскажите пожалуйста, сколько эта радость стоит?

2. Использовать Cyclone V со встроенной PCIe внутри. Дополнительно установить внешнюю микросхему Ethernet MAC. Таких чипов достаточно много, есть и двухканальные (что мне как раз и нужно). Что плохо: для того, чтобы выкопать ямку для цветочка приходится вместо совочка использовать шагающий экскаватор... (Это касаемо интерфейса ПЛИС<->Ethernet чип.)

Я понимаю что "нормальные герои всегда идут в обход" но ЗАЧЕМ все пытаться усложнить?!. Так как для PCe нужны такие-же MGT как и для подключения к SFP то надо сразу все в FPGA и делать. - Хотите сэкономить на покупке мегафункции? Тогда надо чуть больше заплатить инженеру чтобы он не только хлебом питался :) Например можно взять MAC корку и на opencores и допилить для своих нужд.

 

Но вообще мне кажется тут для начала нужен комплексный анализ требований ко ВСЕЙ системе и вариантов ее построения.

Поскольку вариантов построения может быть масса включая и немного экзотические - например использование что то типа TLK1221

С одной стороны простой параллельный интерфейс - а с другой MGT как раз в SFP. И к тому же на халяву сэмплы шлют :biggrin:

Ну а пакеты инженер сформирует с помощью FSM за банку варенья и ящик печенья :rolleyes:

 

Успехов! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Я понимаю что "нормальные герои всегда идут в обход" но ЗАЧЕМ все пытаться усложнить?!. Так как для PCe нужны такие-же MGT как и для подключения к SFP то надо сразу все в FPGA и делать. - Хотите сэкономить на покупке мегафункции?

Так я как раз и пытаюсь упростить работу! :-) Т.е. не делать MAC самому, а поставить готовую микросхему за пару десятков у.е. Что касается мегафункции, то если за мегафункцию Ethernet MAC нужно выложить 30 000$, а блок PCe уже стоит внутри ПЛИС бесплатно, то выбор очевиден...

 

Но вообще мне кажется тут для начала нужен комплексный анализ требований ко ВСЕЙ системе и вариантов ее построения.

Совершенно справедливо. Поэтому в самом первом посте я детально обрисовал требования к системе, и в последующих постах их уточнил. Т.е. система крайне проста: есть устройство, генерирующее поток данных порядка 100 Мбайт в секунду. После съема данных со всех 128 датчиков (это занимает примерно 2 секунды) допустима небольшая пауза (порядка 250-500 мсек). Моя задача состоит в том, чтобы максимально просто организовать передачу этих данных в компьютер по оптоволоконному кабелю (или двум кабелям) с помощью Ethernet. (Ничем иным это, видимо, не сделаешь.) Естественно, что мне совсем не хочется городить в устройстве что-то большое, сложное и дорогое.

 

Поскольку вариантов построения может быть масса включая и немного экзотические - например использование что то типа TLK1221

С одной стороны простой параллельный интерфейс - а с другой MGT как раз в SFP. И к тому же на халяву сэмплы шлют.

Интересная мысль, спасибо! Только я не понял, почему там 10 бит на слово данных? Наисано, что "IEEE 802.3 Gigabit Ethernet Compliant", а что это означает - неясно... Надо будет повнимательнее даташит почитать...

 

Ну а пакеты инженер сформирует с помощью FSM за банку варенья и ящик печенья

Так я и должен буду формировать :-)

 

Спасибо за помощь!

 

P.S. На входе эта микросхема ожидает 8b/10b encoded data, т.е. это, типа, выходной "кусок" Ethernet MAC? Интересно... Может входную часть этого MAC'а будет несложно реализовать?...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Интересная мысль, спасибо! Только я не понял, почему там 10 бит на слово данных? Наисано, что "IEEE 802.3 Gigabit Ethernet Compliant", а что это означает - неясно... Надо будет повнимательнее даташит почитать...

 

P.S. На входе эта микросхема ожидает 8b/10b encoded data, т.е. это, типа, выходной "кусок" Ethernet MAC? Интересно... Может входную часть этого MAC'а будет несложно реализовать?...

 

Нет это просто внешний MGT - MAC и PCS\PMA надо будет самому делать. Опять же - всего пара FSM :).

Но это в любом случае будет проще чем рулит внешним Ethernet PCIe чипом через встроенный PCIe root-complex :wacko:

 

Успехов! Rob.

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Нет это просто внешний MGT - MAC и PCS\PMA надо будет самому делать. Опять же - всего пара FSM :).

Но это в любом случае будет проще чем рулит внешним Ethernet PCIe чипом через встроенный PCIe root-complex

Здорово! Пожалуйста, поподробнее! Я ведь только что занялся этими вопросами, все больше с USB 2.0 работал, опыта - ноль. Желания понять - хоть отбавляй! :-)

 

Я уже понял, что такое Ethernet-фрейм. Несложная штука в общем-то. Что в нем понимается под MAC и PCS\PMA? Я думаю, что без проблем смогу сформировать последовательность байт, составляющих этот самый Ethernet-фрейм. Это и получится канал передачи? Мне бы по-проще все это организовать. Не нужно вообще ничего сложного, просто передавать фреймы вовне и все.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

 

Здорово! Пожалуйста, поподробнее! Я ведь только что занялся этими вопросами, все больше с USB 2.0 работал, опыта - ноль. Желания понять - хоть отбавляй! :-)

 

Я уже понял, что такое Ethernet-фрейм. Несложная штука в общем-то. Что в нем понимается под MAC и PCS\PMA? Я думаю, что без проблем смогу сформировать последовательность байт, составляющих этот самый Ethernet-фрейм. Это и получится канал передачи? Мне бы по-проще все это организовать. Не нужно вообще ничего сложного, просто передавать фреймы вовне и все.

Похвальное стремление!

 

Почитайте про уровни сетевого стека для начала хот-бы в Wiki. Если в двух словах : MAC формирует фрейм Ethernet на выходе имеет стандартный media independed interface *MII (MII, GMII, RGMII SGMII ) -> PCS кодирует фрейм в соответствии с требованиями физического канала PMA осуществляет синхронизацию/доступ к физ. каналу.

Посмотрите что и как делаю другие http://opencores.org/projects тут в принципе можно найти готовые решения.

 

Успехов! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Посмотрите что и как делаю другие http://opencores.org/projects тут в принципе можно найти готовые решения.

Большое спасибо за помощь! С теорией я уже ознакомился (только пока никак не запомню значение многочисленных сокращений: MGT, MAC, PCS, PMA и т.д.), теперь поизучаю opencores. Надеюсь смогу разобраться.

 

Спасибо!

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините, у меня немного отвлеченный вопрос: А зачем тут Езернет?

Какое из достоинств Езернета используется в данной задаче "передать поток 100 МБ/с на 300 м в системе точка-точка"?

Если получается стандартными средствами-то тогда понятно зачем. А если все равно что-то уникальное городить нужно- то, может, и не Езернет применить?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Извините, у меня немного отвлеченный вопрос: А зачем тут Езернет?

Какое из достоинств Езернета используется в данной задаче "передать поток 100 МБ/с на 300 м в системе точка-точка"?

Если получается стандартными средствами - то тогда понятно зачем. А если все равно что-то уникальное городить нужно - то, может, и не Езернет применить?

Исходя из скорости потока и расстояния передачи на PC с Виндой, я подумал, что Ethernet - это единственно возможный вариант. Я просто не знаю, какие еще неэкзотические решения тут применимы...

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... А если все равно что-то уникальное городить нужно- то, может, и не Езернет применить?

 

И смысл? Нагородить своего можно, но получится дороже и сложнее в реализации и эксплуатации.

А другого готового конкурентного решения(или набора решений) для такой задачи просто нет.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

Немножко отошел от аппаратной части и занялся программной. Для начала установил Wireshark. Затем установил в компьютер отдельную сетевую плату. Это для того, чтобы промоделировать реальную систему. Скорость на данном этапе мне не важна, поэтому удовольствовался 100 MB. Подключил мой компьютер к другому компьютеру через коммутатор. Оба имеют свои IP, видят друг друга, все OK.

 

Потом написал простой UDP Echo Server, а к нему соответствующий клиент. Пример взял отсюда: Самоучитель игры на WINSOCK. Запустил. Все красиво, все работает. Решил посмотреть, что там внутри творится. А там - полный кавардак! Постоянно валят какие-то TCP передачи, ARP пакеты и много всякого другого.

 

Начал размышлять. Понятно, Винда желает быть ко всякой бочке затычкой, все ей неймется, всюду лезет. В общем, нормальная сетевая жизнь. Тогда я подумал: отсоединю-ка я проверочный сегмент от основной сети. Прописал фиксированные IP (как и будет в законченной системе), но не понял, что делать с Default Gateway. Оставил это поле пустым. Для начала посмотрел Wireshark'ом. Вроде все тихо. Запускаю сервер, запускаю клиент - нет передачи! Точнее есть, но с паузой в 7 секунд (видать некий таймаут). Получился какой-то затык... Wireshark показывает какие-то левые запросы (типа: Who is 192.168.1.51 (а это сервер, видать клиент не знает его MAC-адреса) и еще что-то).

 

Посему вопросы:

 

1. Как же все-таки правильно сконфигурировать сегмент сети, чтобы он нормально работал?

2. Как сделать так, чтобы каналу передачи было ясно, куда и что посылать? Наверное нужно как-то указать физический MAC-адрес, чтобы почтальон не сомневался?

3. Может быть оставить все как есть? Но ведь тогда сеть будет отвлекаться на что-то лишнее, что "отгрызет" у меня немножко дорогого траффика...

 

Разъясните, пожалуйста, начинающему, как мне правильно поступить?

 

Спасибо!

 

P.S. Гугл обычно рассматривает стандартную Сеть. TCP послал туда, IP по дороге разобрался/собрался, компьютер назначения получил вожделенную информацию. А вот чтобы детально рассмотреть вопрос - этого не видать...

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подключил мой компьютер к другому компьютеру через коммутатор.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

 

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

Да, я именно об этом и подумал. В общем-то мне именно это и нужно. Просто под рукой кросс-кабеля не нашлось :-) Но я его или найду, или сделаю сам.

 

А как насчет ARP-пакетов? Они ведь останутся? Ведь, насколько я понял, клиенту MAC-адрес вынь да положь? Спускаться на уровень Ethernet-фреймов или как-то иначе?

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...