On Sat, Aug 14, 2010 at 09:37:50PM +0200, Bertrik Sikken wrote:
> Hi all,
> 
> The AMSv2 players currently play back audio with quite a big pitch
> and speed error. They play about 1.1% too "flat" and slow. This is
> big enough for quite a few people to notice it, see for example the
> anythingbutipod and head-fi forums.
> 
> This playback error is the result of how the playback PCM clocks are
> currently derived: they are derived from the main CPU clock at 240 MHz
> as follows
> Fpcm = Fcpu / (128 * divider), where we can control the divider.
> It turns out that the divider would need to be 42.52 for 44100 Hz
> playback. We round this up to 43, giving a rounding error in PCM
> frequency of 1.1%.
> 
> There are several solutions for this:
> 1) change the main clock to a different frequency like 248 MHz
>    (just like on AMSv1) this would give an error of just 0.15%.
>    We tried this but it gave problems with other peripherals no
>    longer working reliably (micro-SD).
> 2) use the second PLL (PLL B) available in the SoC (which is
>    currently unused) to generate a different frequency which gives
>    a more accurate playback rate.
> 
> I propose to implement solution 2, see also
> http://www.rockbox.org/tracker/task/10906
>

I second this. We have a few other timing issues with certain targets
(ie, USB) that would be greatly helped by using the PLL - and would
also let us remove some of the idle loops (which are a huge PITA to
maintain across different compilers and optimization flags) with proper
timers.

Andrew

 

Reply via email to