2011年11月27日日曜日

独自のCPUを創ってみる(6)


独自のCPUを創ってみる(5)の続き


製作中のCPUを実際のボードで動かそうとしたら、
まだバグがあった。

TD4のときは、SW3を連続モード・手動モードの切り替えスイッチにして、
BTN_WESTをリセット、BTN_EASTを手動モードの1ステップ実行ボタンに
割り当てた。さらに、今回p1_led.txt に書いたテストプログラムでは、
最初にLEDが右端に1個点灯させ、BTN_SOUTHが押されている間は
左に動くというものを作った。時間待ちがないので、猛烈な速さで流れるため、
目で追うことはできず、1ステップ実行で確認した。

しかし、どうも1ステップ実行がうまく動作しない。
調べてみると、CPUを1命令だけ実行するために使っているcpu_en 信号の
周りでバグがあった。

このバグを修正すると、ちゃんと動作するようになった。

ISEで "Systhesize - XST" という最初のコンパイルをすることで、
設計した回路の最高動作速度が分かる。
CPUの動作速度はエリア優先の最適化オプションの条件で 27.550MHz
となった。コンパイルオプションをスピード優先に変えると 38.097MHz
となった。

Spartan starter kitの外部のクロックは50MHzなので、
DCM で 50MHz * 11 / 20 = 27.5MHz のクロックを作ってエリア優先の
範囲ではぎりぎりの周波数で動作させた。

50MHzで動いて欲しかったが、いろいろと複雑になってしまったので
仕方ない。

あとやり残したことは、


0 件のコメント:

コメントを投稿