Main Content

プログラミング可能な FPGA 用 FIR フィルター

この例では、プログラミング可能なハードウェア用 FIR フィルターの実装方法を示します。メモリ形式のインターフェイスを使用して係数を内部レジスタに読み込むことで、必要とされる応答に対してフィルターをプログラムすることができます。

この例では、それぞれ異なる応答をもつ 2 つのフィルターのバンクを実装します。どちらのフィルターも、係数の長さと対称性は同じです。このような係数のパターンにすることにより、ブロックは両方のフィルターに対して同じ方法で対称係数の乗算器を共有することができます。同じフィルター ハードウェアを新しい係数でプログラムして、別のフィルター応答を得ることができます。

プログラミング可能 FIR フィルターのモデル化

この例では、2 つの FIR フィルターを実装します。1 つはローパス応答、もう 1 つはハイパス応答をもちます。関数 InitFcn ([モデル プロパティ]、[コールバック]、[InitFcn]) で係数を指定します。

Programmable FIR(Memory Interface) サブシステムには、[係数のソース] パラメーターが Input port (Memory interface) に設定された Discrete FIR Filter ブロックが含まれています。この構成により、フィルターに係数を書き込むことができるメモリ形式の端子セットが有効になります。まず、Host Behavioral Model サブシステムがローパス係数を FIR フィルターに読み込みます。モデルは、最初の係数の書き込みが完了するまで、入力チャープ サンプルを遅延させます。次に、Host Behavioral Model サブシステムがハイパス係数を読み込みます。

フィルターに係数が書き込まれている間、フィルターはいかなる入力データ サンプルも無視します。このモデルは、係数の変更を行っている間、入力データの送信を停止します。出力有効信号を使用して、出力データが有効になる時点を判定することもできます。

このモデルの Discrete FIR Filter ブロックは、完全に並列な直接型シストリック アーキテクチャを使用するように構成されています。ブロックが並列転置アーキテクチャまたはシリアル アーキテクチャを使用する場合、ブロックはメモリ形式のプログラミング可能な係数の使用もサポートします。[Coefficient prototype] パラメーターは係数ベクトルの 1 つに設定されます。この設定により、ブロックは対称性およびゼロ値係数の位置に基づいてハードウェア リソースを最適化できます。プロトタイプを指定する場合、すべての入力係数セットは、対称性およびゼロ値係数の位置がプロトタイプと一致しなければなりません。プロトタイプを使用してフィルター リソースを最適化する方法の詳細については、Optimize Programmable FIR Filter Resources (DSP HDL Toolbox)を参照してください。

Simulink のシミュレーション結果

入力データと出力データ、および係数インターフェイスの信号を表示するには、[Scope] を開いてモデル例を実行します。

ロジック アナライザーの使用

ロジック アナライザーでモデルからの信号を表示することもできます。ロジック アナライザーを使用すると、1 つのウィンドウで複数の信号を表示して、信号の遷移を見つけたり、信号間のレイテンシを測定したりできます。

モデルのツールストリップからロジック アナライザーを起動します。

モデルには、観察のためにロジック アナライザーに追加されたいくつかの対象信号 (入力係数、書き込みアドレス、書き込みイネーブル、書き込み完了、フィルター入力、フィルター出力、および有効な信号) が既に含まれています。

ロジック アナライザーの表示は波形ごとまたはデバイダーごとに制御することもできます。個々の波形やデバイダーを変更するには、波形またはデバイダーを選択して [波形] タブをクリックします。ロジック アナライザーにおける便利な可視化モードとして、Analog 形式の表示があります。

詳細については、ロジック アナライザーを参照してください。

HDL コードとテスト ベンチの生成

このモデル例の HDL コードを生成するには、HDL Coder™ のライセンスが必要です。このコマンドを使用して HDL コードを生成します。

systemname = [modelname '/Programmable FIR(Memory Interface)'];
makehdl(systemname);

このコマンドを使用して HDL シミュレーションの結果と Simulink シミュレーションの動作を比較するテスト ベンチを生成します。

makehdltb(systemname);

参考

| (DSP HDL Toolbox)

関連するトピック