事前設計をもっと重視していく

 バグの原因を特定するためにまず検討したのは、フレーム画像を書き込む際の主記憶のアドレス指定がおかしい、つまりメモリー制御回路にバグがあるのではないかということでした。検証の結果、ステートマシンの遷移条件に問題があることと、クロック系の異なる信号の同期化処理を行っていなかったことなどが判明しました。これらを修正し、正常に動くことを期待して実機で検証しましたが、映像のズレが16画素に減ったものの根本的解決には至りませんでした。

 ティーチングアシスタント(TA)や講師陣からアドバイスをいただき、いったんメモリー制御回路を離れてレジスター回路の割り込み動作を調べました。すると、組み合わせ回路で作らなければならない部分を順序回路で作ってしまっていたことが分かりました。しかも、レジスター回路は表示回路のものをある程度流用しているため、表示回路にも同様の不具合が起きていました。これらを訂正してようやく録画再生機能が正常に動作するようになりました。

 このように、一見正常に動作しているように見えても、検証の手法を変えることでバグがあぶり出されます。完璧な回路にするには、さまざまな手法による検証が必要になるとことが分かりました。

 以上、キャプチャー回路について自分の開発の流れやつまずいた点を説明しました。やはり、最も大変だった部分は実機での検証でした。特に、他のメンバーたちがスムーズに録画再生機能の検証を終えていく中で、自分は複合したバグを解決するのに相当な時間を費やしてしまいました。こういった手間を避けるには、事前にもっと設計を練る必要があったのではないかと思います。これを教訓に、事前の設計をもっと重視していくことを決意しました。

 次は今までに作ってきた表示回路、キャプチャー回路よりさらに複雑な「描画回路」です。複雑ですが、今までに作ってきた回路をさらに活用できます。描画回路編をどうぞ楽しみにお待ちください。