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

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

D90(AK4499eq版)のDSD入力の特性。

 USBstreamerというのは、192kHzまでの入力が出来るので使ってみた。PCと電気的につながるので条件次第では余計なノイズ成分が出るかもなんだけど。一つ前のADC基板はRpiとのインターフェース用に外部コネクターの端子が乗っているからこれを流用すればつながる。HDMI出力もあるのでD90DSDでつないでデジタルとアナログのデータを同時に取る積りだった。

 ところが挫折。アナログは上手く行かない。ADCはUSBstreamerのスレーブにならないといけないので、クロックはUSBstreamerからのを使う。これがダメ。デジタル的なサンプリングには問題ないレベルだが、アナログのサンプリングには使えないぐらいジッタがひどい。現実として、音声の領域でもクロックジッタの影響を受ける事はある。普通言われているのとは全く違う所でだけど。

 

 SPDIFだと、ESSのようにASRCを入れない限り115dBぐらいのSNRにしかならない。RpiのクロックはもっとひどくてCD並のSNRにしかならない。オシロスコープで見ても止まっていない程度なんで当然ではある。toppingのUSBも褒められたものではない。SNRの劣化と言う形では出てこないけれど、デジタルとしてはお粗末なレベル。USBstreamerのクロックだと110dB行かない。

 青がUSBstreamerのクロック。赤は基板に乗ってる$1ぐらいのクリスタル。クリスタルは電子部品の中では大谷のように飛び抜けているので、変な使い方をしない限り$1であろうが温度管理した$100越える様なのでも、音声の領域で差はない。$1に敵わない程度のクロックはとても多い。ちょっと変な時は、少し良さ目のFFTアナライザーで見ると一目瞭然。

 USBstreamerはこんな感じ。本来は22.5792MHzの所に一本だけ出る。$1のクリスタルだとこうなる。現実の基板でクロックのジッタがあると、大抵はSNRの劣化と言う形になる。基本波の横に余計なのが出るのは、意図的に余計な特定の周波数を混ぜたような場合で、現実世界でそういうのはまずない。机の上だけの話。

 デジタル的なサンプリングさえできれば良いので、二つのクリスタルを載せていないんだと思う。同じXMOSでも二つ載せているDDCは、完全な線一本であってI2SでD90につなげば何の問題もない。120dB越える様なSNRのADCやDACに使えないクロックは意外と多い。普通に$1のクリスタルで普通に発信させれば音声領域での問題はないのだが。二層基板とかは普通でないので、門前払い。

 

 仕方なくD90のアナログ出力を測る時は基板上のクリスタル。デジタルだけの場合はUSBstreamerからのクロック。せっかくなのでアナログとデシタルの比較の前にデジタル同士の比較。1bitDSMの次数の違いで、デジタル領域ではどのように特性が変わるのか。PCMtoDSDのチップ(AKMとか)にはデジタル領域の特性は出ていないし、まして次数での違いは分からない。

 

 SACDはおそらく七次ぐらいだと思うけれど、あれは古い規格なのであまり特性は良くない。入力がゼロになった時は別処理になって01001011を繰り返して出すようだし、極を作って特性の改善もしない。まだそんな知恵がなかった頃の規格だと思う。DSD128も周波数の違いだけだろうから、実質的には今の六次のDSD64(青)と同じ程度の特性と思う。

 原理的には六次のDSMだと三個の極を入れられるけど、そうすると低い方での特性が悪化するので最大でも二つ。上の図だと20kHzと15kHzの辺り。これがないと、五次と同じぐらいの特性になってしまう。これは完全にデジタルの領域の話。五次だと二つは厳しいので一つ。五次ではSNRが109.2dBとなるので、アナログ領域でもこれ以上にはならないからボツ。DSD64では少なくとも六次以上。

 

 但し、次数が上がると最大振幅は下がる(五次:-5.0dBFS、六次:-5.7dB)のでアナログ領域での最大振幅も減ってしまいSNRでは不利になる。最大振幅を上げるためには次数は低い方が良くて帯域外ノイズも減る。替りに20kHz帯域でのノイズは五次の様に増えるので、両方のトレードオフで決まる。つまりDSD64では、六次が最適

 

 DSD128だと話は変わる。

 これだと五次でもSNRは136dBなので、五次で問題ない。DSD128での最適は五次。但し、DSD128になると周波数が上がるので、DACの方式次第ではアナログ変換の段階での劣化が無視できなくなる。AK4499eqのようなモノリシックだとほとんど問題はない。ESSでどうなるかは実機がないので分からない。AK4499eqのDSDはかなり優秀だとは思う。

 

 なのでディスクリートでは2bitのDSD64というのがアリ。

 2bitと言っても実際は三値なので、二値の1bitとは感覚としての差はあまりない。数字の世界では随分と違う。SNRが7dBぐらい違うのはデジタル領域の話なので、アナログ領域での差にはならない。最大振幅の差が圧倒的。3.4dBぐらい違う。これは痺れる。ディスクリートではアナログFIRでタップを増やすのだが、これは32タップか64タップかというぐらいの差になる。ディスクリートで64タップは現実として無理。モノリシックでしか無理。対称性と言う点でも2bitは1bitよりも上で、違いは数字になって現れる。

 

 AK4499eqだとDSD256という選択もあり。その場合は五次の必要もないので四次で十分。DSD128の四次はちょっと無理。DSD256ならば楽勝。最大振幅も-4.21dBまで行ける。これ以上に入力を上げると、変調器は股裂きになるので発振するDSMの場合、一度発振すると信号レベルが下がっても正常動作にはならない。ハードの変調器だと、電源入れた時にはその状態になるので、普通は全く動作しない。 

 なのでハードウエアでの内部リセット回路が必ず入っている。ソフトでシミュレーションする時も、次数に応じて最大振幅を制限しないと上手く行かない。オフラインでのソフトウエア変換でもその問題は必ず出る。ISOで最大振幅越えたりしてもダメ。内部リセット次第で変換の質は違って来ると思う。ハードの場合、検出してからの復帰は早い。

 

 最後にD90HDMI経由のLVDSでDSD(デジタル領域)を入れて、アナログの出力との比較。使い物にならないのは分かっているけれど、五次のDSD64。デジタル領域で既に108.9dBなので、そのぐらいのSNRにしかならないのは自明。青が上がって来ると、当然ながら赤はそれと同じレベルになる。机の上の話なら、デジタル領域のノイズは限りなく減らせる。アナログ出力にとっては、全く意味がない。

 

 次は実用的な六次のDSD64。20kHzの少し上ぐらいまでデジタルのノイズはアナログの下なので、アナログ側の制約のみで特性が決まる。デジタル側は単純にロジック回路の問題で、FPGAならば掛算器、高速加算器、内蔵メモリーの問題。デジタル側は、アナログノイズの下になるような回路設計が必須であるという事。

 DSDでなくてI2SでPCMを入れてやれば、120dBぐらいのSNRになる。これはUSBの時よりも少し悪い。本来、差はないのだけれど、基板上でのノイズの影響かな。DSDで更に悪化するのは、DSDの最大値がPCMの0dBFSにならないので内部で上げているから。-2.03dBFSは4Vrms(D90の0dBFS)よりも少し大きいから、6dBぐらい上げていると思う。その結果の劣化。このぐらいなのはとても優秀。火事で燃えたのは残念。

 

 次は五次のDSD128。六次のDSD64よりもSNRが良くなるのは、最大振幅が上がって来て、信号レベルが大きくなるから。DSD64とDSD128で、AK4499eq自体の劣化はほとんどない模様。ディスクリートでは中々こうはならない。 

 

 六次のDSD128。THDの違いは誤差なのであんまり意味はない。ADC由来かも知れないし。AK4499eqはDSD128でもへいちゃらなんで、六次もなくはないけど最大振幅の問題があるので、やはり五次が正解。

 

 四次のDD256。四次なので最大振幅は上がるけれど、AK4499eqの劣化が少しあるようで、SNRは五次のDSD128よりも少し下。誤差の範囲だけれど。内蔵してるアナログのLPF次第としても、帯域外ノイズはこっちの方が小さくなる。この感じだと、DSD512では却って特性は悪くなると思う。D90DSDで使うのならば、五次のDSD128が数字としては一番良さそう。 

 火事の後のAK4499exでは、もうDSDが直接入る事は無いのかな。相方のチップは、5bit、6bit、7bitの出力しかしない様だったから。特性としてはそっちが上なので、敢えてDSDに拘る必要はないし。FPGAから1bitではなくてそういうbit数で出すのも、勿論可能。bit数の変更は、OSRと同じで比較的に簡単。次数の変更は些か面倒

 

 1bitでDSMを使うのは、あんまり賢くない。モノリシックならば5bit以上の7bit以下はとっても妥当。ディスクリートならば、2bit。工場持ってれば、モノリシックで2bit作る。楽に高性能になる。きっと5bitとかよりも。