Article ID: 000086267 Content Type: Troubleshooting Last Reviewed: 03/23/2020

Why my Nios® II Simple Socket Server design example fails to auto-negotiate at 1G speed

Environment

  • Intel® Quartus® Prime Pro Edition
  • Nios® II Embedded Design Suite (EDS)
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Description

    Due to the default timeout period in the Simple Socket Server template,  there is a possibility that auto-negotiation at 1G speed may fail in  Cyclone® V, Cyclone® 10, Max® 10 devices.

    Resolution

    To work around this problem, the user is required to modify the BSP source code to increase auto-negotiation timeout delay and recompile to generate the new ELF file using the instructions below.

     

    Open the following file in the project directory:

    ../software/<project_name_bsp>/drivers/src/altera_avalon_tse.c

     

    Change the timeout delay   from "usleep(1000)"   to "usleep(5000)" as shown in the next portion of code:

     

    alt_32 alt_tse_phy_restart_an(alt_tse_phy_info *pphy, alt_u32 timeout_threshold) {

    ………………………………….

    while(alt_tse_phy_rd_mdio_reg(pphy, TSE_PHY_MDIO_STATUS, TSE_PHY_MDIO_STATUS_AN_COMPLETE, 1) == 0 ){

         
    if(timeout >  timeout_threshold) { tse_dprintf(4, "WARNING : PHY[%d.%d] - Auto-Negotiation FAILED\n", mac_group_index, mac_info_index);

     

    /* Restore previous MDIO address */

    alt_tse_phy_wr_mdio_addr(pphy, mdioadd_prev);

    return TSE_PHY_AN_NOT_COMPLETE; 

                  
    }

                   
    usleep(5000); //updated from usleep(1000)

    }

    Related Products

    This article applies to 2 products

    Intel® Cyclone®
    Intel® MAX® CPLDs and FPGAs

    Disclaimer

    1

    All postings and use of the content on this site are subject to Intel.com Terms of Use.