IMPLEMENTED SO FAR

- Support for 4x20 LCD Display and large number display
- Brightness and contrast adjustment with remote
- (OPUS/Wolfson WM8741) DAC volume control: remote and rotary encoder
- (OPUS/Wolfson WM8741) DAC random filter selection 1 to 5 with remote
- (OPUS/Wolfson WM8741) DAC upsampling selection (L, M, H -this is the OSR setting)
- I2C level shifting (5V to 3.3V)
- Optimized power-up sequence

Thursday, November 19, 2009

OSR bits in WM8741


According to a Wolfson Engineer,
OSR, it's the DAC-to-input-rate-ratio. We want that to be high to have the DAC run fast, but not too fast to introduce timing related mayhem. You can't set this ratio directly but only indirectly through R7.

When you set low rate what you tell the DSP is high OSR. It means we use the maximum amount of upsampling since we know the input rate is low enough such that the resulting DAC frequency lies in the sweet spot of performance: high to run the sigma/delta with loads of headroom, not too high so as to introduce analogue problems.

For medium and high rates, the actual upsampling ratio reduces such that with the higher input rates we end up with the same actual DAC frequency.
Thus the OSR bits in the DAC controls the Internal upsampling of the DAC.
  • Low rate means "apply highest internal upsampling"
  • Medium rate means "apply medium internal upsampling"
  • High rate means "do not apply any internal upsampling"
You can test this out with the following:
  • If you input sample frequency to the DAC is 44.1 KHz, you can select any one of the 3 settings. With Low Rate, maximum internal upsampling is applied, with High Rate, no internal upsampling will be applied.
  • If your input sample frequency to the DAC is 192 KHz, then you can only select High Rate, meaning that no internal upsampling can be applied because the input data is at high rate or has been upsampled outside of the DAC

4 comments:

Daniel said...

Very interesting! I am implementing the arduino into my Opus setup much the same way you have done. You and your blog has been very helpful.

Anonymous said...

Daniel,

Thanks. Please share your implementation, and let me know of any improvements you make...

Daniel said...

Yes of course. I'll get back to you when i'm ready.

Ronnie said...

What an interesting blog.

I am curious if it is possible to set the SRC to "unused"
with your software as listed above.