Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Реализация Ethernet на Spartan 3
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
bush
Добрый день.

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

Есть плата на основе Spartan 3 со встроенным PHY модулем. Нужно посылать данные с компьютера на ПЛИС через Ethernet, там обрабатывать и получать обратно результат.
Насколько я понял есть три варианта реализовать передачу:
- Ethernet Lite + MicroBlaze
- Tri-Mode Ethernet MAC
- написать что-то свое. при этом можно использовать что-то из открытого кода.
На данный момент знания hdl минимальные, понимание работы Ethernet тоже. Хотелось бы сделать это быстро и без заморочек.
Посоветуйте наиболее легкий способ. Или возможно уже имеется готовые наработки. Или какой-то туториал по созданию ядра конкретно под этот ПЛИС.
Буду очень благодарен за любую помощь.

П.С.: я уже пробовал разные варианты, но везде что-то не выходит или не понятно из-за отсутствия опыта и нужных знаний.
troiden
Для начала опрелитесь что вы хотите получить от Ethernet. Формат обмена с ПК, требуемые скорости передачи - это минимум. Без этого сделать выбор реализации затруднительно.
bush
Цитата(troiden @ Dec 9 2012, 23:19) *
Для начала опрелитесь что вы хотите получить от Ethernet. Формат обмена с ПК, требуемые скорости передачи - это минимум. Без этого сделать выбор реализации затруднительно.

PHY модуль типа MII, позволяет работать на скоростях 10 и 100мбит/с. Мне скорость не важна, достаточно и 10. Главное чтобы происходила передача данных.
Формат данных? Т.е. какие пакеты будут передаваться? Что проще, то пусть и будет. Если UDP,то UDP.
troiden
Формат - тип пакета и его содержимое. UDP будет проще с чисто железной реализации, но он не гарантирует доставку и очередность пакетов в общем случае.
В каком виде планируются данные с ПК? Просто поток байт или же какая-то сложная структура с заголовками, кадрами, кучей полей? Для первого случая проще будет вариант с Tri-Mode Ethernet MAC + логика, для второго может быть сподручней контроллер.
Скорость имелась ввиду средняя. Одиночные пакеты или непрерывный высокоскоростной поток, который обрабатывается на лету.
aabmail
Вообще предложу для пути:
1. Сгенерить проект EDK визардом, и включить туда TEMAC. Вместе с проектом создадутся приложения для тестирования периферии, в т.ч. TEMAC. из приложений можно сделать прием и отправление пакетов. Кстати, автосгенеренный код снабжен комментариями.
2. Использование библиотеки lwIP. (См. xapp1026). Более сложный путь, однако более стандартизированный. Там уже есть ARP, ICMP, UDP, TCP и др.

Если вы пойдете первым путем, то это фактически будет работа на MAC-уровне. Т.е. задаете себе MAC-адрес, и дальше придется вручную формировать заголовки UDP и ARP.
Lmx2315

http://www.fpga4fun.com/10BASE-T.html

10BASE-T FPGA interface

The Ethernet full-duplex protocol is easy to implement in an FPGA. The goal here is to interface an FPGA to a 10BASE-T connection.
bush
Цитата(troiden @ Dec 9 2012, 23:36) *
В каком виде планируются данные с ПК? Просто поток байт или же какая-то сложная структура с заголовками, кадрами, кучей полей? Для первого случая проще будет вариант с Tri-Mode Ethernet MAC + логика, для второго может быть сподручней контроллер.
Скорость имелась ввиду средняя. Одиночные пакеты или непрерывный высокоскоростной поток, который обрабатывается на лету.

В идеале - работа со схемами в Simulink (таково задание). ПЛИС должен выполнять функции регулятора для схем созданных в симулинке.
Если исходить из задания - будет поток данных с компьютера на протяжении какого-то времени (~10-20сек), и эти данные нужно сразу обрабатывать и отсылать результат назад. Данный проект был уже реализован с использованием RS232, теперь возникло желание перейти на Ethernet.

Цитата(aabmail @ Dec 9 2012, 23:40) *
Вообще предложу для пути:
1. Сгенерить проект EDK визардом, и включить туда TEMAC. Вместе с проектом создадутся приложения для тестирования периферии, в т.ч. TEMAC. из приложений можно сделать прием и отправление пакетов. Кстати, автосгенеренный код снабжен комментариями.
2. Использование библиотеки lwIP. (См. xapp1026). Более сложный путь, однако более стандартизированный. Там уже есть ARP, ICMP, UDP, TCP и др.

Если вы пойдете первым путем, то это фактически будет работа на MAC-уровне. Т.е. задаете себе MAC-адрес, и дальше придется вручную формировать заголовки UDP и ARP.

xapp1026 не подходит для древнего спартана 3.

http://www.xilinx.com/products/intellectua...ps_ll_temac.htm - судя по данной ссылке, спартан 3 не поддерживается облегченной версией TEMAC.
Есть ли альтернативные варианты?
bush
Единственное ядро Ethernet, которое можно сгенерировать в BSB для кастомной платы на основе XC3S400 - XPS Ethernet Lite.
При этом можно выбрать три варианта PHY модуля: Broadcom, Intel и Generic. Я так понимаю они отличаются только названиями, или нет?
xor.kruger
Цитата
При этом можно выбрать три варианта PHY модуля: Broadcom, Intel и Generic.

Реально с Microblaze и EthernetLite работал на ура с фитерами SMSC и ТI - все отлично работало как с использованием Standalone-приложений так и с ОС GNU/Linux

Цитата
Я так понимаю они отличаются только названиями, или нет?

Не совсем, в основном отличаются особенностью конфигурирования и тонкой настройкой. В общем нуна смотреть даташиты sm.gif)
aabmail
Цитата(bush @ Dec 10 2012, 02:53) *
Единственное ядро Ethernet, которое можно сгенерировать в BSB для кастомной платы на основе XC3S400 - XPS Ethernet Lite.


Если не стремиться к высокой производительности, то XPS Ethernet Lite м.б. в чем-то и лучше. Там кажется, можно даже без прерываний обойтись
xor.kruger
Ну если решились или решили использовать Tri-mode Ethernet MAC, то вот на эту тему статья. Правда там под версию EDK 10 но суть остается та же.
bush
Цитата(xor.kruger @ Dec 10 2012, 12:30) *
Реально с Microblaze и EthernetLite работал на ура с фитерами SMSC и ТI - все отлично работало как с использованием Standalone-приложений так и с ОС GNU/Linux


Не совсем, в основном отличаются особенностью конфигурирования и тонкой настройкой. В общем нуна смотреть даташиты sm.gif)

Т.е. не получится просто выбрать Generic и прописать ему нужные констрейнты?

Еще пару вопросов вдогонку. Нужно ли подключать какую-то память для него, или он использует только ресурсы самой ПЛИС?
Можно ли в BSB создать проект с Ethernet lite для spartan 3e starter kit, а потом переписать под себя файл ограничений? Или там логика тоже будет меняться?

Цитата(xor.kruger @ Dec 10 2012, 13:20) *
Ну если решились или решили использовать Tri-mode Ethernet MAC, то вот на эту тему статья. Правда там под версию EDK 10 но суть остается та же.

Смотрел раньше уже... Но статья под виртекс и 1Гбит. Наверняка многое придется изменять под себя, а с моими знаниями это будет обречено на провал.

xor.kruger, а с какой ПЛИС вы работали?
iosifk
Цитата(bush @ Dec 9 2012, 23:04) *
Есть плата на основе Spartan 3 со встроенным PHY модулем. Нужно посылать данные с компьютера на ПЛИС через Ethernet, там обрабатывать и получать обратно результат.

Вообще то Вам для начала надо понять, что если делать так, как Вы написали, то половина ПЛИС будет занята только "получить и отправить...". Надо сделать МАС и контроллер. К нему - встроенный софт... Внешняя память будет нужна и для хранения-разборки пакетов.
Так что почитайте, сколько ресурсов займет МикроБлэйз, МАС и т.д.
А есть ли в этом смысл? Может дешевле поставить внешний контроллер с МАС и PHY, например Люминари или PIC?
Или хотя бы контроллер ethernet с PHY, например от Микрел...
А уж то, что это для начинающего будет быстрее в отладке и проще, так это точно...
xor.kruger
Цитата
а с моими знаниями это будет обречено на провал.

В корне не правильная позиция! А как еще учится ? Нужно брать и пробовать, набивать шишки и снова пробовать sm.gif)
Цитата
xor.kruger, а с какой ПЛИС вы работали?

Там где юзался Ethernet это были чипы XC3SD1800A и XC3S500E
Цитата
Нужно ли подключать какую-то память для него, или он использует только ресурсы самой ПЛИС?

В моем случае именно для Ethernet внешняя память не использовалась
Цитата
Т.е. не получится просто выбрать Generic и прописать ему нужные констрейнты?

Скорее всего получиться, нуна пробовать, сейчас уже сходу не вспомню.
Цитата
а потом переписать под себя файл ограничений?

Что вы подразумеваете под файлом ограничений ?
Lmx2315
QUOTE (iosifk @ Dec 10 2012, 13:42) *
А есть ли в этом смысл? Может дешевле поставить внешний контроллер с МАС и PHY, например Люминари или PIC?
Или хотя бы контроллер ethernet с PHY, например от Микрел...
А уж то, что это для начинающего будет быстрее в отладке и проще, так это точно...

..посоветуйте контроллер с PHY для 1G ?
так чтобы новичёк смог на основе какой отладочной платы поднять сеть у себя в устройстве.
iosifk
Цитата(Lmx2315 @ Dec 10 2012, 15:16) *
..посоветуйте контроллер с PHY для 1G ?
так чтобы новичёк смог на основе какой отладочной платы поднять сеть у себя в устройстве.

Если речь идет о новичке и задача не в том, чтобы сделать "эксклюзив", а в том, чтобы научиться работать с ПЛИС, то я бы поступил так:
1. Нашел бы плату пром-РС долларов за 100 с " 1G"... Насколько я помню, когда работал в Элтехе, то мне такие платки показывали. В нее я бы сделал подгрузку задач по сети. И ее бы GPIO состыковал с ПЛИС.
2. Как я писал есть ARM у Люминари, но там 10/100 и сейчас называется TI.
3. Фрискейл имеет ARM, но там 10/100... У фрискейла есть микросхемы с GМАС. но это довольно дорого...
4. Есть и другие варианты, например FTDI2232. С одной стороны SPI, с другой - USB...
5. Но уж если есть желание применить любой другой микроконтроллер, то можно взять и Визнет...
6. На СОМ нацепить микросхемку от Exar и перейти на USB или PCIe...
VslavX
Цитата(iosifk @ Dec 10 2012, 14:55) *
3. Фрискейл имеет ARM, но там 10/100... У фрискейла есть микросхемы с GМАС. но это довольно дорого...

Если не ARM, то у Фрискейла есть вполне бюджетные MPC83xx - цена младших начинается от $9.5 в партиях 100 штук. И GMAC там неплохой - с TCP-offload и прочими плюшками.
troiden
Ну почему везде куда можно пытаются всунуть микроконтроллер? sm.gif Нужен ли он? Может, там всё на порядки легче решается на чистой логике, а человек щас будет микроблейз с линуксом поднимать, а через месяц жаловаться что тактов на обработку не хватает.
Нужна четкая формулировка задачи.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.