Tech と Culture

テクノロジーとカルチャー

YCbCr-RGB変換モジュール アドレス生成

具体的なアドレス生成部の詳細は以下のようにしました。

yccaddgen1.png
X方向に16pixel分出力した次のフレームバッファアドレスを算出するために加算する値をIncaddYとしてAPBレジスタに保存します。
次に1MCU分を出力した時に加算する値をIncaddMCUXというAPBレジスタに保存します。同様に、一番右側のMCUを出力した後に加算する値をIncaddMCUYというレジスタに設定します。

その他に、フレームバッファの開始アドレス(一番左上の出力アドレス)。X方向の総MCU数、Y方向の総MCU数をAPBレジスタに保存します。
これらの値は、ソフトウェアがmotion JPEGファイルを受け取った時に画面サイズを調べて、デバイスドライバによって書き込みます。この方法で、以前のように画面サイズが変わるたびに手動でレジスタ設定をする必要が無くなります。

実際の内部回路は以下のようにしました。
yccaddgen2.png

gen_addは次に出力するフレームバッファアドレスを格納する内部レジスタです。
その他に、x,y,XMCU,YMCUの4種類のカウンターを回します。
これらのカウンターの値によって、どの値をアドレスに加算するかを決定します。
単純な回路です。if,elseがシリアルにつながっています。もし、ここがクリティカルパスになった場合は、並列化して高速化します。