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

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

そろそろ詰めの1bitDSM。はるばる来ぬる 旅をしぞ思う。

 ディスクリートの1bitDSMは、初めの基板からほぼ二年が過ぎた。ちょっと長いけれど、ディスクリートものは、まず原野の木を切って道を作りそれから橋を架けてと言う按配なので、時間がかかる。ものにならない可能性も高い。四度目の基板で完成になったのも、まずは妥当。普通の基板でも二回は作るのだから、五度目がなかったのは寧ろ幸運。

 

 D90を偶々シングルズデーでポチッたので、ADCも随分と良くなった。最終的には、APのように内部的にはTHD用とSNR用の二種類を用意して、出力は両方の良いとこ取りにして出すように作り直す必要がある。HDMI-IISとか、DSMの信号も出せるように等もして。今はRX7でADCの残留ノイズを補正した信号にして出すしかない。これでひとまずは、THDとSNRがaudio-testerで直読できる。こんな感じ。

f:id:xx3stksm:20210306213441j:plain

 四次のDSMで、OSRは160。7.675MHzでのスイッチング。三次にしてOSRを320にも出来るけれど、さすがにHWがついてこれなくて理論値からの乖離が大きい。現実的には、4th-orderの 160OSRが今の最適値。将来的には、三次も不可能ではないけれど。今回は特性が良くなってきたので、デジタル領域の理想値との比較。山よりデカい猪はいない訳で、デジタル領域の数字からの劣化具合でスイッチングの良し悪しを測れる。

 

 デジタル領域の数字は、単純にアナログ回路に送っている1bitDSMの信号を、FIRフィルターで24bit/96kHzに落としてPCに送り、FFTすれば良し。上のFFTの青は、ADCの出力を残留ノイズの分だけRX7で補正したもの。赤は、1bitDSMを24bit/96kHzに落として、spdifでPCに送ったデータのFFT。完全にデジタル領域なので、DSM単体の性能。本来は32bitなので、24bitになった所での劣化は考えられる。

f:id:xx3stksm:20210306214339j:plain

 24bit/96kHzに落とすデシメーションフィルターというのは、4096tapのFIR。160OSRの時は、7.675MHzから96kHzなので、4096tapではちょっと厳しい。本来は二段階にして、まずは384kHzぐらいにしてから、その後に96kHzというのが王道ではある。でも一段で何とかなった様なので手抜きのまま。こんな特性。7.675MHzと3.8375MHz。当然ながら、3.8375MHzだと、一段でも問題ないような特性になっている。

 

f:id:xx3stksm:20210306215313j:plain

 FPGAを簡単に使えるようになったのは、たぶん1990年代から。Xilinxよりも前にベル研のオルカが魁だったかと思う。その前はFPのつかない、ただのGAだったから、仕様変更なんてほぼ不可能。人間辞めないと、まともに動作するような状態にはならなかった。人間やめますかそれとも覚醒剤やめますか、なんてCMが当時はあって、ワシは人間やめますかそれともGAやめますか、やなぁと思ってた。今のように、追加でちょろっと4096tapのFIRが入れられる環境にあると、もう30年は昔の事を思い出して遠い目。

 

 ともあれ、FPGAさえ基板に実装しておけば、錦の御旗。寡を以て多を討つのは容易。デジタル領域でのDSM量子化ノイズは、NTFを計算すればSIM出来る。しかしこれは、量子化が1bitなのか2bitなのかという関数が入っていないので、本当の数字は実物にデシメーションフィルターを入れて測るしか手はない。そのためには4096tapぐらいのFIRが必須。DSPのようなのでDSMを作っていると、FPGAのような小回りは効かないので簡単ではないと思う。

 

 FPGAであれば、spartan6であってもxc6slx25程度で、簡単に追加できる。昔、8bitCPUの頃は、アクセスエリアが64kぐらいしかなくて、如何にしてSWも効率的にしてプログラムサイズを減らすかが、現実問題として大きな分かれ目。トランペット吹きが誰が一番高い音を出すかを競ったように、腕の見せ所だった。それはもう過去の遺物で誰もそんな事はしない。ただ一つ残ったのがFPGA

 

 主に、掛け算器、メモリー、そして高速の足し算器。この数に限りのある資源を、如何にして効率的に使い切るかは今でもキモ、だったかな。数年前からvivadoになって高位合成とか言い始めたので、表向きはそういう技も影をひそめた。しかしやっぱり、既に実装されてしまっているFPGAを上手く使えばデシメーションフィルターが入るのか、そんなの無理でーすと、へらへらされるのでは大違い。

 

 FIRのモジュールは、IPという形でおそらくXilinxから供給されている筈で、金に糸目を付けないのであれば有料で手に入る。ベラボーに効率悪いと思うけど。vivadoで作るのだから。DSMのモジュールともなれば、あったとしてもさらに効率悪くて到底使い物にならないと思う。自作するしかない。FPGAというのは金の卵ではなくて、その金の卵をじゃかすか産み落とす親鶏の方。金の卵は要らない、親鶏さえ確保すれば。 

 

 上のアナログとデシタルの比較では、SNRは20kHz帯域で14dBぐらいの差。32bitでデータを送れるならば、もう少し差が出るかも。アナログ領域での制約は、基準電圧やスイッチングの理想度と熱雑音。今の回路定数だと熱雑音はほぼ無視できるので、基準電圧からの制約は135dBぐらいかなと思う。実際、スイッチングを止めてしまうとその位の数字だったはず。デジタル側は10kHzの少し上ぐらいから量子化ノイズが上がるので、ほぼ同じぐらい。アナログも、けっこう頑張ってる。

 

 入力をゼロ(0x0)にするとこうなる。SACDDSMの初期なので、あんまり変調の効率が良くない。特定のアイドルパターンが出る。帯域外ノイズも大きい。64OSRに収める必要があるので仕方ない事ではあるが、あんまり好ましくない。無信号の時、アナログはレベルが-126.39dBFSになってる。これは999Hz入力の時、信号が-6.15dBFSでSNRが-120.2dBFSなので、ノイズレベルは-6.15+(-120.2)=-126.35dBFS、というのとほぼ同じ。残留ノイズは信号レベルに依存しないという事で良好。

f:id:xx3stksm:20210306223844j:plain

 四次で帯域外ノイズは少ないから、0.1Vrms(100dBμ)でも少し痕跡が見える程度。SACDだと、このレベルでは相当に乱れる。低めの次数にするのはSNRが稼げるのと帯域外ノイズが減るので。140kHz周期ぐらいでノッチが入るのは、アナログFIRの特徴。7.675MHzをtap数の56で割った周波数毎。サンプリング周波数が下がると、ノッチの位置も下がる。CもLもなしで、音声帯域でのノッチも可能になる。

 

f:id:xx3stksm:20210306224740p:plain

   

八次にすると64OSRでも使えるのだが、四次と比べるとこんな感じになる。アナログ領域でのSNRは最大振幅が小さくなるので不利。THDはスイッチング速度が遅いので有利にはなる。総合的には帯域外ノイズの問題もあるので不採用。低域側でのノイズフロアの上昇は、さて何に起因するのか。ローカルNFBとの関係かも。

f:id:xx3stksm:20210307134925j:plain

 

 スイッチング速度を落としてTHDを測定器並みにしたいのであれば、五次で80OSRが最適。最大振幅が四次よりも0.7dBぐらい下がるので、SNRは不利。THDは-130dB近くになる。1bitDSMの凄味は、こんな数字が完全な再現性を持っている所。電源を入れて五分ぐらい待てば、熱的に平衡するのでほぼこの状態に戻る。130±1dBぐらいには。ディスクリートでこの数字は驚き。 

f:id:xx3stksm:20210306230445j:plain

 

 実際の問題として、-130dBの歪に意味はない。スピーカーは良くても-60dBぐらいだし、マイクだってそんなもの。再現性の高さにしか意味はない。-110dBぐらいの歪ならば、何もしなくてもその位の数字にはなるので、再現性の確認には使えない。いつもいつも同じ状態になるのは、複数のDACを使うマルチでは必須の条件。-130dBが保証できるのであれば、間違いなくHWとして超優良。

 

 五次の場合、帯域外ノイズは少し増える。SACDよりは遥かに小さい。ローカルNFBを工夫して、80OSRを五次で使えるようになったので、これは実用になる。実際に使うのは、四次の160OSRだろうけど。サンプリング周波数が四次の半分なので、ノッチの周期が狭くなる。

f:id:xx3stksm:20210306231300p:plain

 ADCが良くなって調整がうまくできるようになった。今まで四台を作って、ほぼ皆が同じような特性。というか、そうなるように調整できるようになった。デジタル的なデータだから、一度見つかればもうそれっきり。ほぼ永遠にそのまま。再調整の必要はない。今のDACは3bitとはいえマルチビットなので、再調整の必要がある。ズレは小さいので、再調整なんかしてない。ディスクリートのマルチビットの性ね。

 

 別の基板はこんな感じ。今の所、これが一番良いのかも。粘って調整するならば、他のもこのぐらいになるとは思うけど。後は、Rch用の基板をそろそろ作らねば。

 

f:id:xx3stksm:20210307134717j:plain

f:id:xx3stksm:20210307134738j:plain