|
|
  |
Gigabit Ethernet IP |
|
|
|
Mar 5 2011, 11:39
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(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.
|
|
|
|
|
Mar 12 2011, 08:18
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(robix @ Mar 12 2011, 13:45)  А можно точнее, что значит почти без оптимизаций? это значит, что компоненты брались стандартные. софт я тоже выкладывал в теме про ниос и езернет, к нему добавляется еще пара функций для пересылки пакетов по UDP. из софтовых оптимизаций - включение конфигурации "Release". Цитата И где этот ускоритель UDP - в настройках тристате я его не нашел!? я брал отсюда http://www.alterawiki.com/wiki/Nios_II_UDP_Offload_Example
|
|
|
|
|
Mar 14 2011, 12:45
|

Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659

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

Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659

|
Цитата(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 можно аппаратно формировать - то вероятно можно.
Сообщение отредактировал bark - Mar 15 2011, 08:14
--------------------
Работаю 20ns в сутки.
|
|
|
|
|
Mar 15 2011, 09:13
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

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

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(Serhiy_UA @ Mar 15 2011, 15:13)  1.Если используется готовый контроллер то DMA подходит, а если PHY то лучше синтезировать автомат UDP. Так ли? а разницы в общем-то нет, работа в любом случае с DMA идет. главное минимизировать работу процессора по перекидыванию данных из одной области памяти в другую. собственно, автомат UDP, что я выше приводил, как раз по этому принципу работает. процессор дает движку DMA дескриптор с данными для передачи (фактически, указатель на область в памяти), а автомат добавляет адреса, порты и прочую муть. потом отсылает данные и кидает процу прерывание - готов, мол. Цитата 2.При работе с DMA нужно работать с несколькими блоками памяти. Из одних выдавать по DMA, а в других тем временем подготавливать данные в соответствии со структурой текущего пакета. В автомате UDP для PHY это все можно делать конвейером, как бы на проходе. Какие были решения? допустим, 2 блока памяти - в отдельно взятый момент времени один находится под управлением DMA, второй у процессора. пока DMA отправляет пакет, у проца есть время на подготовку следующего. если система спроектирована правильно, то процессор почти ничего с данными не делает и гарантированно успеет подготовить следующий пакет. если же проц нагружен, например вычислениями, то естественно скорости не получить, значит надо выносить вычисления в логику. другой источник лагов - убогий "родной" контроллер прерываний, лечится внешним. авалон - штука гибкая и масштабируемая, плата за это - оверхед по ресурсам.
|
|
|
|
|
Mar 15 2011, 09:58
|
Знающий
   
Группа: Свой
Сообщений: 721
Регистрация: 23-10-08
Из: next to Odessa
Пользователь №: 41 112

|
Спасибо, vadimuzzz, за соображения, они интересны... Цитата(vadimuzzz @ Mar 15 2011, 12:29)  другой источник лагов - убогий "родной" контроллер прерываний, лечится внешним. авалон - штука гибкая и масштабируемая, плата за это - оверхед по ресурсам. "Родной" контроллер прерываний NiosII уже здесь обсуждали (осуждали), а о внешнем, ни разу не слышал. Если не обращать внимание на ресурсы, то, что это за вещь, какой получен выигрыш, есть ли цифры?
|
|
|
|
|
Apr 26 2011, 11:22
|
Профессионал
    
Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079

|
Цитата(iiv @ Apr 26 2011, 12:31)  ПолуОФФ: Скажите, пожалуйста, а UDP по 10 и 1000МБитным протоколам одинаковое? Вот то, что я для 10МБит использовал, как по ссылке http://www.fpga4fun.com/10BASE-T0.htmlя для Гигабитного UDP смогу использовать? Вообще, естественно, UDP, как протокол более высокого уровня не зависит (не должен) от используемого стандарта Ethernet. Но то, что Вы привели по ссылке, это просто учебный пример. Там в одном модуле перемешано все: и 2, и 3, и 4 уровни. Вытащить оттуда UDP можно, но смысла особого нет. Лучше заново переписать с нуля более структурировано и красиво.  (возможно, у Вас уже все написано как нужно - я комментирую исключительно тот код, что по ссылке  ) Видел ветку откуда Вы перешли в эту тему. Извиняюсь, что отвечаю на вопрос из той темы, просто чтобы все было в одном месте. Если хотите передавать относительно простой UDP трафик без использования софт-процессоров (типа NIOS), лучший вариант для Вас - скачать готовую корку MAC-ядра с OpenCores и дописать буквально пару простых модулей для формирования нужного UDP трафика.
--------------------
|
|
|
|
|
Apr 26 2011, 13:44
|

Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659

|
Цитата(iiv @ Apr 26 2011, 11:31)  ПолуОФФ: Скажите, пожалуйста, а UDP по 10 и 1000МБитным протоколам одинаковое? да. разницы никакой нет. просто надо корректно формировать пакеты и скармливать их МАС контроллеру. http://ru.wikipedia.org/wiki/UDPНо я бы рекомендовал больше смотреть на English версию страницы. На русской вроде какая-то путаница с расчетом UDP чексуммы.
--------------------
Работаю 20ns в сутки.
|
|
|
|
|
Apr 26 2011, 13:54
|

Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659

|
Цитата(des333 @ Apr 26 2011, 16:50)  Глянул - никакой путаницы, вроде, нет. Значит путаница возникала только у меня в голове. =) Тем не мение гораздо понятнее мне была именно английская версия. сейчас уже (зная все ньюансы) и русская понятна.. но сначала она мне такой прозрачной не казалась.
--------------------
Работаю 20ns в сутки.
|
|
|
|
|
Apr 26 2011, 14:00
|
Профессионал
    
Группа: Свой
Сообщений: 1 129
Регистрация: 19-07-08
Из: Санкт-Петербург
Пользователь №: 39 079

|
Цитата(bark @ Apr 26 2011, 17:54)  Значит путаница возникала только у меня в голове. =) Тем не мение гораздо понятнее мне была именно английская версия. сейчас уже (зная все ньюансы) и русская понятна.. но сначала она мне такой прозрачной не казалась. Ну, это часто так. Я вообще стараюсь русскоязычную литературу не использовать - часто пишут бред.  А, если не секрет, как у Вас дела с Вашим проектом (помнится, Вы тоже хотели по гигабиту UDP гнать)? Спрашиваю не из праздного любопытства. Просто у iiv на плате RGMII, а готовые кортки на том же OpenCores с GMII. Вы тогда, если ничего не путаю, тоже с этой проблемой сталкнулись. Как решили? Сами написали или нашли готовую? Может и уважаемому iiv советом поможете?
--------------------
|
|
|
|
|
Apr 26 2011, 14:06
|

Частый гость
 
Группа: Свой
Сообщений: 131
Регистрация: 16-11-09
Из: Украина Юг
Пользователь №: 53 659

|
Цитата(des333 @ Apr 26 2011, 17:00)  Ну, это часто так. Я вообще стараюсь русскоязычную литературу не использовать - часто пишут бред.  А, если не секрет, как у Вас дела с Вашим проектом (помнится, Вы тоже хотели по гигабиту UDP гнать)? Спрашиваю не из праздного любопытства. Просто у iiv на плате RGMII, а готовые кортки на том же OpenCores с GMII. Вы тогда, если ничего не путаю, тоже с этой проблемой сталкнулись. Как решили? Сами написали или нашли готовую? Может и уважаемому iiv советом поможете?  С опенкоров проект действительно не подходит из-за MII интерфейса. СтьюардЛиттл помог с Альтеровским TSE MAC-контроллером. (по этому поводу надо к нему в личку) как только у меня появился МАС - начал писать проект под него. Разобрался с шиной Авалон. (по ней идёт общение с МАС). Сделал сбор пакетов и сейчас у меня UDP летает. последний замер был 982Мбит целостный поток от девборды к компу. +ARP + ICMP с вопросами по организации всего этого конечно могу помочь. на всё это дело, от изучения TSE и до работы 3-х протоколов потратил вроде около месяца-полтора.
--------------------
Работаю 20ns в сутки.
|
|
|
|
|
Aug 17 2011, 10:33
|

Местный
  
Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437

|
Пытаюсь запустить 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"?
|
|
|
|
|
Aug 17 2011, 13:49
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(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 принудительно включит гигабит, но у вас явно есть проблема в сети, ее нужно найти
|
|
|
|
|
Aug 18 2011, 12:08
|

Местный
  
Группа: Свой
Сообщений: 285
Регистрация: 10-12-04
Из: Earth
Пользователь №: 1 437

|
Итак, после ряда телодвижений (топ-левел из кита версии 10.0 оказался сильно перепилен по сравнению с этим же проектом версии 9.1) удалось увидеть в логе "Speed = 1000", светодиод соответствующий на плате горит. Теперь хочется понять следующее: 1. Что и в какой последовательности конфигурировать программно (для двух случаев - если используется ucos, и если она не используется)? 2. Каким образом можно организовать канал передачи данных (от платы к ПК) на максимально возможной скорости, желательно с достаточно высокой надежностью (т.е. без потерь)? 3. Каким образом померить (какими средствами, что учитывать и что не учитывать при подсчете) пропускную способность канала передачи данных?
Пока что параллельно изучаю тред "Ethernet+Nios+Cyclone", где есть много полезного. Наверняка многие ответы найду там, но на всякий случай оставлю свои вопросы и здесь.
П.С.: Кстати, в логе конфигурации появилась фраза "TSEMAC SW reset bit never cleared!". То есть это означает что ресет софтварно не сбрасывается или же что что-то аппаратно сидит в ресете?
Плата, хоть и конфигурируется, но до нее никак не достучаться - не пигнуется ни в какую (соединена с ПК кросс-кабелем)... Может быть я некорректно выставляю параметры сети? Какими, например, должны быть параметры для платы и ПК?
Сообщение отредактировал spectr - Aug 18 2011, 13:20
|
|
|
|
|
Aug 18 2011, 13:38
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(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-шники из одной подсети, этого должно быть достаточно
|
|
|
|
|
Aug 25 2011, 18:10
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-06-11
Из: Казань
Пользователь №: 65 974

|
Добрый вечер. Пытаюсь запустить 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
Сообщение отредактировал Hatory - Aug 25 2011, 18:11
|
|
|
|
|
Aug 31 2011, 16:40
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-06-11
Из: Казань
Пользователь №: 65 974

|
Stratix II GX PCI Express Development Board
|
|
|
|
|
Sep 7 2011, 14:58
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-06-11
Из: Казань
Пользователь №: 65 974

|
Спасибо, vadimuzzz, за попытку помочь. Сегодня довела проект до рабочего состояния.
|
|
|
|
|
Sep 8 2011, 09:34
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

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

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
Цитата(_nikita @ Sep 8 2011, 16:34)  чем можно попередавать пакеты с PC (кроме qt) "вручную". попробуйте netcat. а вообще в любом вменяемом тулките есть поддержка UDP-сокетов Цитата И еще один вопрос, получилось ли у кого-либо поработать на гигабите, или только 100 Mbit c AN? да, полет нормальный
|
|
|
|
|
Sep 8 2011, 11:55
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

|
Спасибо, vadimuzzz. Попробую настроить marvell и MAC на гигабит и со всем этим взлететь. А вообще я правильно понимаю, что при подключении, я должен сначала узнать на какой скорости работает Marvell, после этого перестроить MAC на нужную скорость и дать soft reset Марвелу?
|
|
|
|
|
Sep 8 2011, 12:40
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

|
Спасибо vadimuzzz за наводку по инициализации марвеловского PHY. А клок я так понимаю у меня автоматом переключится (взвожу бит ETH_SPEED у MAC, он переключает сигнал eth_mode в 1, по которому я на PHY подаю 125МГц).
|
|
|
|
|
Sep 8 2011, 13:00
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

|
Извините, по поводу автомата, неправильно выразился (мыслю изнутри логической функции). А сигнал ENET_LINK он у меня по умолчанию в нуле.
|
|
|
|
|
Sep 8 2011, 19:34
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

|
Спасибо vadimuzzz, завтра буду пробовать поработать на гигабите. Вечером поискал инициализацию для марвеловского PHY, но не нашел, если Вам не трудно, напишите этот кусок кода или место, где посмотреть. Заранее благодарен.
|
|
|
|
|
Sep 9 2011, 01:09
|

Гуру
     
Группа: Свой
Сообщений: 2 291
Регистрация: 21-07-05
Пользователь №: 6 988

|
как-то так: Код ... #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 ...
|
|
|
|
|
Sep 9 2011, 05:16
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

|
vadimuzzz, к сожалению на отладочной плате AIIGX сигнал LED_LINK1000 от PHY идет только на светодиод, поэтому завести его на сигнал set_1000 нет возможности. Необходимо как-то узнать от PHY скорость подключения и соответственно настроить MAC. Может Вы знаете как узнать скорость подключения PHY ( datasheet'а на Marvell у меня нету)?
P.S. Сигнал set_1000 аппаратно установил в 1, настроил сетевую карту на гигабит и все работает!!!!!
|
|
|
|
|
Sep 9 2011, 09:10
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

|
Порыв инфы в инете и прочитав регистры Марвела при гигабите и сотке выяснил, что скорость подключения показывают 2 старших бита регистра 17. 10 - 1 Gbit 01 - 100 Mbit Переделал инициализацию MAC, вроде все работает.
vadimuzzz, есть проблема. При приеме определенного количества пакетов зависает собственно сам прием, пытаюсь разобраться. Вроде как такая проблема уже обсуждалась (увеличил FIFO до 16К, не помогло), но если есть направление, где возможна проблема, буду благодарен за ответ.
|
|
|
|
|
Sep 9 2011, 13:34
|
Группа: Участник
Сообщений: 13
Регистрация: 10-05-08
Пользователь №: 37 407

|
Переделал обработчик прерывания по примеру из проекта vadimuzzz, вроде ничего не зависает. И снова огромное спасибо, vadimuzzz!
|
|
|
|
|
Dec 25 2011, 18:09
|
Участник

Группа: Участник
Сообщений: 17
Регистрация: 29-06-11
Из: Казань
Пользователь №: 65 974

|
Снова здравствуйте. Возникли проблемы в доработке проекта под оптику. Прошу совета или указаний... Требуемый результат: FPGA ->(optic cable)-> Media Converter 1000Base-FX to 1000Base-TX->(copper cable)->PC Система: nios II processor+ddr2 sdram controller with altmemphy+2x sgdma+descriptor memory+interval timer+triple speed ethernet (mac+pcs+pma, sgmii bridge disable) Распиновка: ref_clk - 156.25MHz (1.5 PCML), txp и rxp - присоединены к sfpa_tx и sfpa_rx соответственно (1.5 PCML), gxb_cal_blk_clk_to_the_tse_mac и ref_clk_to_the_tse_mac присоединены к ref_clk ПО: simple socket server Конвертор: TP Flow Control: NWay auto-negotiation; Fiber Flow Control: NWay at full-duplex mode При настройках по умолчанию: 1) при использовании петли: линк устанавливается, auto-negotiation enable, сигналы char_err и disp_err установлены в 0 2) при использовании конвертора (с помощью megawizard plug-in manager редактирую altera_tse_alt2gxb_gige, убирая serial loopback): линк не устанавливается, auto-negotiation disable, сигналы char_err и disp_err установлены в 1 CODE 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 0x08004000 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... WARNING : PHY[0.0] - Auto-Negotiation FAILED MARVELL : Enabling auto crossover MARVELL : PHY reset INFO : PCS[0.0] - Configuring PCS operating mode INFO : PCS[0.0] - PCS SGMII mode disabled 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... WARNING : PHY[0.0] - Auto-Negotiation FAILED WARNING : PHY[0.0] - Link could not established WARNING : PHY[0.0] - Auto-Negotiation not completed! Speed = 1000, Duplex = Full OK, x=0, CMD_CONFIG=0x00000000
MAC post-initialization: CMD_CONFIG=0x0000022b
Регистры PCS: control register = 0x 140 (gigabit, full duplex) status register = 0x 9 (link status 0, auto_negotiation_ability 1, auto-negotiation_complete 0) dev_ability register = 0x 1a0 (full duplex, pause is supported on transmit and receive, ACK 0) partner_ability register = 0x 0 an_expansion register = 0x 0 link_timer registers: 0x12d0, 0x 13 if_mode register = 0x 0 (SGMII_ENA 0, USE_SGMII_AN 0)
PHY register 0 = 0x1140 PHY register 1 = 0x7949 PHY register 4 = 0x de1 PHY register 5 = 0x 0 PHY register 6 = 0x 4 PHY register 7 = 0x2801 PHY register 8 = 0x 0 PHY register 9 = 0x f00 PHY register 10 = 0x4000 PHY register 15 = 0x3000 PHY register 16 = 0x 18 PHY register 17 = 0x8100 PHY register 18 = 0x 0 PHY register 19 = 0x 0 PHY register 20 = 0x c60 PHY register 21 = 0x 0 PHY register 22 = 0x 0 PHY register 23 = 0x 0 PHY register 24 = 0x4100 PHY register 25 = 0x 0 PHY register 26 = 0x a PHY register 27 = 0x808f PHY register 28 = 0x 0 PHY register 29 = 0x 0 PHY register 30 = 0x 40
[tse_sgdma_read_init] RX descriptor chain desc (1 depth) created mctest init called IP address of et1 : 192.168.1.1 Created "Inet main" task (Prio: 2) Created "clock tick" task (Prio: 3) 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)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|