Comments
Description
Transcript
Virtex-EM FIR
アプリケーション ノート: Virtex-EM ファミリ R XAPP241 (v1.1) 2000 年 10 月 3 日 概要 ビデオ アプリケーション用 Virtex-EM FIR フィルタ 著者 : Ralf Kreuger Virtex™-E 拡張メモリ (Virtex-EM) FPGA デバイスを使用すると、百万ビットを越えるブロック RAM や最大 300Kb の分散 RAM を単一の高速デバイスで実現できます。このデバイスは広帯域のビデオ ア プリケーションに理想的で、複数のピクセル データに対してオンチップで複雑なデジタル フィルタリ ング ロジックを適用できます。Virtex-EM は再コンフィギュレーションが可能なので、制作前、デザイ ン中、制作後のいずれの段階においてもデジタル信号処理 (DSP) のパラメータとアルゴリズムを柔軟に 最適化できます。この再コンフィギュレーション性によって、MPEG 圧縮のようなアプリケーション独 自のアルゴリズムも定期的に最適化できます。 また、Virtex-EM FPGA デバイスで動作する高度な DSP アプリケーションでは、フィルタのインプリ メンテーションを共有するアルゴリズムを利用できます。ロジック リソースを共有できることに加え、 チップ全体のパフォーマンスが向上しているので、より多くのロジックを単一のチップに統合できるよ うになっています。拡張オンチップ メモリを使用すると、従来は FPGA の外部コンポーネントであっ たメモリをデバイス内に統合できます。 はじめに 画像強調などのビデオ アプリケーションで一般に使用されるフィルタは、 図 1 に示すような FIR (Finite Impulse Response) フィルタです。入力に値を与えるたびに、インパルス レスポンスと呼ばれる長さが 有限の出力シーケンスが開始されます。インパルスが連続して入力されると、出力はリニアに乗算およ び加算されます。このプロセスはたたみ込み (コンボリューション) と呼ばれます。ほとんどの 2 次元 フィルタは、ピクセルのグループに対して同時に重ね合わされる正方形のたたみ込みマスク ( または カーネル) を基本としています。一般的なカーネルの大きさは 3 X 3 ~ 15 X 15 ピクセルですが、医療画 像など高画質が求められる用途では、 さらに大きいカーネル (最大で 63 X 63 ピクセル) が使用されます。 図 1: 画像強調 1 次元のデジタル信号処理 (DSP) は、画像処理システムやビデオ システムでダウンコンバージョン、再 サンプリング、フィルタ処理に幅広く使用されています。ビデオの場合、リアル タイムで水平方向にサ ンプリングされるため、1 次元のデジタル信号処理は通常水平方向で行われます。2 次元のデジタル信 号処理は、主にグラフィック効果を得るため、または画像のサイズや形状を変更するため、2 次元のフィ ルタ処理に使用されます。 フィルタには、あらゆる方向でエッジをシャープにするハイ パス フィルタと、高周波ノイズを制限し たりエッジをソフトにするロー パス フィルタがあります。たとえば、画像強調処理では、入力画像を フィルタ処理してからミキサに送ることによって、画像全体を強調します。 高速システムでビデオ画質を確保するため、通常は単一のチップ上でライン バッファとフィルタを統合 します。このような場合、メモリが重要になります。医療画像など高画質が求められる用途では、大型 © 2000 Xilinx, Inc. All rights reserved.Xilinx のすべての商標、登録商標、特許、免責事項は、http://www.xilinx.co.jp/legal.htm に記載されています。 他のすべての商標および登録商標は、それぞれの所有者に属します。すべての仕様は通知なしに変更される可能性があります。 XAPP241 (v1.1) 2000 年 10 月 3 日 www.xilinx.co.jp 1 R ビデオ アプリケーション用 Virtex-EM FIR フィルタ カーネル (最大で 63 X 63 ピクセル) が使用されます。たとえば、12 ビット/ピクセルで 1024 X 1024 ピ クセルのビデオ フレームを使用する場合、最大で 756Kb の RAM が必要になります。従来、このよう な用途に対応できる十分なメモリがあったのはロジック数が多い大規模な FPGA だけでしたが、ロジッ ク数とメモリ容量の比率が非効率的だったので不必要なコストがかかっていました。Virtex-EM デバイ スの登場により、ブロック RAM とロジックの比率が向上し、ビデオなどのアプリケーションを実行し やすくなりました。 画像/ビデオに おける次元分割 信号処理 2 次元データのフィルタ処理を行う DSP アプリケーションのほとんどは、水平方向と垂直方向のフィル タ処理を別々に行うことができるという前提に基づいています。このようなアプリケーションでは、ま ず垂直方向 (列方向) にフィルタ処理を行ってから水平方向 (行方向) にフィルタ処理を行います (図 2 参 照)。このような分割処理を適用できると、フィルタのデザインをかなり簡潔にできます。 図 2: ライン バッファが組み込まれている 2 次元の FIR フィルタ 水平方向と垂直方向が対称的である場合、FIR フィルタのアルゴリズムはどちらの方向に関するもので も基本的に違いはありません。このため、高速な Virtex-EM デバイスでは、列方向と行方向の処理につ いて同じフィルタ インプリメンテーションを共有できます。 FIR フィルタはすべてがゼロという構造なので、フィルタ係数が対称である場合、ほとんどの標準的な ビデオ フィルタリング アプリケーションと同じようにフェーズ レスポンスはリニアになります。図 3 のようにすべての係数が中心点から見て対称的な場合、係数が同じ部分をあらかじめ加算しておいて乗 算の回数を減らすことができます。 図 3: 対称的なカーネル 2 www.xilinx.co.jp XAPP241 (v1.1) 2000 年 10 月 3 日 R ビデオ アプリケーション用 Virtex-EM FIR フィルタ 基本動作 画像強調では、次のような効果を得るために FIR フィルタが使用されます。 • • • 周波数を指定して削除 ランダムなノイズ、シャープなエッジ、勾配の抑制 (ロー パス フィルタ) 詳細部分やエッジの強調 (ハイ パス フィルタ) 正方形のカーネル マスクは、画像上をピクセル単位でラインごとに移動します。フィルタは、強調の対 象となる中心のピクセルを、周辺のピクセルに従って変更します。アレイ内の各ピクセルには、重み、 つまり係数が割り当てられます。各ピクセルに該当する係数 (重み) が乗じられ、すべてのピクセルの積 が合計されます。この積和値はシステム内のほかの部分に渡されるか、アレイの中心セルに適用されま す。次に、フィルタは 1 つ右のピクセルに移動します。この処理は、画像全体について繰り返されます (図 4 参照)。 図 4: 画像処理 アルゴリズムと インプリメンテー ション ここでは、リフレッシュ レートが 30 フレーム/秒、12 ビット/ピクセル、1024 X 1024 ピクセルの画像 を例にとって説明します。この場合、クロック レートは 80/40MHz が必要です。Virtex-EM の I/O 速 度、ロジック ブロックの速度、配線速度であれば、このクロック レートを簡単に実現できます。実際、 Virtex-EM アーキテクチャでは、54MHz や 74MHz などの一般的な画像に使用される周波数は実現で きています。 前述したように、ここで説明する 2 次元 FIR アルゴリズム (図 5 参照) はリニア フェーズ用に設計され ているので、分割可能な対称アルゴリズムを使用できます。このため、水平方向と垂直方向の両方であ らかじめ加算を行うことができるので、クロックごとの乗算回数を減らすことができます。さらに、こ のアルゴリズムでは、同一の 1 次元 FIR フィルタを 2 つカスケード接続して、垂直方向のフィルタ処理 を行ってから水平方向の処理を行います。 2 つの異なるフィルタを使用する方法も考えられますが、水平方向と垂直方向のデータ間でロジック リ ソースを共有するアーキテクチャを使用すると、デザインの効率が向上します。水平方向と垂直方向で 係数が同じなので、同じ定数係数の乗算器をフィルタ用に共有できます。また、定数乗算器を共有する ことによって、乗算器/加算器のツリーを、ピクセル データが移動するクロック レートの 2 倍のクロッ ク レートで共有できます。 Virtex-EM の DLL (Delay Locked Loops) を使用すれば、2 倍速のクロックはシステム クロックから簡単 に合成できます。また、2 つのクロックは位相が固定されるので、セットアップとホールドの条件が最 小限になります。タップされた遅延ラインは、フィルタ処理された垂直方向のデータを保持および調整 します。この結果、フィルタは垂直方向のデータに対する処理 (第 1 段階) と第 1 段階の結果に対する処 理 (第 2 段階) を交互に行います。 FPGA による画像フィルタ処理では、外部ライン バッファおよび関連する制御ロジックが必要になると いう問題が一般的にあります。Virtex-EM では、オンチップのブロック RAM に画像データを十分に保 XAPP241 (v1.1) 2000 年 10 月 3 日 www.xilinx.co.jp 3 R ビデオ アプリケーション用 Virtex-EM FIR フィルタ 存できるので、カーネル マスクが大きい場合でも外部バッファは不要です。この結果、必要となる I/O 数が著しく削減され、パフォーマンスが向上します。 図 4 に示すオンチップのライン バッファは、幅が 12 ビット、深さが 2048 ビットです。多重化を行う アーキテクチャなので、各ライン バッファには 2 つの画像ラインが格納されます。 図 5: 2 次元 FIR アルゴリズム フィルタを物理的にインプリメントする場合は、IP コアのライブラリから加算用と乗算用のエレメント を選択できます。加算器/減算器は、パラメータ化されているのでビット幅を変更できます。乗算器に ついては、ジェネリックなものまたは特定用途のものを使用できます。 係数の再読み込みが不要な場合は、定数係数乗算器 (KCM) を選択できます。それ以外の場合は、ダイ ナミックな KCM を使用できます。これらのモジュールは、n ビット幅のデータに n ビットの固定係数 を掛けて 2 X n ビットを出力する乗算器を形成します。係数乗算テーブルは、FPGA の LUT アーキテ クチャを利用して、分散 ROM ベースの LUT に保存されます。これは、高速で効率が良いパラレルな インプリメンテーションです。 Virtex-EM シリーズのデバイスでは、オンチップのライン バッファに使用できるブロック RAM が十分 に用意されているので、外部バッファが不要になり、データを移動する必要もなくなります。この結果、 必要な I/O ピンの数が著しく削減されます。外部バッファを使用する場合は画像のライン数に比例する 4 www.xilinx.co.jp XAPP241 (v1.1) 2000 年 10 月 3 日 R ビデオ アプリケーション用 Virtex-EM FIR フィルタ 数のピンが必要ですが、オンチップ バッファを使用すれば、必要なピンはカーネルのサイズに関係なく 1 組だけになります。これで、ライン バッファを外部に持つ場合に必要となるコストやボードのエリア を削減できます。 Virtex-EM ファミリでは、XCV405E デバイスで 560Kb (140 ブロック)、XCV812E デバイスで 1120Kb (280 ブロック) の RAM を使用できます。各ブロックのサイズは 4096 ビットで、1、2、4、8、または 16 ビット幅にコンフィギュレーションできます。このように柔軟なコンフィギュレーションによって、 n ビット幅で 1024 X 1920 の HDTV など、さまざまな編成のライン バッファに対応できます。上記の 例では、1024 ビットの画像ライン 2 つが 2048 ビットのバッファに格納されます。2 ビット幅のブロッ ク RAM を選択すると 2048 ビットという必要な深さが得られ、12 ビット/ピクセルであることから 6 ブロックの RAM が必要になります。このコンフィギュレーションでは、63 X 63 のカーネルに 192 ブ ロックの RAM が必要です。 アプリケーションによって、ラインごとの RAM の大きさや、ロードするライン数は大きく異なります。 たとえば、高度な HDTV の分野では、1 ラインのピクセルに 37.5Kb の RAM が必要です (1920 ピクセ ル/ライン、輝度 10 ビット、彩度 10 ビットの場合)。XCV812E デバイスでは 29 ラインまで、XCV405E デバイスでは 14 ラインまで、同時にロードして処理できます。表 1 では、各種のピクセルのビット サ イズとライン長における RAM の条件が示されています。表の右 2 列は、12 ビット/ピクセルでブロッ ク RAM に格納できるライン数をデバイス別に示しています。 表 1: RAM の要件 ピクセルごとのビット数 ライン数 ラインごとの ピクセル数 8 10 12 XCV405E XCV812E 512 4096 5120 6144 93 186 768 6144 7680 9216 62 124 1024 8192 10240 12288 46 93 1280 10240 12800 15360 37 74 1920 15360 19200 23040 24 49 2048 16484 20480 24576 23 46 Virtex デバイスには、SRL (シフト レジスタ LUT) というマクロがあります。このマクロは、長さが 1 ~ 16 ビットの効率的なシフト レジスタをインプリメントします。ロジック ブロック (CLB) には 4 つの 16 ビット シフト レジスタを含めることができ、各レジスタの終わり (17 段目) にオプションでフリップ フロップを含めることができます。未使用の CLB は、遅延回路やライン格納スペース用の追加リソー スとして使用できます。XCV405E には 2400 個、XCV812E には 4704 個の CLB があります。サイズが 1024 X 12 の遅延やライン バッファを追加する必要がある場合、使用するのは 181 個の CLB だけです。 これは、XCV812E の CLB 全体のわずか 3.85% です。 結論 高速な四則演算が可能で大規模なメモリ ブロックがある Virtex-EM デバイスは、フィルタ処理や圧縮 といった高度な画像処理に理想的です。たとえば、MPEG および JPEG アプリケーションの 2 次元 ウェーブレットおよび 2 次元 DCT (離散コサイン変換) や画像ヒストグラム処理など、大規模なオンチッ プ メモリが必要とされる分野で活用できます。 さらに、従来は FPGA の外部にあったメモリを同じチップ上に確実に統合できるようになったという点 も、Virtex-EM の大きな利点です。チップ全体のパフォーマンスが向上したことでロジック リソースを 共有できるようになったので、FPGA やコンポーネントを新たに追加しなくてもより多くの機能を単一 のチップで実現できます。 XAPP241 (v1.1) 2000 年 10 月 3 日 www.xilinx.co.jp 5 R 改訂履歴 6 ビデオ アプリケーション用 Virtex-EM FIR フィルタ 次の表に、このドキュメントの改定履歴を示します。 日付 バージョン 番号 3/14/00 1.0 初期リリース 10/03/00 1.1 2 ページのビデオ フレームのサイズを 756Kb に変更 改訂内容 www.xilinx.co.jp XAPP241 (v1.1) 2000 年 10 月 3 日