
Frequency shifter using Weaver modulator for ST Nucleo F401RE.
Dependencies: UITDSP_ADDA mbed
Revision 1:013f4e5762b1, committed 2015-07-25
- Comitter:
- MikamiUitOpen
- Date:
- Sat Jul 25 09:03:13 2015 +0000
- Parent:
- 0:c17cb8371b55
- Commit message:
- 2
Changed in this revision
Coefficients.hpp | Show annotated file Show diff for this revision Revisions of this file |
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
diff -r c17cb8371b55 -r 013f4e5762b1 Coefficients.hpp --- a/Coefficients.hpp Sat Jul 25 07:56:36 2015 +0000 +++ b/Coefficients.hpp Sat Jul 25 09:03:13 2015 +0000 @@ -6,19 +6,25 @@ using namespace Mikami; //-------------------------------------------------------------- -// 直流分除去フィルタの係数 +// 入力帯域制限用帯域通過フィルタの係数 //-------------------------------------------------------------- -// 高域通過フィルタ -// バタワース特性 -// 次数 :2 次 +// 帯域通過フィルタ +// 連立チェビシェフ特性 +// 次数 :12 次 // 標本化周波数: 10.00 kHz -// 遮断周波数 : 0.05 kHz - -using namespace Mikami; - -const Biquad::Coefs c1_ = - { 1.955578E+00f, -9.565437E-01f, -2.0f, 1.0f}; -const float g0_ = 9.780305E-01f; +// 遮断周波数1: 0.20 kHz +// 遮断周波数2: 4.20 kHz +// 通過域のリップル: 0.50 dB +// 阻止域の減衰量 :60.00 dB +const int ORDER_BPF_ = 12; // 次数 +const Biquad::Coefs ckBP_[ORDER_BPF_/2] = { + {-6.875894E-01f, -2.860100E-01f, 1.987324E+00f, 1.0f}, // 1段目 + { 1.642483E+00f, -7.033978E-01f, -1.999237E+00f, 1.0f}, // 2段目 + {-1.476697E+00f, -7.844624E-01f, 1.920831E+00f, 1.0f}, // 3段目 + { 1.915760E+00f, -9.375948E-01f, -1.995156E+00f, 1.0f}, // 4段目 + {-1.715001E+00f, -9.524712E-01f, 1.874031E+00f, 1.0f}, // 5段目 + { 1.972033E+00f, -9.874265E-01f, -1.992206E+00f, 1.0f} }; // 6段目 +const float g0Bpf_ = 2.768857E-01f; // 利得定数 //-------------------------------------------------------------- // Weaver 変調器で使う低域通過フィルタの係数 @@ -30,12 +36,11 @@ // 遮断周波数 : 2.30 kHz // 通過域のリップル: 0.50 dB // 阻止域の減衰量 :60.00 dB -const int ORDER_ = 8; // 次数 -const Biquad::Coefs ck_[ORDER_/2] = { +const int ORDER_LPF_ = 8; // 次数 +const Biquad::Coefs ckLP_[ORDER_LPF_/2] = { { 1.029119E+00f, -3.631409E-01f, 1.717298E+00f, 1.0f}, // 1段目 { 6.358165E-01f, -6.464544E-01f, 6.744049E-01f, 1.0f}, // 2段目 { 3.499033E-01f, -8.594617E-01f, 1.627564E-01f, 1.0f}, // 3段目 { 2.400248E-01f, -9.645248E-01f, -1.001503E-03f, 1.0f} }; // 4段目 const float g0Lpf_ = 1.930230E-02f; // 利得定数 -
diff -r c17cb8371b55 -r 013f4e5762b1 main.cpp --- a/main.cpp Sat Jul 25 07:56:36 2015 +0000 +++ b/main.cpp Sat Jul 25 09:03:13 2015 +0000 @@ -21,17 +21,18 @@ DAC_MCP4922 myDac_; // DAC を使うための設定 DigitalIn sw_(D2, PullDown); // ロータリ・ディップ・スイッチ用 +// 入力帯域制限用帯域通過フィルタ +IIR_Cascade<ORDER_BPF_> bpf_(ckBP_, g0Bpf_); + // Weaver 変調器で使う低域通過フィルタ -IIR_Cascade<ORDER_> lpfC_(ck_, g0Lpf_); -IIR_Cascade<ORDER_> lpfS_(ck_, g0Lpf_); - -// 直流分除去フィルタ -Biquad DcCut_(c1_); +IIR_Cascade<ORDER_LPF_> lpfC_(ckLP_, g0Lpf_); +IIR_Cascade<ORDER_LPF_> lpfS_(ckLP_, g0Lpf_); int main() { myDac_.ScfClockTim3(420000); // 出力の LPF の遮断周波数を 4.2 kHz に設定 + bpf_.Clear(); lpfC_.Clear(); lpfS_.Clear(); @@ -50,7 +51,7 @@ float xn = adc_.Read(); // A5 からの入力信号を読み込む //----------------------------------------------- - xn = DcCut_.Execute(xn); // DC 成分除去 + xn = bpf_.Execute(xn); // 帯域制限 float mpyC = xn*cosf(phi1); float mpyS = xn*sinf(phi1);