1. 概要
今度はハイパスフィルターを試す。係数は、山口晶大, (2006), 『はじめてのDSP活用大全』, CQ出版, pp.155-160を参考に、中心周波数のみを考慮して簡易的に設定する。帯域は制御できない。ここでは通過帯域の中心をナイキスト周波数にしてハイパスフィルターを構成した。
前回と同じく、タップ数は16、係数は16ビット長(signed
)、サンプリング周波数は40 kHzにした。
2. 簡易ハイパスフィルターのためのVHDL
下のVHDLをコンパイルしてMAX10 FPGAに書き込む。
ファイル一式: https://github.com/ti-nspire/VHDL_for_Quartus_Prime/tree/main/fir_filter_experiment_hi_pass_simple
係数は、トップレベルエンティティfir_filter_experiment.vhd
の下の部分に記述する。
constant coeffs_list : coefficient_array := (
16b"1",16x"FFFF",
16b"1",16x"FFFF",
16b"1",16x"FFFF",
16b"1",16x"FFFF",
16b"1",16x"FFFF",
16b"1",16x"FFFF",
16b"1",16x"FFFF",
16b"1",16x"FFFF"
);
-- 係数は全部+1または-1にしたので乗算でビット幅は変化しない。
-- 計算結果に必要なビット数はceil(log2((10ビット最大値1023) * (タップ数16))) = 14
constant BITS_NEEDED : natural := 14;
3. 全体の接続図
このときと同じ。
4. 実行結果
ファンクションジェネレーターから正弦波を入力して出力の周波数特性を見てみる。一往ハイパスの特性を示しているが、ナイキスト周波数のところはグチャグチャになる。