浮動小数点DSPの用途が拡大している中で、ハードウェア浮動小数点DSPのプラットフォームとしてFPGAを活用する方法が注目を集めている。それを効率よく具現化するために、FPGA自体の技術面での進化とともに、浮動小数点DSPアルゴリズムの実装を容易にするモデルベース設計への対応、などが進んでいる。浮動小数点DSPの概要やその課題などを説明した前編に続き、後編では浮動小数点DSPアルゴリズムをFPGAに実装するための手法の1つとして、数値計算ソフトウェア「MATLAB/Simulink」とDSP設計ツール「DSP Builder」を用いた設計フローや、その効果などについて概要を紹介する。

 浮動小数点演算を必要とするDSPのアプリケーションの主な例として、軍用機器では時空間適応レーダー、ワイヤレスシステムならMIMO(Multi-Input Multi-Output)処理を伴うLTEチャネルカード、医療画像機器ではMRI(Magnetic Resonance Imaging)やCT(Computed Tomography)の画像処理、計測器ではスペクトラム解析、などを挙げることができる。

 前編でも述べたが、浮動小数点演算を実行するために用いられるデバイスはいくつかある。その代表的なデバイスがMPUやDSP、GPU、FPGAなどである。各デバイスの機能や性能には一長一短がある。最新のFPGAに浮動小数点演算機能を実装した場合、MPUやDSPに比べて演算性能が10~100倍も優れ、演算性能がFPGAと同等の汎用GPUと比較すれば、消費電力は1/4以下となる。その上、浮動小数点演算機能も含めてシステムレベルの機能をワンチップに集積できることがFPGAの大きな特徴である。

浮動小数点とは広がるモデルベース設計

 最近、エレクトロニクス業界においても「モデルベース設計」という言葉をよく耳にするようになった。モデルベース設計に移行する目的を一言で言えば、開発の早い段階で設計ミスを発見し、設計の手戻りをなくすことで「設計品質の向上や開発期間の短縮、さらには開発コストの削減などを実現する」ことができるためだ。自動車業界などでは既に広く採用されている開発手法である。モデルベース設計を支援する代表的なツールの1つがMathWorks社の「MATLAB/Simulink」である。

 FPGAに浮動小数点DSPを容易に実装する開発フローについて述べる前に、「モデルベース設計」や「MATLAB/Simulink」について簡単に紹介する。モデルベース設計とは、実現したい機能を抽象度の高いモデルとして可視化し、そのモデルを使って開発プロセスを進めていく手法である。開発の上流工程からシミュレーションによる設計検証を平行して行うことで、仕様や機能の不具合などを早期に発見することができる。システムレベルの開発環境では定着しつつある手法である。例えばシステムにおけるノイズ環境や熱環境を容易に理解することができる。自動車分野をはじめ航空・宇宙や通信といった業界を中心に、制御システムや信号処理システム、通信システムなどの設計に広く用いられている。

 MATLAB/Simulinkは、モデルの生成や数値演算、解析結果を可視化するためのモデルベース開発ツールである。前述の通り、アルゴリズム開発やデータ解析、制御システムや信号処理システム、通信システムなどの開発に用いられている。特に、微分方程式など数学的な表現やブロック線図モデルなどの生成に適した開発ツールである。

浮動小数点DSPの実装を容易にするアドバンスト・ブロックセット

 アルテラでは、自社FPGAに浮動小数点DSPの実装を容易にするための開発環境として、Simulinkのライブラリとして利用できる「アルテラDSP Builderアドバンスト・ブロックセット」を提供している。こうした開発環境をサポートすることにより、従来行われてきたHDLによるRTLベースの設計手法に比べて、複雑な浮動小数点アルゴリズムの実装と検証を短時間で、かつ容易に行うことができるようになった。

 Simulinkには、MathWorks社が用意している標準的なライブラリ(ブロックセット)がある。それとは別に、Simulinkで設計・検証されたデータを、アルテラ製のFPGA開発ツール「Quartus® II」 向けに出力するためのDSP設計ツール「DSP Builder」をオプションで追加することができる。このDSP Builderには、固定小数点向けの「アルテラ DSP Builder ブロックセット」と、浮動小数点をサポートする「アルテラ DSP Builder アドバンスト・ブロックセット」と呼ぶ2種類のライブラリがある。また、DSP Builderは、アルテラ製FPGAに最適化されたRTLコードや、シミュレーション用のテストベンチを出力する機能を備えている。

 MathWorks社側でも、MATLAB/Simulinkで設計したデータをロジック設計用に汎用のRTLコードを出力するための機能を提供しているが、アルテラ製FPGA用に特化されたDSP Builderの利点は、実装するデバイスの構造に最適化されたRTLコードが自動的に出力される点である。一例だが、汎用的なツールでは、加算器とシフターを組み合わせてさまざまな関数を実現することが一般的となっている。デバイス側も、これまではコスト面などから、加算器とシフターを組み合わせて、さまざまな関数を実現する構造となっていた。

 これに対して、アルテラ製FPGAには十分な個数の乗算器がチップに実装されており、DSP Builderはそのリソース(乗算器)を有効活用できるように工夫されている。例えば、アルテラ DSP Builder アドバンスト・ブロックセットでは、各関数がライブラリ化されているため、FPGAに浮動小数点演算回路を実装した際に、加算器とシフターを組み合わせて関数を実現した場合に比べて、より高い性能を達成できる。しかも信号遅延など性能の予測も容易となる。

 最新のDSP Builderに追加されたアドバンスト・ブロックセットには、ソフトウェアのプログラミング用の「math.h」に含まれている関数と同等のハードウェアがライブラリとして含まれている。また、DSP Builderには浮動小数点のための回路技術として、個別の演算ブロック同士を自動的に配線するための「フューズド・データパス・テクノロジ」が統合されている。これによって、設計者が設定したシステムレベル・デザイン制約に適合するように、パイプライン化されたステージおよびレジスタを自動的に生成することができる。

 さらに、浮動小数点演算で精度の仕様を設計途中で変更しなければならない場合でも、モデルをいったん作成してしまえば、「単精度か倍精度か」、「固定小数点か浮動小数点か」を設計途中で変更したり、設計後に修正したりすることが簡単にできる。こうした仕様変更の容易さはモデルベース設計の大きな利点でもある。さらに、ハードウェア設計では記述するのが難しかった、繰り返し演算を行うループ制御ブロックの実装も、モデルベース設計では容易に行える。

DSP Builderの設計フロー

 大まかなDSP Builderの設計フローを図1に示す。上部がMATLAB/Simulink側でモデル作成やシステム・シミュレーションなどを実行する。下部がQuartus II 側で、FPGAへの実装やRTLシミュレーションを行う。

図1:DSP Builderの設計フロー
図1:DSP Builderの設計フロー
[画像のクリックで拡大表示]

 ざっくりとした設計の手順を紹介する。まず、Simulink上でDSP Builderのアドバンスト・ブロックセット・ライブラリのIPやプリミティブ・ファンクションを組み合わせてモデルを作成する。次に、そのモデルを実装したいFPGA製品ファミリ(アルテラ製品であればStratix Vなど)やデバイスのスピードグレードなどをプルダウン方式で選択し指定することができる。その後、希望する動作周波数を設定する。この際、システム性能が期待値となるように、必要に応じてパイプラインレジスタがツール側で自動的に挿入される。この機能がDSP Builderの大きな特徴の1つでもある。もちろん、設計者が手動でパイプラインレジスタを挿入することもできる。

 MATLAB/Simulink側で設計、検証が完了すると、Quartus II 向けにHDLで記述されたRTLコードを出力することができる。それ以降の設計工程は、FPGA(ハードウェア)設計者にもなじみのあるQuartus IIを用いて、論理合成や配置配線およびシミュレーションなどを行うフローとなる。

高い性能と効率で、複素数浮動小数点データパスを実装

 最後に、第三者機関であるBerkeley Design Technology社(BDTI)が実施したアルテラのFPGA浮動小数点DSP設計フローに対する分析についてその概要を紹介する。このレポートの中で、BDTIはアルテラDSP Builderアドバンスト・ブロックセット・ツール・フローを使用して、複素数データ型の浮動小数点コレスキー・ソルバのデザイン例を検証し、アルテラの浮動小数点デザイン・フローの効率と性能を評価した。表1は構成ごとのリソース使用量とクロック速度についてのデータである。表2には7つの構成ごとにコレスキー・ソルバ実装の性能を示す。

表1:構成ごとのリソース使用量とクロック速度
表1:構成ごとのリソース使用量とクロック速度
[画像のクリックで拡大表示]
表2:構成ごとのコレスキー・ソルバ性能
表2:構成ごとのコレスキー・ソルバ性能
[画像のクリックで拡大表示]

 これらの分析結果から、アルテラの浮動小数点デザイン・フローを用いると、従来に比べてはるかに高い性能と効率で、複素数浮動小数点データパスを実装することが可能であることがわかった。分析の詳細はホワイトペーパー「アルテラのFPGA浮動小数点DSPデザイン・フロー~第三者機関による分析~」 を確認いただきたい。

まとめ

 本連載では、拡大する浮動小数点DSP用途と、FPGAへの浮動小数点DSP実装について分かりやすく述べてきた。28nm FPGAで新たにサポートされた可変精度DSPブロックの活用と、モデルベース設計についての理解を深めていくことで、DSPエンジニアやFPGA設計者は、新たなFPGAソリューションを手に入れることができることを分かっていただけたろうか。より詳細な情報を入手したい場合は、アルテラのWebキャスト(英語版)「Implementing Floating-Point DSP in an FPGA」を参照いただきたい。

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

目次