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

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers FM_Modulator.hpp Source File

FM_Modulator.hpp

00001 //-----------------------------------------------------------------
00002 // FM 変調器
00003 //
00004 //  2020/08/29, Copyright (c) 2020 MIKAMI, Naoki
00005 //-----------------------------------------------------------------
00006 
00007 #include "mbed.h"
00008 #include "FastSin.hpp"          // 高速低精度 sin 計算
00009 
00010 #ifndef FM_MODULATOR_HPP
00011 #define FM_MODULATOR_HPP
00012 
00013 namespace Mikami
00014 {
00015     class FmModulator
00016     {
00017     public:
00018         // コンストラクタ
00019         //      fCarrier    搬送波周波数 [Hz]
00020         //      t0          標本化間隔 [μs]
00021         FmModulator(float fCarrier, float t0)
00022             : C0_(4.0f*fCarrier*t0*1.0e-6f), phi_(0) {}
00023 
00024         // FM 変調の実行
00025         float Execute(float mod)
00026         {
00027             phi_ += C0_ + mod;              // ここで FM 変調を行っている
00028             if (phi_ > 2.0f) phi_ -= 4.0f;
00029             return FastSin(phi_);
00030         }
00031 
00032     private:
00033         const float C0_;    // 搬送波周波数に対応する位相の増分
00034         float phi_;         // 現在の位相
00035 
00036         // コピー・コンストラクタ,代入演算子禁止のため
00037         FmModulator(const FmModulator&);
00038         FmModulator& operator=(const FmModulator&);
00039     };
00040 }
00041 #endif  // FM_MODULATOR_HPP