Чисто ради галочки. Можно синтезировать синус с помощью зацикленного через инвертор сдвигающего регистра, к которому подвешена пачка специальным образом подобранных резисторов. Смысл в том, что тактируя такой регистр, в нём последовательно сначала скапливаются единицы, потом нули, потом процесс повторяется. На выходе, подключенном к выводам регистра через резисторы, образуется ступенчатых синус. Причём 3-я, 5-я и так далее до какой-то 2n+1-ой все гармоники уже отсутствуют (в той степени, с какой точности подобраны/подстроены резисторы), а более высокие гармоники можно зарубить НЧ-фильтром.
Вот статью даже нашёл. Только там не привели способ расчёта номиналов для произвольной разрядности. На самом деле ничего сложно в расчёте нет. Надо записать матрицу из нулей и единиц, инвертировать её и помножить на столбец значений синуса спереди. Затем получившийся столбец умножить на произвольное удобное число и это будут искомые номиналы. Подробностей не помню, давно считал, но при наличии интереса, могу восстановить во всех деталях.