不韋 呂
/
SDR_AM_Rx_CIC
AM中波放送用SDR.CICフィルタのみを使用.CQ出版社「トランジスタ技術」誌,2021年4月号に掲載
Diff: SDR_Library/FirFastSymmetry.hpp
- Revision:
- 2:4bec6b2be809
- Parent:
- 1:30d9fb51dec1
--- a/SDR_Library/FirFastSymmetry.hpp Mon Sep 23 07:32:10 2019 +0000 +++ b/SDR_Library/FirFastSymmetry.hpp Sat Aug 29 11:19:03 2020 +0000 @@ -1,12 +1,12 @@ -//----------------------------------------------------------------- +//---------------------------------------------------------------------------- // SDR で使う FIR フィルタ,係数:対称 // ● 処理の高速化のため,入力信号のバッファのサイズを 256,データを指す // インデックスを uint8_t 型としてリング・バッファを実現している. // ● さらに,係数が対称であることを利用して,先に x[k] + x[ORDER-k] と // いう加算を行ってから,係数の乗算を行うようにした. // -// 2019/03/03, Copyright (c) 2019 MIKAMI, Naoki -//----------------------------------------------------------------- +// 2020/07/28, Copyright (c) 2020 MIKAMI, Naoki +//---------------------------------------------------------------------------- #include "mbed.h" @@ -18,10 +18,10 @@ { public: // コンストラクタ - // order フィルタの次数 + // order フィルタの次数,次数は偶数とする // hk[] フィルタの係数 - FirFastSymmetry(int order, const float hk[]) - : ORDER_(order), hm_(hk), index_(255) + FirFastSymmetry(uint8_t order, const float hk[]) + : ORDER_(order), ORDER2_(order/2), hm_(hk), index_(255) { for (int k=0; k<SIZE_; k++) un_[k] = 0; } // 入力信号をバッファへ書き込む @@ -33,23 +33,23 @@ __IO uint8_t ptrM = index_; __IO uint8_t ptrP = index_ - ORDER_; float acc = 0; - for (int k=0; k<ORDER_/2; k++) + for (int k=0; k<ORDER2_; k++) acc += hm_[k]*(un_[ptrM--] + un_[ptrP++]); - acc += hm_[ORDER_/2]*un_[ptrM]; + acc += hm_[ORDER2_]*un_[ptrM]; return acc; } private: static const int SIZE_ = 256; // 入力信号のバッファのサイズ - const int ORDER_; // フィルタの次数 + const uint8_t ORDER_; // フィルタの次数 + const uint8_t ORDER2_; // フィルタの次数の半分 const float *const hm_; // フィルタの係数 float un_[SIZE_]; // 入力信号のバッファ __IO uint8_t index_; // 最新の入力信号を示すインデックス - // コピー・コンストラクタ禁止のため + // コピー・コンストラクタ,代入演算子の禁止のため FirFastSymmetry(const FirFastSymmetry&); - // 代入演算子禁止のため FirFastSymmetry& operator=(const FirFastSymmetry&); }; } -#endif // FIR_DIRECT_FAST_SYMMETRY_HPP +#endif // FIR_DIRECT_FAST_SYMMETRY_HPP \ No newline at end of file