clock circuit

26,688

Circuit Image

The crystal-controlled SoftRock receivers developed by Tony Parks (KB9YIG) have played a significant role in introducing many individuals to Software Defined Radio (SDR). For those who prefer not to be limited to a single frequency, the SoftRock Ensemble receivers utilize the Silicon Laboratories Si570 Programmable Crystal Oscillator (XO) for frequency control. Frequency synthesizers employing the Si570 have become the de facto standard for this type of receiver. However, the Si570 can be challenging to source in small quantities and tends to be relatively expensive. SDR-Kits offers them in packs of ten for those interested. In exploring alternatives for a personal receiver project, the Cypress CY22150 was identified. This general-purpose 3.3V clock generator can produce frequencies ranging from 80 kHz to 166.6 MHz with an external reference and can be programmed in the field via an I2C interface. Available individually from Digikey for under $3.00 USD, the CY22150 was purchased for testing. The test circuit includes a canned external oscillator (X1) providing the reference frequency, which was set to 50 MHz for this experiment. The CY22150 (U1) outputs the clock signal from pin 14. The resistors depicted are not integral to the clock circuit but serve as terminating resistors for the I2C bus. Utilizing the CY22150 primarily involves configuring the appropriate values in its registers. Several support registers need adjustment, but the key registers are those determining the output frequency: P, Q, and the Divider. Various combinations of P, Q, and the Divider can yield a specific frequency, although certain guidelines exist for optimal performance. The output frequency is calculated based on the reference frequency and the chosen P, Q, and Divider values. Testing involved creating an extio DLL to control the clock circuit from HDSDR, which was used as the oscillator for the SDR project. The circuit functioned effectively, demonstrating stability sufficient for WSPR reception, indicating potential for future projects. It is important to note that the frequency resolution attainable from this circuit may not match that of other circuits. However, one of the benefits of SDR is the flexibility with local oscillators, allowing for sufficient accuracy to position the frequency of interest within the processing bandwidth, which this circuit can achieve.

The SoftRock receiver line has significantly impacted the SDR community by providing accessible and flexible solutions for amateur radio enthusiasts. The integration of the Si570 oscillator has set a high standard for frequency synthesis, yet its availability issues have prompted the exploration of alternatives like the CY22150. This clock generator's ability to be programmed via I2C makes it particularly versatile for SDR applications, allowing for dynamic frequency adjustments as needed.

In practical applications, the CY22150 can be used to generate a wide range of frequencies, making it suitable for various SDR configurations. The use of an external reference oscillator ensures that the generated frequencies remain stable and accurate. The choice of a 50 MHz reference for testing is common, as it provides a good balance between performance and availability. The configuration process requires careful selection of the parameters P, Q, and the Divider, which directly influence the output frequency. The algorithm described in the initial input outlines a systematic approach to finding the optimal values for these parameters, ensuring that the output frequency closely matches the desired specifications.

The output from the CY22150 can be employed in various SDR applications, including WSPR reception, where frequency stability is crucial for effective communication. The flexibility of the SDR platform allows users to adapt their systems to a wide range of operating conditions, making the CY22150 a valuable component in the design of modern SDR receivers. The ability to interface with software like HDSDR further enhances the usability of the clock generator, providing a seamless integration into the SDR workflow. Overall, the CY22150 presents a cost-effective alternative to the Si570, expanding the possibilities for hobbyists and professionals alike in the field of Software Defined Radio.The crystal controlled SoftRock receivers developed by Tony Parks (KB9YIG) are responsible for introducing a significant number of people to Software Defined Radio (SDR). And for those who don`t want to be stuck on a single frequency there are the SoftRock Ensemble receivers that use the Silicon Laboratories` Si570 Programmable Crystal Oscillator

(XO) for frequency control. In fact, frequency synthesizers using the Si570 have become the de-factor standard for these type of receivers. The only problem with this is the Si570 itself. They can be difficult to find in small quantities and a little expensive when you can find them ( SDR-Kits does have them available in packs of 10 if you so desire).

Therefore, when I started working on my own receiver I decided to look around for alternatives. It wasn`t long before I ran across the Cypress CY22150. This is a general purpose 3. 3V clock generator. With an external reference it will produce frequencies from 80 kHz to 166. 6 MHz and can be programmed in the field through an I2C interface. Since they are available in single quantities from Digikey for less than $3. 00 USD, I decided to buy a few and try them out. The test circuit is shown below. X1 is a canned external oscillator that provides the reference frequency (I used a 50 MHz oscillator for the test circuit). U1 is the CY22150 itself. The clock output is taken from pin 14. The resistors shown are not part of the clock circuit per-se, but the terminating resistors for the I2C bus.

Using the CY22150 consists primarily of putting the proper values into the registers. There are a number of support registers that need to be set but the most important are those that determine the output frequency; P, Q, and the Divider. There are various combinations of P, Q, and the Divider that will give a specific frequency and it might seem like you can choose any of them that will work.

However, there are some guidelines for best performance. double f_ref = F_REF; double f_out = F_OUT; double q_min = 2; double q_max = (int)(f_ref / 250000. 0); double d_min = (int)(1. 0 + 100000000. 0 / f_out); double d_max = (int)(1. 0 + 400000000. 0 / f_out) - 1. 0; double f_test, f_diff; double f_track = f_out; double p_test, q_test, d_test; int p, q, d; for (q_test = q_min; q_test <= q_max; q_test+) { for (d_test = d_max; d_test >= d_min; d_test-) { p_test = (f_out / f_ref) * q_test * d_test; p_test = (p_test - (int)p_test) >. 5) (int)(p_test + 1. 0) : (int)p_test; f_test = (f_ref * p_test) / (q_test * d_test); f_diff = (f_test - f_out) > 0. 0) (f_test - f_out) : (f_out - f_test); if (f_diff < f_track) { f_track = f_diff; p = (int)p_test; q = (int)q_test; d = (int)d_test; } } } Appropriate values for the remaining registers can be obtained from the datasheet and written along with the P, Q, and Divider values to the CY22150 via the I2C bus.

To test it all I put together an extio dll to control the clock circuit from HDSDR and used it as the oscillator for an SDR I`m putting together. It worked well and was stable enough to allow WSPR reception so I think I`ll be using this circuit in more of my projects.

Something to keep in mind. If you take a look at the equation used to calculate the clock generator`s output frequency you`ll realize you`re not going to get the frequency resolution from this circuit you might get from others. But that`s one of the advantages of working with SDR. You don`t have to be exact with your local oscillator, you just have to get close enough to put your frequency of interest within the processing bandwidth, and in most cases this circuit will work just fine.

🔗 External reference




Warning: include(partials/cookie-banner.php): Failed to open stream: Permission denied in /var/www/html/nextgr/view-circuit.php on line 713

Warning: include(): Failed opening 'partials/cookie-banner.php' for inclusion (include_path='.:/usr/share/php') in /var/www/html/nextgr/view-circuit.php on line 713