2012-01-29

ES9018 と DSD と(その4)

ためしにCAPRICEの設定とどこまで絡むかチェック。

DPLLはHighestx128(一番ぬるい設定)の場合に、

オーバーサンプリングをオフにすると、まったくロックしませんね…
オーバーサンプリングをオンにすると、ロックしたりしなかったりになる。

ジッターエリミネーターは、オンでもオフでも変わりなし。

なんだろなー

ちなみにLowestでも同じ状態ですね…DPLLオフにしちゃろうかしら…

===追記===

再生できてるデータをチェックしてたら…あれ?0000とか1111も殆ど存在してない?もしかするとこれか?

===追記===

やっぱりダメ、と思ったが、バイナリ列ダンプしてみたら、あれ?0000がまだ残ってる??

16ビットの0・1文字列を作ってそこを s/0000/0010/g で置換してるから、全体に置換される筈だが…
とおもったが、ダメか…

xxxx xx00 00xx xxxx の場合に xxxx xx00 10xx xxxx に置換するが、出力時に上位8ビットだけ使って、下位は
捨ててたから…下位も捨てずに次のステージで使い直さないとだめぢゃん(バグ)

というわけでソフト修正中

===追記===

この方向でもダメかー、どこを見てロック外れてるんだろなぁ…鋭意思案中。

8 件のコメント:

rtm_iino さんのコメント...

DSDはまだ手付かずで自分でリッピングしたデータも無いのですが、ES9018で再生できないDSDデータは他のDSDフォーマットを入力できるDACでも再生できないんでしょうか?

今日 3端子レギュレーターの分圧にLEDを使っている回路を見つけました。
http://www.hififorum.nu/forum/pop_printer_friendly.asp?TOPIC_ID=85602

DVDP->CS8614 I2S
https://docs.google.com/leaf?id=0B_l9_AOlkdSxODUwZmUwNDEtYTViMS00OTEyLWFiNDItYjk3NmU1OWFlOTRj&hl=ja

Hiroshi TSUGE さんのコメント...

少なくともDSD1794Aのチップで再生できることは確認済です。なぜかES9018は再生できない。I2SとDSDの自動識別機能が問題ぢゃないかなぁ、とみているのですが…よーわからんw

Hiroshi TSUGE さんのコメント...

ES9018で明示的にDSD/I2Sを指定できればいいんですが、レジスタ設定でもハード設定でもなくて、自動判定任せ。たいていのデータは大丈夫なんですが、生録と言われる一部のDSDだけ再生に失敗するので、、、なんだろなー、と…

diyaudioあたりで、なんでー、と質問して貰いましたが、問題ない、とか返されてて…で、最近某市販DSD-DACで、MR2000で録音したDSDが鳴らない(3つのうち2つは鳴るが1つがだめ)と聞いて、あー、同じ問題かも、と思いだして、追求を始めた処です。

まぁ、逃げ手がほしいぞ、と…

rtm_iino さんのコメント...

ES9018Sのデータシートの10ページにAutomute Loopbackの説明がありますが
35ページのレジスタ設定値に引っかかって無音になるのではないでしょうか?

あまりメーカーの姿勢や代理店の反応とかから見て情報が出てくるとは思えません。 自分で調べたらバグはわかるかもしれませんが、BBやWolfsonとは考え方も違うので何とも言えませんけど。。

http://www.nanophon.com/index.htm
APから売られている本読んでみたいと思います。 今の自分の環境だとPCM20ビットの音さえ出せていないのだろうと思いますがとりあえずDSDで生っぽい音を聞ける環境にするつもりです。

rtm_iino さんのコメント...

35ページと書いてしまいましたが、15、17ページの誤りです。
Automute Trigger pointの設定などを確認されてはいかがでしょうか?

Hiroshi TSUGE さんのコメント...

オートミュートをしてると、ロックするはずなんですわ。現に無音時はオートミュートしてて、データはロックしてる。

で、今回の例だとずーっとロックがはずれたままになる(カプだとランプがずーっとオレンジになる)、つまりまともにデータが受け取れていない状態。なので、オートミュートとは違う状態だろうと踏んでます。

というか、曲が静かなとこだろうが、うるさいところだろうがのべつまくなしにミュートしてしまうのはどーなんだ?みたいな…

現状の予想では、I2S/DSDの切り分けをLRCLKでやってるが、クロック全体ではなく、一部を見て統計的に処理(ある程度の率でヒットするとLR信号とみなしてロックしようとする)してる。それが1111なり0000なりのデータを見つける処理で、ある期間にそのデータが見つかるとPCMとみなしてしまう、がDSDなのでLR信号として処理できなくてロックできない、このデータがある密度で存在すると、延々とこの状態ではまる。で、データの密度が下がるとDSDと認識できて再生できる、と踏んでます。それが再生できないデータの途中に再生できるデータを混ぜた場合に突然再生できる、という現象に繋がるとみています。

rtm_iino さんのコメント...

データがロックしているというより無音時に前のデータ状態がラッチされているのではないですか? 

I2Cでレジスタダンプしてデバッグする以外に方法はないのでしょうね。
レジスタ16のビット3をゼロにしてミュートしなくするかAutoMuteTimeの値(10ページのZeroDetect参照)を弄ってみて0や1の連続のデータの最長より長く設定するとかでしょうね。

DSDは左右別ピンでデータ信号が入るのでPCMのLRCKと間違うというケースは考えにくいですね。 実際にどの値がAutoMuteTimeに入っているのかですけど。 Capliceと水牛と同じ結果になるんでしょうか?

Hiroshi TSUGE さんのコメント...

再生できないデータから、無音に入るとロックするので、前データが残ってるというのも考えにくいのです。

カプと牛で同じ結果になるのは確認済です。

というかビット列なのにロックできないDSDデータって何それ?みたいな…

ちなみに、DSDの無音は0と1の割合が同じ(0101とか0011とか)なので、0000とか1111は…

#SDTransだと01010101が、SACDなんかだと01101001なんかが無音データとして垂れ流されていたり…