2016-04-18 18 views
2

私はTaylorシリーズを使ってVerilogでCOS X関数を実装しようとしています。テイラー級数近似を使ってcosxを計算するためのVerilogコード

"テイラー級数近似を使用してcosXを計算するためのVerilogコードを作成してください。X = 0の符号付き10進基数形式のソースとテストベンチコードを添付してください10°の増分で360°まで "

私は進む前にいくつかのことを理解する必要があります。 10°0°〜360°=> 36位小数で

36は、6ビットで表現することができるカバーする単位:私は

解像度計算間違ってどこかだ場合私を修正してください。 6ビットを使うことができるので、解像度は64ワードを使用することによってわずかに改善されます。 64ワードは0°から360°を表し、したがって各ワードは5.625°の分解能、すなわち0°から360°のCosのすべての値を5.625°単位で表します。 は、このように分解能は5.625°

テイラー級数計算 COSため テイラー級数は、それが簡単ですが、私は、クエリ

1)のカップルを持っているCos x approximation by Taylor series

 COS X = 1 − (X^2/2!) + (X^4/4!) − (X^6/6!) ..... (using only 3~4 terms) 

で与えられます乗算器を使用してX * X(X正方形)またはX立方体の項を生成するには、X正方形またはX立方体の項の計算中に生成される余分なビットを処理する方法がわかりませんs。 出力は8ビットのみです

たとえばX = 6ビットです。 Xの正方形= 12ビット; Xキューブ= 18ビット。

私はそれらを生成し、後でMSBの結果全体の8ビットだけを考慮して無視しますか? ...そのような波が右を吸うだろうか?

2)Taylorシリーズの開始時に+1を処理する方法がわかりません... COS X = - (X^2/2!)+(X^4/4! ...私はバイナリ1を直接追加するか、私はの6ビットと出力の8ビットを使用しているので、2^8 = 255または2^6 = 64として1をスケーリングする必要がありますか?

答えて

1

この数字系列は、通常、+1から-1の範囲の数値を与えます。だからあなたは8ビットをどのように使うのかを決める必要があります。

1つの整数ビットと7つの小数点以下のビットを持つ符号付き数値と考えると、1を表すことはできませんが、非常に近いです。

私は以前の回答でhow to use fixed-point with verilogを説明しています。快適になったら、how bit growth occurs during multiplyを見る必要があります。

内部で1ビットのint、7ビットのfracを出力しているだけなので、答えを計算するためにはもっと多く使う必要があります。

小数点以下の桁数が1の場合、整数は9'b0_1_0000000または1*2**7のようになります。

関連する問題