aboutsummaryrefslogtreecommitdiffstats
path: root/icepll
diff options
context:
space:
mode:
authorC-Elegans <mtnolan2640@gmail.com>2017-06-24 16:13:16 -0400
committerC-Elegans <mtnolan2640@gmail.com>2017-06-24 16:30:10 -0400
commit7201da8cfd7cc9d75f76656381299db4adcc040e (patch)
tree8509e1360f5aceed085da4f24c430071e789029e /icepll
parent8611d612d4c40035e377ae9d3417fbd233edb61d (diff)
downloadicestorm-7201da8cfd7cc9d75f76656381299db4adcc040e.tar.gz
icestorm-7201da8cfd7cc9d75f76656381299db4adcc040e.tar.bz2
icestorm-7201da8cfd7cc9d75f76656381299db4adcc040e.zip
Update PLL DIVF range to be [0,127]
As discussed in issue #83, the range of the DIVF parameter in the iCE40 PLL Usage Guide is incorrectly listed as being 0-63, when it should actually be 0-127 when used in the SIMPLE feedback mode. This however does apply in other feedback modes, where the DIVF range should still be restricted to 0-63
Diffstat (limited to 'icepll')
-rw-r--r--icepll/icepll.cc11
1 files changed, 10 insertions, 1 deletions
diff --git a/icepll/icepll.cc b/icepll/icepll.cc
index c9b1a45..744b9b1 100644
--- a/icepll/icepll.cc
+++ b/icepll/icepll.cc
@@ -108,6 +108,15 @@ int main(int argc, char **argv)
int best_divf = 0;
int best_divq = 0;
+ //The documentation in the iCE40 PLL Usage Guide incorrectly lists the
+ //maximum value of DIVF as 63, when it is only limited to 63 when using
+ //feedback modes other that SIMPLE.
+ int divf_max = 63;
+ if(simple_feedback)
+ {
+ divf_max = 127;
+ }
+
if (f_pllin < 10 || f_pllin > 133) {
fprintf(stderr, "Error: PLL input frequency %.3f MHz is outside range 10 MHz - 133 MHz!\n", f_pllin);
exit(1);
@@ -123,7 +132,7 @@ int main(int argc, char **argv)
double f_pfd = f_pllin / (divr + 1);
if (f_pfd < 10 || f_pfd > 133) continue;
- for (int divf = 0; divf <= 63; divf++)
+ for (int divf = 0; divf <= divf_max; divf++)
{
if (simple_feedback)
{