The reason for which I gave myself this homework is that I used another algorithm to synthesize sinewaves by using a serial DAC (using basic delta modulation) instead of the parallel one (DDS). The new topology could be called Delta Sinewave Synthersis (DSS).
DSS outputs, therefore, the sinewave bit stream from one MCU pin only. But, for relatively high frequencies, DSS code uses internally all 8 bits of a port (though one of them only outputs the delta serial bits).
The only DSS advantage is that its hardware is simple while covering a relatively wide band of frequencies (in my design, from 20,000 down to 630 Hz, the high band, and 630 down to 20 Hz, the low band) while maintaining a practical low THD. The active LPF filter (of a 3rd order) which is used for the high band is also used for the low band as well by adding 3 capacitors to it. They are switched in parallel with the original ones by 3 CD4066 switches that are controlled by one MCU pin.
The disadvantage of DSS is that its code is not trivial (mainly for the high band). This is why I didn’t hear that someone worked on it yet. And, to let DSS to cover a wider band with the same LPF, the needed MCU memory space increases somehow exponentially. Also, it is somehow a challenge to choose/find the tables of the delta bit streams which output the same signal amplitude for all generated frequencies.
For instance, I have, as MCU, just the ATmega8A to which I usually add an 8 MHz crystal (though I can use a 16 MHz one, if necessary).
So, before going on working on DSS project to build the variable audio sinewave generator, I thought that, also by using a relatively simple hardware (no special ICs or precise components which could be used in simulators), I may be able doing it by using the much simpler DDS code and look-up table(s). I still wonder if this is possible to be achieved with DDS.
I hope now that the purpose of homework here is clear
Thank you,
Kerim