Hi,

Sure. I want people to mentally retire PWM, it's only benefit is that it
is easy to understand, but it to some degree have the worst property you
can think of.

I did a very simple trick. First of all we have a "low" or "high" value
to output to the DAC. The "low" value is the higher bits of the value
you want, but with the lower (interpolated) bits scrapped, and the
"high" value is the "low" value plus 1 LSB of DAC values. We now have
the interpolating bits and then choose "high" or "low" in some pattern
to interpolate between them. This is exactly the same as PWM. We then
have a counter that counts which interpolation cycle we are in, again
the same as PWM. Now comes the difference. I then used the MSB of the
interpolation bits to steer the "high"/"low" value for every other bits,
thus muxed out when the LSB of the counter is 0. This moves the energy
of the MSB interpolation to the highest frequency, while achieving the
same average contribution. Now every other bit is free, and we used them
the same for the MSB-1 bit of the interpolator, using the LSB+1 bit of
the counter etc. Thus, the counter steers the selection of a mux-chain
(much as the carry chain in the PWM). The design pattern is trivial to
extend to interpolation of any bits.

The benefit of this is that as the interpolating values goes through a
first degree low-pass filter, you end up with the peak energy will be
flat, as the highest energy will now have a counter-acting -6 dB/Oct.

I was amazed that it was this simple to move energy to where it makes
less damage. Turns out that FPGA logic wise, it's at the same cost as PWM.

Now, there is other relatively simple ways of doing the same that I
would consider.

The error accumulator method is one, which is similar to phase-accumulation.

Cheers,
Magnus

On 2020-01-14 14:40, Bob kb8tq wrote:
> Hi
>
> Put another way - this is sort of why sigma delta was invented. The whole 
> “move
> the energy” thing was very much core to the invention. These days, even some 
> pretty cheap micro’s have sigma delta hardware on them. So far I have yet to 
> find
> one with quite the “right stuff” on it to do a DAC. The ones I’ve seen are 
> more 
> targeted at ADC’s.
>
> Bob
>
>> On Jan 14, 2020, at 7:50 AM, Magnus Danielson <mag...@rubidium.se> wrote:
>>
>> Hi,
>>
>> On 2020-01-14 02:00, Hal Murray wrote:
>>> lifesp...@claybuccellato.com said:
>>>> Some thoughts that have occurred to me are coarse and fine DACs, possibly
>>>> sigma-delta or pulse width modulation (PWM).
>>> Pulse width modulation has noise at the frequency of the whole sequence.  A 
>>> 10 
>>> bit DAC running at 1 megahertz will have noise at 1 kilohertz.  As you add 
>>> more bits to get better resolution, the noise frequency gets lower.  For 
>>> practical values, that noise may be hard to filter.  What doesn't get 
>>> filtered 
>>> turns into spurs.
>>>
>> That is why PWM is not a very smart idea at all for these purposes.
>>
>> I've done a variant where I inverted the spectrum of PWM. I sketched on
>> an article but I never finished it.
>>
>> You want to place your most significant bit energy as high as possible,
>> and the same for the second most significant bit. Turns out that this
>> becomes fairly simple counter and mux solution which on average achieves
>> exactly the same level as the PWM, but with noise which is much easier
>> to filter and with about the same level of complexity as the PWM.
>>
>> But then, you can do first degree sigma-delta and achieve about the same
>> thing.
>>
>> But PWM for this, is not a good idea, it's in fact a terrible idea since
>> it has the most significant bit with the lowest frequency which becomes
>> hard to filter.
>>
>> Cheers,
>> Magnus
>>
>>
>> _______________________________________________
>> time-nuts mailing list -- time-nuts@lists.febo.com
>> To unsubscribe, go to 
>> http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
>> and follow the instructions there.
>
> _______________________________________________
> time-nuts mailing list -- time-nuts@lists.febo.com
> To unsubscribe, go to 
> http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
> and follow the instructions there.


_______________________________________________
time-nuts mailing list -- time-nuts@lists.febo.com
To unsubscribe, go to 
http://lists.febo.com/mailman/listinfo/time-nuts_lists.febo.com
and follow the instructions there.

Reply via email to