MAX10FPGAでNTSCのカラー信号を生成する実験は以前行っていました。
今回は、これにイメージバッファと、外部からのデータの書き換え機能を追加してみたいと思います。
ブロック図
ESP32からは、一般的な液晶ドライバと同じような方式で、データ/コマンドピンとSPI接続でイメージデータをFPGAへ転送します。
イメージデータは、NTSC信号が生成しやすいように、RGBではなく、色相16種類(内1つは無色)、輝度4段階のファミコンのイメージデータような仕組みになっています。
MAX10 FPGAには4MbitのSRAMをイメージバッファとして接続しています。ESP32から転送されたイメージをストアしておきます。
また、NTSCのタイミングでメモリから読み出し、NTSCの信号を生成してD/Aへ出力しています。
D/Aコンバータの出力は6dBのビデオアンプを経てモニターに接続しています。
実験回路
FPGAボードは、MAX10 10M02 FPGA 実験セットを使っています。ESP32とFPGAとはたった4本でつながっていて、イメージデータの転送が行われています。
プログラム
ESP32で、sin波形の模様をアニメーションしてFPGAへ転送するプログラムを作りました。FPGA側では、液晶ドライバーのように振る舞うインタフェースと、メモリのイメージデータからNTSCを生成するロジックを組みました。
動作開始
ESP32でsin関数の模様のアニメーションを生成して、FPGAで表示しています。
綺麗に動作してとても嬉しいです。NTSCという仕組みは配線1本で映像を伝送できる、とても面白い仕組みですね。
コメント