Sign In

Don't have a Xilinx account yet?

  • Choose to receive important news and product information
  • Gain access to special content
  • Personalize your web experience on Xilinx.com

Create Account

Username

Password

Forgot your password?
XClose Panel
Xilinx Home
Reply
Visitor
targonix
Posts: 11
Registered: ‎08-31-2011
0

Re: RMII Timing Constraint Help

Yes. Simple, all RMII stuff of RM9200 (REFCK, ECRSDV, ERX0 - ERX1, ERXER, ETXEN, ETX0 - ETX1) connected to FPGA pads. All routes quite short.

Expert Contributor
rcingham
Posts: 2,010
Registered: ‎09-09-2010
0

Re: RMII Timing Constraint Help

So, instead of connecting the RM9200 directly to the Ethernet PHY, you have interposed an FPGA. How very interesting! Any particular reason for this?

------------------------------------------
"If it don't work in simulation, it won't work on the board."
Visitor
targonix
Posts: 11
Registered: ‎08-31-2011
0

Re: RMII Timing Constraint Help

This is an implementation of network redundancy protocol IEC 62439 PRP/HSR, and some other features with IEEE1588 time sync. and synchronous measurements.

Visitor
targonix
Posts: 11
Registered: ‎08-31-2011
0

Re: RMII Timing Constraint Help

I've tried some perverted stuff. Here is forwarding clock with ODDR2 and in the same time using pad as external clock source. Logically this is what I need, now possible to put nice OFFSET IN constraint. But...after this configuration started, my FPGA became self-powered on Vccint with 2.5V. Even then regulator 1.2V disabled FPGA outputs 2.4V-2.5V on Vccint. Also it's very hot, but still works in some miracle way. Code chunk:

 

    wire wRecoverClock;
    ODDR2 #(
        .DDR_ALIGNMENT  ("NONE"),
        .INIT           (1'b0),
        .SRTYPE         ("SYNC")
    ) ODDR2_U1 (
        .Q              (wRecoverClock),  // 1-bit DDR output data
        .C0             (!IP_PHY1_EFCLK), // 1-bit clock input
        .C1             (IP_PHY1_EFCLK), // 1-bit clock input
        .CE             (1'b1), // 1-bit clock enable
        .D0             (1'b1), // 1-bit data input
        .D1             (1'b0), // 1-bit data input
        .R              (1'b0),  // 1-bit reset input
        .S              (1'b0)  // 1-bit set input
    );

    wire wFeedbackClock;
    IOBUF IOBUF_U1 (
      .O(wFeedbackClock), // Buffer output
      .IO(OP_MCU_EFCLK), // Buffer inout port
      .I(wRecoverClock), // Buffer input
      .T(1'b0) // 3-state enable input
    );

    always @(posedge wFeedbackClock) // Useful stuff
        ...

And in UCF:

 

NET "OP_MCU_EFCLK"  TNM_NET = MCU_RMII_CLK | CLOCK_DEDICATED_ROUTE = FALSE ;
TIMESPEC "TS_MCU_RMII_CLK" = PERIOD "MCU_RMII_CLK" 20.0 ns HIGH 12.0 ns ;
OFFSET = IN 6 ns VALID 8 ns BEFORE "OP_MCU_EFCLK" RISING ;

Seems my FPGA died right now :'-( Afraid to try this on another device. Anyone seen this before?

Visitor
targonix
Posts: 11
Registered: ‎08-31-2011
0

Re: RMII Timing Constraint Help

Little update. Seems FPGA burn doesn't connected with my code. Whatever. Any thought of the clocking scheme with IOBUF? I think there is a DCM-way of source synchronous clocking, but not sure...