Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Gigabit Ethernet IP
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Системы на ПЛИС - System on a Programmable Chip (SoPC)
Страницы: 1, 2
robix
Всем привет!
Есть задача реализовать Гигабитный ethernet на Cyclone III или IV.
Есть желание все это сделать на NIOS II. Вопросы:
1. кто нибудь пробовал на стандартных IP-корах езернета достигать 500 мбит в передаче?
2. каким образом езернет можно сопрягать с NIOS, не будет ли больших задержек!?
vadimuzzz
Цитата(robix @ Mar 5 2011, 16:11) *
1. кто нибудь пробовал на стандартных IP-корах езернета достигать 500 мбит в передаче?

да, с использованием аппаратного ускорения UDP это вполне реально. у меня было порядка 600 в системе с ниосом практически без оптимизаций.
Цитата
2. каким образом езернет можно сопрягать с NIOS, не будет ли больших задержек!?

в примерах посмотрите, можно на alterawiki.com. корка интегрируется в SOPC. у нее 1 интерфейс Avalon-MM для доступа к регистрам и 2 Avalon-ST (на прием и передачу). Avalon-ST подключаются к SGDMA. Большие задержки это сколько? В любом случае, это определяется главным образом контроллером прерываний, можно поставить внешний VIC.
robix
А можно точнее, что значит почти без оптимизаций? И где этот ускоритель UDP - в настройках тристате я его не нашел!?
То есть куда мне смотреть, что бы выжать это 600?
vadimuzzz
Цитата(robix @ Mar 12 2011, 13:45) *
А можно точнее, что значит почти без оптимизаций?

это значит, что компоненты брались стандартные. софт я тоже выкладывал в теме про ниос и езернет, к нему добавляется еще пара функций для пересылки пакетов по UDP.
из софтовых оптимизаций - включение конфигурации "Release".
Цитата
И где этот ускоритель UDP - в настройках тристате я его не нашел!?

я брал отсюда
http://www.alterawiki.com/wiki/Nios_II_UDP_Offload_Example
bark
я достиг 982Mbit/s при выдаче UDP потока с девборды на комп.
проверка целостности данных по счетчки внутри пакетов.

без ниоса. всё руками.
vadimuzzz
Цитата(bark @ Mar 14 2011, 17:20) *
без ниоса. всё руками.

это понятно. у системы с ниосом плюс в другом - можно сделать софтовый TCP и аппаратный UDP. иногда такое решение удобнее (гибче).
bark
Цитата(vadimuzzz @ Mar 14 2011, 14:34) *
это понятно. у системы с ниосом плюс в другом - можно сделать софтовый TCP и аппаратный UDP. иногда такое решение удобнее (гибче).


да.. поэтому есть желание сесть разобраться в ниосе. )
robix
Уважаемые коллеги, можно ли такое устройство " 982Mbit/s при выдаче UDP"
использовать с NIOS? Как его вообще можно использовать без NIOS если необходимо принимать команды с компьютера и обрабатывать их в плис, если нужно коммутировать потоки на гигабитный эзернет с разных входных блоков...
Неужели это все можно запрограммировать на verilog в разумные сроки? Я имею ввиду прикладной контроллер управления. Небось нужно убить кучу времени на отладку!? К тому же, одно дело автоматом генерить пакеты и другое дело загружать данные из другого блока, не упадет ли скорость передачи в этом случае!?
bark
Цитата(robix @ Mar 14 2011, 19:25) *
Уважаемые коллеги, можно ли такое устройство " 982Mbit/s при выдаче UDP"
использовать с NIOS? Как его вообще можно использовать без NIOS если необходимо принимать команды с компьютера и обрабатывать их в плис, если нужно коммутировать потоки на гигабитный эзернет с разных входных блоков...
Неужели это все можно запрограммировать на verilog в разумные сроки? Я имею ввиду прикладной контроллер управления. Небось нужно убить кучу времени на отладку!? К тому же, одно дело автоматом генерить пакеты и другое дело загружать данные из другого блока, не упадет ли скорость передачи в этом случае!?


я начал работу с сетью во второй половине января. Тогда корки MACa ещё в глаза не видел, а о сетевый протоколах имел общее представление.
Avalon-ST и Avalon-MM в глаза не видел.
И вообще с девбордой впервые работал, так что нового было много.
в середине февраля у меня железяка уже работала с ARP и ICMP. Ещё через неделю заработал запрос/ответ по UDP.
сейчас уже есть система команд, управление внутренними регистрами, несколько портов для запросов и блок обработки приема/передачи данных с пакетами JUMBO до 7K. с расчетом чексумм.
удалённо доступны все параметры MAC/PHY. можно менять физический адрес, IP, задавать порты прослушки и выдачи.

UDP весьма прост. поэтому принимать и обрабатывать его проблем нет.
Вот с TCP уже сложнее. поэтому с ним лучше сразу браться за ниос.

по поводу можно ли всё это с НИОС... раз говорят что UDP можно аппаратно формировать - то вероятно можно.
Serhiy_UA
NiosII не справится с UDP для сотен Mbit/s, это однозначно. Он своим софтом и три-четыре десятка Mbit/s тянет с трудом при внешнем аппаратном акселераторе для контрольных сумм.
Оптимальное решение для сотен Mbit/s здесь уже озвучено: слабые потоки TCP обрабатывать софтом на NiosII, а мощные потоки выдавать аппаратным UDP.
Только надо организовать мультиплексор для доступа к Ethernet между аппаратным UDP и NiosII, с приоритетом у NiosII (или нескольких NiosII).


vadimuzzz
Цитата(Serhiy_UA @ Mar 15 2011, 13:58) *
NiosII не справится с UDP для сотен Mbit/s, это однозначно.

ниос тут ни при чем, его работа - сконфигурировать DMA и рулить прерываниями. готовые компоненты для SOPC есть, можно систему готовую за день поднять. ниос, раздающий 600 Мбит на пакетах 1024 байт - пройденный этап. если бы мне надо было больше, я бы пооптимизировал, там все прозрачно
Serhiy_UA
Цитата(vadimuzzz @ Mar 15 2011, 12:15) *
ниос тут ни при чем, его работа - сконфигурировать DMA и рулить прерываниями. готовые компоненты для SOPC есть, можно систему готовую за день поднять. ниос, раздающий 600 Мбит на пакетах 1024 байт - пройденный этап. если бы мне надо было больше, я бы пооптимизировал, там все прозрачно

У меня NiosII был сконфигурирован без DMA. Согласен, с DMA будет гораздо быстрее.
Но здесь еще пара аспектов по структуре:
1.Если используется готовый контроллер то DMA подходит, а если PHY то лучше синтезировать автомат UDP. Так ли?
2.При работе с DMA нужно работать с несколькими блоками памяти. Из одних выдавать по DMA, а в других тем временем подготавливать данные в соответствии со структурой текущего пакета. В автомате UDP для PHY это все можно делать конвейером, как бы на проходе. Какие были решения?
vadimuzzz
Цитата(Serhiy_UA @ Mar 15 2011, 15:13) *
1.Если используется готовый контроллер то DMA подходит, а если PHY то лучше синтезировать автомат UDP. Так ли?

а разницы в общем-то нет, работа в любом случае с DMA идет. главное минимизировать работу процессора по перекидыванию данных из одной области памяти в другую. собственно, автомат UDP, что я выше приводил, как раз по этому принципу работает. процессор дает движку DMA дескриптор с данными для передачи (фактически, указатель на область в памяти), а автомат добавляет адреса, порты и прочую муть. потом отсылает данные и кидает процу прерывание - готов, мол.
Цитата
2.При работе с DMA нужно работать с несколькими блоками памяти. Из одних выдавать по DMA, а в других тем временем подготавливать данные в соответствии со структурой текущего пакета. В автомате UDP для PHY это все можно делать конвейером, как бы на проходе. Какие были решения?

допустим, 2 блока памяти - в отдельно взятый момент времени один находится под управлением DMA, второй у процессора. пока DMA отправляет пакет, у проца есть время на подготовку следующего. если система спроектирована правильно, то процессор почти ничего с данными не делает и гарантированно успеет подготовить следующий пакет. если же проц нагружен, например вычислениями, то естественно скорости не получить, значит надо выносить вычисления в логику. другой источник лагов - убогий "родной" контроллер прерываний, лечится внешним. авалон - штука гибкая и масштабируемая, плата за это - оверхед по ресурсам.
Serhiy_UA
Спасибо, vadimuzzz, за соображения, они интересны...

Цитата(vadimuzzz @ Mar 15 2011, 12:29) *
другой источник лагов - убогий "родной" контроллер прерываний, лечится внешним. авалон - штука гибкая и масштабируемая, плата за это - оверхед по ресурсам.

"Родной" контроллер прерываний NiosII уже здесь обсуждали (осуждали), а о внешнем, ни разу не слышал. Если не обращать внимание на ресурсы, то, что это за вещь, какой получен выигрыш, есть ли цифры?
vadimuzzz
Цитата(Serhiy_UA @ Mar 15 2011, 15:58) *
Если не обращать внимание на ресурсы, то, что это за вещь, какой получен выигрыш, есть ли цифры?

латентность по сравнению со штатным (у того может до сотни тактов доходить) сильно меньше - единицы тактов.
http://www.altera.com/literature/hb/nios2/..._controller.pdf
robix
Коллеги, а какой минимальный чип может потребоваться для реализации системы на NIOS, с гигабитным ethernet, i2c, SPI е еще 6 Клут 8К ОЗУ на другие задачи!?
Я имею ввиду чип без внешней памяти из серии cyclone... Например можно ли все это сделать на чипе с 30К лут и 100К ОЗУ!?
vadimuzzz
Цитата(robix @ Mar 17 2011, 13:04) *
Например можно ли все это сделать на чипе с 30К лут и 100К ОЗУ!?

без проблем влезет в ep3c25, еще место останется. правда, никаких stdlib в сях, встроенных осей и т.п.
iiv
Цитата(bark @ Mar 15 2011, 12:38) *
UDP весьма прост. поэтому принимать и обрабатывать его проблем нет.


ПолуОФФ: Скажите, пожалуйста, а UDP по 10 и 1000МБитным протоколам одинаковое? Вот то, что я для 10МБит использовал, как по ссылке

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

я для Гигабитного UDP смогу использовать?
des333
Цитата(iiv @ Apr 26 2011, 12:31) *
ПолуОФФ: Скажите, пожалуйста, а UDP по 10 и 1000МБитным протоколам одинаковое? Вот то, что я для 10МБит использовал, как по ссылке

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

я для Гигабитного UDP смогу использовать?


Вообще, естественно, UDP, как протокол более высокого уровня не зависит (не должен) от используемого стандарта Ethernet.

Но то, что Вы привели по ссылке, это просто учебный пример. Там в одном модуле перемешано все: и 2, и 3, и 4 уровни.
Вытащить оттуда UDP можно, но смысла особого нет. Лучше заново переписать с нуля более структурировано и красиво. sm.gif
(возможно, у Вас уже все написано как нужно - я комментирую исключительно тот код, что по ссылке sm.gif)

Видел ветку откуда Вы перешли в эту тему.
Извиняюсь, что отвечаю на вопрос из той темы, просто чтобы все было в одном месте.

Если хотите передавать относительно простой UDP трафик без использования софт-процессоров (типа NIOS), лучший вариант для Вас -
скачать готовую корку MAC-ядра с OpenCores и дописать буквально пару простых модулей для формирования нужного UDP трафика.
bark
Цитата(iiv @ Apr 26 2011, 11:31) *
ПолуОФФ: Скажите, пожалуйста, а UDP по 10 и 1000МБитным протоколам одинаковое?


да. разницы никакой нет.
просто надо корректно формировать пакеты и скармливать их МАС контроллеру.
http://ru.wikipedia.org/wiki/UDP
Но я бы рекомендовал больше смотреть на English версию страницы. На русской вроде какая-то путаница с расчетом UDP чексуммы.
des333
Цитата(bark @ Apr 26 2011, 17:44) *
На русской вроде какая-то путаница с расчетом UDP чексуммы.
Глянул - никакой путаницы, вроде, нет.




bark
Цитата(des333 @ Apr 26 2011, 16:50) *
Глянул - никакой путаницы, вроде, нет.

Значит путаница возникала только у меня в голове. =)
Тем не мение гораздо понятнее мне была именно английская версия.
сейчас уже (зная все ньюансы) и русская понятна.. но сначала она мне такой прозрачной не казалась.
des333
Цитата(bark @ Apr 26 2011, 17:54) *
Значит путаница возникала только у меня в голове. =)
Тем не мение гораздо понятнее мне была именно английская версия.
сейчас уже (зная все ньюансы) и русская понятна.. но сначала она мне такой прозрачной не казалась.

Ну, это часто так. Я вообще стараюсь русскоязычную литературу не использовать - часто пишут бред. sm.gif


А, если не секрет, как у Вас дела с Вашим проектом (помнится, Вы тоже хотели по гигабиту UDP гнать)?
Спрашиваю не из праздного любопытства. Просто у iiv на плате RGMII, а готовые кортки на том же OpenCores с GMII.
Вы тогда, если ничего не путаю, тоже с этой проблемой сталкнулись. Как решили? Сами написали или нашли готовую?

Может и уважаемому iiv советом поможете? sm.gif
bark
Цитата(des333 @ Apr 26 2011, 17:00) *
Ну, это часто так. Я вообще стараюсь русскоязычную литературу не использовать - часто пишут бред. sm.gif


А, если не секрет, как у Вас дела с Вашим проектом (помнится, Вы тоже хотели по гигабиту UDP гнать)?
Спрашиваю не из праздного любопытства. Просто у iiv на плате RGMII, а готовые кортки на том же OpenCores с GMII.
Вы тогда, если ничего не путаю, тоже с этой проблемой сталкнулись. Как решили? Сами написали или нашли готовую?

Может и уважаемому iiv советом поможете? sm.gif


С опенкоров проект действительно не подходит из-за MII интерфейса.
СтьюардЛиттл помог с Альтеровским TSE MAC-контроллером. (по этому поводу надо к нему в личку)

как только у меня появился МАС - начал писать проект под него.
Разобрался с шиной Авалон. (по ней идёт общение с МАС).
Сделал сбор пакетов и сейчас у меня UDP летает. последний замер был 982Мбит целостный поток от девборды к компу.
+ARP + ICMP

с вопросами по организации всего этого конечно могу помочь.

на всё это дело, от изучения TSE и до работы 3-х протоколов потратил вроде около месяца-полтора.
spectr
Пытаюсь запустить TSE_MAC на скорости 1Гбит на плате CIII dev board (EP3C120F780). Пока что мало чего понимаю в этом IP, поэтому будет немало вопросов.
Все делаю на базе проекта cycloneIII_3c120_dev_niosII_standard из дев-кита (как говорят на альтерафорумах, он может работать в гигабитном режиме).

Итак, насколько я понял, если настроить корку в режиме "10/100/1000Mb Ethernet MAC", то она автоматически должна уметь работать в режиме 1000. Собственно, ничего в сэмпловом проекте пока не менял. Однако, при заливке проекта Simple Socket Server я по логу вижу что скорость таки 100Мбит:

Код
InterNiche Portable TCP/IP, v3.1

Copyright 1996-2008 by InterNiche Technologies. All rights reserved.
prep_tse_mac 0
Can't read the MAC address from your board (this probably means
that your flash was erased). We will assign you a MAC address and
static network settings

Please enter your 9-digit serial number. This is printed on a
label under your Nios dev. board. The first 3 digits of the
label are ASJ and the serial number follows this.
-->Created "Inet main" task (Prio: 2)
Created "clock tick" task (Prio: 3)

123456789
123456789
Your Ethernet MAC address is 00:07:ed:ff:cd:15
prepped 1 interface, initializing...
[tse_mac_init]
INFO    : TSE MAC 0 found at address 0x10022800
INFO    : PHY Marvell 88E1111 found at PHY address 0x12 of MAC Group[0]
INFO    : PHY[0.0] - Automatically mapped to tse_mac_device[0]
INFO    : PHY[0.0] - Restart Auto-Negotiation, checking PHY link...
INFO    : PHY[0.0] - Auto-Negotiation PASSED
MARVELL : Mode changed to RGMII/Modified MII to Copper mode
MARVELL : Enable RGMII Timing Control
MARVELL : PHY reset
INFO    : PHY[0.0] - Checking link...
INFO    : PHY[0.0] - Link not yet established, restart auto-negotiation...
INFO    : PHY[0.0] - Restart Auto-Negotiation, checking PHY link...
INFO    : PHY[0.0] - Auto-Negotiation PASSED
INFO    : PHY[0.0] - Link established
INFO    : PHY[0.0] - Speed = 100, Duplex = Full
OK, x=0, CMD_CONFIG=0x00000000

MAC post-initialization: CMD_CONFIG=0x04000203
[tse_sgdma_read_init] RX descriptor chain desc (1 depth) created
mctest init called
IP address of et1 : 0.0.0.0
Acquired IP address via DHCP client for interface: et1
IP address : 192.168.0.104
Subnet Mask: 255.255.255.0
Gateway    : 192.168.0.1

Simple Socket Server starting up
[sss_task] Simple Socket Server listening on port 30
Created "simple socket server" task (Prio: 4)


хотя на альтерафорумс сплошь и рядом в логах сияет "Speed = 1000".

Что я на данном этапе делаю не так?
И еще - нужно ли мне единичить сигнал "set_1000_to_the_tse_mac"?
vadimuzzz
скорость задается переключением выходов PLL (125, 25 и 2,5 МГц). сигнал на переключатель подается с MAC, а MAC его выставляет в зависимости от сигнала с PHY (он называется enet_link_1000, как-то так), либо может быть установлен принудительно. проверьте сигналы управления клоком, в регистры PHY тоже не мешает заглянуть

Цитата(spectr @ Aug 17 2011, 17:33) *
И еще - нужно ли мне единичить сигнал "set_1000_to_the_tse_mac"?

заведите на него проинвертированный enet_link_1000. set_10 установить в 0. выходы ena_10 и eth_mode управляют мультиплексором
spectr
Подключение сигнала enet_led_link1000 к порту set_1000_to_the_tse_mac никак не влияет - даже светодиод соответствующий на плате не загорается. Вероятно, дело в настройках регистров. Отсюда вопрос - в каком месте (до alt_iniche_init() или после или где-то еще) нужно производить конфигурирование регистров и достаточно ли только установить флаг ETH_SPEED?

П.С.: По логу во всех случаях действительно видно, что CMD_CONFIG=0x04000203 (т.е., битCMD_CONFIG[3] (ETH_SPEED) = 0). Согласно даташиту на TSE_MAC поле ETH_SPEED содержится в 4-м бите регистра CMD_CONFIG, но при инициализации контроллера этот бит не устанавливается.

П.П.С.: Плата сейчас включена в общую локалку. Это может заставить ее работать не в том режиме? Имеет ли смысл подключить ее напрямую к ПК?
vadimuzzz
Цитата(spectr @ Aug 17 2011, 20:05) *
Подключение сигнала enet_led_link1000 к порту set_1000_to_the_tse_mac никак не влияет - даже светодиод соответствующий на плате не загорается.

светодиод должен загораться при наличии линка. смотрите не CMD_CONFIG, а STATUS-регистр PHY, он первичен. но светодиод смущает, м.б. кабель плохо обжат?

Цитата(spectr @ Aug 17 2011, 20:05) *
Согласно даташиту на TSE_MAC поле ETH_SPEED содержится в 4-м бите регистра CMD_CONFIG, но при инициализации контроллера этот бит не устанавливается.

все правильно, если 0, то скорость определяется так, как я описывал выше. установка 1 принудительно включит гигабит, но у вас явно есть проблема в сети, ее нужно найти
spectr
Итак, после ряда телодвижений (топ-левел из кита версии 10.0 оказался сильно перепилен по сравнению с этим же проектом версии 9.1) удалось увидеть в логе "Speed = 1000", светодиод соответствующий на плате горит.
Теперь хочется понять следующее:
1. Что и в какой последовательности конфигурировать программно (для двух случаев - если используется ucos, и если она не используется)?
2. Каким образом можно организовать канал передачи данных (от платы к ПК) на максимально возможной скорости, желательно с достаточно высокой надежностью (т.е. без потерь)?
3. Каким образом померить (какими средствами, что учитывать и что не учитывать при подсчете) пропускную способность канала передачи данных?

Пока что параллельно изучаю тред "Ethernet+Nios+Cyclone", где есть много полезного. Наверняка многие ответы найду там, но на всякий случай оставлю свои вопросы и здесь.

П.С.: Кстати, в логе конфигурации появилась фраза "TSEMAC SW reset bit never cleared!". То есть это означает что ресет софтварно не сбрасывается или же что что-то аппаратно сидит в ресете?

Плата, хоть и конфигурируется, но до нее никак не достучаться - не пигнуется ни в какую (соединена с ПК кросс-кабелем)... Может быть я некорректно выставляю параметры сети? Какими, например, должны быть параметры для платы и ПК?
vadimuzzz
Цитата(spectr @ Aug 18 2011, 19:08) *
2. Каким образом можно организовать канал передачи данных (от платы к ПК) на максимально возможной скорости, желательно с достаточно высокой надежностью (т.е. без потерь)?

указанные требования находятся в противоречии. максимальная надежность достигается при использовании TCP, за счет скорости, разумеется. максимальная скорость будет на UDP и Raw Ethernet сокетах, надежность не гарантируется. т.е. напрашивается UDP с по возможности максимальной длиной пакета + контроль ошибок/доставки своими руками.
Цитата
3. Каким образом померить (какими средствами, что учитывать и что не учитывать при подсчете) пропускную способность канала передачи данных?

счетчик пакетов + таймер. как вариант - снифер типа wireshark, там это есть. служебную информацию отбросить.
Цитата
Пока что параллельно изучаю тред "Ethernet+Nios+Cyclone", где есть много полезного. Наверняка многие ответы найду там, но на всякий случай оставлю свои вопросы и здесь.

по пункту 1 там точно есть
Цитата
П.С.: Кстати, в логе конфигурации появилась фраза "TSEMAC SW reset bit never cleared!". То есть это означает что ресет софтварно не сбрасывается или же что что-то аппаратно сидит в ресете?

возможно, что-то с клоками. информации недостаточно. бит в регистре не очищается - скорее всего проблема аппаратная
Цитата
Плата, хоть и конфигурируется, но до нее никак не достучаться - не пигнуется ни в какую (соединена с ПК кросс-кабелем)... Может быть я некорректно выставляю параметры сети? Какими, например, должны быть параметры для платы и ПК?

IP-шники из одной подсети, этого должно быть достаточно
Hatory
Добрый вечер. Пытаюсь запустить gigabit ethernet на Stratix II GX, но пока безуспешно. По порядку:
1) Общие сведения: Quartus II v11
2) создаю систему в SOPC

3) в Quartus создаю проект (на основе проекта для Cyclone II):

clk - osc_clk (100 MHz)
4) в NIOS IDE запускаю проект Simple Socket Server, в котором прописываю:
IP_address: 192.168.1.105
MASK: 255.255.255.0
Gateway: 192.168.1.1

Назначаю MAC-адрес вручную в методе get_mac_addr.
Компилирую и запускаю. Информация из Nios Console:

InterNiche Portable TCP/IP, v3.1

Copyright 1996-2008 by InterNiche Technologies. All rights reserved.
prep_tse_mac 0
Your Ethernet MAC address is 00:07:ed:ff:00:01
prepped 1 interface, initializing...
[tse_mac_init]

INFO : TSE MAC 0 found at address 0x08006000
INFO : Multi Channel = No
INFO : MDIO Shared = No
INFO : MAC Type = 10/100/1000 Ethernet MAC
INFO : MAC Address = 0x08006000
INFO : MAC Device = tse_mac_device[0]
INFO : PHY Marvell 88E1111 found at PHY address 0x12 of MAC Group[0]
INFO : PHY OUI = 0x005043
INFO : PHY Model Number = 0x0c
INFO : PHY Revision Number = 0x2
INFO : PHY[0.0] - Automatically mapped to tse_mac_device[0]
Created "Inet main" task (Prio: 2)

INFO : PHY[0.0] - Advertisement of 1000 Base-T Full Duplex set to 1
Created "clock tick" task (Prio: 3)
INFO : PHY[0.0] - Advertisement of 1000 Base-T Half Duplex set to 1
INFO : PHY[0.0] - Advertisement of 100 Base-T4 set to 0
INFO : PHY[0.0] - Advertisement of 100 Base-TX Full Duplex set to 1
INFO : PHY[0.0] - Advertisement of 100 Base-TX Half Duplex set to 1
INFO : PHY[0.0] - Advertisement of 10 Base-TX Full Duplex set to 1
INFO : PHY[0.0] - Advertisement of 10 Base-TX Half Duplex set to 1
INFO : PHY[0.0] - Restart Auto-Negotiation, checking PHY link...
INFO : PHY[0.0] - Auto-Negotiation PASSED
INFO : Applying additional PHY configuration of Marvell 88E1111
INFO : Applying additional user PHY configuration
MARVELL : Mode changed to GMII to copper mode
MARVELL : Disable RGMII Timing Control
MARVELL : PHY reset

INFO : PHY[0.0] - Checking link...
INFO : PHY[0.0] - Link not yet established, restart auto-negotiation...
INFO : PHY[0.0] - Restart Auto-Negotiation, checking PHY link...
INFO : PHY[0.0] - Auto-Negotiation PASSED
INFO : PHY[0.0] - Link established
INFO : PHY[0.0] - Speed = 1000, Duplex = Full
OK, x=0, CMD_CONFIG=0x00000000

MAC post-initialization: CMD_CONFIG=0x0400020b
[tse_sgdma_read_init] RX descriptor chain desc (1 depth) created
mctest init called
IP address of et1 : 192.168.1.105
//тут Wireshark'ом ловлю пакеты (о них ниже)
DHCP timed out, going back to default IP address(es)

Simple Socket Server starting up
[sss_task] Simple Socket Server listening on port 30
Created "simple socket server" task (Prio: 4)

Итог: горит Led_1000, мигает led_rx, так же до выдачи сообщения "DHCP timed out, going back to default IP address(es)" мигает led_tx и приходят пакеты.


Окно "time limited..." не закрываю. На ping ответ "заданный узел недоступен". Вопрос: в чем может быть ошибка?

Информация о ПК: ОС Windows 7, ip 192.168.1.2, mask 255.255.255.0, основной шлюз 192.168.1.1
vadimuzzz
а почему у вас там кругом IPv6 (судя по wireshark), а вы назначаете IPv4-адрес?
Hatory
Спасибо за отклик. Полностью отключила IPv6. То, что перехватывает снифер, в прикрепленном файле. Конфигурация сети
vadimuzzz
виден 1 пакет от платы к компу, причем битый. проблема может быть в невыдержанных времянках (например, из-за кривых констрейнов). что в отчете таймквеста, есть матюки?
Hatory
Отчет TimeQuest Analizer
vadimuzzz
Цитата(Hatory @ Aug 29 2011, 23:02) *
Отчет TimeQuest Analizer

как минимум, там есть unconstrained clocks, слаки тоже есть. что у вас за плата?
Hatory
Stratix II GX PCI Express Development Board
Hatory
Спасибо, vadimuzzz, за попытку помочь. Сегодня довела проект до рабочего состояния.
vadimuzzz
Цитата(Hatory @ Sep 7 2011, 21:58) *
Сегодня довела проект до рабочего состояния.

а как насчет поделиться, где была неисправность? а то помрем с любопытства )
_nikita
Уважаемый vadimuzzz и dim99, огромное Вам спасибо за вопросы, ответы и софт по теме Ethernet + NIOS.
Сегодня удалось передать и получить пакеты на отладочной плате AIIGX c Marvell 88e1111 (по RGMII).
Уважаемый vadimuzzz, чем можно попередавать пакеты с PC (кроме qt) "вручную".
И еще один вопрос, получилось ли у кого-либо поработать на гигабите, или только 100 Mbit c AN?
vadimuzzz
Цитата(_nikita @ Sep 8 2011, 16:34) *
чем можно попередавать пакеты с PC (кроме qt) "вручную".

попробуйте netcat. а вообще в любом вменяемом тулките есть поддержка UDP-сокетов
Цитата
И еще один вопрос, получилось ли у кого-либо поработать на гигабите, или только 100 Mbit c AN?

да, полет нормальный
_nikita
Спасибо, vadimuzzz. Попробую настроить marvell и MAC на гигабит и со всем этим взлететь.
А вообще я правильно понимаю, что при подключении, я должен сначала
узнать на какой скорости работает Marvell, после этого перестроить MAC на нужную
скорость и дать soft reset Марвелу?
vadimuzzz
Цитата(_nikita @ Sep 8 2011, 18:55) *
А вообще я правильно понимаю, что при подключении, я должен сначала
узнать на какой скорости работает Marvell, после этого перестроить MAC на нужную
скорость и дать soft reset Марвелу?

правильно. еще один важный момент переключить клоки в зависимости от линка. также есть специфичная для марвеловского PHY инициализация (посмотрите в альтеровском драйвере, там буквально пара регистров, но без них не взлетит)
_nikita
Спасибо vadimuzzz за наводку по инициализации марвеловского PHY. А клок я так понимаю у меня
автоматом переключится (взвожу бит ETH_SPEED у MAC, он переключает сигнал eth_mode в 1, по которому я на
PHY подаю 125МГц).
vadimuzzz
Цитата(_nikita @ Sep 8 2011, 19:40) *
А клок я так понимаю у меня
автоматом переключится (взвожу бит ETH_SPEED у MAC, он переключает сигнал eth_mode в 1, по которому я на
PHY подаю 125МГц).

это не автоматом, это вручную. автоматом - это когда сигнал ENET_LINK (его выставляет PHY в зависимости от того, в какую сеть подключен) или как его там используется. он заходит на MAC и переключает SPEED. тогда будет и на гигабите, и на сотке работать без изменения настроек
_nikita
Извините, по поводу автомата, неправильно выразился (мыслю изнутри логической функции).
А сигнал ENET_LINK он у меня по умолчанию в нуле.
vadimuzzz
я вот об этом:


сигнал на set_1000 выдает PHY, он же еще к светодиоду на плате подключен. причем он active_low. set_10 смело ставим в 0. выходы MAC, ena_10 и eth_mode переключают мультиплексор (на него завести с PLL три клока - 2.5, 25 и 125МГц)
_nikita
Спасибо vadimuzzz, завтра буду пробовать поработать на гигабите.
Вечером поискал инициализацию для марвеловского PHY, но не нашел,
если Вам не трудно, напишите этот кусок кода или место, где посмотреть.
Заранее благодарен.
vadimuzzz
как-то так:
Код
...
    #define PHY 0x12
...
    alt_u32 t;
    /* PHY and other board peripherial initialization */
    IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TSE_MAC_BASE,PHY);
    t = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B);//Extended PHY Specific Status Register
    t &= 0xFFF0;
    IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B,t|0xB);//RGMII to Copper
    t = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14);//Extended PHY Specific Control Register
    IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14,t|0x82);//Add Delay to RX_CLK for RXD Outputs; Add Delay to GTX_CLK for TXD Inputs
    t = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_CONTROL);
    IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_CONTROL,t|PCS_CTL_sw_reset);//Previous Operations Require SW Reset
...
_nikita
vadimuzzz, к сожалению на отладочной плате AIIGX сигнал LED_LINK1000 от PHY идет только на светодиод,
поэтому завести его на сигнал set_1000 нет возможности. Необходимо как-то узнать от PHY скорость подключения и
соответственно настроить MAC. Может Вы знаете как узнать скорость подключения PHY ( datasheet'а на Marvell у меня нету)?

P.S. Сигнал set_1000 аппаратно установил в 1, настроил сетевую карту на гигабит и все работает!!!!!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.