Analog Delta-Sigma interpolation DAC

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Here the Impulse Resonse additional to the above simulation showing all the filter coefficients.
At the right side the Frequency response of this Brick Wall Filter with the Sinc that belongs to 2Fs.

Hans
.
 

Attachments

  • Brick Wall.jpg
    Brick Wall.jpg
    360.7 KB · Views: 94
Why do you get a sinc that belongs to 2Fs when you have two DACs running on 1Fs? Or is this about normal oversampling rather than the post #258 thing?

Marcel, when you take a look at the .asc file that Hayk made available, there is in fact only one Dac, equipped with a multiplexer in front that is switching at 2Fs between the (delayed) direct samples taken at Fs and the midway samples from the convolution filter also working at Fs.

When sending an impulse through this chain, because of the multiplexer it looks as if all data goes through the filter with 2Fs, with data stuffed with a zero after each sample and a filter made twice a long with additional zero's.
This could very well have been the case, but here it is absolutely not what was done. The result however would have been the same.
So the multiplexer is doing a perfect job and is the only component working at 2Fs.

Hans
 
SAA7220 Datasheet(PDF) - NXP Semiconductors

If you want only two times oversampling, you can decimate its output (throw away every other sample).

I don't know if any of its polyphase decompositions consists of a series of zeros, a 1 and another series of zeros, as would be needed to meet your requirement of sample sacredness. More recent chips often use half-band filters, those should meet it.
 
Disabled Account
Joined 2015
Increasing the midpoint gain by 15%, I get minimum image at -36db and -1db for 20khz.
min by midx1.15.JPG
SAA7220 looks to be low pass filter rather than interpolator. I don't see how I can make it produce only the midpoints to multiplex with the sacred samples to be left untouched.
The interpolator it contains is used to replace defective samples by linear interpolation before it passes low pass filters to have the image eliminated. Mine has no any filtering just interleaving the sacred samples by sinc/Hamming interpolated mid levels. I don't see any resemblance.
 
Last edited:
Hayk,
You still don’t seem to understand the whole picture.
Your halve band filter is just a smart execution of zero stuffing and processing with a filter twice as long filled with alternative n/2 zeros exept a 1 in the middle.

You can’t increase the gain of the midband filter, that ruins the whole interpolation.
How do you make your FFT’s, they are wrong.
You should use the .asc file I sent in #320.
Yours had several failures that I corrected for you.

And let Marcel respond to the SAA, because here you are also not in the right track.

Hans
 
Disabled Account
Joined 2015
Hayk,
You still don’t seem to understand the whole picture.
Your halve band filter is just a smart execution of zero stuffing and processing with a filter twice as long filled with alternative n/2 zeros exept a 1 in the middle.

You can’t increase the gain of the midband filter, that ruins the whole interpolation.
How do you make your FFT’s, they are wrong.
You should use the .asc file I sent in #320.
Yours had several failures that I corrected for you.

And let Marcel respond to the SAA, because here you are also not in the right track.

Hans
I don't see what is modified in your asc file. I don't see neither any stuffing of 1's instead of zero's as you do, I don't see neither any filtering I am doing to be associated with low pass filtering. All I am doing is sinc interpolation to harvest mid sample values and merge to the original. My approach is in time domain, low pass filtering is in frequency domain.
 
I don't see what is modified in your asc file.
I only corrected a few small things in YOUR model, and see the difference in the images below the original version in red and the corrected one in blue.
Impulse response plus FR of yours, versus the same for the corrected one.
It's all in the .asc version in #320.

Hans
.
 

Attachments

  • Hans.jpg
    Hans.jpg
    328 KB · Views: 87
  • Hayk.jpg
    Hayk.jpg
    331.8 KB · Views: 88
Marcel,
It’s nice to see how inventive they where with restricted amount of rom and ram.
But just one half band filter such as Hayk used restricts flexibilty of the filter choice, doesn’t it?

Hans

True, but Hayk already restricted that when he came up with a requirement he calls sample sacredness. If I understand his requirement well, he wants one of the polyphase decompositions to produce the original sample values, which implies that the impulse response of one of the polyphase decompositions has to consist of a bunch of zeros with a single 1.
 
I don't see neither any filtering I am doing to be associated with low pass filtering. All I am doing is sinc interpolation to harvest mid sample values and merge to the original. My approach is in time domain, low pass filtering is in frequency domain.

Convolution in the time domain = multiplication in the frequency domain

Convolution with a sinc in the time domain = multiplication with a rectangular function in the frequency domain, also known as ideal low-pass filtering
 
I don't see neither any stuffing of 1's instead of zero's as you do, I don't see neither any filtering I am doing to be associated with low pass filtering. All I am doing is sinc interpolation to harvest mid sample values and merge to the original. My approach is in time domain, low pass filtering is in frequency domain.
I did not do any zero stuffing, all I say that it is effectively a smart execution of zero stuffing.

1) Look at the example below where samples ABCDEFG are coming in.
With zero stuffung they become 0A0B0C0D0E0F0G0
When having a filter with Q0R0S1T0U0V coefficient, output becomes :

Out1=A*Q+0*0+B*R+0*0+C*S+0*1+D*T+0*0+E*U+0*0+F*V or
Out1= A*Q+B*R+C*S+D*T+E*U+F*V

After one shift we get output2 from the filter:

Out2=0*Q+A*0+0*R+B*0+0*S+C*1+0*T+D*0+0*U+E*0+0*V or
Out2 =C

So halve samples can be processed with coefficients QRTUV without zero stuffing and be multiplexed with the original samples.
That's how your algorithm goes, for the full 100% equal to zero stuffing while using a filter twice as long with many zero's and a 1 in the middle.

That's what makes this trick possible because you happen to use a filter with all those alternative zero's and one 1.
Take another filter that does not have all these alternative zero's and you will need two parallel filters instead of one, both still working at Fs followed by the same multiplexing at 2Fs.

2) As a matter of fact, convolution in the time domain is the same as filtering in the frequency domain.

Hans

P.S. I see that Marcel already answered some of it.
 
Last edited:
Disabled Account
Joined 2015
I only corrected a few small things in YOUR model, and see the difference in the images below the original version in red and the corrected one in blue.
Impulse response plus FR of yours, versus the same for the corrected one.
It's all in the .asc version in #320.

Hans
.
probably you posted mine in 320. Poste again please yours. This what I see on post 320.
mine.JPG
 
Disabled Account
Joined 2015
I don't understand why you delay the original samples by 15.5 samples and why the clock ck is reversed by delaying 11us. All I see from the FFT the OS to be this.
yours.JPG
Are you sure mine was wrong? I make the OS to be first the 16th on the positive, as the sampler acts on the rise, and switch to the midpoint on the negative.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.