|
ethernet + hps (Altera SoC Cyclone V), передача данных с ПЛИС на ПК |
|
|
|
Jul 10 2015, 09:11
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Добрый день и с пятницей! Есть проект на ПЛИС, собранный в Quartus 14.1. Посмотрел выход ПЛИС c помощью SignalTap, теперь хочу организовать выдачу данных с ПЛИС на ПК по ethernet. С ПЛИС передается 16-ти разрядное слово с частотой 500 кГц. До этого с интерфейсами не работал. Теоретически представляю это так: 1) Интерфейс Ethernet делаю на HPS (плате ethernet подключен к hps). 2) Связываю проект, выполненный на fpga с hps (на котором ethernet) с помощью AXI bridge. 3) Пишу/ищу программу для ПК, которая принимает данные с etherneta.
Вопросы: 1)Правильны ли мои теоретические представления? 2)Ни на rocketboards.org, на altera.com не нашел API, которые бы позволили работать с интерфейсом ethernet. Это мой первый опыт работы с интерфейсом, поэтому представляю наличие API (начать выдачу, закончить выдачу и т.д). 3)Есть ли стандартная программа для приема данных с ethernet?
Заранее извиняюсь за глупые вопросы, буду очень рад, если направите в нужном направлении.
|
|
|
|
|
 |
Ответов
(1 - 7)
|
Jul 28 2015, 10:54
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(Golikov A. @ Jul 10 2015, 10:57)  Правильный путь это превратить Ethernet в TCP/IP. И тогда оно будет приниматься уже чем угодно и кем угодно. От просто netcat до самописных приложений с сокетами и так далее...
для того чтобы просто ethernet стал TCP/IP нужен на железном уровне MAC контроллер, а потом на программном(редко железном) уровне TCP стэк, самое распространенное это LwIP - бесплатный широко распространеный стэк. Для того чтобы крутить стэк обычно пихают софт процессор (у альтеры это ниос), или используют микрухи со встроенными ядрами процов (как эти чипы зовутся у альтеры не знаю) У меня как раз SOC - система на кристалле, в которую входит ПЛИСовская логика и процессор cortex-A9. Цитата(vadimuzzz @ Jul 12 2015, 05:55)  если именно "пару байт" переслать, то можно обойтись raw sockets, без tcp/ip. что касается стандартного api, то его нет, есть описание регистров в hwlib и писанный наркоманами даташит. я тут как-то выкладывал недоделанный bare-metal с ethernet, поищите. там сетевой части вообще нет, только прием/передача пакетов. Ваш проект нашел сразу, еще когда только начал разбираться с SOC. В Си нахожусь на уровне начальных курсов Бауманки, поэтому в коде сложно разобраться, поэтому решил выполнить эту реализацию на linux. По туториалу с rocketboard загрузил linux. Теперь, как я понял, в linux надо поставить стэк (как посоветовал Golikov A - LwIP), а после связать fpga c hps AXI-мостом? Я это настолько расплывчато себе представляю и удивляюсь, почему нет информации по реализации ethernet на linux для встраиваемых систем. Скорее всего не там ищу, скиньте пожалуйста ссылочки в каком направлении копать.
|
|
|
|
|
Jul 29 2015, 09:39
|
Частый гость
 
Группа: Свой
Сообщений: 82
Регистрация: 6-11-14
Пользователь №: 83 540

|
Цитата(Golikov A. @ Jul 28 2015, 16:08)  А знаете зачем люди ставят линукс  ? Потому что в нем встроенный ТСР стэк  ))) Как и файловая система и много других бонусов.... так что если вы линукс подняли, то уже все есть, ТСР/IP на уровне сокетов, пишите на С/C++, пользуйтесь... Драйвер только надо дописать работы с МАК контроллером, если в вашей сборки его нет... Да в соседней теме люди как раз обсуждают как там правильно все мосты и связи поднимать, спросите пока не разбижались  LwIP на линуксе - это кстати стильно  ... интересно FatFS из сборок для процов можно поднять.... Вопрос про то, как писать. Где посмотреть как происходит программирование ethernet'a? Я не могу понять, программирование происходит в среде DS-5 и использованием специальных API или же я могу из под линукса сделать автозагрузку определенной программы для передачи данных по ethernet?
|
|
|
|
|
Jul 29 2015, 10:42
|
Гуру
     
Группа: Свой
Сообщений: 4 256
Регистрация: 17-02-06
Пользователь №: 14 454

|
тут надо разделить 1. это драйвер mac уровня, это программа между линуксом и железом. Ее пишут как пишут все драйверы линукса, встраивают в ядро или кладут внешним загружаемым модулем и так далее... как реализовано ее взаимодействие с железом мне не ведомо, API обычно не бывает, скорее адреса и протоколы связи, регистры настройки так далее, это надо описание читать самого чипа. Но очень большой шанс если этот линукс специально для вашего СОка, то такой драйвер в нем уже есть 2. это уже взаимодействие программ пользователя с езернетом, программа между пользователем и ТСР стэком линукса. Ее пишут где вам удобнее (часто это эклипс), компилируют gcc линукса в самом линуксе, там же загружают и исполняют. Тут все делают как везде, хоть под РС компьютер, хоть под что другое. Это уже программа прикладная для операционной системы. То есть линукс отделяет железо со всей спецификой работы с ним, от вас - пользователя, Вплоть до того что вы можете брать чужие линукс программы и они должны работать. по последнему пункту http://www.ibm.com/developerworks/linux/tu...sock/index.htmlну и подобные ссылки
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|