DSD2S/PDIF、デシメーション基板の追加情報

75オーム終端時のS/PDIF同軸出力波形を下記に示します。オシロに終端器をかませた上でDSD2S/PDIF基板の同軸出力を直接入力しました。パルストランス等で絶縁はしていません。

 

fs = 88.2kHz

クリックすると拡大します。

 

 

 

 

 

fs = 176.4kHz

クリックすると拡大します。

 

 

 

 

 立ち上がりは十分だと思います。パルストランスはお好みで付けていただいても全く問題はありませんが、立ち上がりを維持するのはそれなりに難しいかもしれません。

 CXD2753Rが載った基板には下のように配線しました。

 

クリックすると拡大します

 

 

 

 

 

3.3Vは下のレギュレータの入力からとりました。放熱フィンはGnd。このレギュレータは3.3Vから2.5Vを作るLDOのようです。

 

 

 

 

 

 

 

シャーシへの取り付けは下のようにしました。デシメーション基板半田面には、厚めの両面テープを重ねて座布団のようにしてシャーシへ貼りつけました。

 

クリックすると拡大します

 

 

 

 

※改造される場合は、ご自身で確認しながら作業してくださいね(特に電源関係)。DV-S757Aのロットによって回路構成や素子、基板のアートワークが異なる場合もありますし・・・、なにとぞ自己責任でお願いします。

 

SDRAMを使ったMemory Buffer DAI, SDRAM_DAI

昨年秋にPS3とTA-DA3200ESを導入してSACDマルチの世界にハマリ、まるで別世界の素晴らしい音楽体験を楽しんでいたわけですが、やはり低価格AVアンプですと何かしら物足りなくなってしまう。という結論になりました。

かといって、SACDマルチをピュア用パワーアンプ複数台で楽しむような財力も根性もありません(^^;;

ということで、ここのところしばらくは2chオーディオに戻っていました。で、トランスポートとしては流れでPS3を使ってきましたが、(最近発売のSACD非対応バージョンはどうか知りませんが)これがCDトランスポートして予想外に音が非常に良く、手放せなくなっています(ファンの音がうるさいですがヘッドフォン視聴時には関係なし!)。

CD再生では、内部で2倍(88.2k)、あるいは4倍(176.4k)にアップサンプリングしてS/PDIFから出力できるんですが(要はデジタルフィルタです)、これを自作のPCM179*系DACに入れてやると、本当に音が良いので、ここのところメインの環境になっていました。

ジッタの対策はしたいのですが、昨年作ったメモリDAI基板は44.1kHz専用ですので、PS3のアップサンプリングをOFFにしないと使えません(しかもPS3は再生停止状態で48kHzになっているので厄介です)。24bit/96kHzのソースも増えてきた関係で、メモリーDAI関連では、マルチサンプリング周波数対応で、周波数自動認識の使い勝手の良いものが欲しくなってきます。

ということで時間を見つけてコツコツ設計しました。どうせなら32kHzから192KHzまですべてのサンプリング周波数に自動追従でメモリー容量の大きなものを、という要求仕様で以下のようなものを作りました。

  1. 32kHz, 44.1kHz, 48kHz, 88.2kHz, 96kHz, 176.4kHz, 192kHzに対応。周波数は自動認識
  2. 水晶発振器は44.1kHz系用と48kHz系用の2個を搭載。使わない方は自動で出力停止
  3. 192kHzまで対応するので、メモリは大容量が必要→64MbitのSDRAMを使い(32Mbit分を使用)FPGAで制御。
  4. サンプリング周波数とメモリーポインタをLED表示可能にする。

 

 右端のLSIがSDRAM。その左はXILIXのFPGA。その下は、右から22.5792MHzと24.576MHzの発振器。入力S/PDIFのサンプリング周波数に追従して使わない方は自動で出力を停止する。

受信したS/PDIF信号をCS8416からAESフォーマットで出力してFPGAで各種チャネルステータスを読んで処理を行う。

 オーディオ用ゆえ、速度はたかが知れているので、SDRAMはPC用のDDR2タイプではなく、SDRとした。

 

サンプリング周波数と、Read / Writeメモリーポインタの相対位置関係を知るためのLED基板を別に用意してあり、セットとしてケーシングするときには、フロントパネル側から見えるように装着すれば便利で見栄えが良いと思います(LED制御用の信号は基板から出ています)。

メモリーポインタのインジケータとして、LED基板には円周状にLEDを都合8個配置しました。

メモリーの読出しポインタの位置が0番地にあるときの書込みポインタのある番地を、(0.5メガの範囲で)当該LEDが光ることで知ることができます。メモリーには全部で4メガ番地あり、一番下のLEDを0番地を示すLEDとし、時計回りに0.5メガ番地ずつ離したところにLEDを配置します。

光るLEDが一番下のLEDに近づくということは、書込み速度(トランスポート側)よりも読出し速度(SDRAM_DAI基板上の水晶発振器側)の方が早く、メモリーがアンダーラン(空)になるか、あるいはその逆でオーバーラン(満杯)になるかという事を示します(左回りで近づく場合はアンダーラン、右回りで近づく場合はオーバーラン)。

 

LED基板は、左半分がメモリーポインタ部、右半分がサンプリング周波数表示部になっている。

左側の8個のLEDは、座標の計算をsin, cosを使って真面目に行い、円周上に配設してある。

 

 

円周のTOP、PT4とシルク印刷された位置のLEDが点灯しているときには、読出しの番地が0番地のときには、書込みの番地はメモリの真ん中付近にあり、最も安全な相対関係にあるといえます。

ただし、サンプリング周波数が低いメディアを再生している場合には、トランスポートから信号が出力されてから実際に音が出るまでの時間が長く、使い勝手が悪くなります。

そこで、電源立上げ初期状態で、読出しの番地に対してどれだけ先行した番地から書込みを開始するかを、3段階で選択できるようにしています。

サンプリング周波数が32kHzから96kHzまでは読出し番地に対して1メガ番地進んだ位置から書込みを開始する「MIDDLE」モードに加えて、0.5メガ番地進んだ位置から開始する「SHALLOW」、1.5メガ番地進んだ位置から開始する「DEEP」の3モードがあります。

また、サンプリング周波数が176.4kHzと192kHzでは、読出し番地に対して2メガ番地進んだ位置から書込みを開始する「MIDDLE」モードに加えて、1メガ番地進んだ位置から開始する「SHALLOW」、3メガ番地進んだ位置から開始する「DEEP」の3モードがあります。

 手持ちのトランスポートで長時間使用した時に、点灯するLEDがどちらの回転方向に移動するかによって、使い分けることができます。

 サンプリング周波数はS/PDIF信号に含まれるチャネルステータス信号という部分に示されるサンプリング周波数情報を読み取って判断しています。S/PDIFでは32kHzから48kHzまではこの部分は規格化されていますが、88.2kHzから192kHzまでは明確には規定されていません。

本基板では、88.2kHzと176.4kHzのチャネルステータス(サンプリング周波数情報)はSONYのPS3と合わせました。S/PDIFの提唱者の1社はSONYですので、他社も追従すると予想されます(このサンプリング周波数で出力する機器自体、あまり見掛けませんが・・・)。

96kHzと192kHzについては、複数の機器で自動認識できることを確認しており(詳しい機種名は説明書参照)、88.2kHzから192kHzまでの4つのサンプリング周波数では、もしも自動で追従しない場合には、強制的にあわせることができるようにしています。

以下のLED基板画像はクリックすると別画像が開きます。

fs=44.1kHzで「MIDDLE」に設定した場合

書込み番地は1メガ番地から開始

 

 

同じく「DEEP」に設定した場合

書込み番地は1.5メガ番地から開始

 

 

同じく「SHALLOW」に設定した場合

書込み番地は0.5メガ番地から開始

 

 

fs=48kHzのソフト再生時以外でも、PS3の再生停止時や、ユニバーサルプレーヤーなどの電源投入後デフォルト状態ではサンプリング周波数が48kHzの状態になっていますので、48kHzとそのほかのサンプリング周波数との移行時にメモリーバッファDAIの周波数が自動追従するのは特に便利です。

PS3はCDを再生状態から停止しただけでfsが44.1kHz(or 88.2kHz、or 176.4kHz)から48kHzに変わってしまう。

写真は「MIDDLE」に設定した場合。

 

 

PS3は176.4kHzでCD再生が可能。メモリーポインターを「MIDDLE」に設定して、書込みアドレスを2メガ番地から開始するようにした場合。

 

 

同じく「DEEP」に設定した場合

書込み番地は3メガ番地から開始

 

 

 

同じく「SHALLOW」に設定した場合

書込み番地は1メガ番地から開始

 

 

しつこいですが、ついでに88.2kHzの様子も・・・(^^;;

PS3は88.2kHzでのCD再生も可能。メモリーポインターを「MIDDLE」に設定して、書込みアドレスを1メガ番地から開始するようにした場合。

 

 

同じく「DEEP」に設定した場合

書込み番地は1.5メガ番地から開始—-

 

 

同じく「SHALLOW」に設定した場合

書込み番地は0.5メガ番地から開始—-

 

 

 176.4kHzと88.2kHzでは「MIDDLE」で約1.4秒(192kHzと96kHzも大体同じ)、44.1kHzでは「MIDDLE」で約2.8秒(48kHzも大体同じ)の出音遅れとなっています。

たまに録りためたBDなどを視聴するときに音だけ遅れるのが困りものですので、メモリ―バッファのバイパスモードもつけました。さらに、メディアプレーヤ側でDOLBY DIGITALやDTS出力の禁止を忘れてDACへつないでいるとびっくりすることになるので、PCM信号以外の入力が来た時には出力を自動的にミュートするようにしました。

ピュアオーディオとしてのこだわりは、使わない方の水晶発振器出力を止めて不要なノイズの発生を未然に防止するようにしたところです。

 これでCORD/DAC64みたいなDACを自作できるかもしれません(笑)。

販売ページはこちらです。

デシメーション・フィルタ基板が来た!

デシメーション・フィルタ基板が製造工場から上がってきましたので、部品の実装を手半田で済ませて早々にデバッグを開始しました。ちなみに、S/PDIF出力には同軸、光ともに74VHCU04によるバッファーアンプをかませてあります。

さすがに、自前の半田付けは職人さんや、リフロー半田には美しさではかないません(^^;;

 

 

とりあえずDV-S757Aに仮組みです。本来はメインのデジタル基板の下にCXD2753Rの載った基板があり、本基板も同じく最下層に突っ込まなくてはなりませんが、検討のため両者とも最上階に引っ張り出しておきます。

DV-S757Aの場合、音声系DACやOPAMP、そして映像系のスイッチャーICとすべてのコネクタ類が載った大きな片面基板は、SACDトラポとして使うだけであれば無くても差支えがないので取り払います。

 

もっとも、SACDを挿入した時に再生されるレイヤーを、DV-S757A側であらかじめ「SACD STEREO」に設定してから分解する必要があります。これを忘れると悲惨なことになります。

とにかく、この基板を付けたままだと、DV-S757Aに限ってはデシメーション基板を押し込むのは難しそうではあります。

 

基板には特に問題はなさそうです。基板へのパラメータ設定はディップSWなどでセットの外へ引き出して行うのが便利です。とりあえず設定項目は88.2kHz、176.4kHzの切り替えのみですが・・・。

SACDの音は柔らかいですね。PCMに変換してもそれは十分感じられます。春先まではカラヤンのCDをよく聴いていましたが、最近ではSACDばかりかけています。

 

 

DSD2S/PDIF デシメーション・フィルタの波形観測

ほとんど機能が完成していますので、実際にDENONのSACDディスクを再生して正弦波を見てみましょう。

比較としてPS3のSACD光デジタルOUTを同じDACで受けた出力も見てみます。実はPS3の最近のファームではSACDでも44.1kHz/16bitで光デジタル出力が可能になっています(そのせいかどうか、ハイブリッドディスクにおいてCDレイヤーがXMB上に現われなくなってしまったので困っていますが、それは置いておいて…)。

同じDACをつないで出力レベルがPS3と同じですので、PS3もSACDの0dBがPCMのフルスケールになるようにDSDからPCMへ変換していると考えられます。

 まずはPS3、上から1kHz, 10kHz, そして15kHzの正弦波(44.1k/16bit)です。サムネールではわからないので画像をクリックして大きなサイズで見てください。遷移先の画像ファイルはブラウザできちんと100%表示にしてご覧ください。そうでないと正弦波が歪んで見えてしまいます。

 

 

 

 

 

 

 

 

 

 

 

 

結構ノイズ・シェーピングのノイズが漏れているように見えます。

 続いてデシメーション基板の波形です。まずはfs=88.2kで、上から1kHz, 10kHz, 15kHz, そして30kHzです。SACDテストディスクなので30kHzの正弦波も入っています。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ノイズ・シェーピングのノイズはかなりきれいに取りきっています。30kHzでは3dB程度レベルがダウンしており、このあたりがカットオフ周波数になっているといえます。

次はfs=176.4kで、上から1kHz, 10kHz, 15kHz, そして30kHzです。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

高域特性を伸ばすためのトレードオフというか、ノイズ・シェーピングのノイズもfs=88.2kHzの場合と比べて、少し増えています。

DSD2S/PDIF デシメーション・フィルタの仕様

結局、フィルタの仕様は下記のようにしております。おそらくこれでFIXです。

[1] 88.2kHzモード

  • 通過帯域  0-24kHz
  • 阻止帯域  56kHz以上
  • リジェクション性能   -145dB
  • TAP数   512

[2] 176.4kHzモード

  • 通過帯域  0-24kHz
  • 阻止帯域  99kHz以上
  • リジェクション性能   -150dB
  • TAP数   256

24kHzから阻止帯域の下限まではなだらかに落としていくという感じになります。本来であれば、サンプリング周波数の半分の周波数を阻止帯域として、 それ以上の帯域で-150dBなり、というようにしたいところですが、リジェクション性能を稼ぐには、阻止帯域を少し高い方へずらした方がフィルタ係数の設計上都合が良いようです。 ちなみに、こういったフィルタ設計に良くつかわれる手段としてREMEZアルゴリズムという方法でフィルタ係数を算出しています。

当然、0-24kHzまではフラットを狙っています。浮動小数点演算などの効果もあって24bit精度は楽に超えています。

物理的な仕様としては、

  1. 2.8224MHz(64fs)のDSD_BCK(ビットクロック)
  2. DSD_BCKに同期したL/RそれぞれのDSD信号(パルス密度変調されたオーディオ信号)
  3. DSD_BCKに位相ロックした33.8688MHz(768fs)のDSD_MCK(マスタクロック)

の合計4本の信号を88.2kHzか176.4kHzのS/PDIF(光と同軸)出力に変換する変換機ということになります。

 

DSD2S/PDIF デシメーション・フィルタの検討 その3

フィルターの係数データを40bit浮動小数点相当でROMに格納し、かつ、演算を40bit浮動小数点相当で行い、丸め(最後に24bitにまとめるとき)にノイズシェーパを使ってみたところ、可聴帯域でもともとのDSDの特徴がはっきりとわかるほどに、更にS/Nが改善されました。

まずは、fs=88.2kHzのリニア周波数軸、対数周波数軸表示

 

続いて、fs=176.4kHzのリニア周波数軸、対数周波数軸表示

これで、十分満足できるフィルタ性能になったと思います。

 

DSD2S/PDIF デシメーション・フィルタの検討 その2

ここで、AUDIOチェックディスクという性格から、このSACDに含まれる正弦波テスト信号の品質は、DSPなどの演算性能のチェックに使用できるほど高いS/Nを有するものではないだろうと判断し、自前でテスト用のDSD正弦波を作ることにしました。

詳細は書きませんが、零点シフト、極シフト、7次ノイズシェーパという方法で、PCMの正弦波をPDM(パルス密度変調)、つまりDSDに変換し、ご参考(解凍してExcelなどの折線グラフ表示)FPGAの設計データへ食わせます。

その結果、FPGA(の設計データ)が吐き出した出力を適当なプログラムを組んで.wavに変換し、WaveSpectraで観測した結果を示します。

fs=88.2kHzだけですが、リニア周波数軸、対数周波数軸の順で、

やはり、そこそこ満足できる性能のフィルタがすでにできていたのです。

 

DSD2S/PDIF デシメーション・フィルタの検討 その1

昨年末にリリースされたDENONのAUDIO CHECK SACDの中に、DSDによる正弦波信号などが含まれていて、デシメーション・フィルタの検討に使えそうです。

それまでは、SACDライセンス契約を結んでいるハードウェア設計企業向けにPHILIPSからリリースされた「SACD DACテスト用SACD」にしかテスト信号の含まれたソフトは存在しなかったようです。

信号レベルが-16dBSACDと低いのが難点ですが、これを使って設計したデシメーション・フィルタの特性を確認してみます。

 

 

まずは、オリジナルの設計状態でSACDの-16dB、1kHz正弦波を24bitのPCM信号に変換した結果です。周波数軸をリニア表示にした、fs=88.2kHzのPCMへの変換結果です。

 

続いて、周波数軸を対数表示にして見てみます。

 

次に、同じ条件でfs=176.4kHzの場合のチャートを2枚続けて示します。

正直、想定していたような高性能なフィルタではありません。2ステップではなく、1ステップ一括でフィルタをかけるアルゴリズムの採用によって、変換誤差を最小に抑えているはずですが・・・。

続く

 

SACD

「無線と実験」を立ち読みしていたら、WadiaのSACDプレーヤー581i seという製品が紹介されており、この製品の特筆すべき特長として、SACD再生時に88.2kHzでS/PDIF出力が出せるということを知りました。

SACD再生時のS/PDIF出力は何らかの規制で禁止されていると思っていましたが、そうでもないようです。

また、SONYのPS3では、16bit/44.1kHzと制限付きながらSACD再生時に光デジタル出力が可能になっています(16bit/44.1kHzならOKで、88.2kHzや176.4kHzがNGというのはご都合主義としか思えませんが)。

一方、私の手持ちのユニバーサルプレーヤーの名器、DV-S757AはSACDが再生可能ですが、高級単体SACDにも数多く搭載されている、知る人ぞ知るCXD2753RというSACDのLSIが載っており、しかもコネクタからDSD信号が簡単に取り出せるようになっています。

ライセンスの関係からでしょうか、LSIの仕様は闇の中ですが、DV-S757AならばこのLSIからDSD信号を容易に引き出すことができますので、信号を24bitのPCM信号に変換してS/PDIFとして外へ出してみたくなりました。

信号自体は暗号化やコピーガードされているということもないですので、いわゆる「技術的保護手段の解除」には当たらず、不正競争防止法に抵触するということも無いと判断します。

近年、DSDをHDMI(HDCP)に載せて出力するというのが標準になっていることもあり、DSDを直接引き出すのはまずいかなと思いますが、PCM変換後に引き出すのであれば、上記のように前例がありますし・・・。

 自作DACファンとしては、高音質なソース機器がHDMI(HDCP)でしかデジタル出力できないというのは危機感を覚えます。

 FPGAを使ってデシメーション・フィルタ(間引きフィルタ)を構成し、1bitであるDSD信号を24bitのPCM信号に変換してみることにします。サンプリング周波数は88.2kHzや176.4kHzあたりでしょうか。