FPGA活用回路&サンプル記述集(3) ―― ビデオ信号処理回路

大中 庸生

● 3×3フィルタに対応する4ライン構成のライン・バッファ

 ライン・バッファは,目的に応じてさまざまなタイプがあります.本稿で紹介するライン・バッファは,いわゆる3×3フィルタ(図2-2)に対し,9ピクセル分のデータを一括して供給するための前ライン保存バッファです.

zu02_02.gif
図2-2 3×3フィルタ(輪郭強調フィルタ)の係数例
実現するためにはライン・バッファがあるとよい.

 このライン・バッファをシンプルに構成しようとすると,4ライン構成となります.つまり,あるライン・メモリに書き込みを行っている間に,過去3ラインのデータを,それが蓄積されている3ブロックのライン・メモリから読み出すのです(図2-3)

zu02_03.gif
図2-3 4ライン構成のライン・バッファの概要

 今回の構成の場合,実際にはシンプルな1ポート・メモリが使えます.リード側とライト側がタイミング的に同期しているので,双方同じアドレス進行となります.しかも,リード側とライト側は常に異なるメモリ・ブロックをアクセスすることとなり,調停が不要です.

 今回はせっかく「仲の悪い二人」の話をしました.そういう場合でも調停力のある2ポート・メモリをあえて使ってみました.

● ライン・バッファの構成要素を整理する

 4ライン構成のライン・バッファのVerilog HDL記述をリスト2-1に示します.

・メモリ・ブロック

 四つのメモリ・ブロックを4本のライン・バッファに割り当てます.今回は一つのブロックが24ビットを1ワードとする1024ワード構成としています.24ビット構成にしたのはRGB各8ビットのフルカラー・データを意識してのものです.

・書き込みアドレス

 書き込みアドレスは,前述のビデオ・タイミング・ジェネレータから,水平アドレス10ビット,垂直アドレス2ビットを接続します.

・書き込みメモリ・セレクタ(デコーダ)

 垂直アドレスは,ライン・バッファ用メモリ・ブロックの選択に使用します.2ビットの垂直アドレスを単純にデコードしています.ライン・バッファの本数を増やすときは垂直アドレスを増やして,デコード幅を増やします.

・読み出しアドレス

 今回のような3×3フィルタにおいては,読み出しアドレスと書き込みアドレスは同一で構いません.もし,この読み出しアドレスを書き込みアドレスと異なる入力の仕方をすれば,左右反転や,拡大/縮小(横だけ),あるいは水平スクロールなどの効果が得られます.

・読み出しメモリ・セレクタ

 今回の用途では,読み出すライン・バッファは常に書き込み中のライン・バッファの相対位置となるようにします.また3×3フィルタのどの位置に対してどのバッファを割り当てるかを,常に垂直書き込みアドレスから算出するようにしています.この役割を負うのが読み出しメモリ・セレクタ・ブロックです.
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日