'Chibi' phase inverting mod.

Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.
Re: Re: Re: The little glue loggic is a problem for Jitter, ..

jbokelman said:
rfbrw, a serial adder won’t work for digital audio. With 16-bit samples, the largest negative value is –32768. The twos-complement, +32768, cannot be represented in 16 bits. In fact, the twos-complement of –32768, as represented in 16 bits, is –32768. To correct this anomaly, every sample that equals –32768 after the addition must be changed to +32767.

I am aware of the imbalance between the number of negative and positive values and that can be addressed in the serial domain.
 
Bricolo said:
jbokelman, add a DC offset to an AC signal

then, measure the distortion of this signal, after a (perfect) coupling cap
the distortion is zero

that's the same here

your math is wrong, you are reasoning in a/b instead of a-b

You need to study your number formats in order to appreciate what's going on here. Two's comp inversion requires the addition of the value one. Its fundamental to the working of this number format. If you do not add the one, you are one bit off compared to the original.
 
Maybe this is the soloution:

1.) one DAC with normal data
2.) 2nd DAC with inverted data-signal in I2S
3.) a Resistor that adds (nearly) the Current of 1 LSB to the output of the 2nd DAC ...
3b.) Instead of the Resistor you could add a 3rd DAC that outputs permanently +1LSB :)

Or:
You are building caps in the signalpath ...
(The 1LSB is DC ...)


CYa

Jobstens
 
CLARIFICATION

Going back to the 4-bit DAC example: With the sample sequence 2, 4, the output of the DAC will double from one sample to the next. The amount of change for that sample period is 6dB. The inverted samples are -3, -5. The output of the inverted DAC, for the same sample period, will change in the proportion 3:5 or 4.4dB. A signal that changes 4.4dB between two specific points in time is not the same shape as a signal that changes 6dB between the same two points. That difference is distortion.

You can figure out what happens with the sample sequence -2, -4.

Adding a bit to each sample in the digital domain results in distortion and I don’t think that distortion can be removed by adding a DC offset in the analog domain. Note: I make a distinction between adding a DC offset, after the fact, that is, after I/V conversion, verses biasing the DAC, which in effect, adds a 1-bit offset at the point of conversion, which is, arguably, still in the digital domain.

The point is, DAC designers, who simply invert the data stream to get an inverted output, rarely, if ever, bias the DAC so that a -1 digital input results in 0 analog output. As a consequence, their DACs have 6dB of additional distortion. Either they don’t know about it and don’t hear it or they know about it and don’t care.
 
Originally posted by Calimero
So what will result in more distortion the glue-logic or the inversion?

Inversion. The logic that performs the twos-complement works on all 16 data bits in parallel and has no influence on the clocks that control the DAC.

Originally posted by rfbrw I am aware of the imbalance between the number of negative and positive values and that can be addressed in the serial domain.

How does the serial inverter/adder know, at the moment it sees the LSB, what the following bits will be so, if necessary, the invert/adder can replace the maximum negative integer with the maximum positive integer?
 
this is done by DENON DAP-5500. They know what they do ...

Regards

Jobstens
 

Attachments

  • dap-5500.jpg
    dap-5500.jpg
    95 KB · Views: 316
Re: CLARIFICATION

jbokelman said:
Going back to the 4-bit DAC example: With the sample sequence 2, 4, the output of the DAC will double from one sample to the next. The amount of change for that sample period is 6dB. The inverted samples are -3, -5. The output of the inverted DAC, for the same sample period, will change in the proportion 3:5 or 4.4dB. A signal that changes 4.4dB between two specific points in time is not the same shape as a signal that changes 6dB between the same two points. That difference is distortion.

One more (last?) try: 2-4: output is doubled, inverted samples are
-3 and -5. That output is doubled if you use -1 as reference:
-3 - -1 = -2
-5 - -1 = -4

Just try to picture it: normal DAC outputs a sinewave.
inverted DAC outputs the same sinewave, but the whole thing moved down 'one' LSB (mA,volt,whatever) on the Y axis (and the sine is inverted).

It is still a perfect sinewave...
 
jobstens said:
Maybe this is the soloution:

1.) one DAC with normal data
2.) 2nd DAC with inverted data-signal in I2S
3.) a Resistor that adds (nearly) the Current of 1 LSB to the output of the 2nd DAC ...
3b.) Instead of the Resistor you could add a 3rd DAC that outputs permanently +1LSB :)

Or:
You are building caps in the signalpath ...
(The 1LSB is DC ...)


CYa

Jobstens


Re Point 2. Where does the inverted data come from?
 
jbokelman said:

How does the serial inverter/adder know, at the moment it sees the LSB, what the following bits will be so, if necessary, the invert/adder can replace the maximum negative integer with the maximum positive integer?


The basic circuit is an inverter followed by a two-input serial adder with one input tied high. A loadable,bidirectional,parallel in,serial in,serial out shift register does the bit reversal.The D inputs on the shift register are tied to the max positive value. The Load input is asserted by a circuit that detects the max negative value.
 
Originally posted by guido
One more (last?) try: 2-4: output is doubled, inverted samples are
-3 and -5. That output is doubled if you use -1 as reference:
-3 - -1 = -2
-5 - -1 = -4

Just try to picture it: normal DAC outputs a sinewave.
inverted DAC outputs the same sinewave, but the whole thing moved down 'one' LSB (mA,volt,whatever) on the Y axis (and the sine is inverted).

It is still a perfect sinewave...

All commercial DAC chips use ZERO as a reference. That’s what allows them to work properly with non-inverted data. If a DAC receiving inverted data is biased to a -1 reference, the output is not moved up or down by 1-bit as you claim. Except for being inverted, the output will appear normal in every way.

To invert the output of an audio DAC, you have several choices and they all involve creating a twos-complement of the original data.

1) Rip the music to a wave file. Replace every sample in the file with twos-complement data. Burn the modified file to a CD and play it.

2) In the DAC, add a parallel-out shift register and latch to capture each sample. Convert the sample to two-complement form. Use a parallel-in shift register transfer the data to the DAC chip.

3) In the DAC, invert the data stream (ones-complement). Bias the DAC chip so that a -1 digital input produces a 0 analog output.

Note: In applications using fixed-length binary data, the twos-complement of the maximum negative integer is still negative, not positive, and has to be dealt with as a special case. When carrying out choices 1 or 2, you have to recognize samples that contain the maximum negative integer and replace them with the maximum positive integer.
 
Re: Re: CLARIFICATION

guido said:


One more (last?) try: 2-4: output is doubled, inverted samples are
-3 and -5. That output is doubled if you use -1 as reference:
-3 - -1 = -2
-5 - -1 = -4

Just try to picture it: normal DAC outputs a sinewave.
inverted DAC outputs the same sinewave, but the whole thing moved down 'one' LSB (mA,volt,whatever) on the Y axis (and the sine is inverted).

It is still a perfect sinewave...


This is pure Alice in Wonderland logic. You can't just move the reference point till it all adds up. Bipolar zero in a binary two's comp dac is fixed.
 
Originally posted by rfbrw The basic circuit is an inverter followed by a two-input serial adder with one input tied high. A loadable,bidirectional,parallel in,serial in,serial out shift register does the bit reversal.The D inputs on the shift register are tied to the max positive value. The Load input is asserted by a circuit that detects the max negative value.

If the serial adder has one input tied high, it will add one to every bit. That’s not right. You add one to the LSB, only, and add the carry to the following bit. And what’s the advantage of the serial circuit? It seems you still need to hold the entire sample in a register so you can compare it to the maximum negative integer, replace it if necessary, and then shift the data out backwards into the DAC. Using a bi-directional shift register is cute but it makes the circuit difficult to pipe-line.

If you work at it, you might be able to come up with a usable circuit. I prefer the parallel approach: End of discussion.
 
Status
This old topic is closed. If you want to reopen this topic, contact a moderator using the "Report Post" button.