デジタルオーディオあれこれ

半田ごての人。紙と鉛筆だけではちょっと。

No ADC, no DAC. まずは隗よりでなくて、まずはADC。

 THDの測定にはSARADCではなくてDSMADCが向いている様なので、一度検討してEVA boardも持っているAD7768を試した。こんなの。QFP144のXc6slx09で対応できるから、ステンシルなしで基板も安い。航空便代払っても、海外(ドイツ)発注した方が得。因みに、ステンシル作っても数千円。国内でこの値段はないと思う。真中の小っちゃい方がAD7768で、最大256kHzサンプリングのDSMADCが8個入ってる。

f:id:xx3stksm:20200323181344j:plain

 これは多分ADの一押しでないかと思う。元々八個は、ライン検査での大量処理を確保するためのようだけど、パラにしてSNRを上げる事も可能なので、SNRに劣るDSMADCの欠点を補えるから好都合。¥4000ぐらい。Digikeyは一万円以下の場合、消費税がかからない。Mouserは取られる。法律的解釈はともかくとして、¥6000以上は送料タダなので、この間がスイートスポット。

 

 総額で¥10万近くの部品を買う事は珍しくない。分割するならば、10%の節約になるという寸法。AD7768の欠点は、オーディオ専用ではないので、SPI類似のデータ列を普通のI2Sのような並びに変換する必要がある。更に、SNRを上げるためには256kHzとか128kHzサンプリングが有利なんだけど、これを192kHzとか96kHzにSSRCする必要がある事。なので、SPDIF出力や外部同期のためにXc6slx09が必須。リモコン、OLED、動作モード変更用マイコン(LPC1347,cortex-M3)とかも。

 

 基板設計してブツが海を越えてやって来て、全て手付け出来る基板なのでFPGAマイコン、ADCのドライブ段とかを作るのに約一月。製作費は五万もしないのかな。自分の手間賃はタダという計算なので。結果は思いの外に良好。少し良過ぎるかもしれないが、ADCが出すのはデータ列でしかないので改竄はほぼ不可能。FFTを良くするためにどんな改竄が必要かなんて、遥かに人知を超えている。

 

 設計が悪くて本来の性能が出ない事はあっても、逆はない。作ってみて思ったのは、APの測定器などの数字は素人造りのADCよりは良いだろうという事。実際よりも悪い数字を出すのは簡単。嘘ではなくて限りなく良い数字を出すのは難しい。この手の高性能ADCの場合、DSMかSARに関係なく差動のドライブ段の性能や、ADC固有の設定で大きく数字は変わる。勿論、良くするにはピンポイントでの調整が必要。

 

 本来の意味でのSNRで120dBを超えたシーズン3の1bitDSM基板の、かなり正しいであろうTHDは、このぐらい。DAC出力を-0.5dBFS(9.5Vpp)にした時の数字。おそらく、APならほぼ同じか、もう少し良い数字になるはず。121dBぐらい。残念ながらSARADCでは、ここまで測れない。AD7768だと10kHzを超えると、もう「草」は消える。そこそこのDACの場合、APの結果も大体そうなっている。多分、それが正しい姿。

f:id:xx3stksm:20200323183940j:plain

 ノッチフィルターを入れるのが常識なのでそれも試したけれど、最大振幅を-3dBFSぐらいに抑えるならば、AD7768の場合は特にノッチの必要がない。データシートでもそう見て取れる。無くて済むならその方が色んな周波数での対応が可能なので楽。AD一押しのDSMADCは、さすがに良く出来ている。高い周波数でのノイズ上昇もない。

 

 DAC一般の特性として、フルスケール近辺ではどうしてもTHDは悪化する。SNRは落ちるけれど、THDの限界値という事で-3dBFSにするとこれ。128dBぐらいになる。美人過ぎるなんとかみたいで、美し過ぎるFFTディスクリートの所謂ブティックDACで、1bitDSMならばここまで行けるのはやはり驚き。理論的に予想できる事ではあるけれど。

f:id:xx3stksm:20200323185245j:plain

 マルチビットの経験として、120dBを超える数字は出なくはないけれど、再現性はなくて揮発性。草原という言葉には、些か気体を感じさせるものがあるというように、120dBは本来長続きしない数字。1bitDSMの凄味は、理論通りに驚異的な再現性。熱的にトランジスタが安定するための時間として10分を許容するならば、120dB越えでも、ほぼ同じ数字になる。128dBという数字自体にはそんなに意味がなくて、圧倒的な再現性が全てを物語る。

 

 ESSやAKMの最新チップであれば、APでの測定値は130dBを超えるし、再現性も完璧のよう。但し、彼等がそこまで辿り着くために要した時間と設備投資を考えるならば、1bitDSMの馬力は異次元。もしかして、隕石に乗って宇宙からやって来たとも言われる納豆菌のように。ロームがマルチビットに拘るのであれば、所詮は二番煎じなので、何時まで経っても芽は出ない。後塵を拝するのみで、先行者に追いつくのは無理。1bitDSMをモノリシックでやるのならば、その時先行者のマルチビットに勝ち目はないと思う。まあ、想像力の問題ね。

 

 0dBFSまで振ると、流石に少し劣化する。これは、0とか1が連続的に出るようになって、あと一押しで制御不能の発振状態になる寸前なので、どこを最大振幅と決めるかの問題。少し草が生えてくる。-0.5dBFSを最大値とすれば、0.5dBのS/N悪化。-3dBFSならば、3dBのS/N悪化。モノリシックならばもう少しSNRは良くなるので、最大振幅でのTHDは良くなる。数字のお遊びになるだけの話だけど。

 

f:id:xx3stksm:20200323191306j:plain

 AD7768の八個のADCを総動員すると、当然ながらSNRはかなり改善する。データシートでは基準電圧を4Vとしている。これは絶対最大定格が6.5Vなので、5Vぐらいは問題なく使える。256kHzサンプリングで基準電圧を5Vにすると、20kHz帯域で118dBぐらいのSNRになる。これは同種のADCと比べて、相当に良い数字。これを八個パラにするので約9dBの改善で、126.6dBぐらいになった。

 

 実際の所、最大値を-3dBFSぐらいに抑える必要があるので、実力としては少し落ちる。としてもSARADCのAD7960を5MHzサンプリングで二個使っても125dBぐらいなので、ほぼ同等の性能になる。以前検討した時も、同じぐらいにはなるかなあと思ってた。THD用とSNR用は、FPGAの中身とマイコンのプログラムだけの違いで、基板は共用してる。なので、AD7768を使う方が賢明なのかもしれない。256kHzを超えるサンプリングが不要ならば。製作費も少しだけ安いし。

 

 という訳で、SNR仕様のAD7768でのSNR結果はこれ。正確なノイズ電力はAudio Testerでは無理なので、RX4とかRX7で高調波をノッチで落として計算する。120dBを超えるようなTHDとかSNRを、一種類のADCで測るのは困難。APも別系統なっている。AD7960での測定値は、121dBに少し欠けるぐらいだったので、ほぼ両者は一致。一致しないと困る。

f:id:xx3stksm:20200323192627j:plain

 Lchはノッチ前のデータ。これだとTHDは110dBぐらい。0dbFS時なので、THD用ならば119dB程度になる。SNRとTHDの両取りは中々難しいという話。AD7768にはAD7768-4というADCが四個の下位版もある。THD用は二個しか使わないので、AD7768-4でよし。値段は半分。フットプリントは同じ。ドライブ段とか内部レジスタの設定に凝れば、もう少し良くなりそうな感じ。老舗の一押しは、思うにサランラップの所とは一味違う、というのが偽らざる感想。