FIR コンパイラ II MegaCore ファンクション簡易チュートリアル(MATLAB

ALTIMA Corp.
FIR コンパイラ II
MegaCore ファンクション
簡易チュートリアル(MATLAB 編)
ver.14
2016 年 2 月 Rev.1
ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション
簡易チュートリアル(MATLAB 編)
目次
1.
はじめに .........................................................................................................................................................3
2.
係数データの構築..........................................................................................................................................4
3.
係数データの取り込み.................................................................................................................................12
4.
フィルタ形態の指定 .....................................................................................................................................16
5.
入出力仕様の設定 ......................................................................................................................................19
6.
出力ビット幅の切り出しと端数処理 ............................................................................................................20
7.
回路規模および実装関連の設定 ...............................................................................................................21
改版履歴 ..............................................................................................................................................................26
ver. 14
2016 年 2 月
2/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
1. はじめに
この資料は、アルテラの FIR コンパイラ II MegaCore® ファンクション(以下、FIR コンパイラ II」と表記)を使
用したシンプルなデザインを構築する際の簡単な操作手順を参考用途として説明したものです。
FIR コンパイラ II は前世代の FIR コンパイラ MegaCore と異なり、係数データ生成機能の実装が省略され
たので、他のベンダ提供のフィルタ解析ツール等を使用して、ユーザ自身で所望のフィルタ係数を用意する必要が
あります。
この資料では、MathWorks® 社の数値解析ソフトウェア MATLAB® に付属しているフィルタ解析ツールを使用
して、係数データの生成フローを紹介します。
なお、この資料では使用している各開発ツールは、以下のバージョンです。
・ Quartus® II 開発ソフトウェア 14.0
・ MATLAB R2012b
ver. 14
2016 年 2 月
3/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
2. 係数データの構築
MATLAB を起動後、プロンプトから fdatool とタイプして、フィルタ解析ツールを起動します。
ver. 14
2016 年 2 月
4/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
以降、このフィルタ解析ツールに対して、以下の仕様を設定します。
フィルタ設計仕様
・
フィルタの形態:
FIR フィルタ
・
フィルタの種類:
ローパス・フィルタ
・
カットオフ周波数 (fc) :
8kHz
・
サンプリング周波数 (fs):
100 MHz ( = 100000 kHz)
・
窓関数:
ハニング窓(ハン窓)
・
タップ数:
37
最初に、応答タイプを ローパス に指定します。
FIR にチェックを入れて、プルダウン・メニューより ウィンドウ を指定します。
ver. 14
2016 年 2 月
5/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
ウィンドゥ を指定した後、新たに オプション 欄が画面内に表示されます。
ウィンドウ のプルダウン・メニューより、ハン を選択します。
フィルター次数 欄の 次数指定 に 38 を指定します。
周波数仕様 欄では、単位 をプルダウン・メニューから kHz を選択し、Fs 欄に 100000 を入力し、Fc 欄には
8 を入力します。
ver. 14
2016 年 2 月
6/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
画面最下段の フィルタの設計 ボタンをクリックします。
これまで設定した内容は、画面内の 振幅応答 (dB) 欄に特性図として反映されます。
今回指定した窓関数では、対称性を考慮して、最終的に次数は 37 に換算されていることに注意してください。
ver. 14
2016 年 2 月
7/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
解析(A) メニューから フィルター係数 を選択すると、ツールが算出したフィルタ係数が表示されます。
ファイル(F) メニューから エクスポート(E) を選択すると、エクスポート 画面が起動します。
エクスポート 画面にて、出力形式 を 係数 に選択し、任意の 変数名 を指定します。
(この資料では、デフォルトの Num を適用します。)
エクスポート ボタンをクリックします。
ver. 14
2016 年 2 月
8/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
MATLAB のメイン画面の ワークスペース 欄に変数名 Num が表示されます。
変数名 Num をハイライト後、ダブル・クリックすると、変数エディタ が起動します。表計算形式でフィルタ係数が
リストアップされていることが確認できます。
ver. 14
2016 年 2 月
9/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
MATLAB の 変数エディタ でリストアップされている係数データの全てを、テキスト・エディタにコピー & ペー
ストします。(この資料では、テキスト・エディタは、Windows の メモ帳 を使用しています。)
テキスト・エディタ(メモ帳)にペースト
テキスト・エディタにて、データ間をハイライトして CTRL キーと C キーをタイプした後、この部分をカンマ ( , )
に一括置換します。係数データ間が全てカンマ ( , ) で区切られていることを確認できたら、係数データ用テキス
ト・ファイルとして保存します。
ver. 14
2016 年 2 月
10/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
係数データ間が全てカンマ ( , ) で区切られていることを確認できたら、係数データ用テキスト・ファイルとして保
存します。
この資料では、ファイル名 coeff_fir_8khz_100Mhz_matlaab_fda_gen.txt として保存します。
Before
After
※ FIR コンパイラ II は、係数データをカンマで区切ったテキスト・ファイルを係数データとして認識します。
※ カンマで区切ったテキスト・ファイルは、Excel 表計算ソフトウェア等を使用した場合、CSV(カンマ区切り)と
して、拡張子 .csv ファイルで保存することもできます。
ver. 14
2016 年 2 月
11/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
3. 係数データの取り込み
Quartus II 開発ソフトウェアのプロジェクトを構築します。この資料では、プロジェクト名 top_design に対して、
最上位階層のデザインを回路図エディタで作成し、プロジェクト名と同じファイル名 top_design.bdf を適用してい
ます。
IP Catalog 欄に FIR とタイプすると、ツールが該当する IP Core を検索して、FIR Compiler II をリストアップ
します。
① “ FIR ” と入力
② ツールが検索
ver. 14
2016 年 2 月
12/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
FIR Compiler II をハイライトした後、ダブル・クリックすると、Save IP Variation 画面が起動します。
IP Core として生成させる HDL 言語のファイル名(インスタンス名に該当)と HDL 言語の種類を指定して、
OK ボタンをクリックします。
この資料では、インスタンス名を fir_inst とし、HDL 言語として VHDL を選択しますので、ファイル名には、
fir_inst.vhd を指定します。
ダブル・クリック
ver. 14
2016 年 2 月
13/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
FIR コンパイラ II のパラメータ設定画面が起動したら、Browse ボタンをクリックして、係数データを指定します。
この資料では、係数データとして coeff_fir_8khz_100Mhz_matlaab_fda_gen.txt を選択します。
ver. 14
2016 年 2 月
14/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
Apply ボタンをクリックすると、ツールが係数データを取り込みます。
(特性図がデフォルトから、新たに取り込んだ内容に切り替わります。)
ver. 14
2016 年 2 月
15/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
4. フィルタ形態の指定
Filter Type には、プルダウン・メニューから Single Rate を選択します。この資料の例では、補間フィルタや間
引きフィルタとしては使用しないので、Interpolation Factor と Decimation Factor は、それぞれ 1 に設定します。
また、L-th Band Filter は All taps を選択し、チャネル数 Number of Channels は 1 に設定します。
Coefficient Option 欄の Coefficient Scaling は Auto を選択し、Coefficient Data Type は Signed Binary を
選択します。
ver. 14
2016 年 2 月
16/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
MATLAB のフィルタ解析ツールが生成した係数データは、倍精度の浮動小数点が適用されています。これに
対して、FIR コンパイラ II では、係数データを固定小数点として FPGA に実装する仕様なので、浮動小数点を
固定小数点に 「スケーリング」 させる必要があります。
周波数特性の青線 Original Frequency Response は、MATLAB のフィルタ解析ツールから取り込んだ浮動小
数点の係数データを元に表示されています。
Coefficient Bit Width に対しては、デフォルトで精度 8 ビットの固定小数点の係数データを元に算出した特性
が、赤線の Fixed Frequency Response で表示されていますが、ビット幅を増やして固定小数点の精度を浮動小数
点に近づけるように、手作業で、赤線を青線に近づけながらスケーリングを調整します。
Coefficient Bit Width :8 に設定 ⇒ 係数の精度が固定小数点 8 ビットの場合(デフォルト)
Coefficient Bit Width :10 に設定 ⇒ 係数の精度が固定小数点 10 ビットの場合
ver. 14
2016 年 2 月
17/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
Coefficient Bit Width :12 に設定 ⇒ 係数の精度が固定小数点 12 ビットの場合
Coefficient Bit Width :15 に設定 ⇒ 係数の精度が固定小数点 15 ビットの場合
この資料では、係数の精度が固定小数点 15 ビットでスケーリングした場合の特性を採用します。
Frequency Response Display の Show Coefficient Bank は、デフォルトの 0 を選択にします。
ver. 14
2016 年 2 月
18/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
5. 入出力仕様の設定
Input/Output Options タブを選択します。
この資料では Input Options 欄の Input Data Type に Signed Binary を選択し、Input Bit Width には 12
を指定します。
この状態では Output Options 欄の Output Full Bit Width がグレーアウトされた状態で 33 を示しているこ
とが確認できます。この値は、前述のスケーリングを手作業で実施した際、Coefficient Bit Width を 15 に指定し
たときにツールが自動算出したビット幅であり、出力データの分解能が最大(高精度)となります。
Coefficient Bit Width の設定を変更すると、この値も連動して変更されます。
この資料では、Output Data Type を Signed Binary に指定します。
ver. 14
2016 年 2 月
19/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
6. 出力ビット幅の切り出しと端数処理
出力データに対して、必要に応じて、切り捨てや丸め処理等の端子処理や、ビットの切り出しを行い、冗長なデ
ータ本数を削減することができます。この資料では、33 ビットの出力データの上位 12 ビットを出力端子に反映さ
せる例を説明します。その際、下位の 21 ビット側には丸め処理(Round)を行います。
また、飽和処理(Saturating)を最上位ビットに適用して、出力データの上限値を指定する例を説明します。
出力ビットの切り出し
33 ビットの内、下位 21 ビットを削って、残りの上位 12 ビットを出力に反映させるには、MSB Bits to Remove
を 0 に指定して、LSB Bits to Remove を 21 に指定します。この操作に連動して、グレーアウトされた状態でも、
Output Bit Width が 12 に自動的に変更されます。
端数処理
Output MSB Rounding を Saturating に指定して、上位ビット側の端数を飽和処理に設定します。
Output LSB Rounding を Rounding に指定して、下位ビット側の端数を丸め処理に設定します。
ver. 14
2016 年 2 月
20/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
7. 回路規模および実装関連の設定
Implementation Option タブを選択します。この資料では、シングル・チャネルのシングル・レート・フィルタとし
て使用しますので、Frequency Specification 欄の Clock Frequency (MHz) には 100 MHz、Input Sample Rate
(MSPS) には 100 MHz を入力して、FIR フィルタのサンプリング周波数 Fs = 100MHz の情報を与えます。
それ以外のパラメータについては、この資料では、デフォルトの値を適用します。
右下の Finish ボタンをクリックして、IP Core の HDL の生成を行います。
ver. 14
2016 年 2 月
21/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
HDL の生成が終了したら、Exit ボタンをクリックします。
Quartus II IP Files 画面が起動したら、Yes ボタンをクリックします。
※ この操作により、ツールが自動生成した HDL コードや SDC ファイル等の様々なファイル類がコンパイル
前に自動設定されます。
ver. 14
2016 年 2 月
22/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
最上位階層の回路図エディタ・デザイン上の任意の場所にマウス・ポインタを当てて、ダブル・クリックすると、
Symbol 画面が起動します。Libraries 欄 の Project フォルダからインスタンス(この資料では、fir_inst)を選択
して、OK ボタンをクリックします。
ダブル・クリック
最上位階層の回路図エディタ上に、インスタンスがシンボルとして表示されます。
ver. 14
2016 年 2 月
23/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
シンボルを選択した状態から、右クリックを行い、Generate Pins for Symbol Ports を選択します。
シンボルの周辺に、ポート(信号)が接続されていることが確認できます。
ポート(信号)が追加
ver. 14
2016 年 2 月
24/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
Processing メニューから、Start Compilation を選択して、フル・コンパイルを行います。
この資料を利用することで、係数生成の過程を含めて、FIR コンパイラ II を使用したデザインの一連の操作を
簡易的に実施することができます。
ver. 14
2016 年 2 月
25/26
ALTIMA Corp. / ELSENA,Inc.
FIR コンパイラ II MegaCore ファンクション 簡易チュートリアル(MATLAB 編)
改版履歴
Revision
年月
概要
1
2016 年 2 月
初版
免責およびご利用上の注意
弊社より資料を入手されましたお客様におかれましては、下記の使用上の注意を一読いただいた上でご使用ください。
1.
本資料は非売品です。許可無く転売することや無断複製することを禁じます。
2.
本資料は予告なく変更することがあります。
3.
本資料の作成には万全を期していますが、万一ご不明な点や誤り、記載漏れなどお気づきの点がありましたら、本資料を入手されました下記代理店までご一報いただければ幸いです。
株式会社アルティマ
ホームページ: http://www.altima.co.jp
技術情報サイト EDISON:
https://www.altima.jp/members/index.cfm
株式会社エルセナ
ホームページ: http://www.elsena.co.jp
技術情報サイト ETS
https://www.elsena.co.jp/elspear/members/index.cfm
:
4. 本資料で取り扱っている回路、技術、プログラムに関して運用した結果の影響については、責任を負いかねますのであらかじめご了承ください。
5. 本資料は製品を利用する際の補助的な資料です。製品をご使用になる際は、各メーカ発行の英語版の資料もあわせてご利用ください。
ver. 14
2016 年 2 月
26/26
ALTIMA Corp. / ELSENA,Inc.