25 |
BSVによるメモリダンプモジュールの設計 (8) |
システム構成図

ハンドシェークアルゴリズム
以下に処理のハンドシェークを示します。
- ボード上のスイッチが押されstart信号が出力される。
- メモリダンパはstartに基づき、sreqを出力し、GameFSMに停止を要求。
- GameFSMは停止要求の有無に関わらず、フレームの最後で60Hzの立ち上がりを待つ。その際にcwaitを出力。
- メモリダンパはcwait(=GameFSMの停止)に基づき、以下のメモリダンプ動作をアドレス分だけ繰り返し。
- selをTrueにしてバス権(アドレス権)を取得
- アドレスを出力
- データを取得
- アスキー化してシリアルデータとして出力
- メモリダンパは終了時にsreqをネゲート。
- GameFSMはsreqがネゲートされるのを待ち、cwaitをネゲートしフレーム先頭から再開。
ゲームFSM側のBSVコードの修正
修正したGameFSM.bsvのウエイトルーチンを示します。
GameFSM.bsv
元々のtest出力信号(wait時を示す)testOut信号をそのままcwait(ゲームFSMのwaitを示す)として使用します。
元々は、60Hzの立下りを
このように待った後、立ち上がりに同期して
このように、ウエイトをリリースする(ウエイトルーチンから抜ける)仕様でした。今回それに加えて、メモリダンプからの停止要求がリリースされていることを
このようにAND条件で加えました。これにより、ウエイトしている状態は元々testOut(=cwait)として出力されていたため、それを用いてメモリダンプの開始信号としています。
GameFSMのインタフェースにメモリダンパからの停止要求信号sreqを加えます。
GameFSM.bsv
次にワイヤ定義を記述します。
GameFSM.bsv
最後にメソッド定義を示します。
GameFSM.bsv
Leave a Comment