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

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

シーズン4で終りそうな1bitDSM。潜在能力高くて、金塊がゴロン。

  1bitのデイスクリートDACもそろそろ最終章。どうやら今回のシーズン4で「量産化」に漕ぎ着けられそう。4-wayマルチのシステムでモノラル仕様だと、八枚必要になる。八枚作るとなると、再現性の悪いのはボツ。所謂、何をやっても音が変わる、という状態になってしまうので、いつもいつも同じ音にはならない。料理の場合、いつも同じ味にするのはとても難しい。オーディオの場合もいつ聞いても同じ、には中々ならない。逆に言うならば、それが出来るようになった時もうゴールは少なくとも見えている。後は辿り着くだけ。

 

 DACに限らず電子機器も、いつも同じになるようにするのが初めの一歩で高品質の決め手。いつも同じであれば、良いか悪いかには左程の意味はない。良いならばずっとそのままだし、悪いのならば直せば良い。一度良くなればそれで完成な訳で、後は粘るだけ。再現性が悪いのはどうしようもない。人の一生が千年もあればそれは楽しみになるかもだが、ある程度の時間と金に余裕が効く時間はとても短い。あれこれ直してる暇はない。時間は聴くために使うべし。

 

 前回のシーズン3も悪くはなかったが、量産化は無理。DACの良し悪しはADCが握っているのだが、そっちも少し問題があった。APの測定器でもあればそんな寄り道はしなくて済む。ADCを作るのがDAC作りにも役立つことは多々あるので、この寄り道は仕方ないと諦める。シーズン4のDAC基板もモノラル。

f:id:xx3stksm:20201125200021j:plain

 

 これは今使っているパワーアンプ付きの3bitDSMの後釜なので、下のコネクターは現行品のパワーアンプにつながる。右側のはRch用。電源とDSMした1bit信号が出ている。モノラル仕様なのでRchは要らないのだけれど、うちのシステムでは低音用と中高音用の二つがモノラルDACから出るので、モノラルでもチャンネル数は二つ。4wayステレオマルチに16のDACが必要。まあ、贅沢。部品代は大したことないので。

 

 FPGAのI/OをSignalyst型のDACとして使う場合、使える数に些かの制約が出る。全てのtapを正確に同期させるためには使える数に限りがある。前回はxc6slx25-488BGAでほぼ最大の48tapまで使った。差動なのでI/Oとしては96。これをやると些かSNRが悪くなる。差動アンプで分離しても、ちょっと厳しい感じ。今回は30tapまで。足りない分はxc6slx9(右側)で26tap。〆て56tap。

 

1tapからは35dBのゲイン。Signalyst型が理想的に動作するならば、この1tapのTHDとSNRが35dBだけ改善する。そんな旨い話はアナノグの領域ではないし、それぞれのtapの特性も勿論同じではない。でもマルチビットの直線性の問題よりはずっと解決が容易で、ディスクリートであってもあんまり不利ではなくて、むしろモノリシックより有利。例えばそのうちの一つはこんな特性。

f:id:xx3stksm:20201125203003j:plain

 これより良いのもあれば悪いのもあって標準的なのがこれ。100Hz以下で悪化するのは、おそらくDCカットのHPFの影響。2μと10kの定数なので、低い方では10kΩの抵抗をドライブ側の内部抵抗でショートできなくなって、熱雑音が増える。時定数次第で結構変わる。DCカットをなくせば良いのだが、パワーアンプまでの経路で全てなしには出来ない。市販品DACでは知らんぷりでそこは責任逃れ。しかし実際には入って来るのでここで確認しておいた方が良い。 

 

 これを基準にすると、THDは-95.6-35=-130.6dBでSNRは84.2+35=119.2dB。SNRはADCの残留ノイズが大半なのでその補正をすると、軽く130dBは超えている筈。あくまでも目安として。実際にはTHDとSNRを同一のADCで測るのは不可能。どちらかに特化したADCを用意するしかない。APでもそうしている筈。使っているAD7768-8も、両立は中々難しい。あれこれ考えるよりも、あっさりと二種類作る方が早い。基板は共用できるので。

f:id:xx3stksm:20201125200034j:plain

 AD7768-8は8チャンネル内蔵。SNR用には8チャンネル全部使う。上の写真は8チャンネル全部バージョン。右の光インターフェースは同期サンプリングのために追加。ここは元々hdmiのI2sのためにLVDSの信号と光出力が出てる。FPGAのI/Oは、終端抵抗内臓でLVDSであれSSTLであれ、聞いた事ないような規格の出力も出来る。hdmiならコネクターを乗せる孫基板はいるけど。光ならば空中配線でOK。

 

  ADCから1kHzのようなテスト信号を出せば、DACのアナログ出力を簡単に同期サンプリングできる。その場合、(96000/32768)*341≒999Hzにすると、窓関数の必要が無くなるので、そのまんまのbinの解像度になる。262144のFFTならば、96000/262144≒0.37Hzの解像度で。FFTでジッタを見たいのであれば、窓関数はnone(rectangular)にしないと意味がない。本来存在しないものを見てしまうのだから。

56tapをフルに使うとこうなる。 f:id:xx3stksm:20201125205522j:plain

 シーズン3までは、ほとんどADCのフルスケールの10Vppぐらいまで振ってた。DAC側の残留ノイズがあるので、それを超えるぐらいまで各tapに電流を流して信号レベルを上げてた。1tapあたり4mA。56tapだと4*56=224mA。ちょっと発熱多い。xc6slx25-488BGAの使用I/Oを減らしたり色々と工夫して、今回は1tapあたり2mA。結果として、出力レベルは6dBぐらい落ちる。それでも問題ない程度に残留ノイズが減った。

 

 最近のDACは12Vppぐらいまで振るのが多い。その方が良い測定値が出るからでないかと思う。APのような装置でも残留ノイズの影響があるので、基本的に入ってくる信号はレベルの高い方が良い。実際の使用環境で、12Vppは高過ぎ。ATTを入れて使うのだろうが、ハイエンドでのATTは鬼門。知らぬは本人のみで、実際にはかなりの悪影響があるもの。自作品ならば、必要最小限のレベルにしておくのが賢い。うちならば、せいぜい4.5Vppで十分。

 

 今までのDACの残留ノイズだと、基本波のスカートの広がりが大きくなって、AudioTesterのSNRの測定結果が正しくなくなる。仕方なく、RX7で計算してた。今はAudioTesterでもRX7と同じような数字になるので、こっちを採用。但し、ADCの残留ノイズの影響は補正する必要があるので、3.5dBぐらい上がる。こっちのADCでもTHDは出るけど不正確。この例では、たまたま良い数字になっているみたいだが。より正しいと思われるのはこっちのTHD専用機での数字。

f:id:xx3stksm:20201125210634j:plain

 AD7768-8は測定用なので高域でノイズ特性が悪化したりはしない。更に、1チャンネルだけで測った時も、2チャンネルの平均で測った時も、結果は同じ。オーディオ用と言うADCではLとRでは同じ数字にならない。I2Sの出力とか48kHzの倍数のような利点はあるけれど、測定値としてはかなり怪しい。

 

 2チャンネルだけでSNRは悪くなってしまうが、高域での「草」はほとんど消えて二次と三次が主体になる。増やすとSNRは良くなるが、ドライブ回路が宜しくないようで、本来は存在しない歪が出てきてしまう。上の8チャンネル仕様みたいに。この三次の歪は、粘ればもっと減ると思う。というのは、56tapの場合の調整箇所は天文学的なので、最善の所は神のみぞ知る。

 

 調整はデジタル的な設定なので、一度良い組み合わせが見つかればずっとそのまま。それは基板毎に全部違うけれど。どうやって見つけるかがキモ。ある程度は分かってきたがまだまだ未知の領域。基板の変更は不要なので、いつの日か分かる可能性はある。あんまりTHDに拘る必要はないけど。

 

 1bitDSMの場合、SNRとTHDは基本的に同じ概念。どちらかだけが良いと言うのはまず有り得ない。SNRを良くするためには理想的なスイッチングが必要で、その状態ならばデジタル領域の特性に近くなるので、結果としてTHDも良くなる。1bitDSMは西部開拓のような未知の世界で、未だに一抱えもあるような金塊がごろんと転がっている。ICメーカーはモノリシックでマルチビット。ディスクリートの1bitDSMは可能性としてその上。良い組み合わせは必ずある。まだ見つかっていないだけ。

 

 例えば、110dBを超えるようなSNRになって来ると、tapの並びが支配的になる。Signalystの場合、一段づつ遅れたDSM信号をアナログに変換する。4tapの場合、x(n),

x(n+1),x(n+2),x(n+3)の四つがある。受けるtapの特性は同じではない。どのtapにどの出力をあてがうかで、かなりどえりゃーな特性の違いが出る。4tapであれば、組み合わせはたかが4!=24で知れている。ベタに全部試せばよい。4入力のセレクターをデジタル側に入れとけば良し。

 

 そして5tapなら5!=120、6tapは6!=720。これは曽呂利新左衛門の米粒の話なんてもんじゃない。ベタに試すはあり得ない。だけど良い組み合わせは必ずあって、115dB以上ならばもうそれが全て。56!は、さて何桁になるのやら。他にもデジタル的に変えられるパラメーターは幾つかある。DSMの次数とOSRの倍数とか。

 

 使い物になるのは、80OSRの6th-order、160OSRの4th-order、256OSRの3rd-orderあたり。今回の基板では256OSRも使えるようになった。120dBぐらいのSNRは出る。潰しが効くのは真ん中の160OSRの4th-orderで、上の測定値はみんなこれ。でもTHDを良くしたいのであれば、80OSRの6th-orderが最適。OSRが低いと信号のトグルが少なくなって理想状態に近くなる。64とか128でなくて80とか160なのは微調整。二倍ごとでは些か粗調なので。

 

 1bitDSMは、-30dBFSから-60dBFSぐらいで少し不安定になる事が多い。今回のはうまく行っているようで、少しレベルが下がって来るともう草は消えてずっとそのまま。このぐらいのレベルで草は消える。不安定にならないようにする方法はある。少し粘っていると、何かのはずみに気が付くもの。長年やってる人は多分知っている術。

f:id:xx3stksm:20201125214807j:plain

 なのでTHDはだいたいレベルに比例する。ESSのこぶみたいなのは出ない。やはり、-3dBFS近辺が0dBFSよりも良い。これは最終的には1tapの時の平均的な数字に近付く。OSRとかDSMの次数が関係するかもだけど。

f:id:xx3stksm:20201125215137j:plain

 

  最後に32toneの信号。直線性の確認にはこれが一番良いと思う。ジッタのようなのも分かる。ジッタと残留ノイズの区別は難しいが。基本波に近いのがジッタでそれ以外は残留ノイズとか。信号はASRで使っているのと同じ。ADCにこの信号を出す発振器を内蔵したので、実使用と同じ状態で同期サンプリングが出来る。ADCがマスターでDACがスレイブ。普段はトランスポートがマスター。

f:id:xx3stksm:20201125220044j:plain

 これはノイズフロアーを見たいのでSNR用のADCを使いたいが、どうもADCがこける。かなり大きな歪みが出てしまいボツ。THD用のADCなのでノイズフロアはDACではなくADCで制約されてる。参考までに無信号時の出力(青)を一緒に表示。この無信号は動的な無信号なので、DSM信号は出ている。実際の音楽信号の無音の時と同じ状態。

 

 300Hzぐらいから下で少し上がり始める。DCカットの影響は青も同じなので、DACからのノイズと考えられる。但し実際のノイズフロアは、これの10dBぐらい下にあると思う。THD用のADCの場合、残留ノイズがDACのそれより遥かに大きくて、本当のSNRは測定値よりも10dBぐらい下になるので。SNR用でも3dBぐらい下。なのでDACの出力はもっと大きい方が測定としては楽。

f:id:xx3stksm:20201125221157j:plain

 どうして低域で上がるかは、少し拡大すれば分かる。±5Hzぐらいの範囲で少しスカートが広がるが、これはジッタではない。ジッタであれば周波数依存するけれど、これは常に一定値なので。周波数の高い所では相対的にこの±5Hzは小さく見える。低い方では、34Hzと42Hzなら両者のは重なってしまい結果として大きくなる。市販品でも基本的に同じ傾向。

https://www.audiosciencereview.com/forum/index.php?threads/review-and-measurements-of-topping-d90-4499dac.10281/

https://www.audiosciencereview.com/forum/index.php?threads/okto-dac8-stereo-dac-review.14705/

 

 上の二つはおそらく窓関数が入っている。FFTサイズは256kのはずだからノイズフロアの比較は可能。ただし細かい見え方は窓関数次第なので、ノイズフロアとは130dB以上の差があるという事以外は憶測になる。経験的に、-120dBぐらいのTHDがあると、こんな感じの数字になる。高い周波数ではジッタの影響が出る。 

f:id:xx3stksm:20201125222243j:plain

 ジッタはDACならば出している周波数に比例する。上のように10kHzと20kHzではスカートの広がりが6dB上がっている。なのでこれはジッタと考えられる。もう一つジッタの特徴として、とことん出力信号のレベルに比例する。SNRは残留ノイズと出力信号の差なので、出力信号が下がるとその差も減り悪化する。ジッタは悪化しない。

 

 0dBFSの10kHzの時は-110dBFSぐらいのジッタ的ノイズが出る。10kHzの-20dBFSならば、-130dBFS。0dBFSの20kHzの時は-104dBFSぐらいのジッタ的ノイズが出る。20kHzの-20dBFSならば、-124dBFS。実際の音楽信号では、高い周波数のレベルは低い。結果としてジッタ的なSN悪化は相殺されることになる。

 

 現実のDACは、余程ひどくてもレコードのジッタなんかと比べるならば、遥かに良い。問題があるとすれば、内部にグランドプレーンを持たない両面基板での性能劣化。そっちの方がデジタルのシステムでは遥かに問題になる。そっちのノイズの方がジッタ的ノイズよりも遥かにデカくなる。そういう基板では、綺麗に周波数に比例するような特性にもならないと思う。