Comments
Description
Transcript
FPGA で DSP アルゴリズムを インプリメント
DIGITAL SIGNAL PROCESSING FPGA で DSP アルゴリズムを インプリメント QAMシステム デザインを例にした ザイリンクスSystem Generator for DSPの詳細 Sabine Lam DSP Technical Marketing Engineer Xilinx, Inc. [email protected] 今 日、DSP市 場 に お け るFPGAの 役 割 はよく知られています。率直に言って、極 めて高速のDSPアプリケーションを開発で きる方法はありません。以下の2つの技術 を組み合わせることが容易でないにも関わ らず、DSP設計者は基本的にMathWorks 社のMATLABTMやC/C++を使用してシス テ ム を 記 述 し、FPGA設 計 者 はVHDLや VerilogTMを使用します。これら2つの技術 に共通するアプローチ仕方は、通常、ブロッ ク図からスタートするということだけです。 DSP設計者とFPGA設計者の持つ背景 は全く異なっていますが、それでも最適な 製品を開発するには両者の協力が不可欠で す。両者の主眼点や専門技術には共通する 部分が少ないので、意思疎通に支障をきた すことも珍しくありません。設計チームは、 FPGAのインプリメンテーションがDSP設 計者の求める元々の仕様に完全に適合して いることを確認しなければなりません。通 常は、FPGAで可能な限り最良のインプリ メンテーションを実現するため、DSPアル ゴリズムを変更する必要が生じます。この ためには、シミュレーション結果、デザイ ン サイズ、デザイン性能、DSPアルゴリズ ムの変更、インプリメンテーションの結果 などに関する情報を、設計プロセス全体を 通じて定常的に交換し合う必要があります。 31 DIGITAL SIGNAL PROCESSING このツールにより、プッシュボタンで高レベルの抽象化を行い、 自動的にFPGAにコンパイルできます。 設計チーム全体の要求を満足するツールと言語を1つに決めるの QAMシステム設計例の概要 は容易なことではありません。予算が少なくターンアラウンドタイム この例では、QAMシステムの送信側から始めます。サブシステム (TAT)が短い場合は特にそうです。単一のソースコードを使用した は入力ソースからデータを受け取ります。ここでは順方向誤り訂正 場合、チーム全体が認識している環境よりも良いものとは一体何な 法(Forward Error Correction、FEC)が適用され、変調前にデータ のでしょうか。 に付加同期マーカ(attached synchronization marker、ASM)が 挿入されます。変調されたデータはチャネル モデルに送られます。 図 1 QAM システム (System Generator モデル ) 信号には、ここでシンボル間干渉、 パケット フレーミングとFECを使用したテレメトリ チャネル用QAMシステム ドップラ成分、付加白色ガウス ノ イズなどが生じます。レシーバに Out1 dbl fpt Sine Wave din In1 fpt dbl i_out In1 Transmitter: FEC and QAM Symbol Mapping From dbl fpt i_in fpt dbl q_out 1 In3 0.214 System Generator Out2 Out1 In1 [q_in] dbl fpt q_in Out2 Out3 In2 元が行われます。ASMは、誤り訂 正を行う前に復調データから除去 [q_in] PicoBlazeTMマ イ ク ロ コ ン ト Channel Model Phase Offset イコライゼーションと搬送波の復 されます。 Out4 From1 おり、これにより適応チャネルの [i_in] In2 Out2 [i_in] は16-QAM復調器が組み込まれて Out1 Out5 Out6 QAM Receiver Original Subsystem ローラはリードソロモン デコーダ fpt dbl cdeblk_indx1 fpt dbl rs_output fpt dbl dout_vld fpt dbl quad_sel fpt dbl start fpt dbl rs_input 0 を制御して受信パケットのフレー ム アライメントを維持し、デマッ ピング時のQAM-16象限基準を周 期的に調整します。トランスミッ タとレシーバはいずれもFPGAを ターゲットにしますが、チャネル はシミュレーションと検証に使わ れるSimulinkモデルです。 System Generatorのすべての 機能がこのデザインに使われているわけではありませんが、ザイリン System Generator Xilinx® System Generatorは、FPGAによるハードウェア設計 クスのブロックセット要素、レガシーのHDLコード、PicoBlazeプロ セッサ、ハードウェア検証などが使用され、強力な機能を組み合わ を容易にするシステム レベルのモデリング ツールです。System せた良い例です。1つの環境内で複雑なデザインをインプリメントし GeneratorはMathWorks社のSimulinkTMをさまざまな方法で拡張 て検証する、極めて的確かつ効率的で迅速な方法です。 し、ハードウェア設計に適したモデリング環境を提供します。 このツールを使用すれば、高レベルの抽象化を行い、ボタン1つで System Generatorを使用したデザインのインプリメンテーション 自動的にFPGA用設計資産にコンパイルすることができます。また、 System Generatorによる設計は、常に、Simulinkの倍精度デー 低レベルの抽象化を行うことにより、基本となるFPGAリソースへ タをザイリンクスの固定小数点形式に変換するゲートウェイで始ま アクセスし、極めて効率的なFPGAデザインを構築することが可能 り、また終了します。これらのゲートウェイはデザインの境界を定義 です。このツールは、あらかじめ定義されたザイリンクスのブロック しますが、トップレベル デザイン用にI/Oポートに変換したり、より セット ライブラリとともに提供されますが、多くのFPGA設計者が 高レベルのシステムにインポートするためI/Oインターフェイスに変 習熟している他の言語を使用することもできます。さらに、システム 換したりすることも可能です。これらのゲートウェイ間では、ザイリ レベルで設計を行い、同じ環境内でシミュレーション、インプリメン ンクスのライブラリ ブロックセットのブロックを使用するか、ユー テーション、検証を行うことも可能です。通常はHDLコードを記述 ザが独自に作成したコードをブラック ボックス インターフェイスを する必要は全くなく、ザイリンクスのISEツールを使う必要もありま 通じてインポートする必要があります。 せん。 ザイリンクスのブロックセット ライブラリは、基本要素、算術演 System Generatorによる設計フローの特徴を示すために、直交 算機能、DSP機能、通信ブロック、制御ロジック、その他の有用な 振幅変調器(Quadrature Amplitude Modulator、QAM)のシステ 要素で構成されています。各ブロックは完全にパラメータ化されて ム設計例を提示します(図1) 。この例は、テレメトリ チャネルのコー いますが、MATLABの作業空間と緊密に統合化されているので、そ ディング仕様(CCSDS 101.0 B-5)に関する宇宙データシステム諮 の作業空間内で定義された複雑な式や変数に基づいたパラメータを 問委員会(Consultative Committee for Space Data Systems、 入力することができます。たとえば次のような式を考えてみます。 CCSDS)の策定仕様に従ってインプリメンテーションされたもの です。 acc_nbits = ceil(log2(sum(abs(coef*2^coef_ width_bp)))) + data_width + 1 この式は、フィルタに要求される精度をフィルタ タップ(係数) 、 32 DIGITAL SIGNAL PROCESSING タップ数、係数幅の関数として定義し 図 2 QAM 復調器の入力 ( 歪みチャネル ) ています。これらは設計時に固定され 軟なテストベンチ環境を作ることができ ます。この機能の便利な点は、インプリ るので、ハードウェア リソースをフィ メンテーションと検証の設計フェーズを ルタ仕様に合わせて変更することがで 同じ環境で行えることです。QAMシス きます。係数を変更しても出力精度は テム設計の場合もこれと同じで、デザイ 自動的に再計算されるので、デザイン ン テスト ベンチはSimulinkとSystem を変更する必要はありません。 Generatorの各ブロックの組み合わせを このような 機 能は、MATLABと緊 使ってインプリメントされます。 密に統合化されたツールでのみ可能 これにより、あらゆる重要な検査ポイ です。 ントで、DSP設計者が理解しやすい形 ザイリンクスのブロックセット ライ (正弦波やコンスタレーション)でデザイ ブラリはあらゆるユーザのニーズに応 ンの機能を検証することができます。ま えられるわけではなく、複雑なステー た、これとまったく同じテストベンチを トマシンや複雑なレガシーコードなど 自動的に生成して、HDLシミュレーショ のように、HDLの インプリメン テ ー 図 3 QAM 復調器の出力 ( コンステレーション ) ン ツールにエクスポートすることもでき ションを使用するほうが適している機 ます。この場合は、FPGA設計者が理解 能 も あ り ま す。System Generator しやすい形(バイナリ波形)がとられます。 のブラックボックスを使 用すれば、 SimulinkやHDL環境で同様の機能を確認 VHDL、Verilog、EDIFネットリストを するための「ゴールデン データ」も自動的 設計に使用することができます。 に生成されます。 このQAMの設計例では、ザイリン このQAMの例では、チャネル モデル クスのブロックセット ライブラリにあ の出力における歪みチャネルの表示(図2) らかじめ含まれているFECブロックの と、QAM復調器の出力における16点の 1つ(リードソロモン デコーダまたは コンスタレーションの表示(図3)を選び ビタビ デコーダ)を、ブラックボック ました。 スを通じて自前のHDLインプリメン テストベンチとゴールデン データの自 テーションに置き換えることもできま 動生成機能が、他のデザインフローに比 す。ブラックボックスは他のSystem 較して時間を大幅に短縮することに注目 Generator ブロックと同様に機能しま してください。 す。ブラックボックスはデザインに接 図 4 System Generator の GUI インターフェイス 続されてシミュレーションに使用され、 デザインのインプリメントが完了した ら、System Generator トークンを通じ ハードウェアにコンパイルされます。 てネットリストを作成することができま System Generatorがブラックボッ す (図4) 。 クスをコンパイルする場合、インポー ボ タン をクリックす るだ け でVHDL トされたモジュールや関連ファイルは ネットリストを作成し、それを合成、配 自動的に周囲のネットリストに組み込 置・配線することを決めることができま ま れ ま す。System Generatorは、 す。また、直接ビットストリームを生成 HDLシミュレータの起動、必要に応じ したり、ハードウェア デモンストレー た追加HDLの生成(HDLテストベンチ ション ボードをターゲットとすることも と類似) 、HDLのコンパイル、シミュ できます。 レーション イベントのスケジューリン ハードウェア コシミュレーションを選 グ、SimulinkとHDLシミュレータ間の 択すると、FPGAで実行されるデザイン データ交換処理などを自動的に行うこ を直接Simulinkによるシミュレーション とにより、ブラックボックスをシミュ に組み込むことが可能です。ハードウェ レーションします。これを「HDLコ シ ア コシミュレーションのコンパイル ター ミュレーション」 と呼びます。 この時点で、MATLABからゲートあ 図 5 位相オフセット用スライダ バー ゲットは自動的にビットストリームを作 成し、これをブロックに対応させます。 るいはCからゲートへの変換を行う適 Simulinkでデ ザ インをシミュレーショ 切なツールによって過去にコンパイル ンすると、コンパイルされた部分の結果 されたMATLABやCコードを、ザイリ はハードウェアで確かめられます。これ ンクスのブラックボックスへ組み込む により、コンパイルされた部分を実際の ことも考えられます。 ハードウェアでテストでき、シミュレー ションに要する時間を大幅に低減でき シミュレーションと検証 ます。 SimulinkブロックをSystem Generator System Generatorは、XtremeDSPTM モデルと組み合わせれば、堅牢で柔 キットなどの特別なインターフェイスの 33 DIGITAL SIGNAL PROCESSING サポートに加え、JTAGとパラレル ケーブルIVを使ってFPGAハード 中にインタラクティブに制御することができます。スライダ バーを ウェアと通信を行う汎用インターフェイスも備えています。これは、 使用すれば変調された信号の搬送波の位相がシフトしますが(図5)、 JTAGが広く普及していることを利用して、System Generatorが スライダを大きく動かし過ぎるといつもきまってレシーバのロック 持つHardware In the loop Simulation機能を他の多くのFPGAプ が失われてしまいます。ドップラ成分に対するこのようなインタラク ラットフォームに拡張するものです。 ティブ制御は、単純ながらレシーバの制御システムの機能をテスト また、System Generatorを使用すれば、ユーザの開発ボード上 するための強力な方法です。 でハードウェア コシミュレーションを行うこともできます。設計プ 設計者は、数百万に及ぶサンプルを必要とする複雑なデザインを ロセスの初期段階で設計の決定や変更もSimulink環境から直接実行 シミュレーションする簡単な方法を利用できるようになりました。 し、設計サイクルを短縮することができます。 ループ内でのハードウェア コシミュレーション機能なしにこのよう ハードウェアの加速化 です。数ある機能の中でも、これはSystem Generatorだけが提供 なデザインをシミュレーションするには、数ヶ月にも及ぶ時間が必要 QAMシステムの複雑さとサイズによって、シミュレーション時間 できる機能です。他のDSP設計手法では、複数の設計環境内でデザイ は長くなります。シミュレーション時間を短縮してこのシステムの ンの検証を行わなければなりません。このような込み入ったプロセス 機能を確認するため、トランスミッタとレシーバを2つの独立した は、シミュレーション時間を極めて長いものにしてしまいます。 FPGAボードにダウンロードし、システム ジェネレータのハードウェ ア コシミュレーション機能を使用して、データをSimulinkにフィー 結 論 ドバックすると、10倍から100倍の速度でSimulinkからシステム全 System Generatorは、多くの設計者が理解できる環境でアルゴ 体をシミュレーションすることが可能となり、FPGAの機能を直ちに リズムの開発、インプリメンテーション、シミュレーション、検証を 評価することができます。 行うことができる完成されたツールです。他にも設計フローはありま すが、HDLコシミュレーション、ハードウェア コシミュレーション、 ハードウェアをインタラクティブに制御 ChipScopeTM ProツールとEDK(エンベデッド開発キット) との統合 また、シミュレーション実行中にFPGAをアクセスすることによ 機能を備えたツールは他にありません。これらの機能は、ザイリンク り、さらに一歩進んだ設計を行うことができます。このQAMの例で スのSystem Generator for DSPでだけ使用することのできる、極 は、チャネルが作り出すドップラ成分の大きさを、シミュレーション めて価値の高いものです。 34