Close

8-Channel Clock Generator Board Designed

A project log for Anacon-xC

Analog video console based on XMOS xCore with VGA/NTSC/PAL video output and PS/2 mouse/keyboard input. 32-bit scanline-based rendering.

kevin-h-pattersonKevin H. Patterson 03/10/2017 at 05:101 Comment

Got the clock generator board designed and ordered. This board is based on Silicon Labs Si5351A-B-GM, which can generate up to 8 independent channels of non-integer-related clock signals between 8 kHz and 160 MHz. They share a common clock domain too, so no relative drift between channels.

I plan to use this board to generate a variety of different clocks for the Anacon-xC project. This includes DAC pixel clock, I2S audio master clock and bit clock, NTSC/PAL encoder 4FSC clock, and in the future maybe even the XS-200 core clock as well (prob. 24 MHz).

For an example of how this would work: The xCore chip would send out a desired pixel clock frequency over I2C. The Si5351 would output this clock to both the video DAC and a 1-bit input on the xCore mcu. Falling edge of the clock would trigger the xCore to output 24-bit RGB data on a buffered port (using that input pin for clock), and the DAC would load the data on the rising edge. This makes it easy to select use any arbitrary pixel clock frequency, and take full advantage of xCore port buffering. Right now I'm burning a fair number of CPU cycles in the pixel output loop just doing the fractional division of the block clock to get an approximate desired pixel clock. Using an external clock allows us to program in a more "event driven" mode, where the external clock is an event, rather than generating all these events ourselves in code. Timers and port timestamps help a LOT, but when the clock frequencies are very high even a little overhead starts to add up.

The board includes all necessary support circuitry including the required crystal (25 or 27 MHz). All programming is done over I2C. Adafruit has an Arduino library for the 3-channel version of this chip which I can probably modify. Silicon Labs also has a little Windows app that can generate the right register values based on your choice of desired frequencies.

Board format is wide DIP style, and should fit nicely on a solderless breadboard. Although I only used 2 layers in the design, I took some care to route signals and power in a sane manner considering the potential frequencies involved.

Eagle 7.5 files for this board are available in the project files section.

PCB on OSH Park

Discussions

Wolfram Steinke wrote 09/10/2021 at 10:20 point

Not a comment but a question.  With your experience with this chip, how easy would it be get a clock output of 393.216 kHz which is 12 time that of the common RTC crystal 32.768 kHz?  I'm looking to make a clock for a model railway so a model day passes in 2 hours.  Hopefully I can also find watch movement that can handle being driven by that frequency.

  Are you sure? yes | no