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

Реализация Ethernet на Spartan 3

Добрый день.

 

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

 

Есть плата на основе Spartan 3 со встроенным PHY модулем. Нужно посылать данные с компьютера на ПЛИС через Ethernet, там обрабатывать и получать обратно результат.

Насколько я понял есть три варианта реализовать передачу:

- Ethernet Lite + MicroBlaze

- Tri-Mode Ethernet MAC

- написать что-то свое. при этом можно использовать что-то из открытого кода.

На данный момент знания hdl минимальные, понимание работы Ethernet тоже. Хотелось бы сделать это быстро и без заморочек.

Посоветуйте наиболее легкий способ. Или возможно уже имеется готовые наработки. Или какой-то туториал по созданию ядра конкретно под этот ПЛИС.

Буду очень благодарен за любую помощь.

 

П.С.: я уже пробовал разные варианты, но везде что-то не выходит или не понятно из-за отсутствия опыта и нужных знаний.

Изменено пользователем bush

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


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

Для начала опрелитесь что вы хотите получить от Ethernet. Формат обмена с ПК, требуемые скорости передачи - это минимум. Без этого сделать выбор реализации затруднительно.

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


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

Для начала опрелитесь что вы хотите получить от Ethernet. Формат обмена с ПК, требуемые скорости передачи - это минимум. Без этого сделать выбор реализации затруднительно.

PHY модуль типа MII, позволяет работать на скоростях 10 и 100мбит/с. Мне скорость не важна, достаточно и 10. Главное чтобы происходила передача данных.

Формат данных? Т.е. какие пакеты будут передаваться? Что проще, то пусть и будет. Если UDP,то UDP.

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


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

Формат - тип пакета и его содержимое. UDP будет проще с чисто железной реализации, но он не гарантирует доставку и очередность пакетов в общем случае.

В каком виде планируются данные с ПК? Просто поток байт или же какая-то сложная структура с заголовками, кадрами, кучей полей? Для первого случая проще будет вариант с Tri-Mode Ethernet MAC + логика, для второго может быть сподручней контроллер.

Скорость имелась ввиду средняя. Одиночные пакеты или непрерывный высокоскоростной поток, который обрабатывается на лету.

 

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


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

Вообще предложу для пути:

1. Сгенерить проект EDK визардом, и включить туда TEMAC. Вместе с проектом создадутся приложения для тестирования периферии, в т.ч. TEMAC. из приложений можно сделать прием и отправление пакетов. Кстати, автосгенеренный код снабжен комментариями.

2. Использование библиотеки lwIP. (См. xapp1026). Более сложный путь, однако более стандартизированный. Там уже есть ARP, ICMP, UDP, TCP и др.

 

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

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


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

 

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.

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


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

В каком виде планируются данные с ПК? Просто поток байт или же какая-то сложная структура с заголовками, кадрами, кучей полей? Для первого случая проще будет вариант с Tri-Mode Ethernet MAC + логика, для второго может быть сподручней контроллер.

Скорость имелась ввиду средняя. Одиночные пакеты или непрерывный высокоскоростной поток, который обрабатывается на лету.

В идеале - работа со схемами в Simulink (таково задание). ПЛИС должен выполнять функции регулятора для схем созданных в симулинке.

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

 

Вообще предложу для пути:

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. Я так понимаю они отличаются только названиями, или нет?

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


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

При этом можно выбрать три варианта PHY модуля: Broadcom, Intel и Generic.

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

 

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

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

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


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

Единственное ядро Ethernet, которое можно сгенерировать в BSB для кастомной платы на основе XC3S400 - XPS Ethernet Lite.

 

Если не стремиться к высокой производительности, то XPS Ethernet Lite м.б. в чем-то и лучше. Там кажется, можно даже без прерываний обойтись

 

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


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

Ну если решились или решили использовать Tri-mode Ethernet MAC, то вот на эту тему статья. Правда там под версию EDK 10 но суть остается та же.

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


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

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

 

 

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

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

 

Еще пару вопросов вдогонку. Нужно ли подключать какую-то память для него, или он использует только ресурсы самой ПЛИС?

Можно ли в BSB создать проект с Ethernet lite для spartan 3e starter kit, а потом переписать под себя файл ограничений? Или там логика тоже будет меняться?

 

Ну если решились или решили использовать Tri-mode Ethernet MAC, то вот на эту тему статья. Правда там под версию EDK 10 но суть остается та же.

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

 

xor.kruger, а с какой ПЛИС вы работали?

Изменено пользователем bush

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


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

Есть плата на основе Spartan 3 со встроенным PHY модулем. Нужно посылать данные с компьютера на ПЛИС через Ethernet, там обрабатывать и получать обратно результат.

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

Так что почитайте, сколько ресурсов займет МикроБлэйз, МАС и т.д.

А есть ли в этом смысл? Может дешевле поставить внешний контроллер с МАС и PHY, например Люминари или PIC?

Или хотя бы контроллер ethernet с PHY, например от Микрел...

А уж то, что это для начинающего будет быстрее в отладке и проще, так это точно...

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


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

а с моими знаниями это будет обречено на провал.

В корне не правильная позиция! А как еще учится ? Нужно брать и пробовать, набивать шишки и снова пробовать :))

xor.kruger, а с какой ПЛИС вы работали?

Там где юзался Ethernet это были чипы XC3SD1800A и XC3S500E

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

В моем случае именно для Ethernet внешняя память не использовалась

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

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

а потом переписать под себя файл ограничений?

Что вы подразумеваете под файлом ограничений ?

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


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

А есть ли в этом смысл? Может дешевле поставить внешний контроллер с МАС и PHY, например Люминари или PIC?

Или хотя бы контроллер ethernet с PHY, например от Микрел...

А уж то, что это для начинающего будет быстрее в отладке и проще, так это точно...

..посоветуйте контроллер с PHY для 1G ?

так чтобы новичёк смог на основе какой отладочной платы поднять сеть у себя в устройстве.

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


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

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

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

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

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

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

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

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

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

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