ES9018Sの評価ボード

そういえばずいぶん前にグローバル電子さんからES9018Sの評価ボードを調達していたのを思い出し、UDA(DoP)基板につないで音出しをしてみることにしました。

ES9018SというチップはSPDIF/I2S/DSDを入力可能なDACですが、4パラ用(本来は8ch用?)にチャンネル当たり4つのDACが含まれていて、それぞれのDACに独立にデジタル入力がアサインされているので、2ch用として考えると一見ごちゃごちゃしているように感じられます。

チップとしては電源投入時にデフォルトでS/PDIF入力が選択されるようになっていて、レジスタでI2S/DSD入力として使うように設定すれば、 「基本的に」I2SとDSDを自動認識して切り替えてくれる優れ物、であることは皆さんご存知のところだと思います。

まず、ビットクロック専用 ( I2S/DSD共 ) の入力である”DATA_CLK(60)”があり、8つのDACは、Lch用にDAC1/3/5/7、Rch用にDAC2/4/6/8がアサインされていて、DSD信号を入れる場合は Lch用の各DACへはそれぞれ”DATA1_SD1(59)”, “DATA3_SD3(57)”, “DATA5_SD5(55)”, “DATA7_SD7(53)” の各ピンにDSDLを, Rch用の各DACへはそれぞれ”DATA2_SD2(58)”, “DATA4_SD4(56)”, “DATA6_SD6(54)”, “DATA8(52)” の各ピンにDSDRが入るようにしてあげます。

I2S信号を入れる場合は、”DATA1_SD1(59)” にLRCKを入力し、SDATAを”DATA2_SD2(58)”,  “DATA3_SD3(57)”,  “DATA4_SD4(56)”, “DATA5_SD5(55)” に入力すれば、チップがチャネルごとにDAC1からDAC8まで振り分けてくれます。

UDA基板ではビットクロックはI2S/DSDで共通なので、LRCK(DSDL), SDATA(DSDR)の各ピンを、制御信号DSDH(H:DSD/L:I2S)を使ってモードに応じて上述したように割り振ってやれば、PCMとDSDのシームレスな切替再生ができることになります。

とりあえず手元にAlteraのMAX II というCPLD基板があったので、UDAのI2S/DSD出力端子から信号をもらって、モード毎に(DSDHを見ることで)ES9018Sに振り分ける回路を組んで音出しをしたところ、シームレスな切替再生が可能であることを確認しました。

こんな多ピンの大きなCPLDが必要なわけではなく、10数本のピンがあれば十分で、SN74LVC157やバッファなどを使っても簡単に実現できるでしょう。

なによりも、ES9018Sのチップ的にはDSDとPCMを自動で認識してくれますのでその都度レジスタへアクセスして切り替える必要がなく、非常に合理的です。 

回路図よりもコードの方がわかりやすいと思います。下の左辺はES9018S側のピン名、右辺はUDA側のピン名。UDA側は、信号名”DSDL”と”DSDR”はDSDモード時の機能名で、PCM(I2S)モード時には同じピンがそれぞれ LRCK, SDATAとして機能します。

   DATA_CLK <= BCLK;
   DATA1_SD1 <= DSDL;
   DATA2_SD2 <= DSDR;
   DATA3_SD3 <= DSDL when DSDH = ‘1’ else DSDR;
   DATA4_SD4 <= DSDR;
   DATA5_SD5 <= DSDL when DSDH = ‘1’ else DSDR;
   DATA6_SD6 <= DSDR when DSDH = ‘1’ else ‘0’;
   DATA7_SD7 <= DSDL when DSDH = ‘1’ else ‘0’;
   DATA8 <= DSDR when DSDH = ‘1’ else ‘0’;