まずはお絵描き心地を試してみましょう。十字キーでカーソルを動かしてその位置のドットをAボタンとBボタンを使ってオン、オフを決定します。十字キーの方はそのまま押し続けるとリピートします。十字キーの使い心地の決め手はキーのスキャンのタイミングなんですね。それを決めるのがリスト1の10行目にあるcounter[21]です。
10: always @(posedge counter[21] or negedge rst)
もしもう少しキーの反応速度を速くしたい場合はこの値を1つ減らして20とします。すると現在の反応速度の2倍の速度でキースキャンを行います。キーの反応は良くなるのですが、キーを放すのが遅れると1回押したつもりが2回かそれ以上押したと判断されて思い通りにコントロールしづらくなってきます。一方、counter[21]ではキーの反応が速すぎると感じれば、この値を1つ上げて22とします。するとキーのスキャンスピードは先ほどとは2分の1となります。キーの反応は悪くなりますが、キーを放すのが遅れ2度押されたと判断されることは少なくなります。いずれもここは十字キーの操作の熟達度や長年の癖によるものですから、みなさんにあった値を見つけて設定してください。
図2は試しに書いてみた絵です。ちょっと悲しいのが説明しないと分かりづらいところです。上下に2つの砲台が向かい合っており、互いに弾を撃ち合っているところですが、皆さんにはそう見えますか。ディスプレイの輝度を控えめにするか、液晶ディスプレイで御覧の方は斜めから見るとそれらしく見えるようになるかもしれません。
いかがでしょうか。FPGAでもVerilogHDLで24行程度のコーディングでお絵かきソフトの最低限の機能は実現できるんですね。それはそれで驚きなのですが、今回お絵かきソフトを取り上げたのは、PCでTang Nano 9Kをプログラミング(コンフィギュレーション)した後に、FPGA内のレジスタの内容を編集する手段が欲しかったからです。前回も書きましたが、これらの機能を応用して連載「オリジナルCPUでバイナリコード入門」など他の記事でも役立てていきたいと思います。ご期待ください。
Copyright © ITmedia, Inc. All Rights Reserved.