PIC32MX HARMONY(6)
更新日:2021年11月25日

CPLDコラボ:VGAモニタ接続ユニットを高速化する
PIC32MXboxを公開してから次のゲームの開発を進めています。その中で一画面の描画時間について少し気になることがありました。VGAモニタへの描画時間は約26msecなので、ゲーム操作的には問題ないとは考えていたのでですが、液晶モジュールに描画する時は約21.5msecとなります。
過去の記事はこちらを参照下さい。
CPLDコラボ:VGAモニタ接続ユニットを作る
(液晶モジュールへの一画面描画時間)
時間的にはわずかの差なので、VGA描画時も液晶モジュール描画時も操作的にはあまり変わらないと思っていたのですが、ゲームをしてみるとその違いが判ることなりました。液晶表示のほうが明らかに早い操作が出来るとを。これでは今後気になって仕方がないので、VGAの描画時間を改善することに取り組みました。
もともと液晶モジュールへの表示を前提にゲームを作成しているので、画面のドット数は320x240ドットになります。このドット数をVGAモニタ(640x480)に表示するためには、縦軸方向を2倍にする必要があります。今までは各2行分同じデータをCPLDへ接続されたSRAMへ送り込んでいました。そのためPICからデータを送るのに時間を要していました。そこで発想の転換です。SRAMにはすでにその行のデータは入っているので、縦軸方向を2倍するために、CPLDがSRAMのデータを表示する時に各2行分同じデータを使うことにしました。原理は簡単なのですが、CPLDの内部モジュールへの落とし込みには苦労しました。次のゲームを考えながら平行してCPLDを記述していたので、結局2週間程度の時間が掛かりました。完成の手前で悩みましたが、ひょんなことから完成となりました。やはりここでも「デジタルは裏切らない」とうことを認識しました。
PICから送り込むデータが半分になるので、劇的な高速化となりました。
(VGAモニタへの一画面描画時間)
なんと、13msecでの一画面表示が可能となりました。データが半分になるので、想定していたことではありますが、実際にこの時間で表示されると圧巻です。これからこの機器でのゲーム作製が楽しみになります。
PIC、CPLD、SRAMのハードウェア構成は全く変更はありません。CPLDの内部記述を変更することで対応しています。CPLD内部のタイミングを記します。
(VGA接続ユニットの心臓部のタイミングチャート)
このタイミングをVHDLで記述しています。まあ悩んだのはこのチャートに現れない部分ですが。完成したので良しとしましょう。
(CPLDの内部構成)
心臓部となるモジュールのみ新作となります。SRAMのアドレスカウンタと一緒にしたので、モジュール数としてはひとつ減っています。クリックすると拡大表示出来ます。
(CPLD内部のロジック間配線)
新しいVHDLのソースを置いていますので、参考にして下さい。モジュールのソースはテキストなのでメモ帳なので簡単に開けます。全ソースではありませんので、作成される方は各モジュールを各自で構築お願いいたします。
VGA 新作VHDLのソースはこちら
(回路合成完了)
ロジック使用率は83%に上がりました。こちらも大変よく出来ました。これくらいの規模のCPLDが個人的には扱い易いと思います。周辺ハードウェアにはピッタリのサイズです。
さてこの方式でVGA表示すると当然高速化するのですが、早すぎて超難しいゲームになります。そこで三つの描画モードを切り替えるようにゲームを改造しました。すみません、キャプチャー画面ではV1.00となってますが、実際にはV2.00となります。
(ゲームタイトル画面)
ここで「下」キーを長押しすることで、スピード設定モードになります。その後「左」キーでスピードを切り換えます。
(ノーマルスピードモード)
前回までのVGA描画時間のモードです。このスピードで慣れているとこのスピードがピッタリです。画面描画時間は約26msecです。
(LCDスピードモード)
液晶モジュールでゲームする時と同じスピードです。画面描画時間は約21.5msecですが、ノーマルより早く感じることが出来ます。これも操作しやすいスピードですね。
(ハイスピードモード)
限界の超高速モードです。まあ体験として何かを感じて下さい。とてもゲームがまともに出来るスピードではありません。今後の高速ゲームにご期待下さい。
スピード設定は次回電源を入れた時に同じスピードとなるようにEEPROMに記憶することにします。
(PLANET PILOT 2021のEEPROM割り付け)
PIC32MXbox:PLANET PILOT 2021 V2.00のHEXファイル
超高速モード対応のPLANET PILOT 2021のHEXファイルを置いておきますので、万が一同じ物を作られる方は使って下さい。
みなさん如何でしょうか。PIC32MXboxを高速化することが出来ました。何か新しいゲームが出来そうな気がします。今開発中のゲームもなんとか今年中には公開したいと思います。まだまだPIC32MXboxは続きます。これからもよろしくお願いいたします。

「PIC32MX HARMONYの表紙」へ戻る