FC2カウンター FPGAの部屋 2009年06月06日
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

数学ガールのsin(x)のテイラー展開をMaximaで検証

私は数学ガールという本を近頃読んでいる。言ってみれば数学の萌え本だ。
いつもは読む気になれない数学の証明を萌え本形式で書いている。だいたいなるほどと思うところがあるが、よくわからないところは読み飛ばしている。
その中でそうなのか~と思ったのはsin(x)のテイラー展開だった。(232ページ~233ページ)
sin(x)のテイラー展開の部分和を徐々に加えていくと、徐々にsin(x)のグラフに近づいて行くというのが予想していなかったので面白かった。それじゃということで、私が大学のころはなかった文明の利器を使って検証してみた。
使ったのは数値計算のためのソフトウェア。初めはOctaveを使おうと思ったんだけど、どうもよくやり方が分からなくて断念。前から使っていたMaximaを使うことにした。このMaximaは娘に2次方程式を聞かれたときに、答え合わせ用に使っていたものだ。これで検証してみることにした。
作ったファイル (sin_taylor.wxm) を下に示す。

F(x) := sin(x);
G(x) := x/1;
H(x) := x/1 - x*x*x/(1*2*3);
I(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5);
J(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5) - x*x*x*x*x*x*x/(1*2*3*4*5*6*7);
plot2d([F,G,H,I,J],[x,-7,7],[y,-10,10]);


このファイルをwxMaximaからOpenするとwxMaxmaの画面はこうなる。
Maxima_1_090606.png

そしてMaximaによって書かれたグラフが下。
Maxima_2_090606.png

最初の部分和 F(x)は y=x で、これはsin(x)を微分したcos(x)のx=0の時の値に等しいので、sin(x)のx=0の時の接線になっている。そこから部分和を追加ていくごとにsin(x)に近づいて行くのが分かる。これはよくわかるのではないだろうか?
面白そうなのでもう少しやってみた。

K(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5) - x*x*x*x*x*x*x/(1*2*3*4*5*6*7) + x^9/9!;
L(x) := x/1 - x*x*x/(1*2*3) + x*x*x*x*x/(1*2*3*4*5) - x*x*x*x*x*x*x/(1*2*3*4*5*6*7) + x^9/9! - x^11/11!;
plot2d([F,K,L],[x,-7,7],[y,-10,10]);


下がそのグラフ。
Maxima_3_090606.png

だいぶsin(x)に近づいてきた。このように部分和の数を増やしていくと、x=0の点から段々とsin(x)に近づいてくるとは思わなかった。面白い。。。

数学ガールも読み物としては面白いが、もう1冊買ったのだった。”やり直しのための工業数学”という本を買った。こちらは、CRCや暗号、フーリエ変換などが書いてある。こっちを勉強することにしようと思う。特にCRCやハフマン符号化。

#こんなにsin(x)の近似していないところの発散がひどいのでは近似式として使えないなと思ったけど、考えてみたら-π~πまで近似していれば、後は-π~πに折り返せばいいのか? そうすると9の階乗の部分和くらいまででいいのかな?
  1. 2009年06月06日 19:28 |
  2. EDAツールについて
  3. | トラックバック:0
  4. | コメント:3

Spartan3A Starter KitのDDR2 SDRAMコントローラのシミュレーション4(バースト転送テスト)

Spartan3A Starter KitのDDR2 SDRAMコントローラのシミュレーション3(リードデータのバグフィックス)”でリードした時の出力データも正常になったので、今度はバースト転送テストのシミュレーションをしてみることにした。
以前のSuzaku-Vのバースト転送テストの際にトップモジュールとテストベンチは作ってあるので、それに修正を加えた。
動作しました。動作している最初の様子が下の図。Suzaku-Vのバースト転送テストの一番目の図と同じ位置のキャプチャ波形だ。
Spa3A_STKit_DDR2_7_090606.png

バースト転送テストは、ランダムなバースト長のWrite, そして同じアドレスをバーストReadして、Writeした値とチェックという作業を繰り返しテストする。LED0がついている間はエラーなしで、エラーが起こるとLED0は消え、LED1が点灯する。エラーが出るとWrite, Readテストも停止する。
シミュレーションの全体図を表示すると下の図のようになる。
Spa3A_STKit_DDR2_8_090606.png

50usの間シミュレーションを行ったが、Write, Readが止まってもいないし、一番下の信号nLEDもずーとeのまま変化がないので、エラーは発生していない。

これでシミュレーションは終了したので、とりあえずバースト転送テストのインプリメントをすることにしよう。
  1. 2009年06月06日 05:59 |
  2. Spartan3A Starter Kit
  3. | トラックバック:0
  4. | コメント:0