前回は、筑波大学情報学群の実験講座「組み込み技術キャンパスOJT」(COJT)の「ハードウェア(H/W)コース」における5つの「学習課題」のうち、「キャプチャー回路」を紹介しました。今回は、ソフトウエア(S/W)寄りチームの尾前が「描画回路」についてお伝えします。これまでは、指定したフレームをディスプレー上に表示する「表示回路」と、カメラから取り込んだ画像を主記憶上に書き込む「キャプチャー回路」を作成してきました。

 描画回路の概要を下の図に示します。この回路によって主記憶上のフレームにテクスチャーを貼り付けたり、指定色で塗り潰したりすることが可能となります。この基本機能に加え、テクスチャー内の指定色を透過させるステンシル機能や、テクスチャーとフレーム上の色を混ぜ合わせる画素間演算機能(半透明処理など)を実装します。

描画回路概要
[画像のクリックで拡大表示]

 描画回路は、表示回路やキャプチャー回路に比べて処理の自由度が格段に上がるため、回路記述量とテストケースも多くなります。従って、夏休み明けの10月初旬から着手して実装を終えたのは早い人で12月中旬、人によっては1月ごろまでかかっていました。しかし、それまでに実装した回路では一定の画像やキャプチャー画像の表示しかできなかったので、さまざまな描画機能が実機上で動作したときの喜びはひとしおでした。

 描画回路では、画素間の演算機能や主記憶上のアドレス計算に大きな数同士の乗算が必要なので、表示回路やキャプチャー回路に比べて回路自体の規模が大きく、演算処理も多くなります。これに伴い、信号の変化や伝搬にかかる遅延も大きくなります。しかし、シミュレーションツールでは遅延は考慮されないため、遅延によるバグの存在はシミュレーションでは分からず、実機上で初めて発覚します。従って、私を含めてデバッグに苦しむメンバーが多数いました。表示回路、キャプチャー回路の設計では遅延を意識することはほとんどありませんでしたが、描画回路では回路記述が論理合成された後のイメージを持ち、遅延を小さくする記述が必要になりました。