VOGONS


Project: Full Can Clock Oscillator Replacement

Topic actions

Reply 20 of 124, by weedeewee

User metadata
Rank l33t
Rank
l33t
wiretap wrote on 2021-08-23, 19:55:

I don't think there is enough room. I mean it may be possible if you're super good at placement & routing and use 0402 size caps/resistors. But I didn't check any assembly services to see if they even have these components available. Some are pretty specialized.

But, anyone is free to give it a go, as the project files are all there and it is open source.

Maybe add an extra board on top, with an arduino, two push button or a rotary encoder, and maybe a tiny oled display 😉

though I took a look at the datasheet of the Si5351 and wonder what clock speed will be output at first powerup without any data in the NVM of the Si5351 ?

I get the impression that a configuration will have to be written, which can afterwards be altered using the I²C bus, though if set at 50MHz, it won't be usable in an old 386sx16, and since it's a OTP NVM...

Right to repair is fundamental. You own it, you're allowed to fix it.
How To Ask Questions The Smart Way
Do not ask Why !
https://www.vogonswiki.com/index.php/Serial_port

Reply 21 of 124, by wiretap

User metadata
Rank Oldbie
Rank
Oldbie

I'm not sure what would be there initially. Probably null. What I would do is program it to the original oscillator specification for the motherboard, then just write values to its RAM to change frequencies afterwards. That could be done with a rotary knob or buttons and an arduino with a screen/LEDs. You would essentially be selecting scripts to run to program oscillator output #1.

My Github
Circuit Board Repair Manuals

Reply 22 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

It has been nearly 3 years since this thread began. I have a few questions:

Has anyone assembled the variable full can oscillator version? If so, how did it work out, especially at high frequencies, e.g. 80-110 MHz?

Looks like the gerbers are 2 layers. Would there be any benefit in adding an inner ground layer?

Was JLCPCB able to source the components and do the assembly?

Has anyone priced the components yet? I noticed that Adafruit sells the Si5351A for only $7.95. If the components from wiretap's full can model are all to the Si5351A, I was wondering if it would be cheaper to buy the Adafruit unit and transplant all the components onto wiretap's PCB.

PCB's are cheap, $4.50 for 30 pieces, or $2 for 5 pieces.

Thanks.

Plan your life wisely, you'll be dead before you know it.

Reply 23 of 124, by wiretap

User metadata
Rank Oldbie
Rank
Oldbie

I know at least one person on an Amiga discord group I'm on made one like a year ago and it worked. (variable model) No idea who it is though.. I just remember someone thanking me.

My Github
Circuit Board Repair Manuals

Reply 24 of 124, by kingcake

User metadata
Rank Oldbie
Rank
Oldbie
weedeewee wrote on 2021-08-23, 20:15:
Maybe add an extra board on top, with an arduino, two push button or a rotary encoder, and maybe a tiny oled display ;-) […]
Show full quote
wiretap wrote on 2021-08-23, 19:55:

I don't think there is enough room. I mean it may be possible if you're super good at placement & routing and use 0402 size caps/resistors. But I didn't check any assembly services to see if they even have these components available. Some are pretty specialized.

But, anyone is free to give it a go, as the project files are all there and it is open source.

Maybe add an extra board on top, with an arduino, two push button or a rotary encoder, and maybe a tiny oled display 😉

though I took a look at the datasheet of the Si5351 and wonder what clock speed will be output at first powerup without any data in the NVM of the Si5351 ?

I get the impression that a configuration will have to be written, which can afterwards be altered using the I²C bus, though if set at 50MHz, it won't be usable in an old 386sx16, and since it's a OTP NVM...

Stacking a micro on top of an oscillator circuit is a great way to trash your clock signal quality

Reply 25 of 124, by rasz_pl

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2024-06-07, 15:31:

Si5351A for only $7.95

Si5351A devboards are <$2 on aliexpress, its a $0.5 part in bulk. You cant program its NVM, SL/Skyworks keep it under NDA and last time I checked no one knew how to do it on the open internet, thus it needs small micro ($0.5-1 whatever) on board to program initial clock values.

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 26 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

Programming via I2C shouldn't be a problem for me. I have an old EtherTen (arduino based) from 2010 that I keep around for situations like this. https://www.freetronics.com.au/products/etherten

The price for the Si5351A on AliExpress is irresistible, at $1 USD with free shipping. EDIT: Its only $1 if you are new to aliexpress; $2.22 otherwise.

I did add up the values from the BOM, placed into digikey, then converted to USD. For enough components to assemble 10 units, it would cost (after tax and shipping), $64.25 USD. That's $6.42 USD for components for 1 oscillator unit. With AliExpress, I can get the components for $1-2 and transplant them to wiretap's PCB ($2).

Unless you guys think the quality of the parts from Aliexpress will be substantially lower than what is on digikey and effect oscillator noise, reliability, etc.?

Update:
I've ordered Wiretap's PCBs. With the $0.50 paypal fee, $1.50 shipping, it was $6.50 for 30 pieces, or $0.22/ea. The cheapest alternative would have been $4 for 5 PCBs.
I've ordered two Si5351A at $2.22/ea. Will test them out first to confirm working, then transplant the components.
Did not put in the Digikey order. I want to spend as little as possible at this stage. Looks like I'll be the first one on VOGONS to share the results of these.

Total per unit cost is, $2.44 USD.

Plan your life wisely, you'll be dead before you know it.

Reply 27 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I just noticed that wiretap's design has one more component compared to the Adafruit Si5351 board, namely, IC2. IC2 is the power supply buffer / level shifter. Thus, my plan to pillage all the parts from the $1 AliExpress Si5351 won't work in its entirely.

I currently have in hand Wiretap's PCB's from JLCPCB and the $1 Si5351 from AliExpress, but will still need to source IC2 cheaply. I will first ensure that I can programme the clock generator before hunting down IC2. Best i can find for IC2 (SN74LV1T34DBVRG4) is about $2.50 for 10 pieces.

Plan your life wisely, you'll be dead before you know it.

Reply 28 of 124, by rasz_pl

User metadata
Rank l33t
Rank
l33t

What are you going to program it with 5V arduino or 3.3V one? Yes you will need 3.3V supply, but for I2C you can buffer with two random logic level N-channel MOSFET transistors and 4 common resistors
https://www.sparkfun.com/products/12009 https://cdn.sparkfun.com/datasheets/BreakoutB … directional.pdf

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 29 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I'm going to use the 5V supply from the Arduino to power the SI5351. The SI5351 still has the 3.3V LDO (4B2K), but is just missing the up-translation to shift the output clock signal back to 5V (this is labelled IC2).

My plan is to follow this guide, https://learn.adafruit.com/adafruit-si5351-cl … wiring-and-test and ensure I can programme the unit to, e.g. 90 MHz, then view the 3.3V clock pulse on the scope. If all goes well, I'll order the level shifters and assemble one of wiretap's PCBs by transplanting parts from the SI5351's PCB.

I haven't gotten to it yet, but it could be that the main hurtle is getting the software working fine on my older Linux distro with Arduino IDE 1.8.19. The last Arduino IDE I used was 0.0.22 from 2010.

This is how I attached the cables. Should be pretty simple:

The attachment full_can_osc_arduino_programming.JPG is no longer available

Plan your life wisely, you'll be dead before you know it.

Reply 30 of 124, by rasz_pl

User metadata
Rank l33t
Rank
l33t

Ah, i2c translators are already on the pcb.
You might not need level translation for the clock output.

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 31 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I was able to successfully programme the $1 SI5351. Most accurate signal is in integer mode vs. fractional mode, which for my range of interest looks like:
MHz
.
.
.
79.2
81.25
83.33
84.38
87.5
90.63
91.67
93.75
95.83
.
.
.
Fractional mode can adjust these in 0.01 Mhz steps, but typically measured high by 1-2 MHz. Depending on values chosen, jitter would become better or worse. Will test this more when I have wiretap's PCB assembled.

In any case, my scope is only reading a swing from 1 V to 2.56 V, so I'm going to want to employ IC2 to shift the voltage level 5 V. I'll spend another $2.50. EDIT: bought 10 for $1.90.

Plan your life wisely, you'll be dead before you know it.

Reply 32 of 124, by rasz_pl

User metadata
Rank l33t
Rank
l33t

Looks like you have some off by few zeroes error? At xx MHz you should be able to program with accuracy down to below KHz offset https://rfzero.net/documentation/tools/si5351 … frequency-tool/ hmm or is that calculator for whole rfzero and not just si5351a alone? nah this looks right, it deviates at single Hertz at low teens so up to 300 HZ at 100MHz is what I would expect

>In any case, my scope is only reading a swing from 1 V to 2.56 V

thats normal for a 100MHz frontend scope, that 100MHz is at 3 dB down (~0.7) meaning 3.3V output becomes 2.3V

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 33 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

I did not calculate the exact precision of the fractional frequency possible, just checked that it can do at least to the hundredths place, which is sufficient enough for my needs. Even the tenths place will do. While the integer mode tends to agree best with the value read on the scope, fractional mode reads 1-2 MHz high. I used PLLA for integer mode and PLLB for fractional. Will check later on (when level shifter is here) if using fractional mode with PLLA offers any improvement.

Thanks for the 100 MHz / 3 dB explanation for the missing voltage. I still will need the voltage up shifter. I remember a commenter in the SXL2 thread providing some spec sheet data stating that the FSB clock signal voltage cannot be too much lower than the CPU voltage, I think it was by 0.35 V, otherwise the CPU could miss clocks. I'm running the CPU at 5.20 V or 5.25 V, implying the FSB signal must be at least 4.90 V. While I haven't verified this, I'd still want the a proper 5 V FSB signal for these 386 boards.

Plan your life wisely, you'll be dead before you know it.

Reply 34 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

It seems that the SI5351 is not able to retain its programmed settings after a power cycle. The I2C must communicate with the microcontroller at every power cycle. Is this the expected behaviour? If so, how to we make it so that the unit will retain its last programmed values?

According to the datasheet for the SI5351:

The Si5351 is a highly flexible clock generator which is entirely configurable through its I2C interface. The device’s default configuration is stored in non-volatile memory (NVM) as shown in Figure 11. The NVM is a one time programmable memory (OTP) which can store a custom user configuration at power-up. This is a useful feature for applications that need a clock present at power-up (e.g., for providing a clock to a processor). 

During a power cycle the contents of the NVM are copied into random access memory (RAM), which sets the device configuration that will be used during normal operation. Any changes to the device configuration after power-up are made by reading and writing to registers in the RAM space through the I2C interface.

It looks like the 5351 has some non-volatile memory, but it is one-time programmable only. Am I reading this correctly? If so, what are the current contents of the NVRAM? Is it that the Adafruit directions to programme the Si5351 do not write to NVRAM, but are writing to the RAM space only?

I'm not sure if it matters, but the part number for the 5351 on my board is: 5351M TCMCU9

Also noted was:

To simplify device configuration, Silicon Labs has released the ClockBuilder Desktop.

Perhaps I can use this to programme the NVRAM, however I'd need the evaluation board to connect to USB: https://www.digikey.com/en/products/detail/sk … QFN-EVB/3679846

According to the Si5351 ClockBuilder Desktop User Guide, November 2013

The attachment ClockBuilder_SoftwareUserGuide.pdf is no longer available
The NVM file created by Si5351 ClockBuilder Desktop is a text file that describes the settings for a custom device. This file can be used to order custom devices from Silicon Laboratories. Set up the frequency plan configuration as usual and then use the “Create Custom Clock” menu option to make the NVM file.

I assume NVM is the one-time programmable non-volatile memory the datasheet was referencing. Looks like I can use the ClockBuilder Software to create and send this file to the SI5351, but I'd need to find a way to do this with the Arduino as the evaluation board is $150+. Does anyone know of an easier means to programme the Arduino code into the OTP NVRAM on the SI5351?

Plan your life wisely, you'll be dead before you know it.

Reply 35 of 124, by rasz_pl

User metadata
Rank l33t
Rank
l33t
feipoa wrote on 2024-06-27, 08:24:

It seems that the SI5351 is not able to retain its programmed settings after a power cycle.

Sure it can, but manufacturer wont let you do it. Re: Project: Full Can Clock Oscillator Replacement
" You cant program its NVM, SL/Skyworks keep it under NDA"

feipoa wrote on 2024-06-27, 08:24:

The I2C must communicate with the microcontroller at every power cycle. Is this the expected behaviour? If so, how to we make it so that the unit will retain its last programmed values?

"it needs small micro ($0.5-1 whatever) on board to program initial clock values."
or 20 $cents if you are stubborn https://www.instructables.com/DIY-CH32V003-De … nt-Devoard-for/

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 36 of 124, by feipoa

User metadata
Rank l33t++
Rank
l33t++

When I read the previous posts, I didn't interpret "initial" as "do it every power cycle". This restriction may be a show stopper for use in 386 motherboards. It sounds like we'd want the 20 cent CH32V003 placed on the PCB with the SI5351 to avoid this limitation?

Alternately, is there another programmable PLL that can be used for this project with consumer-writeable NVM or with EEPROM?

Looking back at the SI5351, I had thought the Skyworks ClockBuilder software could programme the NVM. Am I mistaken?

Plan your life wisely, you'll be dead before you know it.

Reply 37 of 124, by rasz_pl

User metadata
Rank l33t
Rank
l33t

Initial on every power up 😀 Mybe if you order 10K and sign NDA Skyworks will let you program NVRAM inside SI5351
You can use any microcontroller, but since you already have arduino and tinkered with it at least a bit something like ATTiny85 is small, has internal 512 eeprom and enough pins for rotary encoder and OLED LCD like here https://www.zl2pd.com/tiny85_si5351_VFO.html https://oshwlab.com/wagiminator/attiny85-tinyfmradio https://www.instructables.com/USB-Volume-Knob … Rotary-Encoder/ $2 Digispark board is a good start and small enough
or you can use $2 Arduino NANO board if you dont want to mess with attiny (nano has more ram flash eeprom pins etc), might be small enough to somehow fit on top of clock module

https://github.com/raszpl/FIC-486-GAC-2-Cache-Module for AT&T Globalyst
https://github.com/raszpl/386RC-16 memory board
https://github.com/raszpl/440BX Reference Design adapted to Kicad
https://github.com/raszpl/Zenith_ZBIOS MFM-300 Monitor

Reply 38 of 124, by BitWrangler

User metadata
Rank l33t++
Rank
l33t++

Any chance an I2C EEPROM could just splurt the code at it? They're like 6 pin or 8 pin tiny little buggers.

Unicorn herding operations are proceeding, but all the totes of hens teeth and barrels of rocking horse poop give them plenty of hiding spots.