...

FPGA で DSP アルゴリズムを インプリメント

by user

on
Category: Documents
5

views

Report

Comments

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
Fly UP