использую отладочную плату 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
.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
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, т.е. линка нет.
ломаю голову уже вторую неделю, не пойму в чем дело.