Ich versuche die COS-X-Funktion in Verilog mithilfe der Taylor-Serie zu implementieren. Die mir gestellte Problemstellung lautet wie folgt:Verilog-Code zur Berechnung von Cosx mit Hilfe der Taylor-Serienapproximation
"Schreiben Sie einen Verilog-Code, um cosX mit Hilfe der Taylor-Serienapproximation zu berechnen. Bitte fügen Sie den Quell- und Testbenchcode der 8-Bit-Ausgänge für X = 0 in das vorzeichenbehaftete Dezimalradix-Format ein ° bis 360 ° im Inkrement von 10 ° "
Ich muss ein paar Dinge verstehen, bevor ich fortfahre. Bitte korrigieren Sie mich, wenn ich falsch bin irgendwo
Berechnung Auflösung: 10 ° -Schritten 0 ° zur Deckung zu 360 ° => 36 Positionen
36 in dezimal kann durch 6 Bits dargestellt werden. Da wir 6 Bits verwenden können, ist die Auflösung durch Verwendung von 64 Wörtern etwas besser. Die 64 Wörter repräsentieren 0 ° bis 360 °, daher repräsentiert jedes Wort eine Auflösung von 5,625 °, dh alle Werte von Cos von 0 ° bis 360 ° in Schritten von 5,625 °. So Auflösung ist 5,625 °
Taylorreihe Berechnung Taylor-Reihe für cos von Cos x approximation by Taylor series
gegeben COS X = 1 − (X^2/2!) + (X^4/4!) − (X^6/6!) ..... (using only 3~4 terms)
Ich habe ein paar Anfragen
1) Während es einfach ist, Um X * X (X-Quadrat) oder X-Würfel-Terme mit einem Multiplikator zu generieren, bin ich mir nicht sicher, wie ich mit den zusätzlichen Bits umgehen soll, die während der Berechnung von X-Quadrat oder X-Würfel-Term erzeugt werden s. Ausgabe nur 8 Bits
zB X = 6 Bit; X Quadrat = 12 Bits; X Würfel = 18 Bits.
Erzeuge ich sie sowieso und ignoriere sie später, indem ich nur die MSB 8 Bits des gesamten Ergebnisses betrachte? ... würde so eine cos Welle richtig saugen?
2) Ich bin nicht sicher, wie die + 1-Zugabe zu Beginn der Taylor-Reihe ... COS X = zu handhaben - (X^2/2) + (X^04.04)!. ... füge ich binär 1 direkt hinzu oder muss ich die 1 als 2^8 = 255 oder 2^6 = 64 skalieren, da ich 6 Bits am Eingang und 8 Bits am Ausgang verwende?