マイクロプロセッサ実験

マイクロプロセッサ実験
情報工学実験第2
天野
実験の目的
• 与えられた課題を実行することのできるプロセッサ
のハードウェアとソフトウェアを設計、実装し、FPGA
ボード上で実際に動作させる
– 課題例:もぐら叩き、ピンポンゲームなど、毎回テーマは
変わる
– プロセッサは、POCOのテンプレートを公開、構成変更、
命令付加は自由(ただしFPGAに載るように)
– プログラムはアセンブラShapaを利用
– 計算機構成の履修をしてない人は特別コース
• 共同作業による製品開発の経験を積む
– 典型的なシンセシス型実験で、今までのアナリシス型、経
験重視型実験と違うので注意!
実験の流れ 1
• 第1週
–
–
–
–
解説(45分)
チュートリアル:一連の作業を実際にやってみる(1時間)
昼休み
作業分担:ハードウェア1名、ソフトウェア担当2名など(個
性に応じて柔軟に)
– 外部仕様、内部仕様の策定、企画書の提出
– 4時ごろ、、企画書についてのディスカッション
– ハードウェアの改造、命令の付加
• マイルストーン
– ハードウェアの改造
– 外部仕様、内部仕様の決定
実験の流れ 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
poco1.v
rfile.v
シミュレーション用
imem.v (led.datを利用)
dmem.v
poco_top.v
lcdTop.v他
クロック制御
チャタリング防止用
実機用(リアルワールド)
ハードウェア改造時
プログラム時
ハードウェアの改造
• 現在基本命令しか付いていない
• poco1.vを変更(実験書の解説がある)
• J命令は必須、JAL, JRその他必要な命令、
オリジナル命令を付けること
• オリジナル命令はpoco.rbを改造すればアセ
ンブラに組み込むことができる
I/Oの接続(p.8)
• LED:0x8000 下位8ビットが対応
1 0 1 0 1 0 0 1
• LCD:0xa000 下位10ビットが有効
– 0000000001: ディスプレイのクリア
– 0000000010: ホームポジション(左上)移動
– 10XXXXXXXX: XのASCIIコードが表示
• Write Only (読んでも書いたデータは出てこない)な
ので注意!
• 立ち上げ直後はLCDは表示できないので注意!
I/Oの接続(スイッチ)
• 0xC000を読むと下位8ビットが有効
North
West
Reset
S3 S2
S1
S0
1
0
1
East
South
0
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に表示を担当する人はその部分だけ早
めに実機へ
• では実機動作確認ができたら昼ごはん
へ、、、、、