Spartan-3A スタータキット

〜シリアル経由でスプライト操作その2〜


2007/05/06

あなたは 人目のお客様です.

ゴールデンウイークに遊びすぎてちょっと間が空いてしまったが, シリアル経由でスプライト表示 ができたので,いろいろ機能を乗せてみたい.

とりあえず,以下の機能を実装してみた.

で,ソースはこんな感じ.rx.v と s3astarter.ucf にはとくに変更無し.

sprite.v
rx.v
s3astarter.ucf

あいかわらずものすごく手抜き&ベタ書きの実装になっているので注意. あと回路効率とかもぜんぜん考えていない. ちなみにシリアル経由でスプライト表示 のときと比べ,論理合成にやたら時間がかかるようになってしまった. スプライトの数を増やしたことの影響が出ているようだ.

現在実装してある機能の一覧は以下.コマンドのフォーマットに関して詳しくは, シリアル経由でスプライト表示 を参照.

で,テストプログラムとして,4つのスプライトと4つのイメージを設定し, 表示するプログラムをCで書いてみた(move.c). 各種コマンドの使いかたは move.c を参照.

スタータキットにダウンロードすると,相変わらずわかりにくいが, 左上にキャラクタが表示される. この状態でFreeBSDのPC上で,テストプログラム(move.c)を実行する.

なんか中途半端にしか動作していない.そのままもう一度テストプログラムを実行.

ちょっとはマシになった? さらにもう一度テストプログラムを実行.

ようやく完全になった. あ,でもよく見ると,右上の人型の腰の帯が白に写ってしまっているね(本当は紫). 写真移したときに実際どうだったかは忘れてしまったが, 右下の緑のボールも水色に見えるし, 写真にすると青味が加わってしまっているのだろうか? (デジカメのせい? それにしては,赤は赤で写っているが...)

どうもシリアル受信がおかしくて,コマンドが受信できない場合が あるようだ.なんども繰り返し実行すると,徐々にまともになってくる. 実はこの対策として,テストプログラムにはコマンド送信のたびに100ミリ秒の ウエイトが入っているのだが,ウエイトを無くしたり短くしたりすると, もっと現象がひどくなる(何度やってもまともに受信できず,テストプログラムの 実行のたびにキャラクタがへんなところに移動したり表示がおかしくなったりする).

あと,キャラクタの左右がひっくり返っている. このへんをちょっと改良する必要有り.


メールは kozos(アットマーク)kozos.jp まで