Forum Discussion

danduan2's avatar
danduan2
Icon for New Contributor rankNew Contributor
5 years ago

intel FPGA clkusr pin

Hi, Intel,

I want to know how to use clkusr pin for FPGA transceivers calibration and recalibration. Could you help to provide some advices?

1. if i want to use clkusr for my logic,

1) i add altera_a10_xcvr_clock_module reset_clock (.clk_in(clk1)) ; Only I keep clk1 frequency is 100-125MHz, is it ok? or clk1 must be mgmt_clk and keep mgmt_clk is 100-125MHz ?

2) i don't add altera_a10_xcvr_clock_module reset_clock (.clk_in(clk1)) ; can i turn off transceiver calibration?

2. if i do not use clkusr for my logic, but the pin do not connect to 100MHZ, can i assign a 100MHZ to usrclk pin(let usrclk keep output) for trnasceiver calibration or recalibration?

3. What's the difference between "AUTO_RESERVE_CLKUSR_FOR_CALIBRATION OFF" and "AUTO_RESERVE_CLKUSR_FOR_CALIBRATION ON", if AUTO_RESERVE_CLKUSR_FOR_CALIBRATION ON, can i use clkusr pin for my logic?

Thanks very much.

4 Replies

  • CheepinC_altera's avatar
    CheepinC_altera
    Icon for Regular Contributor rankRegular Contributor

    Hi,


    As I understand it, you have some inquiries related to the CLKUSR pin. For your information, if you are using XCVR in your design, at the board, you should connect the CLKUSR pin to dedicated free-running on-board oscillator with frequency of 100MHz - 125MHz. You would not need to do any instantiation in your design. Without connecting CLKUSR to free-running clock, the transceiver calibration could fail and lead to transceiver malfunction.


    Also, it is recommended to use CLKUSR dedicated for transceiver calibration only.


    Please let me know if there is any concern. Thank you.


    • danduan2's avatar
      danduan2
      Icon for New Contributor rankNew Contributor

      Hi,

      Thanks for your suggestion.

      1. If i want to use usrclk pin for my own logic after transceiver power up calibration, is it ok?

      2. what is the meaning of " If you are using the CLKUSR pin for your own logic (feeding it to the core), you must instantiate altera_a10_xcvr_clock_module altera_a10_xcvr_clock_module reset_clock (.clk_in(mgmt_clk));" (from cyclone10 transceiver userguide)

  • CheepinC_altera's avatar
    CheepinC_altera
    Icon for Regular Contributor rankRegular Contributor

    Hi,


    Based on my experience, it is recommended to use CLKUSR for transceiver calibration only. In user guide, there are some cases where you need to perform recalibration in user mode as well.


    However, I am currently consulting Factory if it is possible to use the CLKUSR pin for XCVR and core logic at the same time without any potential issue. Also, I am seeking clarification on your Q2 from them as well.


    I will keep you posted on the progress by end of the week or as soon as there is any valid response. Please ping me if you do not hear back from me.


    Thank you.


  • CheepinC_altera's avatar
    CheepinC_altera
    Icon for Regular Contributor rankRegular Contributor

    Hi,


    Sorry for the delay. I have just received a valid response from Factory on our consultation. As I understand it, it is possible to use the CLKUSR pin for both XCVR and core logic.


    The following some sample to instantiate the CLKUSR for core usage:


    module top (

    input refclk,

    input clkusr,

    ...

    );


    altera_a10_xcvr_clock_module reset_clock (.clk_in(clkusr));


    test u0 (

    .mgmt_clk_clk ( clkusr ),


    Please let me know if there is any concern. Thank you.



    Best regards,

    Chee Pin