Hello everybody,

I am trying to figure out how to use the PLL on the iCE40, and even bought a board (icesugar v1.5) to play around with. Reading the datasheet, I cannot figure out what the filter_range parameter means. Figure 3.1 in the PLL manual (linked under my post) shows a low-pass filter after the input divider, so I think it probably sets the cutoff frequency of that low-pass filter. Yet I don't know how to decide on the right FILTER_RANGE value. The table on page 11 shows the number is a 3-bit value.

So far I found out the filter_range does matter. For instance, when I configure the PLL for 15MHz output with simple feedback path and 24MHz input (following the provided equation), setting the filter_range variable to 0 results in a 24MHz output, but setting it to 1 gives me 15MHz on the output. The other values give me a very jittery clock-signal on the output, approaching 15MHz.

Can anyone tell me more about this parameter? I'm aware the manual says you should just use their software to determine the right values for the PLL, but I would like to know how to determine/calculate the value myself.

iCE40 PLL manual:

https://www.latticesemi.com/view_document?document_id=47778