covsh 0 30 июля, 2012 Опубликовано 30 июля, 2012 · Жалоба здравствуйте! использую отладочную плату Cyclone IV GX FPGA Development Kit и Terasic SFP HSMC Board. SFP модуль оптический, наклейка на нем NEC (шел в комплекте с SpectralWave U-Node, сам модуль рабочий). Quartus 11.1 SP2 Не могу заставить работать SFP модуль в связке с Triple Speed Ethernet. TSE сконфигурирован как 10/100/1000 Ethernet MAC with 1000BASE-X/SGMII PCS c Use Transceiver block GXB. две диф пары идут на модуль. стандарт 1.5-V PCML. TX_Disable у SFP естественно в нуле. сингналы реконфигурации идут на altgx_reconfig. .gxb_cal_blk_clk_to_the_tse_mac (clkin_125m_p), //125MHz диф клок с генератора Cyclone Development Kit .reconfig_busy_to_the_tse_mac (reconfig_busy_to_the_tse_mac), .reconfig_clk_to_the_tse_mac (pll_50m), .reconfig_togxb_to_the_tse_mac (reconfig_togxb_to_the_tse_mac), .reconfig_fromgxb_from_the_tse_mac (reconfig_fromgxb_from_the_tse_mac), .ref_clk_to_the_tse_mac (clkin_125m_p), //125MHz диф клок с генератора Cyclone Development Kit код инициализации в Nios IOWR_32DIRECT(TSE_MAC_BASE,TSE_CMD_CONFIG,0x2000); //reset TSE MAC while((IORD_32DIRECT(TSE_MAC_BASE, TSE_CMD_CONFIG) & 0x2000)) IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_CONTROL, 0x00008000); //PSC RESET while((IORD_32DIRECT(TSE_MAC_BASE, TSE_PCS_CONTROL) & 0x8000)); IOWR_32DIRECT(TSE_MAC_BASE,TSE_CMD_CONFIG,0x0100013B); //TX_ENA|RX_ENA|ETH_SPEED|PROMIS_EN|PAD_EN|PAUSE_IGNORE IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_IF_MODE, 0x00000000); //1000Base-X MODE IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_DEV_ABILITY, 0x00000020); //PCS Dev_Ability Full Duplex Enable IOWR_32DIRECT(TSE_MAC_BASE, TSE_PCS_CONTROL, 0x00001200); //RESTART_AUTO_NEGOTIATION | AUTO_NEGOTIATION_ENABLE при этом в PCS Status Register регистр LINK_STATUS в 0, т.е. линка нет. ломаю голову уже вторую неделю, не пойму в чем дело. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Flood 13 31 июля, 2012 Опубликовано 31 июля, 2012 · Жалоба А что на ответном устройстве, линк пытается подняться? Оптический кабель подключен кроссом? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
covsh 0 1 августа, 2012 Опубликовано 1 августа, 2012 · Жалоба А что на ответном устройстве, линк пытается подняться? Оптический кабель подключен кроссом? на другом конце линка нету, все подключено кабелем. разобрался в чем было дело. TSE не делал (не делал правильный?) ресет трансивера. решил это с помошь экспорта сигнала gxb_pwrdn (из свойств TSE) и дерьганья его через ниос Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosu-art 0 9 ноября, 2012 Опубликовано 9 ноября, 2012 · Жалоба Здравствуйте! Сейчас тоже начну пробовать оживить TSEwPCS на СIV GX, Плата своя. Раньше с трансиверами не работал. Пока вопрос такой: если не используешь реконфиг трансивера, то можно ли все сигналы, с соответствующим префиксом, занулить? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
gosu-art 0 12 ноября, 2012 Опубликовано 12 ноября, 2012 · Жалоба :1111493779: Тоже вывел сброс и дергаю его ниосом! Лапочка линка загорелась! :w00t: Ща буду пробовать гонять байтики! Только вот непонятно... когда я прошиваю прошивку и выполняю следующий код IOWR_ALTERA_AVALON_PIO_SET_BITS(PIO_0_BASE,0x1); //reset IOWR_ALTERA_AVALON_PIO_CLEAR_BITS(PIO_0_BASE,0x1); IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG, 0x00008000); //PSC RESET while((IORD_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG) & 0x8000)); IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG, (1<<11)); IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE,TSE_CMD_CONFIG, (0)); IOWR_ALTERA_TSEMAC_CMD_CONFIG(TRIPLE_SPEED_ETHERNET_0_BASE, ALTERA_TSEMAC_CMD_TX_ENA_MSK | ALTERA_TSEMAC_CMD_RX_ENA_MSK | ALTERA_TSEMAC_CMD_PROMIS_EN_MSK | ALTERA_TSEMAC_CMD_ETH_SPEED_MSK /*| ALTERA_TSEMAC_CMD_TX_ADDR_INS_MSK*/); IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_PCS_IF_MODE, 0x00000000); //1000Base-X MODE IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_PCS_DEV_ABILITY, 0x00000020); //PCS Dev_Ability Full Duplex Enable IOWR_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_CMD_CONFIG, 0x00001200); //RESTART_AUTO_NEGOTIATION | AUTO_NEGOTIATION_ENABLE a = IORD_32DIRECT(TRIPLE_SPEED_ETHERNET_0_BASE, TSE_STATUS); то линк статус в единице, автонег проходит, лампочки горят. Если пытаюсь выполнить его снова(не переконфигурируя ПЛИС ), то лампочка линка горит, а в регистре нуль! автонег проходит успешно. В чем проблема? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Manfred 0 1 февраля, 2013 Опубликовано 1 февраля, 2013 (изменено) · Жалоба Может поможет. Я в RGMII режиме использую мегафункцию 1Gb Ethernet тоже в Cyclone IV. Вся настройка сводится к сдвигу выходной частоты 125МГц, сопровождающей RGMII сигналы, с помощью PLL. Так чтобы частота расположилась на временном моделирование так как должна в документации на микросхему физического уровня + конечно, во временном анализаторе, частоты работы на которых работает мегафункция, должны получиться больше 125МГц. Для этого достаточно задать временные ограничения и компиляцию с оптимизацией по скорости. Можно еще по MDIO интерфейсу, который реализован в мегафункции, поиграть задержками в микросхеме физического уровня. Для того чтобы мегафункция заработала нужно инициализировать ее регистры и добиться того чтобы на моделировании из мегафункции пошли пакеты (flow control в мегафункции для этого придется выключить) Чтобы увидеть порченные пакеты Ethernet со стороны компьютера можно использовать http://www.wireshark.org/ , хотя если пакеты очень сильно порчены то и WireShark их не увидит Изменено 1 февраля, 2013 пользователем Manfred Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться