AM中波放送用SDR.CICフィルタのみを使用.CQ出版社「トランジスタ技術」誌,2021年4月号に掲載

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers Cic3Stage.hpp Source File

Cic3Stage.hpp

00001 //-------------------------------------------------------------
00002 //  ダウンサンプリングで使う3段の CIC フィルタ用クラス
00003 //
00004 //  2020/08/02, Copyright (c) 2020 MIKAMI, Naoki
00005 //-------------------------------------------------------------
00006 
00007 #include "mbed.h"
00008 
00009 #ifndef CIC3_FILTER_CLASS_HPP
00010 #define CIC3_FILTER_CLASS_HPP
00011 
00012 namespace Mikami
00013 {
00014     class Cic3Stage
00015     {
00016     public:
00017         // コンストラクタ
00018         //      rate ダウンサンプリングの率,1/10 にダウンサンプリングする場合は 10
00019         //      amp  直交信号発生器の出力の振幅
00020         Cic3Stage(int rate, float amp)
00021             : G0_(1.0f/(amp*rate*rate*rate)), 
00022               vn1_(0), vn2_(0), vn3_(0), vn3M1_(0), yn1M1_(0), yn2M1_(0) {}
00023         
00024         // 積分器
00025         void Integrate(int16_t xn)
00026         {
00027             vn1_ += xn;     // 積分器1段目
00028             vn2_ += vn1_;   // 積分器2段目
00029             vn3_ += vn2_;   // 積分器3段目
00030         }
00031 
00032         // くし形フィルタ
00033         float CombFilter()
00034         {
00035             int32_t yn1 = vn3_ - vn3M1_;    // くし形フィルタ1段目
00036             int32_t yn2 = yn1 - yn1M1_;     // くし形フィルタ2段目
00037             int32_t yn3 = yn2 - yn2M1_;     // くし形フィルタ3段目
00038 
00039             vn3M1_ = vn3_;  // 現在の値を保存,くし形フィルタ1段目
00040             yn1M1_ = yn1;   // 現在の値を保存,くし形フィルタ2段目
00041             yn2M1_ = yn2;   // 現在の値を保存,くし形フィルタ3段目
00042 
00043             return G0_*yn3;
00044         }
00045 
00046     private:
00047         const float G0_;
00048         int32_t vn1_, vn2_, vn3_;       // 積分器で使う変数
00049         int32_t vn3M1_, yn1M1_, yn2M1_; // くし形フィルタで使う変数
00050 
00051         // コピー・コンストラクタ,代入演算子の禁止のため
00052         Cic3Stage(const Cic3Stage&);
00053         Cic3Stage& operator=(const Cic3Stage&);
00054     };
00055 }
00056 #endif  // CIC3_FILTER_CLASS_HPP