5-3. 任意波形を作成する
今までは、DSPボードに外部から入力した信号に対して様々な処理を
行っていましたが、DSP自体で様々な波形を直接作成して、出力することも
できます。
【実習 5-3-1】
-
まず、のこぎり波を出力するDSPプログラムを作成してみましょう。
のこぎり波は、図のように直線的に出力電圧が大きくなっていき、一定時間(T)が
経つとまた最初からそれを繰り返すような波形です。

このようなのこぎり波発生のサンプルプログラムが[saw]
にあります。
- 最初に出力outを-0.5(出力電圧を-0.5[V]?)に設定しています。
- 本プログラムでは入力波形を必要としませんから、in = read_input()は
不要のように思われるかもしれません。しかし、read_input()は、DSPボードに
「1サンプル入力される毎に」入力値を返す関数であることを思い出してください。
言い換えると、read_input()が呼ばれると必ず次の1サンプルが入力される時刻まで
待ってくれます。そのことを利用して、ここではread_input()を入れておくことに
より、forループ全体がサンプリング周期毎に実行されるようにタイミング調整を
行っています。
- out += 0.001で、1ループ毎に出力電圧を0.001[V]ずつ増やしていきます。
- 出力電圧outが+0.5[V]を越えると、初期値の-0.5[V]に戻します。
ここでは、サンプリング周波数が48 kHzとなっていますので、サンプリング周期は
1/48000 = 約20.8[μ秒]となります。-0.5[V]から出発して1サンプリング周期
毎に0.001[V]ずつ増えていきますから、1000回ループが回ると+0.5[V]になります。
したがって、のこぎり波の1周期(T)は20.8[μ秒]×1000 = 20.8[m秒]となり、
周波数に直すと1/20.8[m秒] = 48 Hzとなります。
-
DSPボードからの出力電圧をオシロスコープで測定し、出力波形を確認して
みてください。
【実習 5-3-2】
-
上のプログラムを元にして、方形波を出力するDSPプログラムを作成
してみましょう。

方形波は一定時間間隔で「+V0」と「-V0」を繰り返す波形です。
まず波形の繰り返し周期を決めます。その周期の半分だけ「+V0」を出力し、
残りの半分に「-V0」を出力することで、簡単に作成することができます。
-
DSPボードからの出力電圧をオシロスコープで測定し、出力波形を確認して
みてください。
-
方形波のデューティー比(「+V0」を出力する時間と「-V0」を出力する時間の
比率)を変化させてみましょう。
【実習 5-3-3】
-
図のような三角波を作成してみましょう。

【実習 5-3-4】
-
図のような正弦波を作成してみましょう。

最も簡単には、DSP用数学ライブラリに用意されている、三角関数(sinまたは
cos)を利用することができます。