ES9038PROを入手しました。AK4497も!(PART-3) 2016.12.22

(前ページPART2はこちら)

今日は帰ったら音だししようと思っていましたが、懇親会があるのを忘れていました(笑)。
家に帰ったら、酔いもあってバタンキュ〜〜。早い時間に寝てしまったこともあり、
夜中2時に目が覚めてしまいました。2度寝しようか考えましたが、まあ、いいや。
音だしにかかりましょう!

DAC4497-2 音だししてみましょう!

まずはDAC4497-2の出力を差動アンプに接続しましょう。
単純に出力信号のみを接続しています。GNDは電源部分で共通になっているので
配線は省略しました。ある意味、手抜きなのですがGNDループを防ぐことにもなるので
これでいいかと(笑)。

差動アンプに接続します。GND配線は電源部で行っているので省略です。

最初はA13の入力部の抵抗を上の写真にあるようにジャンパーで飛ばしていたのですが、
出力電圧が10Vを超えてくるので、やはりジャンパは削除することにしました。
等価的な回路は下のようになります。

A13アンプと接続した場合の等価回路


この場合の出力は約1.6Vrmsくらいです。いつもは2Vrmsくらいに設定するのですこし低めです。
アンプの入力抵抗をすこし下げるか、あるいはDAC側の出力抵抗をすこし下げるか考えましたが、
1.6Vあれば十分な出力なのでこれで行きましょう。


出力は約1.6Vrmsとなっています。

全体は

音だしの全体の構成は
 SRC4137→DAC4497-2→A13アンプ→PrecisionEvolHPA
です。PrecisionEVvolHPAはMUSES72320を電子ボリュームに使用した小型アンプ(ヘッドホンアンプ)で結構こういった
シチュエーションではよく使っています。夜中なので、ヘッドホンでの試聴です。

音だしの様子です。

またまた今井美樹さんの登場!

試聴はお気に入りのCDから選びますが、なぜか今井美樹さんを選択してしまいます
あの歌声を聴くと、なぜかホッコリするんですよね〜。

で、まずはPCMモードからです。もちろん最高周波数の768kHzにアップサンプリングして聞きます。
最初の印象は、「やっぱり今井美樹さん、いいな〜」です。
ははは、全然DACの評価になってないですね(笑)。
まだ酒が体に残っているのか、あまり集中できていませんが、のんびり音楽に浸るにはバッチリな音です。
いままで以上に、音が体に浸透してきます。
また、このまま寝てしまいそう・・・・。

ついでにDSD再生もしてみました。DSD512の11.29MHzです。
あまり、PCMとの違いは感じないです。やぱりまだ酔ってるのかな?

PCM再生は768kHzで。


DSD再生は11.259MHz(DSD512)です。

まあ、今日はここまで。
完成した基板を眺めながら、そして音楽を聞きながら、うとうと気分は最高です。
それにしても、AK4497もいい素子です。


AK4497EQ! いい素子です。


回路定数を確認しておきましょう 2016.12.23

試聴したときの差動アンプ出力が1.6Vrmsとすこし低かったのですが、2Vrmsにするための定数についてもSPCICEで確認しておきましょう。



試聴に使用したときの回路定数です。


差動入力の抵抗をジャンパーにして、帰還抵抗(R1,R6)値を1.1kにすれば2VRmsになります。


差動入力の抵抗R2,R3を3.6kΩに落とせば出力はおおむね2VRmsになります。


さてさて、

こんなご提案もいただきました。


Volumeバイパスとゲイン調整は考えていなかったのですが、さてどうやって機能を盛り込もうかな?
すでに、基板上の設定ピンは一杯だし・・・・。
電源立ち上げ時のピンの状態を読み込んで、動作状態をセッティングするモードを追加するかな?
すこしプログラムを修正しましょう!

ところで消費電流は?

ざっと必要となる電流を測っておきましょう。これは周波数(マスタークロック)によって変わるので、何点か測定します。
基本的にはディジタル部が周波数に比例して増えることになります。
ざっとこんな感じですね。トータル電流なので、厳密にはディジタル部とアナログ部がどれだけかはわかりませんが、
まあ、アナログ部200mA、ディジタル部400mA準備すれb余裕でしょうか。

DSDD機能も入れてみましょう。 2016.12.27

DSDDはDSD Playback path selectで、AK4497のレジスター0x06のBit1に相当します。
このビットが1になるとVolume Bypassとなり、DSD入力では電子ボリューム機能が使えなくなり、
というより電子ボリューム機能がバイパスされて、出力電圧が2.5Vppに固定されます。

この機能を追加の提案があったのですが、すでに基板の端子に割り当てている機能は満杯なので、
どうやって入れるか考えました。色々と考えましたが、最終的にはリセットボタンを、入力ボタンに変更して、
入力ボタンが押されたら、DSDDとGC[0]〜[2](これは出力レベルを設定する)をEEPROMに記録すると同時に
AK4497に設定するようにしました。

詳細は製作マニュアルを見てもらえばいいかと思いますが、MODEジャンパーとDSDD、GC値は下記の表のように対応させています。

設定 OPEN SHORT
M0 なし
M1 なし
M2 DSDD 0(Normal Path) 1(Volume Bypass)
M3 GC[0] 0 1
M4 GC[1] 0 1
M5 GC[2] 0 1


GCの値と出力レベルの関係は下表の通りです。



プログラムを組んでみたので、早速確認してみましょう。

入力はDSDで!

まずは入力をDSDモードに設定します。


入力はDSDモードです。



M2のみショートです。入力ボタンを押すと
下記の設定となり、以降電源を切っても保持されます。

DSDD=1(VOLUME BYPASS)
GC[0]=0
GC[1]=0
GC[2]=0
なので、DSDでの出力レベルは2.5Vppです。


この状態では電子ボリュームは使えなくなります。
すべてオープンです。入力ボタンを押すと
下記の設定となり、以降電源を切っても保持されます。

DSDD=0(Normal Path)
GC[0]=0
GC[1]=0
GC[2]=0
なので、DSDでの出力レベルは2.8Vppです。

GC[2]のみショートです。入力ボタンを押すと
下記の設定となり、以降電源を切っても保持されます。

DSDD=0(Normal Path)
GC[0]=0
GC[1]=0
GC[2]=1
なので、DSDでの出力レベルは3.75Vppです。


これでDSDDとGC[0]〜[2]の機能については確認できました。

さて、DAC4497-2についてはリリース準備にかかりましょう!

といいながら、そろそろ帰省の準備もしなくっちゃ!


帰省先でDAC9038Dのプログラムを書いていきましょう。

28日夕方から帰省しました。お土産として基板類をもっていきました。誰のお土産か?って(笑)。
一応、もっていったのは作成中のDAC9038DとSRC4137,DAC2707などです。これらがあればソフトの開発もできるでしょう。


帰省先でのお遊び用に基板類をもってきました。これでソフト開発ができます。


ソフト開発用のスイッチ類をとりつけました。

そういえば、開発環境を構築しているときに電子ボリューム用のVRを持ってくるのを忘れているのに気づきました。
まあ、なくても支障はないのですが、・・・・と、そのときデジットのガチャで買ったVRがあることに気づきました。
ちょうど、いい塩梅にとりつきました!


可変抵抗をもってくるのを忘れましたが、先日ガジャで買ったものがつかえそうです。

フィルターを試してみましょう/DAC9038D

ES9038PROは多彩なディジタルフィルターがあります。まずこれを試してみましょう。
いつものようにインパルスを入れてその応答を確認してみました。


FILTER #0: Fast roll-off, linear phase filter


FILTER #1: Slow roll-off, linear phase filter


FILTER #2: Fast roll-off, minimum phase filter


FILTER #3: Slow roll-off, minimum phase filter


FILTER #4: (Reserved)


FILTER #5: Apodizing, fast roll-off,linear phase filter


FILTER #6: Hybrid,fast roll-off,minimum phase filter


FILTER #7: Brickwall filter

いろいろとフィルターはあり、波形が異なることはわかるのですが、聞いてわかるかな?


あけましておめでとうございます。2017.1.2

新しい年を迎えました。天気もまずまずでお出かけにはうってつけです。
でも、やっぱり人出は多いです。景気も良くなってきているのかな〜〜。
さてさて,越年で迎えたDAC9038Dのソフトも概ね完成に近づいてきました。
とはいえ、新年の宴会モードの合間を縫って作成しているので、無茶苦茶効率が悪いです。
というのも、いざかかろうと思っても、どこまで作ったかを思い出す時間に相当費やしています(笑)。
やっぱりこういったものは一気につくらないとだめですね。

気づいたこと/DAC9038D

ソフトを作成しながら、気づいた点についてたらたらと書いてみましょう。

(1)基板が暖かい
 これはIC等が電力を消費するから自然な現象ですが、DACにしては結構発熱します。
その主原因はもちろんES9028PROです(あ、Si5317も発熱します)。このICってポータブル機器には使えないですね。
それと、気を付けるのは電圧レギュレータの発熱です。これもEX9038PROのディジタル用
1.2Vレギュレータが結構暖かくなります。推定で電流が200mA以上流れるので、電圧降下
(3.3-1.2)=2.1Vを考えると0.4Wの消費電力です。ICのサブストレートパッドを通じて基板のベタ面に
放熱しているので、暖かい程度で済みますがパッドの半田付けが不十分だと、相当に加熱する
可能性があります。とはいえ、サーマルシャットダウン機能はあるでしょうから、壊れることは
ないかとは思いますが・・・・。

(2)固定水晶でもDPLLは安定
 今回もっとも気になったものの一つです。ES9018Sは100MHzの固定水晶で使用した場合、
ES9018Sのジッタ抑制定数をLOWESTに設定するとロックはずれが発生していました。が、ES9038Dでは
そういうことにはならないようです。安定したロック状態が続いています。これを考えると、BCKを
逓倍してジッタクリーナを通したクロックをマスタークロックにする必要はなかったかもしれませんが
、 これについては視聴の結果から判断しましょう。DPLL値がキリのいい数値になる点は気持ちがいいのですが(笑)。
 ちなみにES9018MK2ではクロック周波数が上がるほど、音質が向上します。これは周波数を極端に下げた場合と
比較すれば明確に分かる差です。
 そのためDAC9018MK2のアドオンクロックではオーバクロックモードも設けていました。
DAC9038Dでもやってみたい気もしますが、素子の発熱も気になるな〜。悩んでしまいます。
せっかくICS570(クロック逓倍)を載せているので130MHzくらいまではアップサンプリングできるのですが・・・。

(3)NORMAL-DSDは不要だったかな?
 この基板の特徴としてはDAC9018Dと同様にSHIFTED-DSDをサポートしています。これはES9038PROが
8chのDACを有しているので、BCK分づつ信号の位相を変更した8信号を加えることでフィルターの機能を
実現しているものです。このSHIFTED-DSDとNORMAL-DSD(8chのDACにすべて同じ位相の信号を加える)の
両方を実現するためにハードウエア的にロジックを追加していましたが、結論からいえばSHIFTED-DSDのみで
NORMAL-DSDも実現できることがわかりました。
 というのもES9038PROの特徴ある機能として入力8chの信号を、8chDACのどこにマッピングするかを自由に
変更できます。すなわち、デフォルトでは
 入力信号1−>DAC#1
 入力信号2−>DAC#2
 入力信号3−>DAC#3
 入力信号4−>DAC#4
 入力信号5−>DAC#5
 入力信号6−>DAC#6
 入力信号7−>DAC#7
 入力信号8−>DAC#8
と割り当てられています。そのためSHIFTED-DSDを実現するために位相をづらした入力信号を8ch分入力
しており、NORMAL-DSDを実現するためには8ch分すべて同じ信号を入れる場合と区別するためのロジックIC
を追加していました。しかし,SHIFTED-DSDの入力のままで、マッピングを(たとえば)
 入力信号1−>DAC#1
 入力信号1−>DAC#2
 入力信号1−>DAC#3
 入力信号1−>DAC#4
 入力信号1−>DAC#5
 入力信号1−>DAC#6
 入力信号1−>DAC#7
 入力信号1−>DAC#8
と変更してやれば、自動的に8chすべてのDACに同じ信号が入力されることになります。したがって
SHIFTED-DSDを実現するハードがあればNORMAL-DSDは自然と実現できることになります。これがわかっていれば
ロジックICが2つ減ったのですが・・・・・。まあ、後の祭りです(基板レイアウトに結構余裕ができたはず)。

あとは
ソフトとしてはLCDを使用しないシンプルモードと、LCDとスイッチを使用するフルファンクションモードはほぼ完成しました。
PICにはいつもつかうPIC16F886の倍の容量のあるPIC16F1938をつかっているためか、ROMの使用率は62%程度とまだ余裕があります。
現在はLCDに16列×2列タイプをつかっていますが、20列×4列にも対応したソフトにすこし修正していきましょう。
でも、ROM容量足りるかな?

ほぼ完成!2017.1.3
ソフトもほぼ完成。あとは20列のLCDモードへの対応をなんとかしたいのですが、すでにROM容量は82%になってしまいました。
突然増えてしまった理由はいろいろと機能を追加したこともありますが、とくに大きいのが浮動小数点の演算を加えたことです。
というのもES9038PRO内部のDPLLレジスター(32Bit)値から現在受信している周波数が計算できるのですが、
その計算式は

FS = DPLL × XTAL(100MHzなど)/(2^32)

を計算する必要があります。そのために単精度ですが浮動小数点の計算が必要になってしまい、そのライブリーが加わったことが大きいです。
さらに、操作性を改善する機能も追加しました。今回のソフトではメニュで設定できる項目が20以上ありますが、
一旦設定したあとに最初の画面に戻るのが大変です。
 ということで、キー操作が一定時間なければ自動的に最初の画面(FRONT PAGE)に戻るようにしました。また、戻るために時間も
3段階で調整できるようにしています。こういった機能を追加していくと自然とROM容量も増えてしまいます。
 さて、あと10%程度の残りで20列LCD対応できるかな〜????

20列LCDに変更しましょう! 2016.1.4

さて、帰省先から帰ってきました。いや、ソフトも作ったけどのんびりできました。
さて、今年も仕事がはじまりましたが、オーディオも楽しみましょう!

まずはLCDの載せかえからです。16列2行のSC1602と20列4行のSC2004ではVDD,VSSのピン配置が入れ違っています。
そのため、単純な載せ換えができません。今回の基板パターンではVDD,VSSの入れ替えができるようにしているので、
その部分を設定します。
 対象のジャンパーはJP2です。もともと既定値として16列用のSC1602が取り付けられるパターンになっていますが、
まずはそのラインを切断します。そして、基板のシルクの”20”側に変更します。
この変更はLCDの変更がなけれな、リード線をつかったジャンパーでいいのですが、LCDの入れ替えもこれから発生するので、
ジャンパーポストをたてることにしました。
  
既定値はSC1602用になっています。         まず”16”のジャンパーを切断します。


”20”側にジャンパーを変更します。

これで

20列用のLCDを動かすことができます。でも、やっぱり20列用のLCDは大きいな〜。


SC2004を接続しました。

PICを載せかえましょう! 2017.1.7

さて、SC2004のLCDに変更しましたが、ソフトとしてはSC1602とSC2004の両方がつかるようにしたいので、
ソフトをどんどん書き換えていきます。内容的には表示に関する部分がほとんどなので、プログラムサイズが
どんどん増えていきます。ただでさえ、SC1602用で83%程度のROM使用率でしたが、あっという間に増えて
いきます。
 ソフトの修正を加えるたびにコンパイルして容量を確認していいるのですが、半ばまで修正してすでにROM
使用率は95%です(PIC16F1938をつかっているので16kwordの容量があるにもかかわらず)。
 そういえば、DAC9018DではLCDをつかってもPIC16F886(8kword)で押し込んだことを考える、ES9038PROでは
コマンドも増えているのでROM容量が増えるんですよね。それに、今回は浮動小数点のライブラリーも入れ込んだ
ことも結果的にはROMを圧迫している要因になっています。


PIC16F1938(16kword)ではROM使用率95%まで進みました。

ROMの使用率を減らすためにはソフトの修正をかなり大胆に進める必要があるのですが、かなり大変です。
こうなったらPICそのものを換えたほうがよさそうです。
PIC16Fシリーズだと16kwordのものが最大のようなので、その上のPIC18Fシリーズに換えることにしましょう。

なぜ?

なぜいままでPIC18Fを使わなかったかったかといえば、PIC18Fは16BitCPUになるので、8BitCPUのPIC16F用の
コンパイラが使えません。そのため、あらたにコンパイラを買い直す必要があったのでちょっと躊躇していました。
でもCP/M-80を作ろうとおもったときに、ピン数の多いPICをつかう必要があったので思い切ってコンパイラを新調したわけです。
 じゃあ、それ以降はPIC18Fをつかえば?ということになるのですが、実はPIC16F用につくったライブラリと、新しいコンパイラに
付属しているライブラリのサブルーチンの名称が重なる部分が多くて、修正が必要なこともあり、かなり面倒な作業でした。
ということで、使えるうちは極力PIC16Fにしていたのです。それにPIC16F1938あたりだと16kwordの容量があるので、
大抵の用途ではこれで十分です。
 でも、今回はどうしても容量が足りそうにないので、PIC18Fに載せかえるにしました。
載せ換えに使用したPICはPIC18F26K20です。64kByte(32kワード分)ありますので,PIC16F1938の倍以上のコードがかけそうです。

PIC18F26K20に載せかえることにしました。

さて、プログラムのサブルーチン名で重なっているところを変更して(ふう〜)、PIC18F用のコンパイラで再コンパイルです。
そうすると、ROM使用率は39%まで下がりました。これで、しばらくは容量を気にせずにプログラムの修正ができそうです。


PIC18F26k20(64kByte)に載せ換えたのでROM容量に余裕ができました。

完成しました(たぶん)

たぶん(笑)、すべてのソフトが組みあがりました。これからは音を聞きながら総合テストに入ります。
ICS570を搭載していることもあり、DAC9018K2Mと同様にオーバクロックモードを入れました。これは音に絶大な影響がありますが、
あとは消費電流と素子の発熱だけが心配です。反対にecoモードも搭載です。これはシステムクロックをほぼ半分にして駆動します。
すこしは消費電流は減るでしょうから、地球温暖化に貢献できるはずです(笑)。


20列のLCDの表示の様子です。すこし混雑してるかな?

現在の消費電流は動作クロック98.3MHzで1158mAです(LCD含む)。
動作クロック49.15MHzに落とすと824mAになります(これもLCD含む)。
動作クロック45.16MHzに落とすと789mAになります(これもLCD含む)。

試聴してみましょう!DAC9038D

ほぼDAC4497-2と同じ構成での試聴です。まずはSPIDIF入力ですが
 SPDIF同軸→DAC9038D→A13アンプ→高精度HPA
という信号の流れです。

こんな構成で試聴です。

A13アンプは入力抵抗4.7kΩの抵抗で受けている差動アンプなので入力抵抗も高いことから、ES9038PROはほぼ電圧出力モードでの動作です。
このときの出力電圧は振幅が約3V強のようなので、2Vrms強となりちょうどいい感じです。


出力電圧はちょうどいいくらいです。

試聴につかったレーベルはこれまた今井美樹さんからです。
最初の印象は透明感があり、さらに浸透力のある感じです。雰囲気的にはPCM1704に似ているかな?
いや、PCM1704よりかは、すこし迫力のある音でしょうか。というよりPCM1704がかなり繊細だからな〜。
まあ、いづにしても当てにならない記憶との比較ですから、あてになりませんが(笑)。

今宵は音楽に浸りながら、ソフトチェックをしていきましょう。
色々と操作してみると、細かいバグがボロボロとでてきます(笑)。

ソース側もすこし改造


DACの動作チェックのためにソースが必要で、SRC4137をよくつかいますが、この基板はPCMとDSDの出力は
できるのですが、SPDIFの出力がありません。44.1kHzや48kHzの信号だけなら、PCから簡単に得られますが、
192kHzなどにアップサンプリングした出力を簡単にだしたいな〜と思って、SRC4137に最近作成した
PCM to SPDIF変換基板を搭載しました。


SRC4137基板をすこし改造です。

このPCM to SPDIF基板を使っていて気づきましたが、使っている素子(DIT4192)のスペックから
192kHzが最高周波数なのですが、かなり素子の動作範囲に余裕があるようで352.8kHzの出力
もできるようです。とはいえ、完全なオーバスペックに頼った動作なのですべてで動作するかどうかは
わかりませんが・・・・
 なお下のLCDの表示でFSR:の後がUnknownになっていますが、ここの周波数はDAC9038D上の
DIX9211からの情報に基づいて表示しているので192kHz以上はレンジーオーバになります。
それに対して、右下の352.8kHzはES9038PROのDPLL値から計算したFSRですので、入力が352.8kHz
であることがわかります。

352kHzでも動きますね。


DACの出力もでているので352.8kHzの出力はでてるんだろうな〜。


消費電流も増えるな〜。


(ながくなってきたのでPART4へ続きます)