Hi there
I succeeded in MSB adjustment of PCM58P with pretty good results.
Now I would like to go further and adjust bit2, bit3 & bit4 too.
I'm not very smart with digital audio and i'm not sure how to proceed.
Should I adjust each bit alone with the others disconnected.
Should I begin with bit4, then bit3...MSB ?
Reverse order ?
I succeeded in MSB adjustment of PCM58P with pretty good results.
Now I would like to go further and adjust bit2, bit3 & bit4 too.
I'm not very smart with digital audio and i'm not sure how to proceed.
Should I adjust each bit alone with the others disconnected.
Should I begin with bit4, then bit3...MSB ?
Reverse order ?
Attachments
This tool should help:
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd.html
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd.html
I just don't see the link with my problem.
I explain myself.
In order to make the adjustment, I burned a CD with 3 minutes of 1KHz sinewave -30dB and put it into a CD player connected at the input jack of a PC sound card.
Then I used DSSF3 THD analyser (1KHz reference) to adjust MSB pin of PCM58P and get the lowest THD.
It worked great, the result on my HIFI system is now amazing.
Now I just want to adjust the 3 other pins, bit2, bit3 & bit3, trying to get a little more linearity.
That's the problem.
I explain myself.
In order to make the adjustment, I burned a CD with 3 minutes of 1KHz sinewave -30dB and put it into a CD player connected at the input jack of a PC sound card.
Then I used DSSF3 THD analyser (1KHz reference) to adjust MSB pin of PCM58P and get the lowest THD.
It worked great, the result on my HIFI system is now amazing.
Now I just want to adjust the 3 other pins, bit2, bit3 & bit3, trying to get a little more linearity.
That's the problem.
I understand your problem. MSB adjustment will linearize at zero crossing. B2 adjustment will linearize at 1/2 full scale. B3 will linearize at 1/4 and 3/4 full scale, and so on. So you need a full scale dithered 1kHz test signal and an FFT analyzer. Adjust MSB then B2 then B3 then B4 for minimum spurious harmonics.
My linearity test CD method is a visual alternative, but one needs a measuring amplifier and an oscilloscope. Either method gives the same optimum.
My linearity test CD method is a visual alternative, but one needs a measuring amplifier and an oscilloscope. Either method gives the same optimum.
OK, whatever I get some questions, I like to fully understand things.
1) What does mean "will linearize at zero crossing. B2 adjustment will linearize..."
2) "3/4 full scale" you write, isn't rather "1/8 full scale" ?
3) "full scale dithered 1kHz test signal" : I found "http://www.wavecor.co.uk/testdisk.htmlfoundhttp://www.wavecor.co.uk/testdisk.html”
Is it OK ? Otherwise, where may I found such a signal ?
4) Why a FFT analyzer, not a DHT ?
5) Lastly, when adjusting one pin, does the 3 others need to be disconnected ?
1) What does mean "will linearize at zero crossing. B2 adjustment will linearize..."
2) "3/4 full scale" you write, isn't rather "1/8 full scale" ?
3) "full scale dithered 1kHz test signal" : I found "http://www.wavecor.co.uk/testdisk.htmlfoundhttp://www.wavecor.co.uk/testdisk.html”
Is it OK ? Otherwise, where may I found such a signal ?
4) Why a FFT analyzer, not a DHT ?
5) Lastly, when adjusting one pin, does the 3 others need to be disconnected ?
I understand your problem. MSB adjustment will linearize at zero crossing. B2 adjustment will linearize at 1/2 full scale. B3 will linearize at 1/4 and 3/4 full scale, and so on. So you need a full scale dithered 1kHz test signal and an FFT analyzer. Adjust MSB then B2 then B3 then B4 for minimum spurious harmonics.
My linearity test CD method is a visual alternative, but one needs a measuring amplifier and an oscilloscope. Either method gives the same optimum.
http://tube.fw.hu/lintest.zip no longer exists.
Do you know where I can find these files now ?
The site closed, but I uploaded the tracks here:
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd-5.html#post3029143
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd-5.html#post3029145
You have to write them onto an audio CD.
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd-5.html#post3029143
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd-5.html#post3029145
You have to write them onto an audio CD.
The site closed, but I uploaded the tracks here:
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd-5.html#post3029143
http://www.diyaudio.com/forums/digital-source/113620-dac-linearity-test-cd-5.html#post3029145
You have to write them onto an audio CD.
Nice, thank's
AD1856 MSB Adjust
Hi All,
It's been a while since I posted- now working on a new DAC project.
I am using AD1856, but for similarities exist with AD1865 (better known) with MSB adjustment.
Some time ago I read about a 'simple' method to trim MSB. An active filter rig was constructed (4th order) at 10kHZ and the signal amplified.
Apparently any distortion could be seen as crossover distortion and adjustment made accordingly to trim out.
Does anyone know any more about this technique?
Hi All,
It's been a while since I posted- now working on a new DAC project.
I am using AD1856, but for similarities exist with AD1865 (better known) with MSB adjustment.
Some time ago I read about a 'simple' method to trim MSB. An active filter rig was constructed (4th order) at 10kHZ and the signal amplified.
Apparently any distortion could be seen as crossover distortion and adjustment made accordingly to trim out.
Does anyone know any more about this technique?
Hi,
I'm also interested in this topic. Here is what I found on PCM61P datasheet.
"After allowing ample warm-up time (5-10 minutes) to assure
stable operation of the PCM61P, select input code 3FFFF
hexadecimal (all bits on except the MSB). Measure the output
voltage using a 6-1/2 digit voltmeter and record it. Change the
digital input code to 00000 hexadecimal (all bits off except the
MSB). Adjust the 100kW potentiometer to make the output
read 22.9uV more than the voltage reading of the previous
code (a 1LSB step = 22.9uV)."
Now, my question is how to generate the 18bit 1LSB signal? I used Audacity to generate test waveform, but its amplitude is on 0~1 scale.
Poting
I'm also interested in this topic. Here is what I found on PCM61P datasheet.
"After allowing ample warm-up time (5-10 minutes) to assure
stable operation of the PCM61P, select input code 3FFFF
hexadecimal (all bits on except the MSB). Measure the output
voltage using a 6-1/2 digit voltmeter and record it. Change the
digital input code to 00000 hexadecimal (all bits off except the
MSB). Adjust the 100kW potentiometer to make the output
read 22.9uV more than the voltage reading of the previous
code (a 1LSB step = 22.9uV)."
Now, my question is how to generate the 18bit 1LSB signal? I used Audacity to generate test waveform, but its amplitude is on 0~1 scale.
Poting
Last edited:
Canvas,
Your posting has given me inspiration in relation to my own DAC - the AD1856. This approach may be applicable to your own application.
First I would like to clarify my understanding of what MSB actually means. Feel free to comment.
For a 16 bit DAC there are 2^16 possible levels= 65536
This gives 32768 +ve levels and 32768 -ve levels.
A binary 32767 would represent the lowest possible -ve level.
A binary 32768 would represent zero output (if no DC offset were present)
A binary 32769 would represent the lowest possible +ve level.
Am I right so far?
I have a cunning plan!
Your posting has given me inspiration in relation to my own DAC - the AD1856. This approach may be applicable to your own application.
First I would like to clarify my understanding of what MSB actually means. Feel free to comment.
For a 16 bit DAC there are 2^16 possible levels= 65536
This gives 32768 +ve levels and 32768 -ve levels.
A binary 32767 would represent the lowest possible -ve level.
A binary 32768 would represent zero output (if no DC offset were present)
A binary 32769 would represent the lowest possible +ve level.
Am I right so far?
I have a cunning plan!
Last edited:
Canvas,
Your posting has given me inspiration in relation to my own DAC - the AD1856. This approach may be applicable to your own application.
First I would like to clarify my understanding of what MSB actually means. Feel free to comment.
For a 16 bit DAC there are 2^16 possible levels= 65536
This gives 32768 +ve levels and 32768 -ve levels.
A binary 32767 would represent the lowest possible -ve level.
A binary 32768 would represent zero output (if no DC offset were present)
A binary 32769 would represent the lowest possible +ve level.
Am I right so far?
I have a cunning plan!
Hi,
I'm no expert here. I try to rewrite the values from datasheet. It's in 2's complement fashion which is also used on computers.
PCM61P 18bit DAC
2^18=262144
262144/2=131072
Deciaml Hex Binary
131071 1FFFF 0111111111111111111 +FS
0 00000 000000000000000000 BPZ
-1 3FFFF 111111111111111111 BPZ-1LSB
-131072 20000 100000000000000000 -FS
Last edited:
Static MSB measurement without 6.5 digit precision multimeter?
Thank you canvas,
I believe much of the information from the datasheet is also applicable to the AD1856. In particular I hadn't realised that 0V is represented by 0000....0000.
MSB + 1 = 0000....0001 and MSB -1 = 1111....1111. I now understand more fully the I2S data code representation of an analogue signal.
Now.... 6.5 precision voltmeter is quite a high end piece of kit...
Could I amplify the signal with an opamp (x1000 gain?) and measure with a "standard" multimeter?
1) Measure the voltage at 0000...0000 (MSB) - will include amplification of DC offset.
(for arguments sake the amplified value will be some arbitrary reading because of amplified offset)
2) Measure the voltage at 0000.0001 (MSB +1)
3) Measure the voltage at 1111.1111 (MSB -1)
4) Calculate the difference from the 0000.0000 in each case
5) Adjust until each difference is equivalent.
Your thoughts?
Thank you canvas,
I believe much of the information from the datasheet is also applicable to the AD1856. In particular I hadn't realised that 0V is represented by 0000....0000.
MSB + 1 = 0000....0001 and MSB -1 = 1111....1111. I now understand more fully the I2S data code representation of an analogue signal.
Now.... 6.5 precision voltmeter is quite a high end piece of kit...
Could I amplify the signal with an opamp (x1000 gain?) and measure with a "standard" multimeter?
1) Measure the voltage at 0000...0000 (MSB) - will include amplification of DC offset.
(for arguments sake the amplified value will be some arbitrary reading because of amplified offset)
2) Measure the voltage at 0000.0001 (MSB +1)
3) Measure the voltage at 1111.1111 (MSB -1)
4) Calculate the difference from the 0000.0000 in each case
5) Adjust until each difference is equivalent.
Your thoughts?
Last edited:
Hi Oli,
I think a DMM is still much affordable than a THD analysis equipment. I got an old HP 5.5 digit DMM which has 100nv resolution under 30mv range. This is perhaps the best for me. You can amplify the signal but my question still remains. How do we generate a LSB signal from the source? My situation is a little bit different than yours. Generating a 18bit LSB (mine is 18bit DAC) wav seems impossible for any software, only 16bit, 24bit or 32bit is accepted. The closest would be generate a 24bit LSB WAV and hoping all "1's" after 18bit will be truncated. BTW, I think the DAC needs to be in NOS fashion or any oversampling technique may change the LSB signal.
I think a DMM is still much affordable than a THD analysis equipment. I got an old HP 5.5 digit DMM which has 100nv resolution under 30mv range. This is perhaps the best for me. You can amplify the signal but my question still remains. How do we generate a LSB signal from the source? My situation is a little bit different than yours. Generating a 18bit LSB (mine is 18bit DAC) wav seems impossible for any software, only 16bit, 24bit or 32bit is accepted. The closest would be generate a 24bit LSB WAV and hoping all "1's" after 18bit will be truncated. BTW, I think the DAC needs to be in NOS fashion or any oversampling technique may change the LSB signal.
Canvas,
I'm going to try out an idea that I have... it should also provide you with a solution and I'll give details. In the meantime
Should (MSB + 1) - MSB = MSB - (MSB - 1) ?
p.s.
algebraically it works!
I'm going to try out an idea that I have... it should also provide you with a solution and I'll give details. In the meantime
Should (MSB + 1) - MSB = MSB - (MSB - 1) ?
p.s.
algebraically it works!
Last edited:
Raspberry PI Python 3 Script for 16 Bit R2R Ladder DAC MSB Adjust
Hello,
This is how I propose to generate signals.....
No test CD required or effort in constructing complicated circuits.... Use a Raspberry PI!
A Python 3 script (zipped)... my first ever Python script (possibly not the most efficient, but functional)
The script shows the necessary connections.
The script can easily be modified to change the desired word (e.g. 18 bit)- or even to allow user input.
16 bit MSB : (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
16 bit MSB + 1 : (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)
16 bit MSB - 1 : (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
I have kept the clock period quite long... using 1 second it is possible to verify the output with some LEDs.
To keep noise to a minimum I would suggest shutting down and disconnecting power before each time a voltage measurement is taken. The program and PI function so that the DAC should retain its DATA.
Of course this is for a 16 bit DAC with unsigned DATA suited to AD1856... you may need to tweak, but hopefully the program is well annotated to help.
Next stage for me... to build a 1000 x voltage gain low noise opamp circuit.
I wonder if there has been any thought about my proposal?
by adjusting an amplified MSB signal should I be able to calibrate such that
voltage (MSB + 1) - voltage (MSB) ....... (1)
=
voltage (MSB) - voltage (MSB - 1) ........ (2)
again, these will not be the actual step voltages; rather an amplified form, including amplified offsets .... in theory if the values (1) and (2) from amplification of DAC voltages are equivalent, then I have achieved calibration?
Enjoy the script!
Hello,
This is how I propose to generate signals.....
No test CD required or effort in constructing complicated circuits.... Use a Raspberry PI!
A Python 3 script (zipped)... my first ever Python script (possibly not the most efficient, but functional)
The script shows the necessary connections.
The script can easily be modified to change the desired word (e.g. 18 bit)- or even to allow user input.
16 bit MSB : (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)
16 bit MSB + 1 : (0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1)
16 bit MSB - 1 : (1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1)
I have kept the clock period quite long... using 1 second it is possible to verify the output with some LEDs.
To keep noise to a minimum I would suggest shutting down and disconnecting power before each time a voltage measurement is taken. The program and PI function so that the DAC should retain its DATA.
Of course this is for a 16 bit DAC with unsigned DATA suited to AD1856... you may need to tweak, but hopefully the program is well annotated to help.
Next stage for me... to build a 1000 x voltage gain low noise opamp circuit.
I wonder if there has been any thought about my proposal?
by adjusting an amplified MSB signal should I be able to calibrate such that
voltage (MSB + 1) - voltage (MSB) ....... (1)
=
voltage (MSB) - voltage (MSB - 1) ........ (2)
again, these will not be the actual step voltages; rather an amplified form, including amplified offsets .... in theory if the values (1) and (2) from amplification of DAC voltages are equivalent, then I have achieved calibration?
Enjoy the script!
Attachments
Last edited:
You need to measure in the uV range, you neead at least a 6 1/2 digit DMM. This is why I recommended a x100 low noise amplifier and an oscilloscope. The digital words could take 3 levels (MSB+1, MSB, MSB-1) and change with a rate that the oscilloscope can trigger on. It is easier to evaluate visually, even in the presence of some noise.
- Status
- Not open for further replies.
- Home
- Source & Line
- Digital Source
- DAC MSB adjustment