si-clock: An interface to the Silicon Labs Si5351 clock chip

[ bsd3, ham, hardware, i2c, library, radio, sdr, si5351 ] [ Propose Tags ]

An experimental interface to the Silicon Labs I2C-programmable any-frequency CMOS clock generator and VCXO. (tested with the Si5351 cip).


[Skip to Readme]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0, 0.1.1, 0.1.3, 0.1.3.1
Dependencies base (<4.11), bytestring, hsI2C (>=0.1.3 && <0.1.4), time, transformers [details]
License BSD-3-Clause
Author Marc.Fontaine@gmx.de
Maintainer Marc.Fontaine@gmx.de
Category HAM, Radio, Si5351, SDR, I2C, Hardware
Source repo head: git clone git://github.com/MarcFontaine/si-clock
Uploaded by MarcFontaine at 2017-11-03T12:54:26Z
Distributions
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 2588 total (12 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-11-03 [all 1 reports]

Readme for si-clock-0.1.3.1

[back to package description]

An interface to the Silicon Labs Si5351 clock chip

Si5351 Board

The Si5351 is Silicon Labs I2C-programmable any-frequency CMOS clock generator and VCXO. It can generate any frequency from ca 8kHz to 160MHz. The Si5351 uses a programmable rational clock divider.

Why yet an other SI5351 library ?

First of all it is hackable in Haskell. And second, almost all of the other open source Si5351 libraries use a fixed denominator for the clock divider. In other words, 20 of the 58 bits, that set the clock divider, are hard-coded in library. As the IC always uses a combination of two rational divider stages, a total of 2*20 bits = 40 bits, that the carefully designed hardware provides, are lost by the software design. That means "40 bits less resolution and more jitter".

Instead of a fixed denominator, this library uses continued fractions to compute the (theoretically best) numerator-denominator pair for the clock divider. (TO DO investigate if this makes any difference in practice.)

Examples

The library contains examples for:

  • Frequency synthesis
  • Hopping frequencies
  • CW generation (Morse code)
  • Transmitting JT65
  • RTTY / FSK

Haddock documentation