手習ひデジタル信号処理(37) IIRフィルタ、直交する正弦波発生器その2

XY0
Joseph Halfmoon

前回はブロックダイアグラムをScilab+Xcosでシミュレーションしてみました。確かにIIRフィルタから直交する正弦波(つまりはSIN波とCOS波ですが)が生成されてました。今回は実機STM32F446RE上で確認したいと思います。使用させていただくプログラムは三上先生のプログラムそのままであります。

“手習ひデジタル信号処理(37) IIRフィルタ、直交する正弦波発生器その2” の続きを読む

手習ひデジタル信号処理(36) IIRフィルタ、直交する正弦波発生器その1

BlockDiagram
Joseph Halfmoon

前回はIIRフィルタを使って正弦波を生成でした。今回はその応用であります。直交する正弦波、要するにSin波とCos波、位相90度ずれた波の生成です。例によって今回はブロックダイアグラムをシミュレーションしてPC上で確認です。実際に三上先生の教科書のコードを実機で動作させるのはまた次回の予定。

“手習ひデジタル信号処理(36) IIRフィルタ、直交する正弦波発生器その1” の続きを読む

手習ひデジタル信号処理(35) IIRフィルタによる正弦波発生器その2

sin_1khz
Joseph Halfmoon

前回、IIRフィルタ(簡単なやつ?)のブロックダイアグラムをシミュレーションして正弦波らしきものが生成されることを観察しました。今回は実機で三上先生のサンプルプログラムを動かしてみます。折角なので外付け回路の「想定外」の周波数まで生成周波数を上げてみました。IIR凄い?

“手習ひデジタル信号処理(35) IIRフィルタによる正弦波発生器その2” の続きを読む

手習ひデジタル信号処理(34) IIRフィルタによる正弦波発生器その1

BlockDiagram
Joseph Halfmoon

前回前々回とSin関数を使って正弦波を発生する方法を学びました。今回からはIIRフィルタを使った正弦波の発生です。三上先生の教科書はさらっと通り過ぎているので、今回は久しぶりにScilabのXCOSツールを使ってブロックダイアグラムからシミュレーションして動作確認してみたいと思います。

“手習ひデジタル信号処理(34) IIRフィルタによる正弦波発生器その1” の続きを読む

手習ひデジタル信号処理(33) sin関数とFastSin関数の実行サイクル数測定

Result
Joseph Halfmoon

前回は正弦波を計算で生成するためにミニマックス近似を使ったFastSin関数を使わせていただきました。12ビットの精度なら十分使えて「速い」と三上先生の御本にはあるのです。しかしどのくらい速いのだか気になります。今回は実機(Arm Cortex-M4F)上でどのくらい速いのだか測定してみたいと思います。

“手習ひデジタル信号処理(33) sin関数とFastSin関数の実行サイクル数測定” の続きを読む

手習ひデジタル信号処理(32) 正弦波の信号発生器、sin関数計算編その1

sinEC
Joseph Halfmoon

今回から信号の発生に入るのですが最初は正弦波の発生です。音を作るにせよ、無線にせよ、何が無くても正弦波。デジタルな計算で波形を作るのに私のような素人でも思いつくのがsin()関数を使うことです。しかしsin()のような関数の計算には時間がかかる、そこで信号処理の人はいろいろテクを使うんでありますな。

“手習ひデジタル信号処理(32) 正弦波の信号発生器、sin関数計算編その1” の続きを読む

手習ひデジタル信号処理(31) Weaver変調器、周波数シフタその4、COS掛けてLPF

WeaverDrawCOSPATH
Joseph Halfmoon

前回は入り口のBPFの特性を観察したので今回は真ん中辺です。BPFの出力に「中間周波数の」COS波かSIN波かけてLPFかけて低い方の信号を取り出す部分。その1で計算上はそういう操作をすればこうなる、と理解したつもりでいても実際に目の当たりにすると不思議。

“手習ひデジタル信号処理(31) Weaver変調器、周波数シフタその4、COS掛けてLPF” の続きを読む

手習ひデジタル信号処理(30) Weaver変調器による周波数シフタその3、入力BPF特性

DUT_EC
Joseph Halfmoon

前回は、Weaver変調器による周波数シフタの全体コード(三上先生のコードそのまま)をビルドして実際に周波数シフトが起こっていることを実機上で確認いたしました。今回は、要素部品のうち初段の帯域通過フィルタの特性を実機で確認してみます。処理対象の100Hzから4.5kHzまでの周波数のみを通すもの。

“手習ひデジタル信号処理(30) Weaver変調器による周波数シフタその3、入力BPF特性” の続きを読む

手習ひデジタル信号処理(29) Weaver変調器による周波数シフタその2 実機動作確認

FFT300Hz
Joseph Halfmoon

前回はWeaver変調器の原理を学ぶ、ということで三角関数の計算に突入してしまいました。しかし実際に計算したのはMaxima様で私は見ていただけですが。原理は分かった(ホントか)ということで、今回は実機にプログラムを書き込んでその特性を観察してみたいと思います。

“手習ひデジタル信号処理(29) Weaver変調器による周波数シフタその2 実機動作確認” の続きを読む

手習ひデジタル信号処理(28) Weaver変調器による周波数シフタその1

WeaverDrawEC
Joseph Halfmoon

前の3回はヒルベルト変換フィルタを使った周波数シフタだったですが、今回から、Weaver変調器による周波数シフタです。Weaverって何(誰?)と問えば、高名な(当然知らないとモグリ的な)発明者の御名前であったです。原理をなぞるのに三角関数の計算が必要。霧のかかった頭をMaxima様がお救いくださります。

“手習ひデジタル信号処理(28) Weaver変調器による周波数シフタその1” の続きを読む

手習ひデジタル信号処理(27) ヒルベルト変換器による周波数シフタその3 本丸ヒルベルト変換

PhasePlotEC
Joseph Halfmoon

今回は「本丸」ヒルベルト変換フィルタ(位相シフタ)を調べて行きたいと思います。前回同様、動作確認済の全体プログラムの中のヒルベルト変換フィルタの出力を外部に出力し、位相特性を観察してみようという試み。ただし、期待されるフィルタの特性はIに対してQがπ/2だけ遅れるというもの。入力に対してでないので測りづらいです。

“手習ひデジタル信号処理(27) ヒルベルト変換器による周波数シフタその3 本丸ヒルベルト変換” の続きを読む

手習ひデジタル信号処理(26) ヒルベルト変換器による周波数シフタその2 DCカットフィルタ

BlockDiag
Joseph Halfmoon

前回は周波数シフタの全貌を実機で観察。今回はその構成要素初段のDCカット・フィルタについて調べてみたいです。フィルタのコードはIIRフィルタを「手習ひ」したときに既に使っていたのですが、忘却の彼方。今回はScilab使ってその特性を調べた後、実機でDCカットフィルタを「外したら」どうなるのか観察してみたいと思います。

“手習ひデジタル信号処理(26) ヒルベルト変換器による周波数シフタその2 DCカットフィルタ” の続きを読む

手習ひデジタル信号処理(25)ヒルベルト変換器による位相シフタ利用の周波数シフタ その1

Result2FFT
Joseph Halfmoon

今回から周波数シフタです。周波数をシフトするのに加法定理を使う。それにはcosとsinの両方が要る。cosをπ/2だけ位相シフトすればsinになる、ということで、位相をシフトするために使うのがヒルベルト変換器であります。分かったような分からぬような。今回は先に実機上で動作確認してから個々の部品を調べていきたいと思います。

“手習ひデジタル信号処理(25)ヒルベルト変換器による位相シフタ利用の周波数シフタ その1” の続きを読む

手習ひデジタル信号処理(24)残響生成器その3、マイクとスピーカつけて残響音を聞いてみる

Reverb_DUT
Joseph Halfmoon

前回アナログ・マイクロフォンを追加、ようやく残響生成器を実際に動かしてみることができるようになりました。スピーカは100円ショップのものを第20回でもつかったスピーカアンプで駆動してみました。確かに残響しています。マイクを叩くと長い地下道でコツコツ歩いているような効果音?つくれました(末尾に音声添付。)

“手習ひデジタル信号処理(24)残響生成器その3、マイクとスピーカつけて残響音を聞いてみる” の続きを読む