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

Dependencies:   mbed

Committer:
MikamiUitOpen
Date:
Sat Aug 29 11:26:29 2020 +0000
Revision:
0:7a653530c8ce
1

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:7a653530c8ce 1 //-----------------------------------------------------------------
MikamiUitOpen 0:7a653530c8ce 2 // FM 変調器
MikamiUitOpen 0:7a653530c8ce 3 //
MikamiUitOpen 0:7a653530c8ce 4 // 2020/08/29, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 0:7a653530c8ce 5 //-----------------------------------------------------------------
MikamiUitOpen 0:7a653530c8ce 6
MikamiUitOpen 0:7a653530c8ce 7 #include "mbed.h"
MikamiUitOpen 0:7a653530c8ce 8 #include "FastSin.hpp" // 高速低精度 sin 計算
MikamiUitOpen 0:7a653530c8ce 9
MikamiUitOpen 0:7a653530c8ce 10 #ifndef FM_MODULATOR_HPP
MikamiUitOpen 0:7a653530c8ce 11 #define FM_MODULATOR_HPP
MikamiUitOpen 0:7a653530c8ce 12
MikamiUitOpen 0:7a653530c8ce 13 namespace Mikami
MikamiUitOpen 0:7a653530c8ce 14 {
MikamiUitOpen 0:7a653530c8ce 15 class FmModulator
MikamiUitOpen 0:7a653530c8ce 16 {
MikamiUitOpen 0:7a653530c8ce 17 public:
MikamiUitOpen 0:7a653530c8ce 18 // コンストラクタ
MikamiUitOpen 0:7a653530c8ce 19 // fCarrier 搬送波周波数 [Hz]
MikamiUitOpen 0:7a653530c8ce 20 // t0 標本化間隔 [μs]
MikamiUitOpen 0:7a653530c8ce 21 FmModulator(float fCarrier, float t0)
MikamiUitOpen 0:7a653530c8ce 22 : C0_(4.0f*fCarrier*t0*1.0e-6f), phi_(0) {}
MikamiUitOpen 0:7a653530c8ce 23
MikamiUitOpen 0:7a653530c8ce 24 // FM 変調の実行
MikamiUitOpen 0:7a653530c8ce 25 float Execute(float mod)
MikamiUitOpen 0:7a653530c8ce 26 {
MikamiUitOpen 0:7a653530c8ce 27 phi_ += C0_ + mod; // ここで FM 変調を行っている
MikamiUitOpen 0:7a653530c8ce 28 if (phi_ > 2.0f) phi_ -= 4.0f;
MikamiUitOpen 0:7a653530c8ce 29 return FastSin(phi_);
MikamiUitOpen 0:7a653530c8ce 30 }
MikamiUitOpen 0:7a653530c8ce 31
MikamiUitOpen 0:7a653530c8ce 32 private:
MikamiUitOpen 0:7a653530c8ce 33 const float C0_; // 搬送波周波数に対応する位相の増分
MikamiUitOpen 0:7a653530c8ce 34 float phi_; // 現在の位相
MikamiUitOpen 0:7a653530c8ce 35
MikamiUitOpen 0:7a653530c8ce 36 // コピー・コンストラクタ,代入演算子禁止のため
MikamiUitOpen 0:7a653530c8ce 37 FmModulator(const FmModulator&);
MikamiUitOpen 0:7a653530c8ce 38 FmModulator& operator=(const FmModulator&);
MikamiUitOpen 0:7a653530c8ce 39 };
MikamiUitOpen 0:7a653530c8ce 40 }
MikamiUitOpen 0:7a653530c8ce 41 #endif // FM_MODULATOR_HPP