DSPとFPGAはどちらもデジタル信号処理プラットフォームに使用することができる。しかし、どちらのチップにも利点と欠点はある。使用するチップはFPGAかDSPか、それとも両者を組み合わせて使用するのかを決める際には、チップのコストや性能、消費電力、設計チームの経験、IPコアが利用可能かどうか、そして特定用途向けの機能がサポートされているかなど、検討すべき設計ガイドラインは多数存在する。 本稿では、前編と後編の2回に分け、最適なチップの選び方について、事例を交えながら解説する。

Michael Parker 米Altera社

 設計プロジェクトでアーキテクチャを決める場合に、システム設計者はいくつかの重要な問題に直面する。デジタル信号処理に使用するチップがFPGAかDSPか、それとも両者を組み合わせるかという問題は、その中でもますます重要なものになりつつある。システム設計者が検討すべきパラメータとしては、以下のものがある。

  • システム性能要件
  • データパス精度の要件
  • 消費電力
  • コンポーネント数とフォームファクタ
  • 製品/システムの今後の開発予定とシステムの拡張性
  • NRE(non-recurring engineering)投資、BOM(bill of material)コスト、市場投入時期(time to market)、プロジェクトスケジュールにおけるリスク、といった経済的なパラメータ

 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は、演算性能がローレベルからミドルレベルで済むアプリケーション向けの信号処理に適している。それと同時に、マイクロコントローラの柔軟性と機能性をすべて実現しているといえる。このためシステム開発者の多くは、以下の特徴を持つ広い範囲のアプリケーション向けにDSPを選択する。

  • 性能要件が中程度の複雑なアルゴリズム
  • 入力データの収束に依存するアルゴリズム
  • シリアルな(ソフトウエアベースの)実装が可能な、システムスループットである場合
  • 設計チームがDSP IDE(「Code Composer」など)に精通している場合
  • オンチップの周辺機能を同一パッケージに集積する必要がある、非常に低コストのアプリケーション(モーター制御など)
  • 社内またはサードパーティが保有する既存のDSPコードベースが活用できる場合

FPGA:並列性が高く高速演算

 FPGAは、並列性が高く演算速度が速い信号処理向けカスタムロジックの回路を構成することができる。例えば、200MSPS(メガサンプル/秒)で動作するデュアルチャネルの100タップ FIR(有限インパルス応答)フィルタは、400億MMACSの演算性能を必要とする。この性能は、単一チップで一般的な高性能DSPの演算能力を約1桁上回っている。このような処理を行う場合には、FPGAの並列性がうまく適合する。このため、中程度の性能を備えた単一チップのFPGAでも、容易に対応することができる。

 FPGAは、以下の特徴を持つアプリケーションに特に適している。

  • 高いデータスループットと処理速度
  • データコンバータなど、カスタムまたは並列性の高い外部インターフェースが必要な場合
  • FIRフィルタやFFTなど、処理の並列性を利用することのできるアルゴリズムを使用する場合
  • データパスの異なる部分においてデータ精度要件が大きく異なるか、固定小数点と浮動小数点処理の両方を必要とする場合
  • データ処理がデータの内容に複雑に依存していない場合
  • 社内またはサードパーティが保有する既存のFPGA IPベースが利用できる場合

 FPGAは、本質的にDSPよりも高い処理性能を得ることができるが、開発におけるNREにより、コストも増加する可能性があることを認識しておく必要がある。例えば、ほとんどの信号処理システムでは、FIRフィルタなどの単純な機能を処理するだけではない。複雑なシステムでは、データ処理や意思決定といった、ほかの機能も実行することになる。FPGAを使用する場合は、信号処理機能を追加するごとに、データ処理およびアルゴリズムに独自の特殊なロジック設計が必要となる。FPGAベンダーは、より一般的なDSP機能に対応する、広範囲なIPライブラリを提供している。それでも、システムが複雑になるとチップサイズやNREコストはすぐに増大し、開発期間も長くなる恐れがある。

FPGAとDSPを使い分ける

 前述のように、FPGAに機能を追加するごとに、開発期間やNRE、部品コストは増える可能性がある。追加する機能がDSPチップの処理能力の範囲内ならば、MACを多用する処理はFPGAに残したまま、追加機能をDSP上に実装すればコスト効率がよい。一般的に、1000 MMAC未満の演算性能で済む機能はDSPに実装し、それよりも高い演算性能が必要な機能の場合はFPGAに実装する。

 多くのシステムにおいて、高いデータレートが要求されるのは、データコンバータへのインターフェースである。コンバータへのインターフェースにFPGAを使用すれば、同一チップ上の信号処理のフロントエンド部分にも対応できる。レーダーや医療画像処理アプリケーションのように、バックエンドはデータレートがかなり低くなる場合が多いため、DSPでの実装がより適切だ。主要なデータパス処理にはFPGAを使用し、データ駆動の最適化演算はDSPで実行するアプリケーションもあるだろう。その一例として、ワイヤレスシステムを挙げることができる。主要なデータパス処理はFPGAで実行し、同期、周波数オフセット、MIMO演算の一部をDSPが負担している。

この記事は、アイティメディア社『FPGA Insights』に掲載されていたコンテンツを、アイティメディア/EDN Japanの許可を得て転載しています。

目次