Is there a XMOS device can have > 100MHz IO speed? Topic is solved

If you have a simple question and just want an answer.
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Is there a XMOS device can have > 100MHz IO speed?

Post by xchips »

Hi, guys. I'm searching for a XMOS device which its IO speed can >= 100MHz. But I cannot find one,
the datasheet said its IO speed can up to 60MHz only.

Did I miss some series XMOS device?

Thanks for your response!

Best regards.


View Solution
henk
Respected Member
Posts: 347
Joined: Wed Jan 27, 2016 5:21 pm

Post by henk »

Hi xchips,

The I/O speed is limited by three factors

1) The physical pin speed; you will notice that the RGMII interface is running at 125 MHz - and there is probably some slack there. This is very dependent on the capacitive load of the pins.

2) The skew between pins and the round-trip-time of IO pins. If you use source synchronous clocks (i.e., clock coming from the output when inputting data, and clock going out from the xcore when you are outputting data), then the skew is relatively small when using pins that are in the same bank; provided capacitive loads are small.

3) The logical timings, i.e., can your software keep up.

The 60 MHz is a simplification of the above three numbers into a single value.

If you have more specific info one the signal that you would like to drive and sample I may be able to help you further.

Cheers,
Henk
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Post by xchips »

Hi, Henk. Thank you very much for your answers.

I want to output a sample clock (about 120MHz) from XMOS device for an ADC. And it seems that all XMOS devices have a 60MHz limitation on IO speed. So I'm wondering if there is a series device can do this.

Best regards.
henk
Respected Member
Posts: 347
Joined: Wed Jan 27, 2016 5:21 pm

Post by henk »

Hi xchips,

Generating a 120 MHz clock is possible, but you will need to tweak your frequencies a bit.

To get to exactly 120 MHz, you will need to run the processor at 480 MHz (otherwise it can only generate 125 MHz). Either set the ref clock to 120 MHz (divide by 4), and output the ref clock, or clock a 1-bit port from the core clock and output 0xCCCCCCCC continuously on the one-bit port.

The electrical side will require some careful design in terms of termination, trace capacitance, etc. I am not qualified in that area, but for starters you could add a small series resistor (20-30 ohm) near the XCore, make sure the trace is short, and take care of the grounding.

Cheers,
Henk
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Post by xchips »

Hi, Henk. Thank you very much for you help again.

Now I knew that XMOS device may have a chance to output such a high frequency clock. But unfortunately currently I can't verify the method which you mentioned.

Thanks again.

Best regards.
User avatar
infiniteimprobability
XCore Legend
Posts: 1126
Joined: Thu May 27, 2010 10:08 am

Post by infiniteimprobability »

Perhaps try this:

Code: Select all

#include <xs1.h>

out port p_clk = XS1_PORT_1G; //clock output
clock clk = XS1_CLKBLK_1;

int main(void){
	configure_clock_xcore(clk, 2); 	//(500 / (2 * 2) = 125Mhz)
	set_port_clock(p_clk, clk); 	//Attach clock to port
	set_port_mode_clock(p_clk);		//Set port to clock output drive
	start_clock(clk);				//Go!!
	while(1);
	return 0;
}
It divides the core clock by 4 and outputs it. I can confirm I get a 125MHz clock output. Unfortunately my home scope is only 100MHz so it looks like a sine wave, but a better scope would tell a squarer story!
125MHz.png
You do not have the required permissions to view the files attached to this post.
xchips
Active Member
Posts: 51
Joined: Wed Jun 22, 2016 8:08 am

Post by xchips »

Hi, infiniteimprobability.

It is cool. Now I fully believe that XMOS device can do that. but uh... I don't have such a high frequency scope to verify it on my side.

Thank you very much for you help again!
Best regards.