The Designer's Guide Community Forum
https://designers-guide.org/forum/YaBB.pl
Design >> Mixed-Signal Design >> How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
https://designers-guide.org/forum/YaBB.pl?num=1266894841

Message started by john_ana on Feb 22nd, 2010, 7:14pm

Title: How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
Post by john_ana on Feb 22nd, 2010, 7:14pm

Hi,

I am using the toolbox from Richard Schreier for a sigma-data ADC.

>> ntf=synthesizeNTF(3,16,1.5,1)

Zero/pole/gain:
    (z-1) (z^2  - 1.977z + 1)
-----------------------------------
(z-0.9942) (z^2  - 1.994z + 0.9942)

>> [a,g,b,c]=realizeNTF(ntf,'CIFF')
realizeNTF Warning: The ntf's zeros have had their real parts set to one.

a =
   0.0116   -0.0229   -0.0003
g =
   0.0230
b =
    1     0     0     1
c =
    1     1     1

However, from the flow-diagram of CIFF structure, it only uses
cascaded 1/(z-1), and there is a feedback from the output of
the third integrator to the input of the second.
This can only achieve z^2-2*z+1+r ,where r is the small feedback
facto.  It has no way to realize the zeros
in z^2-1.977*z+1.

Is something wrong with my understanding?

Title: Re: How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
Post by yvkrishna on Feb 22nd, 2010, 8:52pm

hi john_ana,

I am not sure if you are refering to the flow diagram of the CIFF structure shown in the Toolbox document "DSToolbox.pdf"  page num 35 (ver 7.3)

It clearly has  more than one forward paths with coefficients a1,a2,a3. so there can be zeros.

regards,
yvkrishna

Title: Re: How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
Post by john_ana on Feb 22nd, 2010, 9:32pm

Acutally, I am using
> ntf=synthesizeNTF(3,16,1,1.5)

Zero/pole/gain:
    (z-1) (z^2  - 1.977z + 1)
-----------------------------------
(z-0.6657) (z^2  - 1.524z + 0.6599)

Anyway, there zeros are at
1,  0.9885 + 0.1512i, 0.9885 - 0.1512i

They are all on unit circle.

However, if I use the CIFF stucture, there is no way I can get
complex conjugate zeros on unit circle,

I can only get zeros where z^2-2*z+1+g1=0.

Please see the attached derivation, I asume k1=k2=k3, which
is the case on pp. 22 of Richard's toolbox v7.2 documentation.



Title: Re: How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
Post by yvkrishna on Feb 22nd, 2010, 10:30pm

looks like there is some confusion about  'g1' used.  since -g1 is used in the realisation, it can be assumed to be a positive quantity.

now  z^2-2*z+1+g1=0   can have complx conj  roots  if   (DET<0)  

i.e.,  4-4*(1+g1)  <0       =>       -4*g1 <0  which is true.


regards
yvkrishna

Title: Re: How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
Post by john_ana on Feb 22nd, 2010, 10:50pm

if you use
freqz([ 1 -2 1.023]) which is realizable via CIFF
and compare with
freqz([ 1 -1.977 1]), whose zeros are  on unit circle.

you can tell the frequency response is quite different.
The first reponse has quite less attenduation at desired zero frequency.



Title: Re: How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
Post by Berti on Feb 23rd, 2010, 12:29am

If you use want you zeros being on the unit circle (z-transform), the local feedback loop (g) must have only one delay. If the loop has two delays the zeros lie on a straight line, which results in z^2-2*z+1+g1=0, as you wrote.

However, for moderately large OSR the difference is usually small and people accept that the zeros are not on the unit circle since the circuit implementation is simpler. For low OSRs however, you should probably modify you loop filter in order the keep the zeros on the unit circle.

Regards

Title: Re: How does the CIFF strucutre achieve exact NTF zero locations in sigma-dela ADCs?
Post by john_ana on Feb 23rd, 2010, 1:31am

Hi Berti,

I agree that for high or moderate OSR, the difference is not big. For low OSRs, how do you achieve the desired NTF?

1) use CRFF or CRFB structure, which has a z/(z-1)^2 in their transfer
function. It is easy to realize z^-1/(1-z^-1), how do you realize
1/(1-z^-1). I know some switch-capacitor implementation can
realize z^1/2, is there any other way?

2) use CIFB structure, but you have need extra DACs need to build and
Feed forward structure can achieve lower distortion since it only
process mostly quantization noise only.

3) how do you achieve the NTF in continuous-time Sigma-Delta?
I know you can use d2c with zoh to converter the NTF from Z domain
to S domain and the 'zoh' will take care NRZ dac pulse, however,
usually you get a transfer function H(s) that has poles like
Num(H(s))=s(a*s^2+b*s +c).
However, if you use two 1/s in cascade and feedback from the
output of the second 1/s to the input of the first 1/s, you will get
something like K(s)=(x*s^2+y), unless you feedback from the
output of the second 1/s to the input of 1/s as well.
However, if you look at most published continuous-time sigma-delta,
nobody actually feedback from the output of the second 1/s to the
input of the second 1/s. All of them only feedback from the output
of the second 1/s to the input of first 1/s.



The Designer's Guide Community Forum » Powered by YaBB 2.2.2!
YaBB © 2000-2008. All Rights Reserved.