マイクロプロセッサ実験 情報工学実験第2 天野
実験の目的 与えられた課題を実行することのできるプロセッサのハードウェアとソフトウェアを設計、実装し、FPGAボード上で実際に動作させる 課題例:もぐら叩き、ピンポンゲームなど、毎回テーマは変わる プロセッサは、POCOのテンプレートを公開、構成変更、命令付加は自由(ただしFPGAに載るように) プログラムはアセンブラShapaを利用 計算機構成の履修をしてない人は特別コース 共同作業による製品開発の経験を積む 典型的なシンセシス型実験で、今までのアナリシス型、経験重視型実験と違うので注意!
実験の流れ 1 第1週 マイルストーン 解説(45分) チュートリアル:一連の作業を実際にやってみる(1時間) 昼休み 実験の流れ 1 第1週 解説(45分) チュートリアル:一連の作業を実際にやってみる(1時間) 昼休み 作業分担:ハードウェア1名、ソフトウェア担当2名など(個性に応じて柔軟に) 外部仕様、内部仕様の策定、企画書の提出 4時ごろ、、企画書についてのディスカッション ハードウェアの改造、命令の付加 マイルストーン ハードウェアの改造 外部仕様、内部仕様の決定
実験の流れ 2 第2週 第3週 ラップトップ上でフリーで作業 マイルストーン: 実機上で動作確認 終了時にデモ 実験の流れ 2 第2週 ラップトップ上でフリーで作業 マイルストーン: 全てのプログラムがシミュレーション上で動作することを確認 ハードウェアは合成終了 第3週 実機上で動作確認 終了時にデモ 点数はほぼここできまる。レポートは外部仕様、内部仕様を書いて報告するのみ ディスカッションはない(第1週に終わっている)
一般的注意 この実験は第一日目の前半以外はフリーでやってもらうが、以下は守ること 食事、コーヒーブレークは自由に取っていい。しかし、実験室内では飲食は禁止 昼食時、TAが居ない時は部屋を閉めるので注意(第1回目だけ) 帰るのはTAにその日のマイルストーンをクリアしたことを確認してもらった後。 ラップトップは帰る際に返却し、名簿にチェックをしてもらう ITCに持ち出して、実験時間以外にもやることができる。これはチュートリアル資料を参照のこと TA(教員の天野)も生活があるので、あまり遅くまで残るのは止めよう!
今回のMinimum Requirement もぐら叩き もぐらの数は最低3匹 ランダムに出てくるように見えること(ランダムらしければよい) ボタンを押して当ったかどうかの判定が行われること その他、数を増やす、出方を工夫する、得点等拡張は自由 しかし、まずMinimum Requirementを満足させてからステップアップさせていく開発手法をお勧めする。
今回のMinimum Requirement ピンポンゲーム ラケット一個で壁打ち、ボールは直線軌道上を移動 ボールがラケットの位置に存在するときにボタンを押すと、ボールが跳ね返る 対戦式、ラケットの上下方向移動、ボールの斜め移動、スコア、ボールスピードの制御など拡張は自由 しかし、まずMinimum Requirementを満足させてからステップアップさせていく開発手法をお勧めする。
今回のMinimum Requirement スロットマシン 3つの数字、記号が変化 ボタンを押すと停止し、揃うと得点 揃わないと減点 スコアの付け方、動かし方の詳細は自由
今回のMinimum Requirement 脳トレ 4つの数字が一定の時間間隔で表示される 表示された順に打ち込んで正解ならばOK スコアの付け方、出し方の詳細は自由 数字以外のパターンでもOK 要するに脳トレっぽければ何でもOK
良いものを時間内に作るにはメンバの協力が鍵! さて、ここでラップトップを配り、アカウントを確認、必要ファイルのコピーをやってみよう 外部仕様と内部仕様 外部仕様 どのように動かすか、使うか、つまりユーザに向けた使い方、動き方を示す仕様 内部仕様 どのように作るかを示す仕様 ハードウェアとソフトウェアに分けて考える ハードウェアは命令フォーマットをきちんと決める ソフトウェアは流れ図を書く ステップアップしていく実装法がお勧め 仕様を決める際は十分相談し、分担、チェック体制を決めて、共同作業を行うこと。 良いものを時間内に作るにはメンバの協力が鍵! さて、ここでラップトップを配り、アカウントを確認、必要ファイルのコピーをやってみよう パスワードを変えるのを忘れずに
ファイル構造と変更点 alu.v test_poco.v poco_top_sim.v rfile.v poco1.v シミュレーション用 imem.v (led.datを利用) dmem.v lcdTop.v他 クロック制御 チャタリング防止用 poco_top.v 実機用(リアルワールド) ハードウェア改造時 プログラム時
ハードウェアの改造 現在基本命令しか付いていない poco1.vを変更(実験書の解説がある) J命令は必須、JAL, JRその他必要な命令、オリジナル命令を付けること オリジナル命令はpoco.rbを改造すればアセンブラに組み込むことができる
I/Oの接続(p.8) LED:0x8000 下位8ビットが対応 LCD:0xa000 下位10ビットが有効 0000000001: ディスプレイのクリア 0000000010: ホームポジション(左上)移動 10XXXXXXXX: XのASCIIコードが表示 Write Only (読んでも書いたデータは出てこない)なので注意! 立ち上げ直後はLCDは表示できないので注意! 1 0 1 0 1 0 0 1
I/Oの接続(スイッチ) 0xC000を読むと下位8ビットが有効 North S3 S2 S1 S0 Reset West East South 0 1 0 1 N S E W S3 S2 S1 S0 チャタリング防止回路は入っている ボタンスイッチは押した時だけ1
アセンブラプログラム led.prg中にスイッチの値を読んでLEDに表示するプログラムを示す。 アセンブル ./shapa led.prg –o led.dat: シミュレーション用 ./shapa - - fpga led.prg –o led.dat: 実機用 datファイル名を変えるときは、imem.v中のファイル指定を変えること
シミュレーション ./compv: iverilogのコンパイル vvp a.out: iverilogの実行 test_poco.vを書き換えてデバッグ 時期を見計らってスイッチに値を与える シミュレーション時間の調整 LEDへの書き込み、LCDへの書き込みを引っ掛けて表示 pcで引っ掛けて表示 カウンタを表示 gtkwave poco.vcdで波形を見てデバッグ 実験書10頁デバッグのコツ参照 シミュレーションと実機を結びつける能力はいかなる開発でも非常に重要!
FPGA用の配置配線 ssh cad0.std.expr.st.keio.ac.jp (cad1, cad2も利用可能) cd jikken source setup.csh make clean make 上記でXilinx社のise webpackによりpoco_top.v以下のファイルが論理合成、圧縮、FPGAの配置配線される エラーが出ないことを確認 構成情報poco_top.bitが生成される ise webpackは無料開放されている
実機動作 Xilinx社SPARTAN-3ボードを利用 班で一台Windowsを立ち上げる jjikkenでログイン(パスワードは付いてない) Win-scpを使ってpoco_top.bitを転送 192.168.0.15 cad0で合成した人のアカウントから転送 転送先は好きなところへ、、 IMPACTを立ち上げ、ボードを接続し、USBケーブルで構成情報を転送
作業中の注意 節目節目でバックアップを取ろう 十分シミュレーションを行ってから実機へ LCDに表示を担当する人はその部分だけ早めに実機へ ファイルをコピーしてバージョン番号をつけて保存 十分シミュレーションを行ってから実機へ LCDに表示を担当する人はその部分だけ早めに実機へ では実機動作確認ができたら昼ごはんへ、、、、、