Immer wieder taucht die Frage auf: welche Frequenz kommt eigentlich bei meiner DDFS heraus?
Oder anderherum:wie muss ich meine DDFS auslegen, damit ich die Frequenz am Ausgang erhalte, die ich will?
Es ist eigentlich ganz einfach: der Akkumulator mit a Bit Breite, der aus dem Vorteiler mit v Bit Breite und dem letztlich verwendeten Index mit i Bit Breite besteht, muss einmal komplett durchlaufen, um eine Periode zu erzeugen. Deshalb ist mit einem Zählwert cnt ("Frequenzwert") von 1 die Frequenz am Ausgang f = fosc/2**a
Und jede Erhöhung des Zählwerts cnt erhöht die Ausgangs um den selben Faktor. Damit ergibt sich die Formel
f = cnt * fosc/2**a
Und das wars schon...
Wenn der Zählwert zu groß wird, dann wird der Index i im Akku um mehr als 1 hochgezählt und deshalb nicht mehr nicht mehr jede Stützstelle ausgegeben. Das geht dann solange, bis bei zu großem Zählwert (größer als 2**a/2) dann das Abtasttheorem verletzt wird und Artefakte erscheinen.
Hier noch eine kleine Skizze zum Thema:
Eine Anmerkung zum Schluss: diese Tabelle ist zwar einfach nachzuvollziehen, mathematisch aber ungünstig, weil durch den Beginn mit der Amplitude 0 die Phase letztlich "nach hinten" verschoben ist. Mathematisch richtig wäre es, den Nullpunkt "zwischen" den letzten und den ersten Tabelleneintrag zu setzen. Mehr dazu in dem Artikel Digitale Sinusfunktion auf uC.net