25Mhz clock for L1 processor bootup and link compatibility

Technical discussions around xCORE processors (e.g. General Purpose (L/G), xCORE-USB, xCORE-Analog, xCORE-XA).
User avatar
boeserbaer
Active Member
Posts: 51
Joined: Fri Jan 29, 2010 4:36 pm

25Mhz clock for L1 processor bootup and link compatibility

Postby boeserbaer » Sat Apr 17, 2010 9:27 pm

I want to run a 25Mhz clock into an L1-128 as an ethernet controller (LAN 8700 example ported from XC-2) If I use the X20 boot mode this sets the PLL to 500Mhz. Thjis should be OK with the 500Mhz parts?

What about the XLINKS, I want to also communicate with other L1-128s running from 13Mhz osc at 399.75.

Link compatibility is my first priority. I am designing one of my IO modules now, and using a 13Mhz clock. It will initially communicate via a custom protocol to our FPGAs. I would be interested in using XLinks instead, and replacing our FPGAs with L1-128s. (I come from a FPGA and embedded LINUX background, so I am sure that the FPGAs are indeed replacable)

My next step is to design the system control board. This board needs to communicate with a PC (ethernet) and buffer real time data in case the PC (running windowsXP) fails to get to the data promptly. The Ethernet attached L1-128 needs to run from the same clock as the LAN8700 (25Mhz) Will the XLinks work this way (13Mhz 399.75Mhz PLL <-> 25Mhz 500Mhz PLL).

Regards, Mike
User avatar
dave
Member++
Posts: 31
Joined: Thu Dec 10, 2009 10:11 pm

Postby dave » Sun Apr 18, 2010 4:05 pm

You should be able to use the XMOS links to communicate between devices with different local clocks.

The transmission speed on each link can be programmed by setting a register that determines the inter-symbol gap (time between successive edges) and another that determines the inter-token gap. Using these you can turn the speed down to ensure that the receiver can keep up.

The receiver will be able to keep up provided that the receiving switch clock is fast enough - the maximum symbol rate is one half of the receiving switch clock rate.

This is described in the L1 System Specification document (especially section 3) and the L Clock Frequency Control document.
User avatar
Woody
XCore Addict
Posts: 165
Joined: Wed Feb 10, 2010 2:32 pm

Postby Woody » Mon Apr 19, 2010 9:53 am

boeserbaer wrote:I want to run a 25Mhz clock into an L1-128 as an ethernet controller (LAN 8700 example ported from XC-2) If I use the X20 boot mode this sets the PLL to 500Mhz. Thjis should be OK with the 500Mhz parts?
Whilst it seems reasonable to expect that if a 20MHz clock causes the XCore to run at 400MHz, using a 25MHz clock in the same boot mode might cause a 500MHz boot, unfortunately this is not the whole story.

The details of the XS1-L frequency control are in the 'XS1-L Clock Frequency Control' app note http://www.xmos.com/system/files/xs1lfreqctrl.pdf, but here are the specific details on your configuration.

When using the '11' boot mode the output frequency of the VCO (voltage controlled oscillator) within the PLL increases the input frequency by a factor of 60. The VCO freq is then divided down by a factor of 3 to get the overall frequency increase factor of 20. Hence 20MHz*20=400MHz.

The VCO has an operating frequency range of 260–1300 MHz. With a 20MHz input frequency the VCO boot frequency is 20MHz*60=1200MHz. However if a 25MHz input frequency is used the VCO frequency would be 1500MHz: this is out of range of the VCO so this boot configuration can not be used.

So what do you do?
1. Boot using the '01' boot mode rather than '11'. This will cause initial boot at 100MHz with a valid VCO freq
2. Define your frequency requirements in the .xn file and use the tools to configure the PLL for you. After the 100MHz boot, the tools will change the freq to 500MHz and reboot before your application code executes.

You'll require an entry similar to this in the node entry in your .xn file:

Code: Select all

<Node Id="0" Type="XS1-L1A-TQ128" Oscillator="25MHz" SystemFrequency="500MHz">
User avatar
boeserbaer
Active Member
Posts: 51
Joined: Fri Jan 29, 2010 4:36 pm

Postby boeserbaer » Tue Apr 20, 2010 2:02 am

Thanks on the boot info. And also on the link info. I think that given the need to boot X4 mode (100Mhz), I might as well just go ahead and use the 400Mhz parts. Unless I find myself starved for clock cycles. Hopefully I will manage to finish my layout tonight and get this thing out to fab.

Regards Mike
User avatar
Woody
XCore Addict
Posts: 165
Joined: Wed Feb 10, 2010 2:32 pm

Postby Woody » Tue Apr 20, 2010 9:17 am

This should not be a restriction on you that forces you to use a 400MHz part. You may want to keep BOM costs down by using one, but that's a different matter.

From your perspective, booting at 100MHz will make very little difference. The boot process including PLL reprogramming occurs quickly and you'll be up and running at your target speed in no time. All you need to do is specify in the .xn what speed to want to run at, and the rest is done automatically by the Xmos tools before passing control to your main() function.

You may want to add some optional 0R resistors onto your PCB to allow you to change the boot mode to allow this use in the future.

Who is online

Users browsing this forum: No registered users and 1 guest