Main Content

このページは前リリースの情報です。該当の英語のページはこのリリースで削除されています。

FPGA 用マルチチャネル FIR フィルター

この例では、ハードウェア用の複数の入力データ ストリームをもつ離散 FIR フィルターを実装する方法を示します。

多くの DSP アプリケーションでは、複数のデータ ストリームが同じフィルターによってフィルター処理されます。簡単なソリューションは、各チャネルに対して別々のフィルターを実装することです。複数のチャネルで 1 つのフィルターの実装を共有することで、より効率のよい構造を作成できます。結果として得られるハードウェアでは、単一チャネル フィルターに使用されるクロック レートと比較して、より高速なクロック レートが必要になります。

マルチチャネル FIR フィルターのモデル化

modelname = 'dspmultichannelhdl';
open_system(modelname);

このモデルには 2 チャネルの FIR フィルターが含まれています。入力データ ベクトルには、異なる周波数をもつ正弦波信号の 2 つのストリームが含まれています。入力データ ストリームはローパス フィルターで処理されます。このフィルターの係数は [モデル プロパティ] のコールバック関数 InitFcn で指定されています。

完全に並列なアーキテクチャを Discrete FIR Filter ブロックに選択し、複数チャネルでのリソース共有を有効にします。

systemname = [modelname '/Multichannel FIR Filter'];
blockname = [systemname '/Discrete FIR Filter'];
set_param(blockname,'FilterStructure','Direct form symmetric');
hdlset_param(blockname,'Architecture','Fully Parallel');
hdlset_param(blockname,'ChannelSharing','On');

あるいは、これらの設定を [HDL ブロック プロパティ] メニューで指定できます。これには、ブロックを右クリックして [HDL コード][HDL ブロック プロパティ] を選択してアクセスします。

シミュレーション結果

モデル例を実行し、スコープを開いて 2 つのデータ ストリームを比較します。

sim(modelname);
open_system([modelname '/Scope']);

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

このモデル例の HDL コードを生成するには、HDL Coder™ のライセンスが必要です。このコマンドを使用して、マルチチャネル FIR フィルター サブシステムの HDL コードを生成します。リソース使用レポートを有効にします。

makehdl(systemname,'resource','on');

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

makehdltb(systemname);

リソースの利用状況の比較

共有ありの場合と共有なしの場合のリソース使用を比較するには、チャネル間でリソースの共有を無効にし、HDL コードを再度生成してから、リソース使用レポートを比較します。

hdlset_param(blockname,'ChannelSharing','Off');
makehdl(systemname,'resource','on');