目次
前
次
簡易ファンクションジェネレータ
手元にEEPROM、バイナリーカウンタ、OPアンプがあった
ので、簡易ファンクションジェネレータをつくりました。
デジタル方式のファンクションジェネレータのブロック図は、以下です。
ブロック図から回路図を作成し、半田付けして
次の基板となりました。
D/Aコンバータは、R-2Rの抵抗ラダーにしています。
ROMの中に波形パターンを入れておけばよいので
ROMのアドレスをカウンタを使って生成します。
手持ちの74HC4040でアドレスを生成します。
カウンタを動かすには、クロックが必要なので
手持ちの10MHzのセラロックを利用し、74LS193
で分周して、74HC4040のクロックとします。
74LS193は、周波数デバイダで利用していますが
アドレスを与えて、ROMが出力するデータを記憶
するためのトリガークロックも生成します。
タイミングチャートで示すと、以下となります。
クロックの立上りエッジで、波形データをラッチし
立下りエッジでROMのアドレスを+1します。
1つの波形だけでは、ファンクションジェネレータ
にならないので、DIPスイッチで波形を選択できる
ようにし、音で確認するため、アンプをつけます。
波形は、スクリプト言語を利用して作成します。
#-----------------------
# file name gensin.tcl
#-----------------------
# initialize amplitude
set mulx 127
# generate pi
set pi2 [expr 2*(atan(1) * 4)]
# clear string
set tmp ""
# generate code
for { set j 0 } { $j < 64 } { incr j } {
# calculate
set valx [expr int($mulx * ( sin((2 * $j * $pi2) / 64) + 1)) ]
# concatenate
set i [format "0x%02X," $valx]
# concatenate
set tmp "$tmp $i"
# judge
if { [expr $j % 8 ] == 7 } {
puts $tmp
# clear
set tmp ""
}
}
8ビットデータバスのROMに入るように、正弦波を
振幅が8ビットで納まるようにしてあります。
また、1波形は64分割してあります。
より精度の高い波形が必要であれば、1波形を256や
1024分割しておけばよいでしょう。
ROMライターには、インテルHEXフォーマットかモトローラ
Sフォーマットが必要になります。変換は、フリーソフトが
たくさんあるので、そちらを利用します。
目次
前
次