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

Ситуация

Нужно сделать железку (плату), которая могла бы общаться с ПК по Ethernet в целях передачи:

- управляющей информации из ПК в железку (менее 1 Мб/с);

- информации о состоянии железки в ПК (менее 1 Мб/с);

- полезной информации из железки в ПК (~10 Мб/с);

- больших объемов информации (в планах несколько ГБ), накопленных на плате, не в режиме реального времени из железки в ПК, по его запросу.

Для указанных целей вполне подходит 100 Мб Ethernet.

Ethernet выбран как достаточно скоростной интерфейс, позволяющий подключить к компьютеру несколько таких плат.

На плате единственный управляющий элемент - это ПЛИС. Ориентировочно XC5VSX50T. Никаких микроконтроллеров и процессоров не планируется.

 

Мнение

Один из подходов в такой ситуации: использовать внешний (для ПЛИС) трансивер Ethernet физического уровня и встроенный в ПЛИС MAC-контроллер.

Я так понимаю, имея в руках только кадр MAC-уровня, многого не сделаешь - необходима реализация протоколов. К сожалению, пока не знаком с протоколами сетевого и транспортного уровней, поэтому не знаю всей сложности.

Хотелось бы услышать мнение тех, кто сталкивался с подобными вещами.

 

Вопрос

Реально ли вообще обойтись без каких бы то ни было микроконтроллеров/процессоров, имея только MAC-контроллер и программируемую логику, для организации обмена данными по сети?

Может быть существуют другие, более оптимальные варианты взаимодействия ПЛИС с ПК по сети Ethernet?

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


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

kst

Вопрос по ситуации: кроме FPGA вообще ничего нет? Всяких там FLASH, SDRAM и т.п.

Вопрос по мнению: а почему Вы не желаете использовать какой-нибудь MCU?

Дополнительный вопрос: все приборы будут работать в одной сегменте сети без выхода в другие сегменты?

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


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

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

 

Если требуется поддержка стека TCP/IP то совсем без подобия MCU обойтись будет сложно.

Но при этом сам MCU может быть частью FPGA. Для основных функций в принципе даже на ядре типа PicoBlaze (правда програмить только на асме) можно соорудить что-то поддерживающие медленный командный канал (ARP, ICMP , UDP управления и статуса). Большой поток данных при этом можно формировать аппаратно автоматом формируя например UDP пакеты. В свое врем я делал похожее на Spartan3-400 обработка данных с радиолокатора. Правда потом от внутреннего контроллера отказался - так как снаружи поставил ADuC841 в основном из за встроенных ADC,DAC. Выходной поток данных был до 6 Мбайт/сек.

 

Хотя если не хочется связыватся с MCU -

посмотри сдесь синтезируемый . TCP/IP stack VHDL

 

Успехов! Rob.

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


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

Если на киты посмотреть. Можно lan91c111 задействовать.

На входе например имитируете isa шину.

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


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

Тоже интересуюсь данной темой. Есть корыстный вопрос: Нет ли у кого рабочего примера примера посылки UDP пакетов (формирования кадра, расчёта CRC и т.д.) с помощью ПЛИС и микросхемы phy-уровня? И если есть, то могли бы вы им поделиться. Для тестов планирую использовать отладочную плату на spartan3e500.

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


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

Вопрос

Реально ли вообще обойтись без каких бы то ни было микроконтроллеров/процессоров, имея только MAC-контроллер и программируемую логику, для организации обмена данными по сети?

Может быть существуют другие, более оптимальные варианты взаимодействия ПЛИС с ПК по сети Ethernet?

 

В данном случае, насколько я понимаю, потребуется достаточно развитое управление MAC уровнем в части приема/передачи/формирования пакетов, поэтому смотрите в сторону связки Microblaze (встраиваемое в ПЛИС процессорное ядро) + MAC + внешний PHY. При этом не потребуется никаких внешних управляющих микроконтроллеров и т.п.

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


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

Доброго здравия!

 

Из моего личного опыта применения для связи ПЛИС и ПЦ наиболее оптимальным оказалось использование внешнего Ethernet PHY к плис и EthernetLite для микроблейза. (готовых примеров в сети предостаточно хотя бы на том же xilinx.com ) Организовывать различные виды tcp/ip стэков тоже конечно можно хоть софтов хоть аппаратно было бы желание, из личного опыта для опознования устройства компьютером можно приделать софтовую обработку ICMP и ARP пакетов , и UDP для связи а остальное просто игнорировать. Обмен по UDP вполне позволит просто работать с пакетами на Winsocketе.

 

Но вот лично моё мнение: если не нужно организовывать передачи данных в интернет, связывать устройство с удалёным сервером, а нужно только построить простой обмен данными, то

а) обмен данными просто на Ethernet Frame со своей удобной структурой что позволит софтово на микроблейзе быстро и со вкусом паковать и распаковывать пакеты и обойтись без упаковки в пакет с трудоёмкой CRC и т.д.

б)на стороне компьютера ставим всеми любимый winpcap и работаем через его сокет. C ними работают Wireshark бывш. Ethereal, кстати xilinx ставит его для организации Co-Simulation со связью с target по Ethernet

в) При всём этом, если всё аккуратно написать в плис, то 5-7Мбайт в сек получить вполне возможно

 

Успехов!

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


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

Тоже интересуюсь данной темой. Есть корыстный вопрос: Нет ли у кого рабочего примера примера посылки UDP пакетов (формирования кадра, расчёта CRC и т.д.) с помощью ПЛИС и микросхемы phy-уровня? И если есть, то могли бы вы им поделиться. Для тестов планирую использовать отладочную плату на spartan3e500.
Занимаюсь тем же самым. Единственное нО - ИС для phy-уровня содежит в себе и mac-уровень тоже. Пользуюсь WIZnet W5100 - http://www.ewiznet.com. Предыстория - меня попросили взять существущие тест-инструменты, и дать возможность управлять ими дистанционно, через TCP или UDP - им без разницы. Инструменты разработанны нами, и содержут ПЛИС который управляет разной фигней. Я беру схемы существующих плат с плис'ом, и добовляю W5100. Конкретно мне оказалось удобнее использовать TCP для этой задачи, и 10Mbs для меня достаточно. Пользоватся W5100 - совершенно примитивно, выставлять TCP/IP, UDP, keepalive, итд опции тоже легко. Рекоммендую, если у Вас нету жестких требованей насчет скорости.

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


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

ИМХО от времени и условий все у вас зависит.

 

отлаживать логику протоколов класса TCP-IP на проце намного легче чем на фпга.

 

Если время ограничено и нет человека который вариться в кухне EDK/SOPC то поставте внешний арм(например LPC2478 + бесплатный ничи стек).

 

Если запас есть то освоите EDK, пригодиться (да и чип у вас толстый). На форуме кстати темы про TCP/IP на микроблейзе были.

 

Можно конечно использовать опенсорсный проц класса AVR, MSP430, но думаю что по затратам времени это эквивалентно освоению микроблейза ( правда совесть будет более чистой %) )

 

TCP/IP stack VHDL кстати синтезируемый но проверен авторами на 10 мегабит эзернете.

 

ЗЫ. Сам использую частично переписанную корку от Igor Mohor.

 

Удачи!!!

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


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

Тоже интересуюсь данной темой. Есть корыстный вопрос: Нет ли у кого рабочего примера примера посылки UDP пакетов (формирования кадра, расчёта CRC и т.д.) с помощью ПЛИС и микросхемы phy-уровня? И если есть, то могли бы вы им поделиться. Для тестов планирую использовать отладочную плату на spartan3e500.

 

У меня есть отсылка пакетов со скоростью 30 Мб/с TCP, используется спартан3+wiznet3150. Кстати, тоже данные от радара. Весь интеллект уместился в фсм на 24 состояния, полученный переложением на верилог фирменных Си-исходников. Могу намылить верилог, схему и описалово.

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


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

- информации о состоянии железки в ПК (менее 1 Мб/с);

- полезной информации из железки в ПК (~10 Мб/с);

Для указанных целей вполне подходит 100 Мб Ethernet.

 

Не хочу показаться занудливым, но есть мнение, что 11 Мб/с через 100 Mbit ethernet может и не пролезть, особенно для протоколов верхнего уровня (могут начаться проблемы со стороны ПК). Я бы рассчитывал на 8-9 Мб/с как реальный максимум.

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

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


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

Огромное спасибо всем ответившим!

 

Платка должна быть промышленного исполнения.

На плату планируется ставить оперативку и FLASH.

Никакого интернета и никаких серверов пока не планируется. Конечная система - 4 платы, свитч и 1 компьютер. Все.

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

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

 

По поводу Microblaze раздумываю, правда сей зверь мне знаком только понаслышке. Хотелось бы узнать, сколько ресурсов может уйти на его реализацию?

И вообще, можно ли как-то спрогнозировать, сколько от ПЛИС откусит все управление Ethernetом в лучшем случае???

 

Отдельный микроконтроллер ставить - это еще одна отдельная задачка. Плюс на плате придется потесниться. Но тоже, в принципе, вариант.

 

А вообще есть вариант покупки готовой промышленной процессорной платы с Ethernetом и USB на борту. Тогда нужно будет отлаживать взаимодействие 2х плат - платы с ПЛИС и процессорной платы - по шине, скажем, PCI. Эта задача мне вообще не знакома. Но может быть так проще будет?

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


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

Добрый день !

Мы пользуемся следующим набором:

 

HW - Virtex4FX, внутри PowerPC и железный MAC, собран MPMC3 и LL_TEMAC в режиме DMA, память DDR, системная тактовая и тактовая MPMC 100МГц, тактовая проца - 300МГц.

 

Стек - доработанная LWIP в режиме SOCKET API.

 

Передача - 80Мбит по 100Мбит линку.

 

Получали и 94Мбита при работе MPMC на 200МГц :)

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


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

Может имеет смысл подумать над м\сх контроллера Ethernet совмещенного с процессором ? Например - Mcrel . Тогда Плис только поставщик информации и коммутатор шин, а управление и протоколы за процессором. Несколько смущает могучесть процессора (ARM9) для подобной задачи . но думаю можно найти и более подходящие варианты.

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


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

Может имеет смысл подумать над м\сх контроллера Ethernet совмещенного с процессором?
Так ведь это уже говорилось - можно micrel, realtek, я предложил wiznet... Варианты есть.

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


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

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

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

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

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

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

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

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

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

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