|
Stratix4+Ethernet Help, Необходима реализация обмена ПК-ПЛИС по Ethernet. |
|
|
|
Jan 25 2013, 03:04
|
Местный
  
Группа: Свой
Сообщений: 247
Регистрация: 4-10-10
Из: г. Екатеринбург
Пользователь №: 59 925

|
Добрый день всем. Необходима реализация обмена ПК-ПЛИС по Ethernet. Имеется дев.борд Стратикс 4. Нашел в форуме такую фразу от vadimuzzz: Цитата Последовательность запуска марвеловского PHY такая:
1. Запись по адресу 0 значения 0x8000 (SwRst==1) 2. Задержка 3. Запись по адресу 0 значения 0х1000 (AutoNeg==1) 4. Задержка 5. Чтение значения из адреса 1, проверка бита 2 (Link==1), если не установлен - 1) 6. Запись по адресу 27 нижних бит [3:0] == 4'b1111 (GMII,copper)//смотреть доки на плату, это для девборды циклон-3! 7. При RGMII IF - запись по адресу 20 прочитанного значения с установленными битами 7,1//смотреть доки на плату, это для девборды циклон-3! 8. Повторять пункты 1-5, до установления линка. (SwRst) В Квартусе создал систему:
Настройки TSE:
В Ниосе пытаюсь инициализировать железо, а именно для начала добиться линка: Код alt_u32 t2=0;
IOWR_ALTERA_TSEMAC_MDIO_ADDR1(TRIPLE_SPEED_ETHERNET_0_BASE, 0); // PHY and other board peripheral initialization IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TRIPLE_SPEED_ETHERNET_0_BASE, PHY); do { // Control Register .15 = 1 - Reset IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, 0x8000); Delay(0xFFFF); // (.13=0, .6=1) - 1000 Mbps, .12=1 - Enable Auto-Negatiation, IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, 0x1040); Delay(0xFFFF); // read Control Register t2 = IORD_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 1); Delay(0xFFFF); // Control Register .15 = 1 - Reset IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, t2 | 0x8000); Delay(0xFFFF); // read Staus Register t2 = IORD_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 1); alt_printf("Reg 1 : %x\n",t2); //check Link if( (t2&0x0004)==0 ) { // Control Register .15 = 1 - Reset IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 0, t2 | 0x8000); Delay(0xFFFF); } // .15=1 - Copper, (.3:.0)='0100' - SGMII without Clock with SGMII Auto-Neg to copper IOWR_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 27, 0x8004); Delay(0xFFFF); // read Staus Register t2 = IORD_ALTERA_TSEMAC_MDIO(TRIPLE_SPEED_ETHERNET_0_BASE, 0, 1); alt_printf("Reg 1 : %x\n",t2); } while( (t2&0x0004)==0 ); в итоге на экране сполшные 9 выводятся. Подскажите что-нибудь по этому поводу.
|
|
|
|
|
 |
Ответов
|
Jan 25 2013, 04:17
|

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

|
вы как-то своеобразно поняли мою фразу  у меня следующие соображения: - вы совершенно напрасно столько ресетов напихали
- указывать скорость в явном виде имеет смысл только если не используется auto-neg
- четвертых стратиксов два (E и GX), китов тоже два. какие там PHY стоят, альтеровцам писать лень, схему отдельно выложить - тоже. поэтому то, что написано ниже я узнал, посмотрев в хрустальный шар, пока качаются доки. (т.е. я предположил, что вы правильно указали режим связи с phy - sgmii и что киты сделаны на марвеле).
пример процедуры сброса/инициализфции 88e1111 с rgmii: Код /* PHY and other board peripherial initialization */ IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TSE_MAC_BASE,PHY); t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B);//Extended PHY Specific Status Register t2 &= 0xFFF0; IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B,t2|0xB);//RGMII to Copper t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14);//Extended PHY Specific Control Register IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14,t2|0x82);//Add Delay to RX_CLK for RXD Outputs; Add Delay to GTX_CLK for TXD Inputs t2 = 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,t2|PCS_CTL_sw_reset);//Previous Operations Require SW Reset do { t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_STATUS); } while((t2&0x04)==0);//wait for link-up как видите сброс происходит только один раз, после установки недефолтных настроек. для sgmii, видимо, д.б. так: Код IOWR_ALTERA_TSEMAC_MDIO_ADDR0(TSE_MAC_BASE,PHY); t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B);//Extended PHY Specific Status Register t2 &= 0xFFF0; IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x1B,t2|0x4);//SGMII to Copper without clock t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14);//Extended PHY Specific Control Register IOWR_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,0x14,t2&(~0x82));//Disable RGMII timing control t2 = 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,t2|PCS_CTL_sw_reset);//Previous Operations Require SW Reset do { t2 = IORD_ALTERA_TSEMAC_MDIO(TSE_MAC_BASE,0,ALTERA_TSEMAC_PHY_ADDR_STATUS); } while((t2&0x04)==0);//wait for link-up
|
|
|
|
Сообщений в этой теме
billidean Stratix4+Ethernet Help Jan 25 2013, 03:04 billidean ПЛИС на плате стоит Stratix IV GX (EP4SGX230KF40C2... Jan 25 2013, 06:43 vadimuzzz а адрес PHY правильный? ЕМНИП, он задается во врем... Jan 25 2013, 07:26 billidean Из даташита на марвел:
ЦитатаCONFIG[0] configures ... Jan 25 2013, 08:56 vadimuzzz Цитата(billidean @ Jan 25 2013, 15:56) вы... Jan 25 2013, 09:37 billidean В настройках TSE выставил PHY_ID=0х0000001F
В Ква... Jan 28 2013, 04:20 vadimuzzz у вас неправильно подключен iobuf:
triple_speed_et... Jan 28 2013, 04:42 billidean Точно!
Спасибо за замечание.
НО!!... Jan 28 2013, 05:51 vadimuzzz видимо, на mdio0 висит PCS, а PHY - на mdio1.
попр... Jan 28 2013, 06:08 billidean Спасибо, нашел свой адрес: 0.
Теперь при следующе... Jan 28 2013, 07:28 vadimuzzz ЦитатаReg 1 : 7949
а линк так и не появляется? Jan 28 2013, 07:39 billidean Да, линк появился, нужно было подождать несколько ... Jan 29 2013, 09:16 vadimuzzz если с sgdma проблем нет (по вашим логам вроде так... Jan 30 2013, 01:17 billidean Спасибо за помощь. ping заработал. Ответ на комп и... Jan 31 2013, 06:45 billidean Решил оживить тему.
После последнего сообщения Езе... Jul 31 2013, 05:17 Golikov A. есть программа netcat (они есть и для виндоус и дл... Jul 31 2013, 07:20 billidean ЦитатаЯ так понимаю никакого стека у вас нет, може... Jul 31 2013, 07:58 Golikov A. Цитата(billidean @ Jul 31 2013, 11:58) А ... Aug 2 2013, 10:36 krux для написания проги со стороны компа - ключевые сл... Jul 31 2013, 17:05 billidean Спасибо за советы, попробую предложенные программы... Aug 4 2013, 05:05 Golikov A. Может то что я напишу ниже поможет.
у меня было ... Aug 5 2013, 09:42 krux Также могут оказаться виноваты свичи, MAC-адреса и... Aug 5 2013, 18:02 billidean Цитатаwin действительно много гадит в линию.
Если ... Aug 6 2013, 02:38 Golikov A. ну в wireshark есть еще фильтры, можно и по МАК и ... Aug 6 2013, 08:24 billidean Создал проект заново, прочитал доки по SG-DMA, пер... Aug 7 2013, 04:15 krux ЦитатаЕсли я для пинга использую cmd, то как очист... Aug 7 2013, 12:45
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|