Author Topic: iCE40 PLL filter_range parameter  (Read 2757 times)

0 Members and 1 Guest are viewing this topic.

Offline H3ndrik-JanTopic starter

  • Newbie
  • Posts: 2
  • Country: nl
iCE40 PLL filter_range parameter
« on: December 03, 2021, 08:14:02 pm »
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
 

Offline SiliconWizard

  • Super Contributor
  • ***
  • Posts: 14464
  • Country: fr
Re: iCE40 PLL filter_range parameter
« Reply #1 on: December 04, 2021, 02:56:40 am »
Project icestorm has a tool that can compute PLL parameters.

From its source code, you can figure out how to: https://github.com/YosysHQ/icestorm/blob/master/icepll/icepll.cc
See line 'int filter_range = ...'
it just depends on the PFD parameter.

Where they got this information from, I don't know. I suspect they reverse-engineered it using Lattice tools.
 
The following users thanked this post: H3ndrik-Jan

Offline sicco

  • Regular Contributor
  • *
  • Posts: 167
  • Country: nl
Re: iCE40 PLL filter_range parameter
« Reply #2 on: December 06, 2021, 01:58:40 pm »
I also had struggles with Lattice ICE40UP5K PLL. Documentation (datasheets) for this chip have many errors. On the filter range question I don't have an answer. But sharing what I think is wrong in the block diagrams and the text in the Lattice documents. 
 
The following users thanked this post: H3ndrik-Jan

Offline mon2

  • Frequent Contributor
  • **
  • Posts: 463
  • Country: ca
Re: iCE40 PLL filter_range parameter
« Reply #3 on: December 07, 2021, 07:15:39 pm »
You may have better luck in hunting down the original docs from Silicon Blue on this topic. It was Silicon Blue that created the ICE40 IP and was then aqcquired by Lattice.
 

Offline H3ndrik-JanTopic starter

  • Newbie
  • Posts: 2
  • Country: nl
Re: iCE40 PLL filter_range parameter
« Reply #4 on: December 08, 2021, 05:19:35 pm »
Thanks all for the helpful responses! As for determining the filter range, I think I can indeed use the 'table' from icepll. Also thanks for the corrected block diagram!
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf