2007年11月20日

オーディオ帯域オシロ(その3)

安価なヘッドセット用のUSBオーディオアダプタは、CM109とかを使っていてマイク入力しかなく、2ch 同時に取り込むことはできないようだ。

やはり、PCM2904/6 で自作というのが良いようだ。...といっても直流付近は扱えない。

いっそのこと、AT91SAM7S に 好きな ADC つなげて 2ch 同時に取り込みとかできないかググッたところ、ARM MP3/AAC Player - www.mikrocontroller.netなんてページを見つけた。

これは、MP3プレイヤーだが、AUDIO DAC として、TLV320AIC23Bを使っている。デジキーでも扱っていて、745円と安価なようだ。

データシートを見てみると、24bit 96kHz ステレオ DAC 以外に、24 bit 96kHz ステレオ ADC も持っている。デジタルのHPFは入っていないように思える。ひょっとしてどこかに書いてあるのかも知れないし、常識化していて書くまでもないことになっているのかも知れないとも思うが、直流が扱えると嬉しい。
後記:
ADC high-pass fileter に関する(親切な)説明はないが、Digital Audio Path Control レジスタの ADCHP で disable にできるようだ。

AT91SAM7SやAT32UC3B(AT91SAM7S の AVR32版(概要、日本語pdf))と組み合わせて MP3Player とか 高機能なUSBオーディオアダプタ=オーディオ帯域オシロを作るのも面白いかも知れない。

といっても、このクラスはお手軽にというわけにはいかないし、このブログでは扱わないのだ。でも、せっかく調べたので、報告ということで。

(後記)
TLV320AIC23Bは、HPF を Off にでき、普通のADC のように使えるかもしれないということで、がぜん気に入ってしまった。
0.65 mm ピッチの 28-TSSOPなので、安価な変換基板で DIPにもでき扱い易いし、安価。

さて、普通は、32bit のプロセッサで扱うものだと思うが、フル機能でなくても良いから AVR でお手軽に扱えないだろうか。

コントロールは、Port ベースの I2C (or SPI)で扱えるので問題ない。
TLV320AIC23Bは、master/slave 両方できる。ADC の場合は、同期が一度とれてしまえば、バイト単位で受信するだけでよい SPI スレーブを使うのが良いかもしれない。(CPUCLOCK > BCLK x 4 に注意)

SPI を持っているATmega88 系+FT245RLでなんとかなるかも知れない。

(後記2)

TLV320AIC23Bは、4種類のフォーマットを扱える。I2S もあるが、DSP モードというのがある。そして、DSP モードは、SPI そのものに思える。SPIスレーブで ADC データを受信するのは楽そうなのだが、DAC は無理。SPI マスターの方で実装すれば、DAC も扱えそう。

FT245RL で使うことを想定すると、ATtiny2313 では pin 数が足りないので、ATmega88 を使うことにする。クロックは一応 12MHz 水晶として検討してみる。

TLV320AIC23Bは、外部クロックも受け付けるので、ATmega88 の CLKOUT を 使う。同じクロックソースにすれば、タイミングを完全に合わせられる。TLV320IAIC23B は、クロック 12MHz or 24MHz のとき、USB モードというのを使用する。タイミングは、48ksps = 250clock , 44.1ksps = 272 clock。

SPI は CPUCLOCK/4 の 3MHz にすると、48ksps = 62.5 clock 。16bit x 2 でも 24bit x 2 でも 間に合う計算になる。AVR の処理も 24 clock で 1 バイトの処理をすればよいので、間に合うと思う。間に合わなければ 24MHz にすれば大丈夫だし、間に合えば 24MHz で 96ksps も OKということになる。

以上は、AVR 側の話。FT245RL がデータを切らさずに送受信できるかどうかというのは別になる。96ksps で 24bitx2 だと、ADC だけでも 567kbyte/sec 出せないといけない。仮想COMポートは無理だと思う。48ksps で 16bit x 2 なら 192 kbyte/sec で仮想COMポートでもいけるのではないかと思う。

(後記3)

基準電圧は、AVDD で決まる。AVDD/2 が仮想グラウンドになるし、3.3V のとき 入出力ともフルスイングで 1.0Vrms = 2.828 Vp-p だそうだ。
LINEIN は、内部に 32段階のプログラマブルゲインアンプがあり、+12.0db 〜 -34.5 db まで -1.5db 刻み。(デフォルトは 0db)

ブロック図をみるかぎり、AVDDは、基準電圧を決めているだけのように見える。2.7V〜3.6V ということになっているが、TL431を使った2.5Vでも良いのではないだろうか? キャリブレーションにも使えるし。ちなみに、どうせならTL431の高精度版? LT1009CLPとか使ったらどうだろう。
電源をどうするのが良いかついては、やはりよくわからない。Ultra Low-Noise とうたっている 2.85V レギュレータ SI91841DT-285でアナログ系全部供給した方が良いかも知れないし、すなおに 3.3V レギュレータ MCP1700-3302Eとかで全電源供給して、AVDD だけ LC フィルタ入れるだけでも良いのかも知れない。

(後記4)
ひょっとしたら、FT232RL + ATtiny2313でも扱えるかも知れない。pin の数は足りると思し、処理自体は単純だから 2K に入るかも知れない。USIで取り込みUSARTに直接書き込む処理を割り込み禁止で回せば、48ksps 16bit x 2 なら間に合うかも知れない。間に合わなければ 32ksps とかサンプリングレートを落とせばよいだろう。

FT232RL は、3Mbps に設定するが、その速度でコマンド処理はできないので、コマンドは、2バイトまでにしてハンドシェークする。このあたりは、AVR910とかと同じ考えで良さそう。送信は、3Mbps でほとんど連続して送ることになるはず。FT232RL 側でそれができないと難しいかも知れない。

(後記5)
できたら、AT90USB162 を使ったものを作りたいと思っているのだが、その前に ...FT245RL + ATmega48 で実験してみたいと思っている。SPI マスターにする場合、SPI より USART で代替したほうが性能が出せるのではないかという気がしている。それを実験してみたい。うまくいくなら、SERJTAG も作り直したい。
posted by すz at 19:29| Comment(4) | TrackBack(0) | 日記
この記事へのコメント
残念ながら、データシートの 3-11 ページ

3.3.3 Digital Filter Characteristics

ADC High-Pass Filter Characteristics

の項に、fs=48 kHz の場合 4.0 Hz で -3 dB と
なることが明記されています。

この IC に限らず、マイクアンプ等の高ゲインの
アンプを内蔵している ADC は HPF は不可避で
あると思います。
Posted by pcm1723 at 2007年11月20日 22:15
む、ADC High-Pass filter で検索してみたら、ADCHP というパラメータで Disable にできるようです。あんまり自信ありませんが、どうでしょう。
Posted by すz at 2007年11月21日 11:52
>ひょっとしたら、FT232RL + ATtiny2313でも扱えるかも知れない。

無理にAVRを使うよりも、I2S信号をSPDIF信号に変換する「デジタル・オーディオ・トランスミッタ」を使った方が確実では? もっともPC側にSPDIF入力が無いとダメですが。
Digi-Keyで入手可能なものは、CS8405,CS8406,DIT4096,DIT4192 といった所でしょうか。
Posted by PEN^2 at 2007年11月26日 12:29
制御だけAVRでやって、データはSPDIFで、というのもひとつの方法かも知れません。
ただ、私のPCは、SPDIFがないのです。

私の発想だと、無理のない設計=AT91SAM7S でということになるんですが ... 無理にAVRを使うというのが、このブログのテーマだったりもするので、トライはしてみたいと思っています。

といっても、さすがに、FT232RL + ATtiny2313 は無理そうだし、第一 3 chip の構成が気に入りません。できたら、AT90USB162 でやってみたいなと思っています。
Posted by すz at 2007年11月26日 17:40
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/30760424
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック