前々から、音声出力回路についていろいろ考えて
いました。
デジタルの音声データをアナログ出力するっていうと
DA変換回路が必要になるわけですが、その中で
お手軽なものっていうとR-2Rラダーとか
重み付け抵抗回路とかが挙がりますが、当然
精度は低く、せいぜい5~6ビット程度まで
というのがいいところでしょう。
一方、音声信号なら、扱う周波数がそんなに高くない
のでPWMで出力できる範疇だし、LPFを通せば
人の耳にはそれなりにちゃんと聞こえるので、
音声をお手軽にDA変換するのにはPWMが便利。
得られる波形も理論上はゼロクロス歪みもほぼ
ゼロ(のはず)だし、リニアリティーも極めて
高いし。クリスタルの発振精度に依存するからね…。
ところが、AVR程度のマイコン、つまり20Mhz
程度のクロックでは、16ビットタイマーを使って
PWM出力させるとせいぜい300sps程度。
つまり150Hz程度しか再生できない計算…
( ̄〆 ̄)
音声データといえば、CD-DAなら16ビット
ですし、その程度の精度が出せれば個人的には
満足なんですが、1ビットDAの専用ICとか
使うのはちょっと癪。
8ビット~9ビット程度の精度にしてしまえば
20Mhz程度のマイコンでも20000hz
程度までは普通に出せるんだけど、それじゃぁ
期待値以下。
TINY861なら内蔵PLLを使って10~11ビット
程度のPWM出力ができるんだけど…うーん、
ちょっと惜しい…
一方、最近流行り(?)のDクラスアンプなど
を見ていると、いわゆるPWMを応用して
歪みの低減やパワーロスの改善をしているっぽい
感じなので、その手のアンプは何か上手い方法を
使っているんだろうな…どんなことしてるんだろう?
っていうのが最近のオイラの素朴な疑問でした。
で、ふと今日あるアイデアを思いつきました。
さっき自転車漕ぎながら頭の中で計算してみた
だけなのでなんともいえないんだけど、
音声信号の16ビット精度程度のDA変換なら
なんとかなるんじゃないかな?と思えて
きました。
あとで紙の上でちゃんと計算しなおしてみよう…
使えると面白いアイデアなんだけどな…。
(例によって、普通に手に入る部品だけで
その手のことをやっちゃおうっていう
作戦です)
どうなることやら…
それにしても、市販の1ビットDAコンバータとか
Dクラスアンプとかって、どんな処理してるんだろう?
単純にPWMで40000Hzの16ビットを出そう
とすると2.6Ghzが必要になっちゃうんだけど、
まさかそんなねぇ…
|