DVIで映像入力し,DVIで映像出力するデザインをClaude Codeの助けを借りて作ります.
●ハードウェア
FPGAボードとしてTang Mega138K Pro Dock(Sipeed)を使います.オンボードでHDMIコネクタが2つ載っているので,そこからDVI信号を入出力します.
●作るアプリケーション
▲メイン入力映像
DVI RXから入力した映像を画面左側に少し縮小して表示します.
▲カメラ映像
カメラから入力した映像を画面右上に当て込む予定です.差し当たって,ブランク領域にして実装を進めます.入力ソースはUSBカメラまたはPmod接続(もしくはフラットケーブル)のRGBカメラを予定しています.
▲テキスト領域
お名前などを表示できるように画面右下にテキスト領域を用意します.テキストはハードコードします.事前に画像をバイナリファイルに変換して用意し,デザイン合成時に組み込みます.従って,静止画像も表示できます.バイナリファイルに変換するPythonスクリプトはClaudeCodeに生成させます.

●各処理のIPを生成して信号接続する
DVIの送信処理,フレームバッファ,DDR3SD RAMコントローラ,DVIの送信処理は,標準的な処理なのでIP(GOWINは全て無償)が用意されています.
▲DVI RX
▲Video Frame Buffer + DDR3
GowinのIPである,Video Frame Bufferはメモリコントローラと組み合わせて使いやすくなっています.今回は,接続するメモリコントローラとしてDDR3を選択します.別途DDR3コントローラのIPを生成し,トップモジュール上で手動で信号接続します.
Video Frame Bufferは内部にFIFOを持っています.入出力のクロックドメインが違っても自動で対応してくれます.
▲画面生成:image_composer
▲DVI TX
image_composer の出力信号をDVI TXに接続します.
ピクセルクロック74.25MHz(シリアルクロック371.25)です.色深度24ビット(RGB888)です.
幾つかの入力ソースを合成して独自の画面を作る処理は,独自のモジュールimage_composer.vで実装します.
●おまけ
幾つかの映像ソースを元に出力画面を作ります.映像の合成をする回路は,image_composer.v モジュールとして構成します.Claude Code は頼んでもいないのに,次の動画に示すピクセルシミュレータ(ウェブ・ブラウザで動作する)を生成しました.便利(゚д゚)!