画像IPを活用し画像処理システムをハード化するC言語ベース設計手法

萩原電気(株)デバイス技術本部 第一技術部 川端 浩揮

tag: 組み込み

2010年12月21日

 

Impulse Cは米Impulse Accelerated Technologies社が開発した比較的安価なANSI-C ベースの動作合成ツールです.ユーザは直接HDLを記述しなくても,C 言語からの動作合成でRTLレベルのHDLを生成してFPGA などに実装することが可能になります.この度,Impulse C をより実践的に活用できるよう,Impulse C 版の画像処理IPを開発いたしましたので,Impulse Cの概要とあわせて紹介いたします.

Impulse C とANSI-C の違い

 実はImpulse Cは新しい言語などではなく,ANSI-Cにいくつかのデータ型や関数を追加したものです.したがって,EclipseやVisual Studio等,使い慣れた統合開発環境を利用することができ,新たな開発環境を習得する必要はありません.C言語ソフトウェア設計者であれば,ANSI-C に対して追加されたデータ型,関数の使い方を理解し,普段書いているC コードに少しの修正を加えるだけですぐにハードウェア設計を始めることができます.
 

 追加されたデータ型で重要なものはco_stream型というものです.これはハードウェア化したい関数(process関数と呼ばれる)の引数で使います.process関数間をco_stream型で接続すれば,動作合成時には各process関数が並列で動作するHDL が生成されます.図にすると図1のようになります.

図1 processの接続

 process関数の記述方法の簡単な例を図2に示します.入力変数に1を足して出力するだけの関数です.引数のデータ型はco_stream型になっており,co_stream_readという関数でint 型の変数に置き換えて使います.またco_stream_write関数でint 型の変数をco_stream型に変えてprocess関数の外に出力します.このように,process関数の入出力をco_stream型にするだけでハードウェア化することが可能になります.

図2 process記述例

C 言語ベース設計の開発フロー

 次に開発フローを図3 に示します.まずはC 言語で設計を行います.先程も述べましたが,一般的な統合設計環境が利用できます.シミュレーションのあとには動作合成してHDL を生成しますが,この動作合成も統合設計環境上から実行可能です.
 

図3 開発フロー

 Impulse Cによる設計はHDL を生成するまでです.以降は通常のFPGA 設計フローと同じになります.FPGA 設計が未経験の方にはFPGA 設計ツールを使うのは敷居が高いと思われるかもしれませんが,入力ファイルのほぼすべてがC 言語設計の段階で出力されているため,実際にはファイルを登録して実行ボタンをクリックする程度の作業になります.

画像処理IP の紹介

 Impulse Cのように各process関数が並列動作をしてデータの受け渡しをするという考え方はデータフロー志向と言われており,画像処理に向いています.そこで,画像処理システムを実現する上で必要となる基本的な処理をImpulse C で記述してIP として用意し,画像処理システムの開発に活用しました.実際に設計したIP をいくつか紹介します.

●ビデオ同期信号生成
●フレームバッファコントローラ
●カラースペース変換(YUV とRGB の相互変換など)
●アフィン変換(回転・拡大・縮小など)
●画像の分岐,ブレンド
● 行列フィルタ(ソーベル,ラプラシアン,メディアン
フィルタなど)
● ルックアップテープル(ガンマ補正など)
● その他 100種類以上

実際の開発に利用できるC 言語ベース設計

 これらIPを組み合わせれば,さまざまな画像処理システムが構築できます.開発事例を写真1に示します.右上のボードは「カメラ画像の拡縮と回転」,左下は「カメラ画像の連続分割表示」です.左上と右下のボードは,「IP 機能のデモンストレーション」で,カメラ画像に対してソーベル(輪郭抽出),画素値反転,ガウシアンぼかし,二値化,テストカードのオーバーレイ,文字のオーバーレイ,動く円のオーバーレイ,動く矩形のオーバーレイ,メディアンフィルタ,ノイズ生成,ディザ,などを切り替えて適用しています.4つのボードとも,VGA サイズを60フレーム/1秒で処理しています.

写真1 IPを用いたビデオ画像処理の例

 図4 には「カメラ画像の拡縮と回転」のIP構成図を載せました.このように,RTLレベルのHDL を直接記述しなくても,IPを組み合わせるだけで,簡単にシステムがハードウェア化できます.以上は基本的なIP利用例ですが,他にも,月面画像の凹凸検出や魚眼レンズのひずみ補正などでもIP利用の実績があります.なお,現在のところ画像処理IPがターゲットとしている画像処理ボードは,Xilinx製のビデオスタータキット(DO-S3ADSP-VIDEOSK-UNI-G)と,写真1 でも用いたESP 企画製の画像処理ボード(CQBB-IMG)ですが,ビデオ入出力や外部メモリ周りなどを修正すれば,様々なボードに対応させることが可能です.

図4 「カメラ画像の拡縮と回転」のブロック図と使用IP

 これまで紹介した画像処理IP と,IPを用いた回路の例は,ご希望により有償提供させていただきます.IPのカスタムボード対応も承っております.詳細はImpulse C日本代理店である有限会社インターリンク(http://www.ilink.co.jp/)までお問い合わせください.

 


⇒企画トップへ戻る

組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! 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日