PIC32MXでビデオゲームマシン作成3(RGB信号の生成)

なんだかすごい苦労しましたが、RGB信号が出力できるようになりました。たぶん。


PIC32MXにはDMAがあるから、RGB信号の出力も余裕だぜ!
と思っていたら、案外ハマりました。


DMAでVRAMの内容をポートに出力していくコードを普通に書いたら、ドットクロックにして3.4MHzのレートで出力するのが限界でした。
640x480 60HzのVGA画面は、本来の解像度だとドットクロックが25.175MHzです。
25.175MHzでRGB信号を出力すると、横640ドットの解像度が得られるということです。
そこへ、3.4MHzでRGB信号を出力すると、本来の周波数の1/7.4なので、横の解像度が86ドットになっちゃいます。


横86ドットはひどすぎます。
すごく・・・大きいです・・・(1ドットが)
ファミコンレベルを目指したはずが、Atari2600並みになってしまうところです。


PIC32MXには、PMP(パラレルマスタポート)というパラレルIOを制御するペリフェラルがあるのですが、これの「バッファ付きパラレルスレーブモード」というモードを利用したところ、高速にRGB信号を出力できました。
10MHzのドットクロックでRGB信号を出力できているようです。
これなら横254ドット表示できるはずなので、まあまあかと思われます。



水平同期信号(黄色)と、RGB信号(赤)



複数ラインを表示するとこんな感じ。


次は、DAコンバータの回路を作り、実際にモニタへ表示してみたいと思います。