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

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

THDでなくてIMD。濡れ落ち葉ではないにしろ、黄昏るPCM。

THD(高調波歪)は単一の正弦波での測定値なので、昔との比較という意味を除くならば、些か時代遅れ。IMD(混変調歪)はCDのテスト信号にもあるけれど、二つだけの信号なのでこれまた現実との乖離は大きい。もっと実態に近いものが、DACの測定値などを乗せているHPにあった。15Hzから20kHzぐらいまでの32トーン。これは良さそうなので一つの標準として、その信号を少しだけアレンジして作ってみた。変えたのは、サンプリング周波数と位相。192kHzを96kHzにして、位相は特にこだわる必要はないので全てゼロに。オリジナルは、ここの#44にある。

https://www.audiosciencereview.com/forum/index.php?threads/review-battle-of-schiit-audio-dacs.5487/page-3

 

自分用はこんな感じ。

f:id:xx3stksm:20191204195427j:plain

どうしてこんな半端な周波数なのかは、FFT(正確にはDFFT)の本質に深く関わる難しい問題。結果論としては、DFFTの解像度が低い方では低下して細かい所が見えなくなるので、rectangularを使えるように同期サンプリングをするから。DFFTはそもそもフーリエ変換(FT)ではなくてフーリエ級数(FS)だから、窓関数のrectangularだけは窓関数ではない。窓関数を使わないというのが、FSにおけるrectangularの意味。rectangularは、ないよと言う意味だとして、noneと表示している親切なソフトもある。FSとFTでは決定的にrectangularの意味が違うし、rectangularを有効に使わないと、DFFTは片肺になってしまう。

 

普通、rectangularを使う事はない。使えないので使わない。WaveGenで1kHzと999.0234375Hzを作って、表示するとこうなる。ちょっと周波数ずれてるけど、正しくは、1kHzと999.0234375Hz。

f:id:xx3stksm:20191204200549j:plain

999.0234375Hzは正しく表示されるけど、1kHzはダメ。なので仕方なくhannを使うとこうなる。そこそこ1kHzも出るようになる。でも正しいのは線一本だけの、上の999.0234375Hzのようなお姿。デジタルの領域なので、線一本が正しい。

f:id:xx3stksm:20191204200724j:plain

窓関数とは、FSでは必須の(FTではそうでない)周期性を確保するために、始まりと終わりがゼロの関数を測定対象に掛け算して、始まりと終わりを強制的にゼロにして周期性を確保するもの(FTでは違う)。当然ながら誤差は出る。スカートの広がりはその一例。元の信号にはないので誤差。でもrectangularよりは遥かにまともなので、誤差は甘んじて受け入れるしかない。その誤差が嫌な時に、rectangularを使う。

 

rectangularとは窓関数なしなので、周期性の確保は、使う人がしなければならない。体に合った服ではなくて、服に体を合わせるというようなもの。この場合の服とは、サンプリング周波数とFFT長で決まるBINのこと。96kHzサンプリングで64k長ならば1.46484375Hz。この服に合った体(周波数)にしておけば、BINの整数倍なので、常に周期性は確保されていて窓関数は不要。rectangularでもちゃんと表示が出来て、スカートのすそが広がったりはしない。正確にBINの1.46484375Hzの整数倍のみで、対象の信号は展開される。デジタルの領域に限るのであれば。

 

現実にはDACの出力をADCでサンプリングするので、上の約束を守っても両者のクロックが同期していないと不可。どちらがマスターでも構わないけれど(DACマスターが普通)、同期できるDACなりADCが必要。うちの環境では、DACはトランスポートに同期する形なのでDACは可能。ADCも似たような構造なので外部同期可能。という訳で、ESSのようなspdifにASRCが入るような場合を除いて、大抵はrectangularが使える。

 

元のHPは、どうやって周期性を確保しているのだろうか。IISを受けてくれるDACならば比較的簡単だとは思うけど。ChordのQutestがこれ。1bitDSM系では、Chordがどうやら一番良いみたい。32tone distortion testがそれ。

https://www.audiosciencereview.com/forum/index.php?threads/review-and-measurements-of-chord-qutest-dac.5981/

 

これはどうもBINのばらつきから推測するに、192kHzサンプリングで128k長のFFTだとおもう。なのでBINは、96kHzサンプリングで64k長と同じ。他のDACを見ても、個々の信号とノイズレベルの差が120dBぐらいあれば、かなり良好。Qutestもそんな数字。窓関数の表示はないけれど、rectangular以外でこの解像度にはならないのでrectangular。

 

個々の信号レベルは-16dBVぐらい。ノイズレベルは低い方で少し上がるけれども、-140dBV程度。かなり良い。但しこのノイズレベルは、所謂ノイズフロワーではなくて、IMDが主体と考えるべき。こういうマルチトーンを入れた時、俗に言う基本波は、2.9296875Hz(32の周波数の最大公約数)になる。この周波数の整数倍でマルチトーンを作るので、非線形のアナログ領域ではそうなる。アナログ回路その他のノイズはそれよりも大抵は小さいので(まともな設計ならば)、IMDが支配的。低い方では-130dBVで少し悪くなるのは、要は低次のIMDは高次よりも大きいから、だと思う。

 

こういう実態に即したテストでは、PCMは厳しい。特にディスクリートの場合。これはきっと、その一番割に合わない方法論を選んでいる。なので壊滅的な数字。

https://www.audiosciencereview.com/forum/index.php?threads/massdrop-airist-r2r-dac-

review.9565/

最近の海苔波形を聞くのであれば、これでも何とかなるかなとは思うけど、クラシックのピアニシモはおろか、ピアノも再現不可でしょう。フォルテ専用。

 

という訳で、うちの過去のDACも含めて比べてみた。まずは3bitDSM。同期サンプリングできるので、rectangular。BINはHPのものと同じなので、そのまま比較できる。信号のレベルが少し違ってたけれど、差はだいたい120dBぐらいなので、かなり良好。これは調整してからかなり時間が経っているけれど、そんなに特性は狂っていないみたい。低い方のロールオフはADC側の問題。

 

f:id:xx3stksm:20191204210543j:plain

条件のきつくなる低音側を、二つの信号だけで出すとこれ。110dBぐらいのIMDになるので、悪くはない。かなり良いと思う。これはrectangularの解像度でないと確認不可。

f:id:xx3stksm:20191204211010j:plain

この同じハードウエアを、PCMの16bitで出すとこうなる。ノイズフロアと言うのかIMDは、15dBぐらい悪化する。とは言っても、モノリシックなのでPCMの割には健闘していると思う。実際暫くはこれで聞いていて、過去のpcm1704と比べて特に不満はなかった。上の3bitDSMと比べたら、ゴボー抜きされて後塵を拝すのみだったけんじょ。

f:id:xx3stksm:20191204211353j:plain

低い方も。94dBぐらいのIMD。だいたい低い方は高い方よりも悪化するので、PCMにしては立派なもんと思う。高い方のTHDで、PCMはだいたい100dB前後だから。

f:id:xx3stksm:20191204211855j:plain

最新型の、まだ試作中のxc6slx25とデイスクリート部品の1bitDSM。上の3bitDSMよりは少しだけ良いかも。これは36tapなので最終的に48tapになると、2dBぐらいは良くなる。ディスクリートなのでやはり驚き。まあ、Chordもディスクリートだけど。

f:id:xx3stksm:20191204212310j:plain

低い方。3bitDSMとだいたい同じ。でも再現性はこっちの方が遥かに良いと思う。調整は全てデジタル的に解決するから。

f:id:xx3stksm:20191204212532j:plain

うちにある市販品で一番良いmade in e-BayのES9038。これはASRCが入ってしまうのでrectangularには出来ない。結果として、低音側の解像度が低下する。IMD自体は上の3bitDSMとか1bitDSMと似た数字。なのでコスパは高い。ESSは両面の中華基板でもかなりの特性になる。但し、この中華製は日本のメーカーよりもデジタルの意味を分かっているので、両面の基板を使い倒している。電界てんこもる日本のメーカーだと、この数字はまず出ない。

f:id:xx3stksm:20191204210419j:plain

低い方。DSMにしては悪いけれど、低音側ではかなり悪化することが多いので、この基板でこの数字ならば合格。悪くない。中国語では、何故か最上級の褒め言葉が「悪くない」。これは日本語の意味での「悪くない」。hannの解像度低下が良く分かるFFT

f:id:xx3stksm:20191204213300j:plain

そして本命は、マルチトーンの他の使い方。1bitDSMはデイスクリートでも再現性の高いDACが作れるけれど、あまり知られていない欠点が一つある。-40dBFSから-70dBFSぐらいの信号に対して、かなり特性が悪化する。これは1bitDSMの本質的欠陥だと思う。ある程度の信号レベルがあればよいけれど、このぐらいに下がって来ると、1bitしかないデータで細かく追いかけるのが難しいからだと思う。

 

そういうデータはほとんど見ないけれど、ソフトウエアのPCM2DSDも悪化すると思う。同じ原理で出来ているのだから。これは1kHzのTHDでも分かる。でもなかなか一発で分かるとはいかない。マルチトーンだと、実際の使用環境に近いし、悪化が一発で分かる。こんな具合になる。

f:id:xx3stksm:20191204214229j:plain

これは現実問題としてかなり拙い。ピアニシモならば、このぐらいのレベルは珍しくない。更に耳の感度が高い領域。聞いて分かるレベルだと思う。中高音用の場合、最大振幅を抑えてSNを稼ぐのだけれど、60dB前後のSNはちょっと。3bitDSMならば、こんな悪化はない。そこで少しDSMに細工をするとこうなる。

f:id:xx3stksm:20191204215208j:plain

15dBぐらいは良くなった。1kHzの正弦波では、ここまでハッキリとは分からない。もう少し詰めていけば、もうちょっと良くなるかと思う。それやこれやと、なかなか使えそうなマルチトーンのテスト信号。外部同期可能なADCが必須ではあるけど。

 

 

1bitDSM。基板はシーズン2へ突入。

1bitDSM は、終にシーズン2に。シーズン1がパッとしなければ次はない。今は自分で基板のデータを作るならば、製作の実費は三万もしないので、ハードルは低いけれど。シーズン1では、潜在能力の高さが分かって、次回に期待という辺りで幕切れ。シーズン2の目玉は、所謂ミッシングリングを修復して、完全な輪に戻す事。欠けていたのは、発振対策、たくさんのタップを如何にして同じ条件でドライブするか、アナログ的な諸問題、など。

 

二か月ぐらい新しい基板で試行錯誤して、八割方はつながったと思う。そして最後に残った欠けた部分の存在も。FPGAのハード的な制約で(今回の基板でそんなのがあるのだと分かった)、今回の基板は完全な形では使えなかったから、まずは一歩後退。ではあるけれど、シーズン3でその問題は解決するから、二歩前進になるはず。最後に残った所が解決すれば完璧、そうでなくても120dBのSNRは確保できるのでないだろか。 

 

因みにSNRとはADの用語の解説にある通り、

SNR は、測定した出力信号 rms 値の、ナイキスト周波数より下
の全スペクトル成分の rms 値総和から 6 次までの高調波成分を
除いた分に対する比です。SNR は、デシベル値で表されます。」

の意味。オーデイオ業界では恣意的に違う解釈をしているので、もちろん正しいSNRの方。

 

こんな基板。

f:id:xx3stksm:20191124192527j:plain

f:id:xx3stksm:20191124192539j:plain

 右側のxc6slx9が36タップで、左のxc6slx25が48タップまで使える。その積りだったけど、今回のようなアナログ的な出力をする場合、些か出力ピンの選び方に制限が出来てしまい、全部は理想的な形では使えなかった。36のはずが24。48の方は36。まあ、なんとか、やりくりはしたけれど。

 

 この問題は、自動配線をする限り回避は出来ないと思う。自動配線のプログラムは、当然の事としてデジタルシステムに特化している。色々試行錯誤の結果、昔話に出て来るような古色蒼然の方法で解決する羽目に。手動配線に近い方法。今の大規模FPGAでは、どの回路にどのLUTを使うかなどは、全て自動配置でPCにやらせる。でもアナログ的な使い方では、後から人間が手動で配置転換をしてやらないと上手く行かない。

 

 それで昔はそれなりに使っていた、FPGA editorというので手動配置してやると、上手く行く。今はもうvivadoの時代だから、そんなものの存在を知っている人は稀かと思うけど、ISE14.7であれば、まだ使える。使えたので、かなりびっくりした。 こういうやつ。

f:id:xx3stksm:20191124193753j:plain

FPGAの中身を見れるソフトで、出力の極性を反転させる程度ならば、これで編集もできる。要するに、自動配置では少し出力パッドからは離れた場所に置かれてしまった関係するLUTを、空いている近くのLUTに配置換えする。デジタルで使う限り、その必要はない。今回は特殊な使い方をしているので、そんな裏ワザと言うのかハッキングが必要。今回見つけたミッシングリングの一つ。

 

そもそも1bitDSMというのは、市販品のESとかAKがピカピカで誰の目にも凄いと見える金閣ならば、ちょっとモッサリ感のある良く言えば味があって枯れた趣の銀閣玄人受けとでもいうのか。銀閣を建てた足利義政も、金閣に張り合おうなんて気はサラサラなくて、自分用に隠れ家的な隠居場所があったら良いなあ、ぐらいの積りだったと思う。

 

それが意外と当りで、彼は栄誉ある四畳半の発明と言うか発見者として、尊氏とか義満程の知名度はないけれど、今の日本文化の源流になったのは間違いなし。日本の地の研究者はあまり言ってないかもだけど、ドナルド・キーンはそう書いているし、ほんとにそうだと思う。引き算の美学、引き籠り、オタク、四畳半、茶道、生け花、能、わびさび、などなど。

義政の辞世

なにごとも ゆめまぼろしと おもいしる みにはうれいも よろこびもなし

 

というような、銀閣的なりわいの1bitDSM。1bitDSMは名前の通りに1bitしかないので、そのパルス列は、デジタルでもありアナログでもある。扱い方次第でどちらにでもなる。動物なのか植物なのか意味不明の粘菌のように。デジタルの次元であれば、適切なOSRと次数の選択で、音声帯域(20kHz)では-150dBFSぐらいの残留ノイズにすることは難しくない。

 

でもDACである限り出力はアナログなので、そんな理想状態からは乖離する。その乖離を何処まで減らせるのかが、1bitDSMのキモ。方法論は色々ある。普通の人は金閣の市販チップで、四畳半的な人はオタク志向をそそられるのか、例えばChordなんかがその成功例。Qutestは、そこそここなれた値段。

https://www.audiosciencereview.com/forum/index.php?threads/review-and-measurements-of-chord-qutest-dac.5981/

THD+Nが114dBという事なので、内訳はTHDが118dBで、Nが116dBぐらい。ダイナミックレンジは117.4dBで、これは基本波が-60dBFSの時だろうから、1bitDSMの例に漏れず、フルスケールでもNは、ほとんど劣化しない。

 

Signalyst型だと、数字は良くならないのでTHDが94dBで、Nも94dBぐらい。

https://www.diyaudio.com/forums/digital-line-level/345385-star-pure-dsd-dac-signalyst.html

 

 このTHDとNが大体同じ数字になるというのは、良く出来た1bitDSMの足跡みたいなものでなかろうか。うちの1bitDSMも、シーズン1とシーズン2が、最終的には同じような結果になった。上手く行っていない時はどちらも悪く、上手く行くとどちらも良い。金閣型は、たいていTHDがNよりも良い。  

 

 ただ問題なのは、-120dBFSのNを直接測るのは、APの桁を間違っているような測定器でないと無理。うちのAD7960は、二つパラにしても残留ノイズが-123dBFS。なので測定対象が-120dBFSだったとてしても、出て来る数字は両者の二乗平均で-118dBFSぐらい。金閣的な金持ちでもない限り、そうやって補正して使うしかない。-123dBFSは、銀閣的には飛びっきりのハイスペックなんだけど。なんとか-123dBFSぐらいまでは、補正して使える。

 

 そんな貧乏補正をして、尚且つ本来の48tapが使えない片肺の中で、辛うじて使えそうな6tapをかなり完璧な36tapに上乗せした42tapだと、このぐらいの数字になった。

f:id:xx3stksm:20191124203051j:plain

 これはTHDが少し良くない。1bitDSMの法則によると、やっぱり上手く行っていない。繕った6tapの出来があんまり宜しくないんだと思う。悪貨は良貨を駆逐する。まあ、補正後で118.7dBのSNRは立派だけど。48tapが全部揃えば、THDもNも更に良くなるはず。揃っている36tapだと、これ。

f:id:xx3stksm:20191124203502j:plain

THDとNが大体同じ。ゲインが1.3dBぐらい上がって、SNRが1dB上がっているので悪くはないけれど、THDは割を食った模様。理想的なアナログFIRの場合、ゲインが上がってもノイズレベルは変わらないので、SNRはそのまま1.3dB良くなる。36tapから48tapの場合、ゲインは2.5dB上がるので、理想的であれば117.7+2.5=120.2になる。実際はそこまで理想的に動作しないので、117.7+2=119.7ぐらいと思う。

 

8tapだとこれ。

f:id:xx3stksm:20191124204136j:plain

これはゲインが13dBぐらい上がるので、36tapは理想値として121dBぐらい。なので3dBちょっとロスしてる。

1tapはこれ。

f:id:xx3stksm:20191124204412j:plain

これから推測すると、8tapの理想値は、114dBほど。6dBぐらい損してる。1tapは、ほとんど回路の残留ノイズに等しいので、これを基準にするのはちょっと厳しいのだけど。ただ理想値としては、1tapの129dBというのが存在するのは事実。つまり、アナログFIRの動作環境次第で、まだまだ改善の余地があるという事。でもこれは熱雑音の領域なので、120dB辺りが現実的な数字だろうけど。

 

アナログFIRの場合、各タップのスイッチングの位相を揃える事でノイズの発生を抑えられて、より理想状態に近づく。但し足し算はアナログのデイスクリートなので、モノリシックよりは圧倒的に不利。それなりのノイズ増加が、タップを増やすと出る。

f:id:xx3stksm:20191124205356j:plain

上段の2tapだと、ほとんどまだ出ない。12tapになると、そこそこ。42tapは、繕い物のせいもあって、それなり。これは250MHzの帯域制限だから、相当に小さいのだけれど。128OSRなので、その周期でノイズが出る。100MHzぐらいの 単発サイン波のような感じ。そんな高い周波数がどうして音声帯域に影響するかと言えば、それは大太鼓とトライアングルの関係。

 

自明な話として、大太鼓はトライアングルよりも低い周波数成分を持つ。ではトライアングルにはないかと言うならば、ほとんど全ての人が誤解している。PCで使うFFTというか正確にはDFFTは、離散時間のフーリエ変換の事。離散時間とフーリエ変換は矛盾する概念で、数学的にはともかくとして現実世界では両立しない。この場合、離散時間がフーリエ変換を駆逐するので、実際にしている計算はフーリエ級数

 

無限のデータを扱わない限り、フーリエ変換にはならなくてフーリエ級数となる。フーリエ級数とは、周期の制限の中での計算。一秒の周期で計算するならば、その展開した周波数成分は、つまりはFFT(DFFT)のbinは1Hzの倍数。1Hz,2Hz,3Hz・・・fs/2まで。対象が大太鼓であってもトライアングルであっても関係なし。解析周期の整数倍の周波数成分に展開される。違いは、大太鼓の方がより低い周波数成分を含んでいるというだけであって、トライアングルだから低い方はないという話はない。一秒周期で叩いているならば、トライアングルであっても1Hzの成分が必ず出てしまうよ、というのが計算するまでもないフーリエ級数の常識。

 

この場合も、100MHzの単発パルスは間違いなく元の1kHzの信号に何らかの関連性を持っているので、音声帯域の方までも影響して不思議ではない。実際、このグリッチのようなのが小さくなると、THDもNも良くなる。なのでデジタル側とアナログ側を工夫して、これを出来るだけ大きなタップの時にも小さく出来る最適な方法論を見つけられるなら、それが最後のミッシングリング。シーズン3でそれが出来るならば、話はシーズン3で解決して大団円。

 

おまけで帯域外ノイズ。42tapになるとアナログFIRの効きも良くなるので、更に小さくなる。

f:id:xx3stksm:20191124211725j:plain

f:id:xx3stksm:20191124211736j:plain

以前のは24tapのはずだから、かなり違いがあるはず。オタク志向の1bitDSMで、マルチビットDSMに近い所まで来ている。

 

PCMから1bitDSMへの変換。色々と多士済々。

 PCMから1bitDSM(DSD)への変換に対する、面白いFFTを見つけた。

https://twitter.com/serieril/status/1175818591884599296

色々なソフトウエアでの変換をした時、どんな特性になるかというもの。PCM-DSD Converter(黄色)が記事の作者の作った物みたい。 

 

一枚目の図の24bit quality group oneで、SONY DSD Direct(緑) とKORG AudioGate 4(水色)はどうも同じ特性。16bit PCMの量子化ノイズから推測すると32kか64kぐらいのFFTだから、-150dBのラインが110dBのNに相当する。ここら辺りが所謂ハイエンドの下限。なのでSONY DSD Directはちょっと厳しい。SACDの特性よりも悪いと思う。

 

NTFの零点が二つあって、低域にかけてだらだら下がりなので、典型的な五次の特性で二つのlocal feedbackを入れている。経験的に言って、local feedbackを入れられるのは七次以上になる。そうでないと、64OSRでは帯域内でも(20kHzまで)110dBのNを確保できない。このFFTでも、20kHz近辺では110dB以下に悪化してしまう。

 

但し、外してしまうと三枚目のFFTTASCAM Hi-Res Editor(水色)に近い特性になるので、やはり110dBは確保できない。前回書いたように、この場合はOSRを128にしてやれば、30kHz近くまでは110dBを確保して、尚且つ帯域外のノイズを八次などの物よりもかなり減らせる。一枚目のWave to Dsddiff converter(オレンジ)は七次で三個のlocal feedback。アナログ出力で総合的に判断するならば、一枚目ではこれが一番良い。

 

二枚目のFFTでは、SoX(clans-8水色)が面白い。これは八次で四個のlocal feedback。local feedbackは前々回にちらっと書いたはず。量子化ノイズの特性を決めているNTFは、八次だと分母と分子は因数分解可能なzの八次の多項式になる。分母のゼロは不安定を意味するので不許可。分子がゼロになると、そのものずばりでNTFはゼロになる。

 

local feedbackを入れていない時、z^(8)のような分子になるので、ゼロになるのは直流の時のみ。一枚目のSONY DSD Direct(緑)とかWave to Dsddiff converter(オレンジ)が、直流に向けてだらだら下がるのは、z^(1)という項を残しているため。奇数次の場合は、このzのお蔭で多くの場合、直流でのゲインはゼロになる。SoX(clans-8水色)は八次で全ての項をゼロ以外にずらしているので(それがlocal feedback)、直流に対してもゼロにはならない。

 

尚且つ、最適な係数を触っているようで、八次にしては落ちが悪いので低域では110dBのNを確保できていない。音を聞きながら調整していたらこうなっちゃった、とか。次数とは単に量子化ノイズの分布を変えるだけの作用、という原点から見るならば、帯域内でのノイズ増加は帯域外でのノイズ低下を意味する。

 

実際、同じく八次のPCM-DSD Converter(黄色)よりは、ずっと帯域外ノイズは小さい。音ではなくて、オシロの波形を見て調整したのかもね。アナログ波形はかなり綺麗なはずだから。総合的には、二枚目の中ではSoX(clans-8水色)が一番良いかも。かなり試行錯誤をしてるはず。

 

三枚目は色々と個性的なのがあって面白い。TASCAM Hi-Res Editor(水色)はlocal feedback を外している珍しいタイプ。次数としては傾きと-150dBとの交点からして五次だと思う。12kHz以上では110dBのNは厳しいけれど、全体のバランスは良い。かなりの試行錯誤をしない限りここまでは出来ない。評判の良いらしいHQP(ADSM7)は、少しだけ係数を触った七次に過ぎないので、TASCAM Hi-Res Editor(水色)の方がずっと考えている。

 

もう一つちょっと中身が読めなくて初めて見るのが、Foobar 2000 Type D(緑)。五次で二つのlocal feedbackであるだろうけれど、 帯域内での落ち方が前述の五次のSONY DSD Direct(緑)よりも、ずっと良い。その分、110dBのNは13kHzあたり。local feedbackを外すとこんな特性になるけれど、その場合は零点を持たないので、どうしてこうなのかが分からない。

 

64bit精度にするとこうなるのかと言えば、些か疑問がある。少なくとも、48bit精度ではSONY DSD Direct(緑)と同じ特性にしかならないのは経験済み。これはちょっと理由が分からない。謎。

 

Weiss Saracon(CRFB10)は名前の通りに、CRFB型の十次で五個のlocal feedback。必要なのは最終のアナログ出力での特性がどうなるかなので、些か牛刀の趣なきにしもあらず。ソフトウエアとしては良好であっても、現実世界のDAC用としては今一つ。TASCAM Hi-Res Editor(水色)が三枚目の中では良いのかなあ。

 

四枚目のFFTSONAR(緑)は、TASCAM Hi-Res Editor(水色)と同じに見える。いずれにしても、local feedbackを外している。偶数次の場合、最低でも一つはz^(n)の項を残さないと、直流でのNTFが零にならない。八次であれば、二個を残してz^(4)を含んだ方がアナログ出力としては好ましくなる。なので四次であれば、local feedbackは無しで分子はz^(4)とするのが得策。

 

ソフトウエアのライブラリーでは、多分一律に入れられるだけ入れてしまっているんだと思う。HPQ(ADSM7オレンジ)が、ここに出ていた。七次で三個のlocal feedback。帯域外でのノイズが少し少な目なので、その分帯域内は増えるけれど、-180dB近辺はアナログ出力での140dBのNを意味するので、観測不能。つまり、ここに拘ったとしても、アナログ出力には何の変化もないという事。

 

でもSoX(SDM-8水色)とかPCM-DSD Converter(黄)よりは、帯域外ノイズは小さくて帯域内ノイズは良好。ちょっと値段が高いらしいけれど、四枚目の中では良いかも。うちの1bitDSMでは、TASCAM Hi-Res Editor(水色)みたいなlocal feedback無しを四次にして、OSRを128にする。そうすると、DSM-tax は2dBの軽減税率適用で25kHzぐらいまでは110dBのNを確保できる。

 

帯域外ノイズは元々小さめの上に、一ビットなのにアナログFIRでデジタルフィルターがかかるから、相当に減る。6dB/octのアナログLPFだけでこの程度。色々な特性を見たけれど、1bitDSMの最適な変調は、そのあたりと思う。

f:id:xx3stksm:20190917205406j:plain

f:id:xx3stksm:20190918151029j:plain


 更に現実の問題として1bitDSMは、-40dBFSから-60dBFSぐらいにかけて空ぶかしの状態になってしまい、特性が悪化する。市販のチップが多ビットなのは、その辺の事情も関係するのかもしれない。対策はなくもないので、次の基板ぐらいからぼちぼちと。DSMをがりがり自前で足掻いていると、なんかの弾みにふと気が付くことがあって、対策を知っている人は少なからずいるとは思うけど。

 

 

 

 

 

 

 

 

せっかくなんでパッシブプローブも。

 スペアナと言うかFFTで1MHzぐらいまで確認できると、やっぱり音声用途でも嬉しい。オシロスコープに付いているFFTはグリコのオマケにしかなってないけれど、専用のハードウエア(MDO3000シリーズ)が入っているのはバカにならなくて結構使える。音声用のADC程のTHD特性はないとしても、DSMの帯域外ノイズを見るのなら問題なし。

 

 アクティブプローブは、さすがにちょっとノイズ特性が悪い。1.5GHZ帯域なんで仕方ないんでしょう。50オームのパッシブが低レベルであれば使えるので、せっかくだから次数の違いでの帯域外ノイズの変化を見てみる。

f:id:xx3stksm:20190918151029j:plain

 これだと128OSRで零点が256kHzに動いたのも分かる。デジタルフィルターなのでサンプリングに合わせて特性が変わる。FFTのSFDRが60dBぐらいなので、THDもその位になっている。これは測定系の制約なので、実際はもっと良い。64OSRにするとこう。

f:id:xx3stksm:20190918151403j:plain

 零点が128kHzに移る。アナログフィルター(6dB/oct)の効きが少し悪くなるので、全体として少し悪くなる。零点が動くのがデジタルフィルターの強み。4th orderの64OSRには、ちゃんと使い道がある。32OSRとか16OSRにも。このDACは元々マルチシステム用なので、普段は1024tapFIRのXoverが入っている。ローチャン用は、1.5kHzカットオフとか。

 

 なので、1.5kHzまでしか使わないのであれば、20kHzの1/8の16OSRでも問題はないという寸法。アナログのLPFなんぞを使っていると、そうは問屋が卸さない。かなりデカいCが必要になってくる。デジタルフィルターはアナログFIRであっても、零点がサンプリング周波数に連動して落ちて来るので、等価的には128OSRと同じ特性になる。変える必要があるのは、6dB/octの所だけ。

 

 OSRが下がるとSNは上がって来るので、高能率の中音のホーンなどでかなり有利になる。他にも、高能率のホーン対策として一気に10dB近くSNを上げる手もあるので、SNで不利になる1bitDSMの問題はほとんどなくなる。ホーン用としては、32OSRぐらいと思うけど、アナログFIR様様。マルチシステムが基本だから、DACはネジクギとして数を用意し、スピーカーの効率とか帯域に合わせての調整が必須。

 

 七次と八次はこれ。次数を上げるのは、単に量子化ノイズの分布を変えているだけなので、帯域内での効果がアナログ的要因で制約されるのであれば、帯域内でのSNは四次と同じで、対域外でのノイズはかなり大きくなる。次数の意味をしかと考えるのであれば、当然の結果。中々、実物で試さない限り、次数信仰から自由には成れないけど。

f:id:xx3stksm:20190918152824j:plain

f:id:xx3stksm:20190918152835j:plain


 結局の所、アナログFIRで24以上のタップを確保するのであれば、四次が最善の選択になる。山高ければ貴からず、DSMの次数も同じ。意味を考えて、個別の状況に応じて調整が必要。
 

最適のDSMを求めて。分け入っても分け入っても量子化ノイズ。

 DSMを多ビットで使う場合、自分でハードウエアの変調器を作るしかないと思う。ソフトウエアで提供されているのは1ビットに限られる。1ビットでないと外部のDACとつなぎようがないし、さて何ビットにしたら良いかもわからないだろうから。有料のソフトもあって結構な値段がするらしい。もちろん中身は企業秘密。7次ぐらいの次数のようだけど。

 

 問題なのは、そういうソフトは特定のDACを想定しているわけではないので、必ずしも最良の結果とはならない事。特にハイエンドを目指すのであれば、特定のDAC

対しては、それに特化した変調器を組み合わせないと目的は達成できない。デジタル領域でのノイズシェービングの効きは、あんまり最終的なアナログになった時の特性とは関係がない。

 

 少し古めの規格のSACDプレイヤー(所謂DSD)は、おそらく7次ぐらいの次数でOSRは64。確かSACDの規格として信号成分は50kHzまでとかいうのがあって、量子化ノイズを落とすためのアナログフィルターは、50kHzのカットオフになっている筈。24dB/oct以上のは入っていると思う。テストSACDで信号を出してみると、10kHzはこんな感じ。

f:id:xx3stksm:20190917201537j:plain

f:id:xx3stksm:20190917203059j:plain

 20kHzぐらいから急激に増える量子化ノイズがあるので、50kHzまでと言う制約もありアナログ波形はこんなもの。もう少し広めの帯域で確認すると、プローブのノイズ特性で制約されているので、細かくは分からないものの、そうだろうなあという按配。

f:id:xx3stksm:20190917203410j:plain

 70kHzぐらいから落ち始めるのは、多分アナログのLPFの特性。このノイズシェービングの名残は問題ないという事にはなっている。実際DSDの音質に関しては、細やかな感じというものが多くて、高調波が気になるという話は聞かない。場合によっては、IMDの影響で可聴帯域にノイズ成分が落ちてくる可能性はある、と思うけど。なのでやはり、もう少し綺麗にしたい。

 

 綺麗にするためには多ビット化がまず一番簡単。しかし1ビットが必須なので、これは無理。次はOSRを上げる。128にしてやれば、ほとんど倍の所にノイズの山は動く。そうするとアナログLPFが効くので、もうほとんどノイズは消えるはず。但し、sacdという規格では、書き込むデータが倍になるのでそれは不可。PCで変調をかけている場合でないと、この手は使えない。

 

 但し、いずれにしても、デジタル領域では山の位置が高い方へ動くのみ。アナログLPFの設計が楽になるのが長所。多分、無料か有料に関係なく、ソフトでの変調器を使う限り、打てる手はこの二つしかない。ソフトを書いている人は、デジタル領域の外には出られないと思うから。つまり、アナログに変換するDACまでも含めた設計は無理なので、うてる手はここで打ち止め。

 

 特定のDACに特化した変調器と言うのであれば、第三の手がある。国宝千手観音にははるかに及ばないながら、二か三かには意味がある。三番目の手を使うと、OSRは128だけど、単純な6dB/octのアナログフィルターでもここまで綺麗になる。

f:id:xx3stksm:20190917205406j:plain

f:id:xx3stksm:20190917205420j:plain

 アナログ波形の見た目でもハッキリ違うので、250kHzまでのFFTの結果も当然。1bitDSMで、6dB/oct(30kHzぐらいのカットオフ) のアナログフィルターでここまでの特性は立派。オーディオ帯域を詳しく見るとこんな感じ。

f:id:xx3stksm:20190917205927j:plain

 タネは、低めの次数(4th order)の変調。DSMの次数は、スピーチとスカートの長さ程には簡単じゃない。物事はだいたいそうであって、デジタルフィルターのタップにしろ、アンプの出力にしろ、適当な大きさというものがある。長ければ良いとか、大きければ良いという話はない。部屋の広さであれば、広ければ広い方が良い、単純に言い切れるのは、オーディオではそれぐらいでなかろうか。

 

 四次のDSMは、火打ち石で火を起こすような感、なきにしもあらず。まずやらない。でも64のOSRにしたとしても、量子化ノイズの残りはとても小さい。上の同じOSRのSACDと比べるならば、歴然。

f:id:xx3stksm:20190917210723j:plain

 どうしてそうなるかには勿論理由がある。かなり数学的な問題で、NTFというノイズシェービングの効きを表す関数の特性に拘わる話。この250kHz帯域でのFFT(オレンジ色の図)は、20kHzを超えるとほとんどNTFと等価。DSMの次数とは、主にこのNTFをいかにして制御するのかという意味。

 

 もしもデジタル領域でのみ考えるのであれば、多分DSMの次数は高い方が有利。有利と言う本当の意味は、可聴帯域での、つまり20kHzまででのノイズシェービングの効きは良くなりますよ、と言う事。しかし現実には、アナログ領域での返還に伴うノイズであるとか、帯域外のノイズが大きいとsacdのように関係ないとしてもきちゃないアナログ波形になるとか、が関係する。

 

 それらはどんな変換方式のDACを使うかに関係して変わるものであるから、それに合わせたDSMの次数も自ずと変わって来るよねえ、と言う話。更に、アナログFIRのDACというものは、それ自体が超良質のLPFになっている。アナログFIRのDACとは、アナログ領域におけるデジタルフィルターなので、基本的には普通のアナログLPFのような落ちっ放しにはならない。

 

 しかしまあ、零次ホールド特性もあるので、高域にかけてはだらだらと落ちるから、見た目としては落ちっ放しのアナログLPFとほぼ同じ。それもあるので、上の四次の128OSRの場合は、ほとんどノイズはプローブのノイズの下になっていて見えない。パッシブプローブならば見えるけど、50Ω負荷ではちょっと比較が難しいのでアクティブプローブでのみ。

 

 同じ環境で次数を七次にすると、四次よりはかなり悪くなる。

f:id:xx3stksm:20190917212905j:plain

 一つ上の四次の時も、128kHzの所でぐっと落ちる。これはアナログFIRの特徴。普通のLとかCとかは入ってなくても、デジタルフィルターのように周期的に線形位相で零点が出来る。デジタルフィルターのようにではなくて、デジタルフィルターそのもの。但し、足し算をアナログ領域でしているだけ。もう既に失効した特許。当時は、そんな副産物があるなんて思いもしなかっただろうけど。

 

 八次だとこうなる。

f:id:xx3stksm:20190917213453j:plain

 高い次数で帯域内でのノイズは改善されるけれど、全帯域でのノイズは勿論不変。という事は、対域外でのノイズは大きくなっても不思議はない。せっかく帯域内でのノイズを小さくしても、DACでの変換過程でのノイズの方が支配的なので、結局意味がない。最終的なアナログ出力を全帯域で考えるならば、むしろ悪化してしまう。だから次数が高ければ良い、と言うほど単純ではない。

 

 暫くは下のような64のOSRで八次のDSMを使っていたけれど、今は128OSRで四次のDSM。これはちょっとADCの特性が違っていたので、実際は115dBぐらいのSN。なので今の四次のものとほぼ同じ。

f:id:xx3stksm:20190809205555j:plain

 実は、次数を下げられるのであれば、ボーナストラックみたいなのがある。ボーナスSN。知っている人は知っているように、六次を超えるようなDSMは、変調度を少なくとも6dBは下げないと動作しない。これを数学的に証明するのはとても難しいだろうけど、感覚的には比較的容易。高い次数とは、音声信号以外の1bitデータの持つ周波数成分が高い方に移るという事。 

 

 仮に大きめの振幅を八個の一ビットデータで表す時、一番簡単なのは11111111。11110111になると、その平均値は7/8なので11111111の8/8よりは小さくなる。しかし周波数成分を考えると、11111111は直流。一番高いのは10101010の時。でもこれでは直流成分は4/8。実質的にはゼロ。なので、そこそこ高い周波数成分で、そこそこの直流成分にするには、11101110あたり(6/8)が限界。

 

 結局、高次の1bitDSMでは、最大値が11101110(6/8)で最小値が00010001(2/8)という所に落ち着くしかない。なので最大値が11111111(8/8)で最小値が00000000(0/8)と言う理想的な状態(1-0=1)と比べると、得られる振幅は(6/8-2/8=1/2)に減る。これを超えるような1bitデータを求めると、DSMは、孝ならんと欲すれば忠ならず で、股裂きになる。つまりは不安定。

 

 六次以上では必ず6dBの税金(DSM tax)が必要。一次と二次では、ほぼゼロ。実測すると、三次では2.5dB、四次では4dB、五次では5dBほど。1bitDSMの特徴として、この差はそのままSNの差になる。なので四次のDSMは、六次以上よりも2dBの軽減税率の恩恵を受ける。但し、128OSRは64OSRよりもSNでは不利なので、実際は帳消し。でもハードウエアを改善するならば、この2dBはそのまま儲けとなり得る。要は、現実世界では、低い次数に長所がある。

 

 更にもう一歩DSMの奥山に分け入るならば、local feedbackというのがある。これはNTFの解析から来ている。基本的な二次のDSMから、このlocal feedbackという概念が出て来る。一次にはない。g0というのがそれで、全体ではなくて局部的な負帰還を掛ける。かなり小さめの値であって、そんなには全体の特性に影響しない。

 

f:id:xx3stksm:20181213212028j:plain

 これを入れると、帯域内のノイズ特性を改善できる。八次の場合、上の図ではノイズが上がり始めるのは、25kHzぐらいから。これはlocal feedbackを二段階入れているので、ここまで改善されている。local feedbackは次数二つにつき一段階入れられるから、八次だと四段階までは入れられる。二段階でそこそこの特性になるので、四つ入れる必要はない。

 

 但しこれもデジタル領域の話なので、最終的なアナログの特性とは必ずしも一致しない。却って悪化する場合もある。OSRが64以外ならば入れない方が良いし、七次以上でない時も却って悪化する。なので、四次の128OSRでは入れない。そんな微調整がDACのハードウエアに合わせて必要。

 

 そこまで変調側を追いこんで、アナログFIRのタップも48ぐらいにするならば、120dBのSNは出ると思う。THDは三歩下がって師の影を踏まずで、ほっといても後からついてくる。1bitDSMの場合、リニアリティと言う概念がアナログへの変換過程では存在しない。少なくとも、アナログFIRという方法論では。

 

 結果として、温度などに対しては超安定。調整箇所もないので、ディスクリートでありながら、一分もしないうちに昨日と同じ特性になる。最大振幅時と無信号時とでノイズフロアの変動もない。多ビットのDSMでは、モノリシックの市販品でも、決してそうはならない。信じられない話ながら、どうやら現実世界でもディスクリートの1bitDSMを超えるものはなさそう。 

  

 

少し目鼻のつき始めた1bitDSM。原石の輝きは磨き方次第。

 pcm1704一筋で、ほぼ二十年。音楽用とは考えていなかった冷やかしのDSMが思いの外の音質で、ならば究極の禁断のけもの道の1bitDSMにも手を出すしかなくて、やってみたらアッサリとマルチビットのDSMを上回る性能に。理論的にはそうなんだけど、理論と現実とはなかなか相容れないのが常。ましてDACチップ無しでどこまで行けるのか、との思い込みは偏見だった。

 

 元々の目論見の、ノイズフロアが出力振幅に依存しない特性は、1bitDSM(DSD)の圧倒的勝利。リニアリティという概念がないので当然と言えば当然なんだけど、振幅が大きくなっても全く動かない。ここん所は完全に最近の市販チップとは別路線になる。市販品はマルチビット系なので、大振幅では必ず特性が悪化する。

 

 何故か0dBFS神話と言うのがあって、特に最近の海苔波形だと、悪い所を使っている。pcm1704ぐらいまでは、0dBFSで一番良い特性と言って嘘ではなかったろうけれど。AK4499というのも悪化する。https://velvetsound.akm.com/jp/ja/technology/

ここの最初の図は、-155dBFSという事でほとんど無信号。常識的なFFTサイズ(64k)だと、ノイズ電力は-124dBFSぐらいになる。

 

 その下の図は0dBFSの時で、ノイズフロアは6dBぐらい悪化するので、オーディオ業界以外の常識ならば、THD+NはTHDの-127dBとNの-118dBでほぼ-118dB。-124dBというならば、Nは-127dBでないと困る。どう見てもそうは見えないから、オーディオ業界独特の測り方があるんだろう。ともあれ大振幅では、少なくとも6dB近くノイズフロアは上がる。

 

 基板の作りに問題があるので正確ではないけれど、made in eBay のESS9038も同じ。これはもう間違いなく0dBFSで使うと最悪。下の図の-3dBFS程度でもかなり悪くなる。opアンプの特性はDACよりも一桁は良いので、ハイエンド機器では-6dBFSぐらいを最大値として、足りない部分はI/Vの所でゲインを稼いでいると思う(DAC-3とか)。

 

 そうすると、もっと遥かに問題のInter Sample Peaksも起きない。青が無信号時のノイズフロア。入力はSPDIF。基本波のスカートの広がりでもS/Nを損してる。audio testerはかなり正確なS/Nを出してくれる。昔の歪率計のノッチフィルターとの比較は、ちと分からないけど。

f:id:xx3stksm:20190809204425j:plain

 

 AD9717で作った自作品の5bitDSMも、やはり多ビット品なので大振幅では6dBぐらい悪化する。音楽用としてはあんまり意味ないけれど、DACの校正をした直後なので、THDはかなり良い。数日経つと、-120dBは難しくなると思う。もしも大振幅での悪化がなくて、なおかつ青天井に振幅を上げられるのであれば、青の無信号時の-120dBぐらいまでは、ノイズ電力は落とせる。

f:id:xx3stksm:20190809205010j:plain

 

 そしてケモノ道の1bitDSM。これは大振幅での劣化はない。デジタルからアナログへの変換時に、リニアリティという概念が存在しないので。2bitであっても、1bit以外では必ずリニアリティの関係で、大振幅では劣化するはず。DSMの変換を外部の基板でするとかECLでのスイッチングをあれこれと悩んで、二週間前の出来立てホヤホヤから、かなり良くなった。

 

 これは基本波のスカートの広がりがとても狭い。有り体に言うならば、ジッタが小さい。何が関係するのかは良く分からない。同じくアナログFIRのpcm1792のDSD入力も、とても狭い広がりだった。pcm入力はDSDよりも悪いのであんまり調べていない。どんなだったか記憶がない。

f:id:xx3stksm:20190809205555j:plain

 多ビット品の場合、DSMの次数はそんなに上げる必要はない。5次ぐらいで十分。1bitはケモノ道なので、とても険しい。8次ぐらいの急坂。外部の基板で変調をかけて、1bitになった状態で送るので9次とか10次でも可能。マルチプレクスの関係で、8の上は16。16の中で9しか使わないのは効率悪いので、ひとまずは効率の良い8次。

 

 116.3+0.77=117.07は、青の無信号時の117.87にかなり近い。実際、両者はほぼ重なる。つまり、単純な正弦波であるならば、ノイズフロアは振幅の変化に対して反応しない。何時も同じ値に留まっている。うちの環境では、ノイズフロアの変動の有無は音質に大きく関係する。太鼓がドンと鳴る時、思わずよけてしまいそうな勢いになる。音圧は100dBも行かないのだけど、ノイズフロア変動なしは爆風のような衝撃波になる。

 

 OSRというのは、低い方が良い。理論的には当然。デジタルの領域では、DSMのTHD+Nなんて24bit精度の遥か下で-160dBとか-170dBとか。アナログでの劣化原因の多くは、パルスの立ち上がりがなまる事。パルスの幅が長いほどその劣化は小さいので、OSRは低い方が良い。漏れてくる量子化ノイズを出来るだけ切るために、DSMの次数は上げる。特に1bitでは。

 

 アナログFIRはLPFでもあるので、24tapでもかなりノイズは落とせる。最終的に32tapにするならば、12dB/octぐらいで実用的な所に落ち着くのではと思う。OSRは128にした方が良いかも。128は64よりも少し劣化する。こんな具合。量子化ノイズの漏れは随分と小さくなる。

f:id:xx3stksm:20190809211652j:plain

 別の問題として、ノイズフロアが-116dB以下になって来ると、ADCの残留ノイズが無視できなくなってくる。今使っているAD7960はSAR型で、DSM型よりもノイズフロアは低い筈。元は4MHzサンプリングで、20kHz帯域でのノイズレベルは-123dBぐらい。チップ自体の特性が揃っているので、モノラル状態で二つパラにした時の値。DSM型で-120dBを超えるのは中々難しいかと思う。

 

なので、無信号時に-120dBと言うのは、実際は-123dBぐらい。-122.6dBとなると、-130dB近い筈。大振幅時のノイズフロアは、ノッチフィルターでも使わないと、正確には測れないと思う。APの測定器なんかはどうしているのだろうか。ああいう再現性を保証しているプロ用の機器の場合、今時のチップだと保証値はアマチュアの実力値よりも普通は低くなる。

 

 ここでのESSの測定値は、先のAKとは違って常識として理解できる。

https://www.audiosciencereview.com/forum/index.php?threads/review-and-measurements-of-matrix-audio-element-x-dac-streamer-amp.7782/

-127dBのTHDと-121dBぐらいのNで、THD+N=-120dB。この人は32kのFFTを使うとどこかに書いていたので、それならばNは-121dBでも不思議ない。但し、なんらかの補正なしで-121dBのNは、ちょっと信じられないのだけど。4Vrms振っているし。

 

 上のサイトに32tone-testなるものがあったので、ちょと試す。20Hzから20kHzまでのlog目盛。100Hz,120Hz150Hz,200Hz,250Hz,320Hz・・・。

まずはmade in eBayのESS。青が大振幅時で、最大値で-2dbFSぐらい。白はそれよりも60dBぐらい低い。分離を良くするためにここだけはFFTが1024kサイズ。なので今まで(64k)のノイズフロアよりも、12dB低くなる。 

f:id:xx3stksm:20190809214029j:plain


 低い方でかなり悪化するのは、多分ヤスモン基板のせい。むしろここまでの特性が出ているのが驚き。I/V変換の所だけは、電流モードになるように改造しているけど、他はそのまま。SPDIFが一番高性能。

次はAD9717の5bitDSM。低い方では少し悪化するみたい。

f:id:xx3stksm:20190809220728j:plain


 実は、1bitDSMは小振幅が苦手。大振幅は青天井なんだけど。多ビットのDSMならば、3bitでもこうはならない。単純な正弦波であれば、悪化はしない。こんな32toneだとか、実物の音楽信号の小振幅時にはこういう劣化が出る。正弦波というものは、スピーカーの軸上1mの特性のようなもので、参考値ではあっても音質との相関に乏しいという実例。コンニャクのような役立たずで、一応腹はふくれるがそれだけ。

f:id:xx3stksm:20190809215335j:plain

1bitDSMを実用化するには、小振幅時の特性がキモ。DSMの特性を少し変えると違ってくるだろうけれど、さてどうしたものか。大振幅時の特性劣化を防ぐのは、多ビットDSMでは無理と思う。1bitDSMの小振幅時の特性は、なんとかなるでしょう。他にもまだ幾つかの問題はあるけれど、大振幅での青天井は他で真似のできない長所。やっぱり1bitDSMに突っ込むしかない。

 

1bitDSMの三種の神器。アナログFIRとECL接続とFPGA。

 半信半疑だった自作のDSMDACは、思いの外の高性能だった。理論的には1bitDSM(DSD)が高嶺の花と言うか、他の追随を許さない最高峰になり得るので、これは試すしかない。今はネットで簡単に基板を作れるようになったので、CADを持っているならば試作は容易。空中配線基板では、事の本質は分からない。二週間ほどで基板データを作り、発注は海外。運送費払ってでも、こっちが質として上。

 

 一か月ほど前に届いて、あれこれと試行錯誤。ひとまずの結論として、理論の通り1bitDSMはとても潜在能力が高い。AD9717での3bitDSMは、DSMの変調回路から始めた事もあって一年以上はかかった。それを流用できるとはいえ、1bitDSMは一月ほどでほぼ同じぐらいの性能になった。細かい修正は必要としても、DACチップ無しのFPGAトランジスタだけで、ESSのような最新チップと同等もしくはそれ以上の物が作れる。1bitDSMおそるべし。こんな基板。

 

 

f:id:xx3stksm:20190724182723j:plain

  Xc6slx9という¥2400ぐらいのFPGAが二つ。各チャンネルに一個づつ。トランジスタをドライブする数が多いので、基板の配置からしてもLとRに一個づつが正解。左と右は少しトランジスタの構成が違っていて、おそらく左はダメだろうとの予想通りダメだったので放置。右側が本命。

 

 1bitDSMは基本的に、所謂ノイズシェービングで高域に追いやった量子化ノイズをアナログのLPFで落とせば、本来の音声帯域の信号が取り出せる。言うは易く行うは難し。論理ゲートの出力にCRのフィルターをつなぐだけでも音は出る。詳しい中身は知らないけれど、高級品としてはChordとかPSaudioの製品は結構な値段する。FPGAとアナログ部品という構成は同じだろうけど。

 

 今はRpiとかBBBのようなLinux系は勿論、WindowsでもPCMから1bitDSMへの変換は色々あると思う。小振幅時の応答性、大振幅時の安定性、周波数が変わった時のpopノイズ、など色々細かい問題はあるとしても、そこそこの質での変換はしてくれるはず。デジタルの領域ではそんなに差はつかない。問題は、1bitのDSM信号を、理想的な形で如何にしてアナログに変換するか。

 

 市販品のDACチップもDSD入力が可能なので、それを使うのも手ではあるけれど、ESSの場合DSD入力は本命ではないようで、TOSLINKよりは質が落ちる。1bitDSMに拘るのであれば、やはり独自路線が得策。良く使われているのは、Signalystという方法論。これは74hc590のようなシフトレジスタを使って、アナログのFIRを構成する。アナログFIRはもう失効した昔の特許で、その時はこんな使われ方は想定していなかったと思う。とはいえ今となっては、アナログFIRなしでの1bitDSMは考えられない。

 

 1bitDSMは、そもそも異端に属するケモノ道的流派なので、ここからDSMを理解しようなどと考えるならば、初めっから千日回峰に挑むようなテイになるのが落ちで、必ず脱落する。木食をしてケモノになって山野を駆け巡るなど到底無理。どのぐらい無理かは、この図で自ずと知れる。これが1bitDSMの正体だから。

f:id:xx3stksm:20190724185728j:plain

 ちょこっと透けて見えている赤のサイン波を、1bitDSMに変調すると青の波形になる。この青から高調波を取り除くと、信じられない事にTHD+Nが120dBを超えるサイン波を取り出せる。少なくとも五次ぐらいの次数で、40bit程度の演算精度で変調がかかっているならばそうなる。それをここから見通すなんて、千日回峰か五体投地としか言いようがない。

f:id:xx3stksm:20190724190123j:plain

 心眼を持って上の小さな図を眺めるならば、隠されているサイン波のようなものが、ふと感じられるかもしれない。小さい方が、目のLPF効果で高域のノイズ成分を落とせるので、何かしら隠された本性と言うか元の波形が浮かび上がる。五次ぐらいになっても、微かには波形の疎と密で何が隠されているのがが推察できる。二次ぐらいまでであれば、ほとんど丸見えなんだけど。

 

 電子機器に心眼は期待できないので、マニ車として登場するのがアナログFIR。これには、金は使っても使っても減らない、というような効能がある。この猛烈な高調波ノイズの泥に埋もれている音声信号は、クモの糸にすがり付くようにして上に昇って行ける。音声信号はドンドン大きくなるのに、高調波ノイズは下に留まったままになってくれるので、SNRもTHDも鰻登り。

f:id:xx3stksm:20190724191150j:plain

 これがまずは一発目のFIR。これだけで心眼でも見えなかった青の波形が、もう素性は知れたも同然の黄色に変わる。これは最も単純な、二点間の移動平均。青の波形の隣り合っている二点を、足して二で割っただけ。二点間の平均なので、基本的にはデジタルフィルター。ではあるけれど、デジタルの領域でこの手は使えない。何故かと言うならば、二点が両方とも1若しくは-1であれば結果は変わらずであるけれど、1と-1の時は結果がゼロになってしまい、上の図のように元の二値データが三値に増えてしまう。二値以外は、デジタル領域の1bitDSMでは扱えない。

 

 なのでアナログFIR。アナログであるならばそんな制約はない。74hc590であるならば、その隣り合った二点をアナログ的に足せばよい。抵抗でもトランジスタでもopアンプでも。この場合は足すだけで、もう二では割らない。つまり、二点間の足し算をすると、信号は倍になる。高調波ノイズはほぼそのまま。埋もれていた音声信号が6dBだけ浮かび上がってくるという按配。6dBだけ地上に近くなる蜘蛛の糸

f:id:xx3stksm:20190724192326j:plain

 四点間の移動平均だとこうなる。更に高調波ノイズが落ちるので、結果として音声信号がより浮かび上がってくる。八点間だとこうなる。

f:id:xx3stksm:20190724192458j:plain

 元々の青の信号に対して、八点間の足し算だけでここまで元の赤に近い信号に変わる。つまりは、高調波ノイズを落とせる。なのに音声信号の方は八倍になる。18dBの改善が期待できる。嘘のようなホントの話。但し問題は、アナログの領域でこの足し算を理想的に行う必要がある事。デジタルの領域であればいとも容易い話。しかし多ビットのDACが必要になってしまうので、アナログ領域で足すしかない。

f:id:xx3stksm:20190724192956j:plain

 平均とはLPFなので、足す数つまりはタップ長でこんな具合に高調波が落ちる。これは4096長のFFTだから、八点の場合は(4096/8)=512毎に零点が来る。紫は512おきにゼロになる。四点の緑だと1024おき。全然落ちていない青と比べるならば、八点の紫は相当に効いている。実際、元波形の赤にかなり近くなる。これがアナログFIRという術の正体。実際は32点ぐらいの移動平均を使う。

 

 現実のハードウエアでは、四点だとこんな感じ。四点ぐらいでも、その後に6db/octの落ちっ放しになってくれるアナログフィルターを入れるだけで、青の波形になる。アナログでの足し算とはいえ、FIRは意味合いとしてはデジタルフィルターなので、上の図のように落ちっ放しにはならない。これはデジタルフィルターの鉄則。

f:id:xx3stksm:20190724193715j:plain


 ではこれで一件落着かと言うならば、せいぜい三合目。それで出て来る数字は、90dBぐらいのSNRとかTHD。これは実用レベルではあるし、90dBのSNRでも大抵の場合、残留ノイズは聞こえないけど。それを超えるためには二つ目の術が必要になる。74hc590のような場合、一個あたりの特性はこんな感じだと思う。

f:id:xx3stksm:20190724194650j:plain

 THDがあまり良くないのは二次の歪が大きいため。これは差動型にしてやるとかなり改善できるけれど、この方式の致命的な所は、電源が基準電圧になってしまう事。普通のDACチップでは、基準電圧に気を使う。PSRRが0dBなので、ここでのノイズがそのまま出力に乗ってくる。Signalyst型では、74hc590の出力をそのままアナログとして使うため、電源のノイズがほぼそのままアナログ出力に出てしまう。

 

 なので本来のアナログFIRの、音声信号だけを大きくしていくという美味しい所を享受できない。音声信号と共に、ノイズ成分もクモの糸を伝って上がってくる羽目になるので、32点の平均でもあまり大きな改善はない。90dBぐらいが上限になると思う。第二の術とは、このPSRR=0dBのしがらみを快刀乱麻を断つが如くに解き放つこと。色んな方法論があると思うけど、ありふれていながらあまり知られていないのがECL。第二の術。こんなの。

f:id:xx3stksm:20190724195708j:plain

 T1とT13が基本単位。残りは足し算のためにコレクタが共通になっているだけ。32の平均ならば、32個のパラになる。LN_0とLP_0は逆相になったトランジスタのスイッチング信号で、これが1bitDSMに相当する。LN_1とLP_1はLN_0とLP_0を一段遅延した信号。T13を抵抗に置き換えると、標準的なECL回路になる。T13は定電流回路で、その電流はT1のどちらかのトランジスタに全て流れる。LN_0とLP_0に0.4Vぐらいの差があれば、高いベース電圧のトランジスタに全て流れる。

 トランジスタ(T13)の定電流性から、オンになっている方のベース電圧に乗っているノイズは、流れる電流にはほとんど影響しない。T1のドライブはFPGAなので、LN_0とLP_0には74hc590と同じように電源のノイズが乗っている。けれども0.4Vが0.5Vになったとしても、オンになっているトランジスタに流れる電流に変化はない。つまり、それなりのPSRRが期待できるという話。なのでECLのような抵抗ではなく、T13で定電流にした方が良い。

 この基本単位の特性はこんな具合。差動型になっているので、そこそこのTHD特性で、U2のゲインが18dBぐらいあるので、R1とR4の所でのノイズは115+18=133dBFSぐらい。0dBFSが3.5Vppなので、1uVを切る。opアンプのノイズや熱雑音とかでその位と思う。FPGAの電源ノイズを分離できていないとこんな数字にはならない。

 

f:id:xx3stksm:20190724201818j:plain

 
タップを倍にすると、ほぼ6dBの改善。信号成分だけが倍になるので、そういう美味しい話になる。青は残留ノイズで、信号が倍になっているのに変化しない。これがアナログFIRという魔法の真の姿。

f:id:xx3stksm:20190724201935j:plain


 更に倍にするとこう。ちょっと術に陰りがあるものの、通常のDACのパラ接続では良くても3dBなので、悪くはない。THDは逆に悪化しているけれど、これはあんまり気にする必要はない。実質的にはこの段階で八点の足し算をしているので、アナログ領域ではそろそろ馬脚が現れる。最後の術でこれは化粧する。三発目はくの一。 

f:id:xx3stksm:20190724202239j:plain

 これが12点の足し算。さすがにノイズフロアが3dBぐらい上がってしまう。

f:id:xx3stksm:20190724202900j:plain

 そして最終の24点での足し算。くの一で化粧して、そこそこの数字。これはトランジスタのスイッチングパルスのLN_0とLP_0を、微妙に調整する。ターンオンとターンオフは、同じ時間では切り替わらない。トランジスタの個体差なども関係する。なので最後に一番良さそうな位相関係になるよう、化粧する。

f:id:xx3stksm:20190724203042j:plain


 FPGAには内蔵のPLLがあって、位相を微調整できるようになっている。デジタル的な値なので、記憶しておいて電源オン時に再設定すれば良い。あんまり意味はないけれど、115dBを超えるようなTHDには再現来があまりない。現行のAD9717の3bitDSMでも、落ち着くまでには数分かかるし、いつもいつも同じ数字にはなかなかならないもの。1bitDSMは、直線性とは無縁の世界にいるので、そういう安定性はとても高い感じがする。

 

 まだ試作段階なので、直す所は沢山ありそう。でも潜在能力はとても高い。磨けば更に光る原石。今はXc6slx9の中にDSMの変調器が入っている。それよりも完全にデジタルとアナログを分けて二枚基板にして、アナログ部分はXc6slx4でトランジスタのドライブだけにした方が良いと思う。小振幅での特性を考えると、DSMの変調はもう少し大きめのFPGAで対応した方が良さそうだし。

 

 ともあれ、3bitDSMは一年以上かかった。1bitDSMは一月で目鼻がついたし、伸びしろがまだまだある。天下を取るのは 1bitDSMという、DACの最終予想は、現実のものになるはず。次の次の基板ぐらいで、今のAD9717は置き去りにされて後塵を拝すのみになるだろうなあ。短い命に合掌。