English
Language : 

AN334 Datasheet, PDF (1/44 Pages) Silicon Laboratories – ANSI C REFERENCE DESIGN WITH OPTIONAL NON-VOLATILE OUTPUT FREQUENCY
AN334
Si57X/598/599 ANSI C REFERENCE DESIGN
WITH OPTIONAL NON-VOLATILE OUTPUT FREQUENCY
1. Introduction
Because each Si570/Si571/Si598/Si599 programmable XO/VCXO has a unique crystal frequency, it is necessary
to perform the frequency conversion calculations for every new desired output frequency for each programmable
oscillator. To simplify the creation of the search procedures and calculations, Silicon Laboratories is providing the
following ANSI C-based reference design. These calculations can be performed with a variety of hardware and
software; so, the ANSI C programming language is used. Because ANSI C is supported on a large number of
processors, the code can be ported to nearly any platform.
The equations needed to change the output frequency involve multiplication and division and require sufficient
precision to maintain the frequency accuracy. Two approaches are shown within the code. One approach uses
double floating point precision and achieves better than 5 ppm accuracy. The alternate approach uses single
floating point precision and yields better than 100 ppb. This method can be used with processors that do not
support double floating point precision calculations.
Each customer will need to decide whether to make the calculations in real time during normal operation or to
implement them during an outgoing test procedure with the result stored on an EEPROM or similar storage device.
If an independent processor is not already available within the design, the real-time calculations can be made by
the simple addition of an external MCU such as the C8051F301 from Silicon Labs. The C8051F301 is 3x3 mm and
contains sufficient Flash memory for this implementation. A strobe input on the C8051F301 is used to cycle
through the list of stored frequencies (see Figure 1 on page 3 for the reference design expected usage model). The
code examples in Appendix A and Appendix B both cycle through the list of frequencies, but the code in Appendix
B stores the last output frequency in Flash memory and will start from the last output frequency after the power is
cycled. The full reference design has been implemented using the C8051F301, and test boards are available for
review.
The Si570 I2C programmable XO is pin and register compatible with the Si598. The Si571 VCXO is pin and register
compatible with the Si599. This code allows each device to be interchanged according the requirements of the
application. See each device's respective data sheet for frequency range, stability, and jitter performance
information.
2. Compiler
This reference design requires the use of single-precision floating point calculations. In order to reduce the cost
burden associated with this requirement, the SDCC compiler has been employed. The resulting binary can be
downloaded to the C8051F301 Flash memory space. “AN198: Integrating SDCC 8051 Tools into the Silicon Labs
IDE” describes the procedure for linking the SDCC compiler to the development environment. The code has also
been successfully tested using the full version of the Keil compiler. “AN104: Integrating Keil 8051 Tools into the
Silicon Labs IDE” describes the procedure for linking the Keil compiler to the development environment.
3. C8051F301 Specifics
Since I2C communication is required, the code calls out the I2C hardware within the MCU. When porting the code
to other processors, it is necessary to determine how to enable I2C communication within that device. The I2C
interrupts and functions within this code will most likely not handle the other processor properly and will likely need
to be rewritten. Usually, this code is available from the processor vendor. The I2C code used in this reference
design was copied from “AN141: SMBus Communication for Small Form Factor Device Families” (see EEPROM
example).
Rev. 0.4 5/10
Copyright © 2010 by Silicon Laboratories
AN334