"The “level” settings of the digital generator is expressed in dBFS - "decibels from Full Scale". 0 dBFS means that the signal is generated at full amplitude, where all the bits - here 24 - are needed to encode the signal peaks.
Each times you removes 6dB from this dBFS value, you divide the amplitude of the generated signal by a factor two, and you remove one bit from the numbers of bits needed to represent the peaks of the signal.
I think you are confusing bits
needed with bits set/unset. With lower amplitudes the top bits are unset (ignoring two's complement for now) but they are still needed.
For example, -6 dBFS means that the signal is generated at half the full amplitude, where the most significant bit is not used.
-18 dBFS means that the signal is generated at 1/8th of the full amplitude, where 21 bits are needed to encode the signal peaks.
A signal can be represented by N bits. Full amplitude is represented by all bits set (ignoring two's complement for now) but how many bits you
need depends on the lowest level that you want to be able to represent.
If you want to represent 1/256 amplitude, you need 8 bits:
- the full amplitude is represented as swinging -128:127
- the 1/256 amplitude is represented as swinging -1:1
But wait, you say, "1" is only 1/127 of "127". Yes, but think of it like this: the 1/256 amplitude signal was swinging -0.5:0.5 and was rounded (quantized) to -1:1. Anything lower than 1/256 would be rounded to 0. In other words it wouldn't be captured. So the 1/256 amplitude is in fact the smallest signal that can be captured by 8 bits. It will have tons of distortion, sure, but it
is captured.
Moving on, if you want to represent 1/65536 amplitude, you need 16 bits:
- the full amplitude is represented as swinging -32768:32767
- the 1/65536 amplitude is represented as swinging -1:1
The lower the signal you want, the more bits you need. That means that the description you quoted:
So if I set the digital generator to -120 dBFS (remember 0 dBFS is maximum so all allowable numbers are negative or less than max), it means I am telling the DAC to reproduce a voltage that is represented by 120/6 = 20 bits.
is correct. The only clarification could be that this number of bits is the least amount of bits needed to represent such signal.
Well, this also wrong; because if you want to be accurate, at 16 bits the dynamic range is ~90dB ...
I don't think so, as explained above.
I can also copy here
my another response:
Yes, the difference between the sample value 32767 and 1 is 90 dB but that's not what the dynamic range is. The most correct definition, I think, is the ratio of "full scale signal" and "quantization error" variances (powers) as described in
Quantization Noise 101: Where does SNR about 6N dB come from?. If however the "difference between the lowest and the highest level" is preferred (because maybe it's easier to understand), then "level" is a wrong concept, it should be "amplitude". The highest amplitude is 32767 (the signal swinging from -32767 to 32767) and the lowest amplitude is 0.5 (the signal swinging from 0 to 1). Then we get our 96 dB:
20 * log(32767/0.5) = 96.