This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Sigma Delta Converter Bitstream - slyt076

My question arises from trying to understand how the output bitstream of a Sigma Delta converter is generated from a given input code.

A colleague pointed me at slyt076 to try and help me understand, but we both ran in to some confusion over the example given for the 3-bit DAC with a 011 input code provided in Table 1.

Table 2 on the same page makes logical sense to me in terms of how the zero stuffing works and where would be the ideal locations to stuff the zeros for each code.  Essentially the added zeros end up equally spaced, with more zeros present for lower input values.  Great, that makes perfect sense.  The bitstream for a 011 input in Table 2 also conveniently matches the graphical representation for an input of 011 from Figure 2, that is 01001010.  Again, great, that makes sense and matches, and 3 out of 8 high pulses passed through a low pass filter averages out to 3/8 of full scale, awesome.

This brings me back to Table 1, which attempts to show the step by step iteration for each bit of the bitstream output as it is derived from the 011 input.  The only problem is, that even after you throw away the first DAC output value (bit 0) from the initialization iteration, bits 1 through 8 of the DAC output in Table 1 do not match bits 1 through 8 of the DAC output in Table 2 for a 011 input.

Is this a mistake in Table 1?  If it's not a mistake, what am I failing to understand?  If it is a mistake, how should Table 1 look if corrected?

I tried doing the table myself by following the algorithm given in the Figure 3 flow diagram, but I get very incorrect results so I assume I'm going something very wrong.  To be honest, I'm not even completely sure what that diagram means by the "Sigma[N+1:0]" feedback term, but when I look at Table 1, every iteration after the initialization has Sigma equal to the value of Sigma_Out from the previous iteration.

Can anybody understand that mess I just blurted out above and help me out?

  • Hi, Alec,

    Welcome to e2e, and thanks for your interest in our products!

    I suggest you reach out to the authors of that document; their email addresses are on the document.

    -d2
  • Thank you Don. I emailed them but it looks like only Hugo's email is still valid. SLYT076 is 10 years old, so that's understandable. I'll wait a bit and see if Hugo can clear up my confusion.
  • I did hear back from the author of SLYT076, Dr. Hugo Cheung, and he did clear up my confusion.

    He said:

    "Table 1 is showing the expected values of discussion. The Table 1 stream matches with Table2.

    If I repeat t1~t8 of table 1 twice =  00100101-00100101, you would see the value of 3011 as the highlighted results in Table 2. In reality, t1~t8 values repeat in a loop."

    What I failed to understand was that one extra timescale shift required to properly frame eight consecutive bits of the output stream to correlate back to the input value of 3011.  I even threw together a quick spreadsheet to prove to myself that this worked out for all the other 3-bit input values as well.

    /cfs-file/__key/communityserver-discussions-components-files/6/7245.Delta_5F00_Sigma_5F00_DAC_5F00_3bit_5F00_Input.xlsx

    Another way I would state it is that if Table 1 was extended by one more column to include t9 as well, then the DACout values of t2-t9 of Table 1 would correlate to the DACout values t1-t8 of Table 2.

    Being unable to resolve this in my mind was driving me nuts, so I thank Dr. Cheung for taking the time to respond and clear it up for me.