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

Dependencies:   mbed

Revision:
2:4bec6b2be809
Parent:
1:30d9fb51dec1
--- a/SDR_Library/Cic3Stage.hpp	Mon Sep 23 07:32:10 2019 +0000
+++ b/SDR_Library/Cic3Stage.hpp	Sat Aug 29 11:19:03 2020 +0000
@@ -1,7 +1,7 @@
 //-------------------------------------------------------------
 //  ダウンサンプリングで使う3段の CIC フィルタ用クラス
 //
-//  2019/04/30, Copyright (c) 2019 MIKAMI, Naoki
+//  2020/08/02, Copyright (c) 2020 MIKAMI, Naoki
 //-------------------------------------------------------------
 
 #include "mbed.h"
@@ -15,43 +15,42 @@
     {
     public:
         // コンストラクタ
-        //      rate    ダウンサンプリングの率,1/10 にダウンサンプリングする場合は 10
-        //      amp     二相発振器の出力の振幅
+        //      rate ダウンサンプリングの率,1/10 にダウンサンプリングする場合は 10
+        //      amp  直交信号発生器の出力の振幅
         Cic3Stage(int rate, float amp)
             : G0_(1.0f/(amp*rate*rate*rate)), 
               vn1_(0), vn2_(0), vn3_(0), vn3M1_(0), yn1M1_(0), yn2M1_(0) {}
         
-        // 累算
-        void Accumulate(int16_t xn)
+        // 積分器
+        void Integrate(int16_t xn)
         {
-            vn1_ += xn;     // 累算1段目
-            vn2_ += vn1_;   // 累算2段目
-            vn3_ += vn2_;   // 累算3段目
+            vn1_ += xn;     // 積分器1段目
+            vn2_ += vn1_;   // 積分器2段目
+            vn3_ += vn2_;   // 積分器3段目
         }
 
-        // 差分
-        float Difference()
+        // くし形フィルタ
+        float CombFilter()
         {
-            int32_t yn1 = vn3_ - vn3M1_;    // 差分1段目
-            int32_t yn2 = yn1 - yn1M1_;     // 差分2段目
-            int32_t yn3 = yn2 - yn2M1_;     // 差分3段目
+            int32_t yn1 = vn3_ - vn3M1_;    // くし形フィルタ1段目
+            int32_t yn2 = yn1 - yn1M1_;     // くし形フィルタ2段目
+            int32_t yn3 = yn2 - yn2M1_;     // くし形フィルタ3段目
 
-            vn3M1_ = vn3_;  // 現在の値を保存,差分1段目
-            yn1M1_ = yn1;   // 現在の値を保存,差分2段目
-            yn2M1_ = yn2;   // 現在の値を保存,差分3段目
+            vn3M1_ = vn3_;  // 現在の値を保存,くし形フィルタ1段目
+            yn1M1_ = yn1;   // 現在の値を保存,くし形フィルタ2段目
+            yn2M1_ = yn2;   // 現在の値を保存,くし形フィルタ3段目
 
             return G0_*yn3;
         }
 
     private:
         const float G0_;
-        int32_t vn1_, vn2_, vn3_;       // 累算で使う変数
-        int32_t vn3M1_, yn1M1_, yn2M1_; // 差分で使う変数
+        int32_t vn1_, vn2_, vn3_;       // 積分器で使う変数
+        int32_t vn3M1_, yn1M1_, yn2M1_; // くし形フィルタで使う変数
 
-        // コピー・コンストラクタ禁止のため
+        // コピー・コンストラクタ,代入演算子の禁止のため
         Cic3Stage(const Cic3Stage&);
-        // 代入演算子禁止のため
         Cic3Stage& operator=(const Cic3Stage&);
     };
 }
-#endif  // CIC3_FILTER_CLASS_HPP
+#endif  // CIC3_FILTER_CLASS_HPP
\ No newline at end of file