DSPとFPGAはどちらもデジタル信号処理プラットフォームに使用することができる。しかし、どちらのチップにも利点と欠点はある。使用するチップはFPGAかDSPか、それとも両者を組み合わせて使用するのかを決める際には、チップのコストや性能、消費電力、設計チームの経験、IPコアが利用可能かどうか、そして特定用途向けの機能がサポートされているかなど、検討すべき設計ガイドラインは多数存在する。 本稿では、前編と後編の2回に分け、最適なチップの選び方について、事例を交えながら解説する。
Michael Parker 米Altera社
設計プロジェクトでアーキテクチャを決める場合に、システム設計者はいくつかの重要な問題に直面する。デジタル信号処理に使用するチップがFPGAかDSPか、それとも両者を組み合わせるかという問題は、その中でもますます重要なものになりつつある。システム設計者が検討すべきパラメータとしては、以下のものがある。
DSPを使用する場合は、ソフトウエアベースのアプローチが必要となり、FPGAを使用する場合は、ハードウエアベースのアプローチが必要となる。プロセッサベースのシステムでは通常、さまざまな機能、あるいは命令を実行するために、処理エンジンはサイクルごとに再構成される。多種多様なアルゴリズム関数は順序どおりに実行される。この手法では、設計およびデバッグは容易となるが、プロセッサの実行速度が処理性能のボトルネックとなる場合がある。
FPGAベースのアーキテクチャでは通常、アルゴリズムにおける各関数に対し、専用のハードウエアが存在する。これによりデータスループットをかなり高くすることができる。ハードウエアキテクチャがプログラマブルであることから自由度が高く、設計者が実装時に並列性のレベルをコントロールすることができる。
設計チームがその技術に精通しているかどうかも考慮する必要がある。設計チームがDSPには非常に詳しいが、FPGAを用いた経験はほとんどない、あるいはその逆のケースもあるだろう。このような場合には、チームのスキルによりFPGAかDSPかの選択が決まるかもしれない。例えば、アルゴリズムを高い並列性でFPGAに実装する場合が考えられる。しかし、顧客のエンジニア側でFPGAに関するスキルが不足している場合は、一般的なFPGA手法を適用することは難しい可能性があり、製品の寿命を維持することにおいても潜在的な障壁が存在する。
DSPは、ソフトウエアの開発フローが簡単であるために扱いやすい、というエンジニアやシステム開発者は多い。また、複雑なアプリケーションの多くは、実装する前にシステム動作のシミュレーションを行う。シミュレーションは通常、CやMATLABを用いてソフトウエアベースの手法で実施される。シミュレーションを、ソフトウエアベースのDSPにポーティングする方が、ハードウエアベースのFPGAへポーティングするよりも、わかりやすく検証も容易である場合が多い(ただし「Simulink」など、ハードウエアへのポーティングを容易にするモデルベースのシミュレーションツールも存在する)。これはあきらかにDSPの利点である。
FPGAかDSPかを選択するとき、信号処理に関するシステム性能要件とBOMコストは重要な検討項目だ。Altera社などの主要なFPGAベンダーや、米Texas Instruments(以下、TI)社などの主要なDSPベンダーであれば、チップの選定を支援してくれるだろう。以下では、それぞれの技術が明らかに勝っているデジタル信号処理機能をいくつか紹介する。場合によっては、FPGAがDSPチップのコプロセッサとして動作するアーキテクチャも検討する必要がある。
DSPは、信号処理アプリケーション向けの特殊なプロセッサである。そのコアは、信号処理アルゴリズムに最適化された設計となっている。このため、ほとんどのアルゴリズムにおいて使用される主な処理(積和演算)を行うことができる。特定の信号処理アルゴリズムに対しては、特殊な命令が用意されている場合が多い。いくつかの並列データパスとデータアドレッシングユニットを持ち、プロセッサコアの入出力における高速なデータフローを実現している。また、DSPではマイクロコントローラと同様に、多くの周辺機能と異なる種類のメモリーが同一チップ上に集積されている。DSPは、演算性能がローレベルからミドルレベルで済むアプリケーション向けの信号処理に適している。それと同時に、マイクロコントローラの柔軟性と機能性をすべて実現しているといえる。このためシステム開発者の多くは、以下の特徴を持つ広い範囲のアプリケーション向けにDSPを選択する。
FPGAは、並列性が高く演算速度が速い信号処理向けカスタムロジックの回路を構成することができる。例えば、200MSPS(メガサンプル/秒)で動作するデュアルチャネルの100タップ FIR(有限インパルス応答)フィルタは、400億MMACSの演算性能を必要とする。この性能は、単一チップで一般的な高性能DSPの演算能力を約1桁上回っている。このような処理を行う場合には、FPGAの並列性がうまく適合する。このため、中程度の性能を備えた単一チップのFPGAでも、容易に対応することができる。
FPGAは、以下の特徴を持つアプリケーションに特に適している。
FPGAは、本質的にDSPよりも高い処理性能を得ることができるが、開発におけるNREにより、コストも増加する可能性があることを認識しておく必要がある。例えば、ほとんどの信号処理システムでは、FIRフィルタなどの単純な機能を処理するだけではない。複雑なシステムでは、データ処理や意思決定といった、ほかの機能も実行することになる。FPGAを使用する場合は、信号処理機能を追加するごとに、データ処理およびアルゴリズムに独自の特殊なロジック設計が必要となる。FPGAベンダーは、より一般的なDSP機能に対応する、広範囲なIPライブラリを提供している。それでも、システムが複雑になるとチップサイズやNREコストはすぐに増大し、開発期間も長くなる恐れがある。
前述のように、FPGAに機能を追加するごとに、開発期間やNRE、部品コストは増える可能性がある。追加する機能がDSPチップの処理能力の範囲内ならば、MACを多用する処理はFPGAに残したまま、追加機能をDSP上に実装すればコスト効率がよい。一般的に、1000 MMAC未満の演算性能で済む機能はDSPに実装し、それよりも高い演算性能が必要な機能の場合はFPGAに実装する。
多くのシステムにおいて、高いデータレートが要求されるのは、データコンバータへのインターフェースである。コンバータへのインターフェースにFPGAを使用すれば、同一チップ上の信号処理のフロントエンド部分にも対応できる。レーダーや医療画像処理アプリケーションのように、バックエンドはデータレートがかなり低くなる場合が多いため、DSPでの実装がより適切だ。主要なデータパス処理にはFPGAを使用し、データ駆動の最適化演算はDSPで実行するアプリケーションもあるだろう。その一例として、ワイヤレスシステムを挙げることができる。主要なデータパス処理はFPGAで実行し、同期、周波数オフセット、MIMO演算の一部をDSPが負担している。
第1回 デジタル信号処理にみる DSPとFPGAの正しい選び方 (前編)
第2回 デジタル信号処理にみるDSPとFPGAの正しい選び方(後編)
第3回 SimulinkモデルからHDLを生成 FPGAにDSP機能を実装する(前編)
第4回 SimulinkモデルからHDLを生成 FPGAにDSP機能を実装する(後編)
第5回 スマートグリッドにおけるFPGAの役割(前編) 新しい「省エネルギー対応」住宅を実現する
第6回 スマートグリッドにおけるFPGAの役割(後編) 新しい「省エネルギー対応」住宅を実現する
関連情報
◎基本を学ぶ「FPGA入門」
FPGAの概要が知りたい、FPGAを試してみたい、と思っている方にFPGAの基本から設計のイロハまで分かりやすく紹介。
◎「テクニカルトレーニング」
FPGAの設計効率をもっと高めたい、最新チップの技術情報を習得したい、という方におすすめ。オンラインでの無料受講も用意。
Copyright © ITmedia, Inc. All Rights Reserved.
提供:日本アルテラ株式会社
アイティメディア営業企画/制作:EDN Japan 編集部/掲載内容有効期限:2013年3月31日
FPGAについて、基礎からわかりやすく解説しています。
初級者から熟練者まで、FPGA設計技術を向上させたいすべての人のためのトレーニング講座。
オンライン講座は視聴無料です。