Si5351A Freq Synth- 25MHz or 27MHz Reference Oscillator and Why? Arduino Project - Page 1
Forum section: electronics / beginners

author: t1d
author_rank: Super Contributor
timestamp: March 02, 2023, 06:47:37 pm
content: The reference oscillator may be 25 or 27MHz. I have not found much information on which to use and why. I am sure that it has to do with the multiple frequencies that may be derived.QRP Labs states: "In  module, a 27MHz crystal is used. This frequency is chosen because it is possible to configure the chip to produce the exact 1.46Hz tone spacing for WSPR, on any amateur radio band from 2200m (136kHz) to 2m (145MHz). A 25MHz crystal cannot provide WSPR tone spacing on the 2m band.I am sure that there are many more considerations that are outside of my knowledge base. My use is to supplement the frequency range of my Rigol DG822 Function Generator = 25MHz for general hobbyist use.Thanks for your help.

author: fourfathom
author_rank: Super Contributor
timestamp: March 02, 2023, 07:42:24 pm
content: You need to look at the Si5351 divider structure to understand this, but here's a quick overview:The '5351 has a PLL with a range from 600 to 900 MHz, and two dividers. These are "fractional dividers", where the divisor is in the form of A + (B / C), and in most cases can provide a high degree of resolution. One divider is in the PLL feedback loop, and the other divides the PLL output to provide the desired clock output. This output fractional divider has a minimum value of 8, which limits the output frequency to 900/8 or 112.5 MHz.But there are also integer output divisors available: 4, and 6. Setting the output divider to 4 gives you a max output freq of 225 MHz. You are now limited to using the PLL feedback divider for frequency adjustment, and while there are tricks you can play with the divider fractions, some reference frequencies make this easier than others.So 27 MHz is a good frequency, but unless you care about exact WSPR tone step frequencies 25 MHz is probably just as good. I know the Si5351 spec doesn't say I can do it, but I usually use a 10 MHz external oscillator to drive the chip and that also works great. You need to understand the dividers when you choose a frequency.BTW, there are two identical PLL/divider sections in this chip (I only described one of them), and additional dividers used to drop the output frequency beyond what the fractional divider can do by itself. And The PLL range typically goes beyond the guaranteed range, by quite a bit. It also has settable output delay (useful for phase control), settable output drive strength, and some very effective jitter attenuators. It's a great part.

author: BrianHG
author_rank: Super Contributor
timestamp: March 02, 2023, 07:45:48 pm
content: With 27MHz using a simple integer multiply and divide PLL, you can generate all the HDTV clock frequencies, IE: 148.5MHz, all SDTV 27MHz, 13.5 MHz, all 48Khz DAC clock frequencies including the x64/x128 bit clock, all NTSC sub-carrier 3.579545MHz multiples, as well as all PAL TV pixel frequencies. Baud rate clocks and many more, exactly... Not a close approximation, but the exact frequencies required for many media processors/players/broadcast. No fractional PLLs dividers needed. I mean the dead perfect requirements for broadcast quality reference clock generators for all formats and their MPEG2/3/4 transcoder chipsets.So that 1 reference frequency allows you to generate all the I2S clocks, video pixel clocks for broadcast, bit-clocks for all the HDMI channels as well as many other communication standards.25Mhz wont do all the formats as you would need a fractional or too huge/low frequency PLL loop to maintain a stable reference.

author: t1d
author_rank: Super Contributor
timestamp: March 03, 2023, 04:12:07 am
content: Thanks, guys! Those are great answers!The TCXO chip that I am looking at is the same price for either frequency. I think I will go with the 27MHz model, for precision, as you say.I also have a UBlox M8N Clone GPS receiver that would be great to use it with. I would like create a 10MHz reference. But, the Ublox suffers from a similar math difficulty and doesn't produce 10MHz all that well. It will be fun to experiment with the Si5351A to see if I can combine the two parts and come up with a super-clean 10MHz. At 5MHz, the Ublox is clean.As fourfathom notes, it looks to be a great part.With much appreciation,Cheers!

author: BrianHG
author_rank: Super Contributor
timestamp: March 03, 2023, 05:21:08 am
content: Take a look at TI's CDCExxxx clock generator series. They have models from 1-3 PLLs with numerous outputs. A VCXO input control to tune your crystal. EEprom to permanently write settings.2 PLL, 5 output version:https://www.ti.com/product/CDCE9253pllshttps://www.ti.com/product/CDCE9371pllhttps://www.ti.com/product/CDCE913All in series:https://www.mouser.ca/new/texas-instruments/ti-cdce949-cdcel949/

author: fourfathom
author_rank: Super Contributor
timestamp: March 03, 2023, 08:19:06 am
content: Quote from: BrianHG on March 03, 2023, 05:21:08 amThose are interesting parts -- thanks for pointing them out.The company that made the Si5351 recently was acquired, and for a while parts were not available. They appear to be back in production now, and there is also a Chinese clone, the MS5351S (licensed?) that by all the tests I've seen, as well as my own, it behaves just as well and is available for under $1 ea (qty 10) from LCSC. The '5351 appears to be significantly more flexible than those TI parts, and cheaper, but the EEPROM configuration programming in the TI chip could be a big deal in some applications. There may be other advantages, and I haven't compared the jitter or noise specs.

author: t1d
author_rank: Super Contributor
timestamp: April 02, 2024, 07:30:20 am
content: Hello, folks... It's been about a year, since I successfully built my own demo board, for the Si5351A. (I like to build my own demo boards, because, with the help of good folks like you, I learn so much more.) So, I am returning to the project, just to enjoy playing with the board. I hope the original group is still around and will join back in...Board - The "CLK" silkscreen has been corrected to "CLK2:1:0," for any future boards.How I bodged in resistors, for the pot, which reduced the jitter.Schematic - CorrectedUpgrades to Consider1) I used an ECS Brand TXO-2016MV-250-TR 25MHz Oscillator, for starters. It has worked fine. But, I have always wanted a 27MHz Oscillator. I thought that it did not come in this series of oscillators. I now see that a 27.120 MHz model is available. Given the precision mathematics that you taught me about, I wanted to inquire as to what you would think of the frequency difference, verses being perfectly on 27MHz.https://www.mouser.com/ProductDetail/ECS/ECS-1612MV-271.2-CN-TR?qs=dbcCsuKDzFXAaVf7aV4TPA%3D%3D2) If I wanted to change the board to allow for inputting an external reference - say my 10MHz OCXO, as suggested by fourfathom - would I need to do anything other than adding jumpers to disable the onboard oscillator and connectors to bring in the external reference?Thanks!

author: radiolistener
author_rank: Super Contributor
timestamp: April 02, 2024, 03:00:07 pm
content: si5351 consists of frequency multiplier X and frequency divider Y.Both can be fractional and represented as:X = Ax + Bx / CxY = Ay + By / CyAlso there is additional divider on the output Xo.So, the output frequency will be:Fout = [ Fosc * X / Y ] / XoThe trick here is that using integer divider Y allows to significantly reduce jitter.You can put your oscillator frequency in that equation and estimate if it needs integer divider for the frequency of your needs

author: mag_therm
author_rank: Frequent Contributor
timestamp: April 02, 2024, 05:58:10 pm
content: Hi t1d. That's a good job and I could use one.The eval board on Digikey is ~$160I have a new HackRF one for ham radio, for use on 1 ~30MHz.The problem is, the Si5351A can't be set to individual Hz values.It can only be set within a 29 Hz range of the Osc value sent over USB from the gqrx sdr UIThis might not affect some users, but I am presently generating data for HamSCI (doppler shift etc) using FLDIGI FMT mode. And the new FSTW4W mode needs 1Hz resolution along with a GPSDO.But there is more bad news, there seems no way of knowing what actual frequency will be selected within the 29 Hz range. I tried to recognize a pattern on a few frequencies but could not see one. Knowing the actual HW Osc setting would enable compensation in the setting of the Rx offset.Today I downloaded the firmware source fromhttps://github.com/greatscottgadgets/hackrfI can see the frequency calcs in "tuning.h" (renamed) here:https://app.box.com/s/8agnkv4risg5emifdp7wnbfwcp81b1z5Math is similar to radiolistener's post.It could be an integer math rounding problem or maybe there are dis- allowed frequencies..I am rusty on C but thinking I may be able to modify, so that Si5351 always selects aknown frequency, or maybe I could just replace with a lookup table for my own use.I have corresponded with the assistant on github, who confirmed the problem.Any thoughts will be appreciated, as I start to understand that math.

author: fourfathom
author_rank: Super Contributor
timestamp: April 02, 2024, 08:08:03 pm
content: Quote from: mag_therm on April 02, 2024, 05:58:10 pmI've also been quite active in HamSci stuff, and you might be interested in the two blogs I sometimes update. There's lots there about using external references on transmitters and receivers, FST4W, beacons, etc:https://turnislandsystems.com/http://wb6cxc.com/I'm using the Si5351 in a multi-channel WSPR / FST4W transmitter, and a few of these boxes are running or will be in time to monitor the effects of the upcoming eclipse.

author: mag_therm
author_rank: Frequent Contributor
timestamp: April 02, 2024, 09:14:43 pm
content: Did we meet at your poster?KE8UZF ex VK

author: radiolistener
author_rank: Super Contributor
timestamp: April 02, 2024, 09:32:29 pm
content: Quote from: mag_therm on April 02, 2024, 05:58:10 pmCan you show example of exact frequency which cannot be set to exact value and oscillator frequency used for si5351?Its hard to say what is going on if you don't see the numbers.

author: fourfathom
author_rank: Super Contributor
timestamp: April 02, 2024, 10:19:41 pm
content: Quote from: mag_therm on April 02, 2024, 09:14:43 pmI was the old guy (well, one of the old guys!) there, showing off my WSPRSONDE transmitter and helping with the RX888 system. I'm Paul Elliott / wb6cxc, and I also co-presented with Rob Robinett on Friday morning. I met a lot of interesting people at the HamSci sessions, but as I have confessed elsewhere on EEVblog I am hopeless when it comes to remembering names, callsigns, or faces, so my apologies if I didn't recognize your callsign.

author: fourfathom
author_rank: Super Contributor
timestamp: April 02, 2024, 10:28:05 pm
content: Quote from: radiolistener on April 02, 2024, 09:32:29 pmYes.For more precision, look at the Farey Sequence or Continued Fraction calculations when setting the fractional dividers. There are a few "you can't get there from here" values, but usually you can get awfully close. But I don't know how the ggrx sdr UI works.

author: radiolistener
author_rank: Super Contributor
timestamp: April 02, 2024, 11:02:56 pm
content: Quote from: fourfathom on April 02, 2024, 10:28:05 pmI have algorithm to find the best nominator and denominator for si5351 Multisynth.I just want to see exact frequency number to check if it really cannot be set.

author: mag_therm
author_rank: Frequent Contributor
timestamp: April 02, 2024, 11:23:08 pm
content: Hi RadioListener.Here are spreadsheets of frequency data comparing "Setting" with "Measured"gnumeric:https://app.box.com/s/4otipass4oa7uppqmtodivfp9i2uvtiixlsx:https://app.box.com/s/jozsc0179xgdpnsra6y6dxkfmrzhjl49It was tricky to get and not sure if all are to nearest Hz,however it shows the "steps" that the measured frequency takes.The HackRF is presently on 10Mhz GPSDO receiving wspr 14095.600 kHzwith the following values:Hardware Freq: 13998.965 kHzRx Offset: 96.607 kHzResult: 14095.572 kHzActual Freq is close to: 14095.600 kHz (according to Hermes14 with GPSDO)Hi FourFathom, yes I have same problem, and was daunted to beabout 3rd in the "first licensed date" competition!I thought the HamSci meeting was very worthwhile and look forward to attending next one.Thanks for your presentations.Regards

author: t1d
author_rank: Super Contributor
timestamp: April 03, 2024, 08:47:48 pm
content: Thanks to everyone, for joining back in! Great comments!"The trick here is that using integer divider Y allows to significantly reduce jitter.You can put your oscillator frequency in that equation and estimate if it needs integer divider for the frequency of your needs"You did a good job of explaining this and I understand the operations. Another commenter added that, sometimes, "You just can't get there from here." Meaning that there just is not a good mathematical solution, when there are only these two variables to work with.I am not a radio guy, so I do not know about the frequencies that are used for that application. My question is - Which would provide better (mathematical) access to the commonly used frequency, 27MHz or 27.120MHz? I am rather sure that the question is too broad to answer. It depends on the end frequency that you want. One frequency that I know I desire is 10MHz.Anyway, it is fun to learn and this group has a lot of good teachers. Cheers!

author: t1d
author_rank: Super Contributor
timestamp: April 03, 2024, 11:07:38 pm
content: Side notes regarding the AdaFruit board...1) Mouser carries these boards. So, it may reduce shipping costs to buy from them... Meaning, to add the board to a larger component order, thereby avoiding the extra shipping cost of ordering an individual board from AdaFruit.https://www.mouser.com/c/?q=si5351a%20adafruit2) I have found the AdaFruit 25MHz oscillator in the 27MHz frequency. So, changing that chip may provide options... They are cheap = $0.46USD.https://www.mouser.com/c/?q=abm8g-273) Here is the data sheet, for this series of chips.https://www.mouser.com/datasheet/2/3/ABM8G-1608872.pdfHTH.

author: fourfathom
author_rank: Super Contributor
timestamp: April 03, 2024, 11:22:20 pm
content: Quote from: t1d on April 03, 2024, 08:47:48 pmEither of these reference frequencies can give you exactly 10 MHz. Here's how:You want the PLL frequency to be between 500 and 900 MHz.With a reference clock of 27 MHz, set the PLL multiplier to 20 (20 + 0/1) this gives a PLL frequency of 540 MHz. Then set the output divider to 54 (54 + 0/1), resulting in 10 MHz. There are of course other many other multiply/divide combinations that will work.With the ref clk of 27.120, as an example let's try for a PLL frequency of 800 MHz:27.120 MHz x (29 + 1352 / 2712) = 800 MHz. Set the output divider to 80.Or how about a PLL freq of 600 MHz?27.120 x ( 22 + 336 / 2712) = 600.It helps if you like working with remainder division. There are good on-line calculators for this.

author: radiolistener
author_rank: Super Contributor
timestamp: April 04, 2024, 12:55:00 am
content: Quote from: t1d on April 03, 2024, 08:47:48 pmNo, it is not related to mathematic. There is some limitations for min and max value of divider and limitation for min and max frequency for PLL, outside that limits it works unstable or just dont works at all.

author: radiolistener
author_rank: Super Contributor
timestamp: April 04, 2024, 12:57:08 am
content: Quote from: t1d on April 03, 2024, 08:47:48 pmUsing 10 MHz oscillator is a not good idea, because it reduces avaliable PLL frequency range due too small frequency. So it will leads to less available frequencies for synthesis. Higher frequency is better. I didn't checked exact values (the sources are on another PC), but since other guys said 27 MHz is good choice for most radio frequencies, then this is ideal frequency of choice for oscillator.I even don't worry about oscillator frequency, I'm using default adafruit 25 MHz and put exact frequnency measured with frequency standard into source code, so there is several kHz offset and I don't see difference with default oscillator frequency. So I think there is no significant difference between 25 and 27 MHz.

author: fourfathom
author_rank: Super Contributor
timestamp: April 04, 2024, 02:23:55 am
content: Quote from: radiolistener on April 04, 2024, 12:55:00 amIt is *absolutely* related to mathematics. Yes, the 220-1 maximum denominator in the Si5351 dividers accounts for one limit to resolution, but within this range there are still regions of higher and lower resolution. Again, look at the Farey sequence, which involves integer ratios. Here's a chart that shows the available ratios with a denominator of 10. The same thing is the case with a denominator of 1,048,575 -- only the absolute values are smaller:

author: fourfathom
author_rank: Super Contributor
timestamp: April 04, 2024, 02:32:00 am
content: Quote from: radiolistener on April 04, 2024, 12:57:08 amWhile the 10 MHz reference limits your maximum PLL frequency to 900 MHz (90 being the largest PLL feedback divider), as the reference frequency is reduced, so is the available frequency step-size. You get 25/10 times tighter frequency resolution with a 10 MHz reference than with a 25 MHz reference.Of course there are valid reasons why you would choose not to use a 10 MHz reference (specifications, for one), but as long as you give it a clean clock I've never seen it cause a problem.

author: fourfathom
author_rank: Super Contributor
timestamp: April 04, 2024, 02:34:09 am
content: Regarding the integer output divider value, I've heard from a reliable source that using an *even* integer is best. I haven't test this myself, but I do try to use even numbers.

author: mag_therm
author_rank: Frequent Contributor
timestamp: April 04, 2024, 03:44:38 pm
content: My aim is to compile parts of the HackRF One Firmware on desktop and print a csv of the flow of user's entered frequency through the various calculations to the Si5351A' values for the mixer and the MAX2837.The same firmware is used for various SDR and the parts in the HackRF have changed over the years. So there are lots of calculations for each HW variant.Particularly the .h files have become disconnected from their respective .c.It is slow going for me, and I haven't done C for 36 years!Snippets, I think that might have clues about the frequency inaccuracy:---------// const uint64_t freq; is user entry-----const uint32_t freq_mhz = freq / FREQ_ONE_MHZ;const uint32_t freq_hz = freq % FREQ_ONE_MHZ;------max2837_freq_nominal_hz = (2650 * FREQ_ONE_MHZ) - (freq / 7);------mixer_freq_mhz = (max2837_freq_nominal_hz / FREQ_ONE_MHZ) + freq_mhz;------MAX2837_freq_hz = (freq_mhz * FREQ_ONE_MHZ) + freq_hz;--------------/* Calculate n_lo */uint8_t n_lo = 0;uint16_t x = LO_MAX / lo;while ((x > 1) && (n_lo < 5)) {n_lo++;x >>= 1;}lodiv = 1 << n_lo;fvco = lodiv * lo;