2019年8月14日水曜日

【にわかAVマニアの設計】AK4495 DAC私的設計資料(長文)

夏休みは執筆活動に励みます.(うそ)

今回は、AK4495 DACおよびDDCとArduinoを含むUSB DACシステムの設計情報を書きます.

なお、ここの情報に何らかの間違いがあって、貴殿がどんなに悲惨な損害を受けても知らないのでそうゆう時は素直に死め~

【全体像】
自作物はAK4495が載ったプリント基板のみである.
CM6631A DDCと、Arduino nanoは市販品.
特注ケースに入れるとこんなかんじ.
↓全体ブロック図

AK4495基板の回路図はこちらにupしといた.(pdf)
AK4495をステレオ使いしたければそうできるようには作ったが、ステレオの動作確認はしてない.
回路図には描いてないけれど、現物には10000uFの電解コンを12Vに抱かせてある.


【主要パーツ価格】
CM6631A DDC     ¥2400ぐらい
Arduino nano       ¥200ぐらい
AK4495               @¥1300ぐらい     2個使い
MUSES8920         @¥480        2個使い    (秋月電子)
WIMAフィルムコン     @¥100ぐらい     8個使い


【機能】
動作確認はwindows7 64bit
CM6631A DDCのデバドラは、CM6631_6631A_-1.03(CR).zip
192kHz 24bitがデバドラの制限で決まる最高レート
bit stream audioは不可
電源は12V、消費電流は250mAぐらい(実測)
USBバスパワーは使わない

【AK4495概要】
旭化成のオーディオ用DAC.
最新型ではないが、かつてのフラッグシップモデル.
ステレオ機能を持つが、モノラル使いすることも可能.モノラルだとSNRが向上する.

<I2S>
AK4495を外部に繋ぐdigital audio interfaceはI2Sである.それ以外のIFも持つようだがここでは使わない.
→I2Sについて
AK4495は、LRCK,DATA,BCLK,MCLKの入力を要する.
例えばclock周波数はこのようになる.
 ex.   192kHz  24bit
 LRCK   192kHz
 BCLK    12.288MHz    =LRCKの64倍
 MCLK   25.576MHz    =BCLKの2倍
このようになるのには理由がある.
まずBCLKは、32bit LR伝送をするので64bit、すなわち64LRCKなのだ.
だとすると24bit modeと不整合になるが、8bitはゼロ詰めだとかそんな操作がされて32bitと辻褄合わせされている.
MCLKは、内部デジタルフィルタの駆動などに使われるのでBCLKよりも高い周波数が求められるのであろう.

<I2SのMCLK>
I2Sの規格定義からするとLRCK/DATA/BCLKまでがI2Sの責任範囲であって、MCLKはI2S規格としては知ったこっちゃないらしい.それゆえ、I2S出力を謳った製品であってもMCLKを出力しない製品が存在する.
例えば、Raspberry piのI2Sがそうだ.Rapsberry piにはMCLK出力は存在しない.ゆえに、Rapsberry piにAK4495を接続するのは面倒臭いのである.外部回路でMCLKを生成してやらなければならないからだ.
その点、TIのPCM5102のようなDACには、内蔵PLLでBCLKからMCLKを自己生成してくれる機能が搭載されており、それゆえRapsberry pi向けのDAC基板にはTIのDACが多いようだ.(AKのDACを載せたRapsberry pi向け基板をわたしは知らない)

<機能制御方法>
AK4495の機能制御方法はどうなっているか?
外部ピンで機能制御する方法と、内部レジスタで機能制御する方法の2つがある.
AK4495はI2Cバスを持っており、I2Cで内部レジスタ操作をできる.
I2Cの他にもレジスタ制御手段が用意されているみたいだが知らない.

プリント基板を設計するためには、外部ピンで機能制御するのが簡単でよい.
ところが残念なコトにAK4495をモノラル使いするためには外部ピンでは不可能なのだ.
AK4495をモノラルモードにするには、内部レジスタ操作するしかないのである.
そのせいで、内部レジスタ操作のためにI2Cが必要で、わざわざArduinoを追加せざるを得ない.

<I2C関連ピン>
・SCL(7) SDA(8):I2Cのclockとdataである.Arduinoに接続する

・PSN(12) I2C(13):AK4495のI2Cをオンにするため、PSN(12)="0"、I2C(13)="1"に接続する

・CAD0(11) CAD1(16):I2Cバスには複数のAK4495をパラ接続できる.ゆえにAK4495をアドレッシングする必要がある.CAD0 CAD1でAK4495のI2Cアドレスを設定する.
ここでは、Lch用AK4495はCAD0=CAD1="0"に接続する.Rch用AK4495はCAD0="1" CAD1="0"に接続する.
CAD0,CAD1の設定と、I2Cアドレスの関係はこうなっている.
  I2Cアドレス={0,0,1,0,0,CAD1,CAD0}
上位5bitの00100は決め打ちなので変えられない.
CAD1,CAD0は外部ピンで変更できる.
ゆえにここでのI2Cアドレスはこうなる.
  AK4495 Lch用 = {0010000} = 10H
  AK4495 Rch用 = {0010001} = 11H
Arduinoは、10Hと11Hを活用して2ヶのAK4495をアドレッシングできる.
(Arduinoのsource codeは後述する)

<digital入力ピンの5Vトレラント>
I2Cでレジスタ制御すると上で述べた.制御はArduino nanoで行うこととした.
A4=SDA、A5=SCL である.
↓Arduino nanoに詳しいわたしではないが、オンボードREGの違いによって5V品と3.3V品があるらしい.
わたしが入手したのはどっちなのだろう? そんなコトに頓着せずに買ってしまったのでね.それでSCLの波形を観測してみると、どうやら5V品らしいのだ.
↓AK4495は5V入力OKなのか? すなわち5Vトレラントの有無を調べなくてはならなくなる.AK4495 datasheetのこの箇所がそうなのだが、入力電圧の上限規定が無いんだなこれが..... そういうわけなのでArduino nanoの5V信号をAK4495のI2Cピンに接続して使っているわたしである.

<電源>
AK4495が必要とする電源バリエーションは基本的には D3.3V、A3.3V、A5V の3種類である.しかし出力ampの電源を5Vでなく7Vまで高めることが出来、そうするとSNRがさらに改善するとdatasheetに書かれている.よってプリント基板の電源バリエーションは、D3.3V、A3.3V、A5V、A7V の4種類に最終的にした.

AK4495は電源が貧弱だと音質が劣化するという説(※)があり、電源のアートワークに注意した.4層基板のベタAGND、パスコンを近接配置、ビアの多数打ち を行った.

※audio回路でいう「電源」には2通りの意味がある.
    1)IC周辺1cmぐらいのローカルエリアにおけるGND・VCC・パスコン
    2)ICから遠く離れた場所にある、ACアダプタやトランスや巨大電解コン
設計をやらないパンピーaudioマニアが電源と聞くと2が頭をよぎるようだが、ここではそれは誤りだ.ここで「AK4495は電源が貧弱だと音質が劣化する」と言うのは1の電源を指している.だからこうも言える「1が貧弱だと2で音が変わってしまう」「1が優れていれば2が少々ダサくても音質劣化が少ない」「1に頓着しないくせに2にこだわるのは愚かである」などと.
ならばメーカーが設計した回路なら1が磐石なのかというとそんなに信用できたものでもないのが現実なのだ.世の中そうそう腕の立つ設計者ばかりとは限らないし、あまりにも凝ったクレイジー設計は却下されてしまうからだ.
実際、わたしがAK4495プリント基板を自作しようと思い立ったのは、既製品のDACプリント基板(AK4490)の1の電源設計がダサくて嫌になっちゃったからだった.


【CM6631A概要】
PCからUSB経由でaudio dataを受信する機能、及びI2S dataを出力する機能、これらをまとめてDDCあるいはUSB-DDCと呼ぶ.DDC用ICで名の知れたメーカーは、XMOS、ATMEL、BRAVO、c-mediaなどがある.CM6631Aはc-media製である.

PCとDACを接続する方法は様々ある中で、どうしてUSB DDCを選んだのか?
<Bluetooth>
圧縮オーディオは却下

<SPDIF>
clockを伝送しないので、受信側のPLLの性能で音質が変わってしまう怖れがある.またケーブルで音が変わる怖れもある.気が進まない

<USB DDC>
USBは非同期伝送なので、DDC上にFIFOメモリを必ず持っている.するとこれまた必然的にDDC上のXtal+PLLで生成されたclockがI2Sに出力されることになる.理論的には、そのclockはjitterが少ない良好なclockだと期待される.

↓中華通販で調達したCM6631Aプリント基板はこのようなもの.片面マウントなので裏面にパーツは無い.右側にLRCK/DOUT/BCK/SCKというお馴染みの文字が見える.Xtalは3つ載っている.12MHz(USB用)、49.152MHz(48kHz系列)、45.158MHz(44.1kHz系列)だと思う.
↓目立つ周辺パーツとしては、PM39LV512、24C02BNが見える.
←PM39LV512
←24C02BN
Pm39LV512はFLASH 64K*8 (512Kbits)である.CM6631Aが内蔵する8051 CPUのprogram格納用ではなかろうか?
24C02BNはSerial EEPROM 256*8 である.FLASHで済まなかったのかねぇ?

CM6631Aを使ってみて、おやっ?と思ったことが1つある.もしかしたらUSB cableの伝送品質にクリチカルかもしれない.5mを超えるUSB cableだと接続がブチブチ切れて使い物にならない場面があった.USB cableを2m程度の物に変更すると問題なく使用できる.使用にあたっては注意したほうが良いかもしれない.(XMOSのUSB接続は安定していた)

【DDCが発生する各clock周波数(fs別)】
windows driver settingで様々なサンプリングレートとbit数を選択できる.
このそれぞれのサンプリングレート(fs)毎に、LRCK,BCLK,MCLK周波数が異なるはずである.実測した.

CM6631Aではこのようになった.
CM6631Aの特徴は、DACが許す範囲でなるべくMCLKが低い周波数になるようにfirmwareが設計されているように見受けられる.(赤字のところ)

CM6631A
fs[kHz]bitLRCK[kHz]BCLK[MHz]MCLK[MHz]MCLK/BCLK
192.02419212.288424.57682
96.024966.1442124.57684
48.024486.1442112.28842
44.12444.15.6449511.28992
192.01619212.288424.57682
176.416176.411.289922.57992
96.016966.144224.57684
88.21688.25.6449922.57994
48.016486.1442112.28842
44.11644.15.6449511.28992

DDCにはXMOS U208もある.手持ちなのでこちらも同様の実測をしてみた.CM6631Aとは異なる結果を得た.
XMOSの特徴は、fsに寄らず、MCLKを24MHzまたは22MHz系に固定するfirmware設計になっていると見受けられる.

XMOS208
fs[kHz]bitLRCK[kHz]BCLK[MHz]MCLK[MHz]MCLK/BCLK
192.02419212.288424.57682
96.024966.1442124.57684
48.024483.072124.57688
44.12444.12.8224922.57998
192.01619212.288424.57682
176.416176.411.289922.57992
96.016966.144224.57684
88.21688.25.6449922.57994
48.016483.072124.57688
44.11644.12.8224922.57998

【OPAMP回路】
AK4495は差動出力なのでL+/L-/R+/R-が出力される.
AK4495がステレオモードならばLR独立のOPAMP回路を用意すべきだが、ここではAK4495をモノラルモードで動かすので、L+/L-/R+/R-をひとつのOPAMP回路に入力する.LchとRchを同期加算することでSNRを3dBほど改善しようというのがAK4495モノラルモードの意図するところだ.

↓回路はこのようなもの.
OPAMPを9V単電源で動作させるため、5Vを中点電圧にしている.
AK4495のフルビット出力電圧は、V(L+)=2.8Vpp、V(L-)=-2.8Vppが出てくる.すなわち差動電圧でV(L)=5.6Vppという巨大さだ.それだけでなくモノラル使いゆえにLとRを加算するので等価的に11.2Vppもの差動電圧がAK4495単品から出てくる計算となる.
このOPAMP回路のゲインは、最大出力=2Vppになるよう定数設定してある.
PC audioでは高音質OPAMPとしてNJM5532をよく見かけるが、音質比較をしてNJM5532のような@¥100程度のパーツより@¥500のMUSES8920の音質が優れていたためそれを使う.

↓LPFのゲイン特性.カットオフ周波数=180kHzぐらいかな.


【AK4495レジスタ】
いよいよ細かい話になってゆく.AK4495のレジスタ仕様だ.
AK4495は10BYTEsのレジスタを持つが、10番目はreservedなので実質的に9BYTEsである.
ここでは最終的に決定したレジスタ設定を示す.

adrs[0] = 0b10001111;
  {ACKS=1,EXDF=0,ECS=0,0,DIF=111,RSTN=1}

ACKS:AK4495に限らず多くのDACを使うとき、明示的にfsを設定したりはしない.なぜそれで済むのかというと、多くのDACはMCLK,BCLK,LRCKの周波数を自己分析してfsを自己設定してくれるからである.ACKS=0ならその機能をOFFにできる.ここでは当然ONにしたいのでACKS=1に設定する.


EXDF:外部digital filterを追加する場合はEXDF=1にする.ここではその機能を使わないのでEXDF=0に設定する.


ECS:外部digital filter clockは使わない機能なのでなんとなくECS=0に設定.


DIF:これは重要である.I2Sから入ってくるdata formatを設定する.DDCのお決まりdata formatは32bitらしいので、DIF=111に設定する.


RSTN:software resetしたければRSTN=0にする.通常はRSTN=1に設定.


adrs[1] = 0b00000010;
 {DZFE=0,DZFM=0,SD=0,DFS=00,DEM=01,SMUTE=0}

DZFE:audio dataがゼロだったら外部ピンをアサートする機能がある.ここでは使わないのでDZFE=0に設定.


DZFM:audio dataのゼロ検出機能の仕組みについて.ここでは使わないのでDZFM=0に設定.


SD:AK4495内蔵filterの特性選択.AK4495 datasheetを読むと、内臓されているアンチエイリアシングフィルタが4種類あると読める.

  遅延時間    長い/短い
  急峻さ     急峻/なだらか
この組み合わせで4種類ということだ.いまいちよくわからない.
推測ではこういうことではないだろうか?
遅延時間の長短は、回路的にはFIR/IIRの別を指し、位相特性面でFIRが優秀.用途的にはAVシステムへ組み込むには遅延時間は短い方が好まれる.audioシステムへ組み込むなら遅延時間は長くても構わない、ということかと思う.
急峻さは、外部LPFで真面目にアンチエイリアシングしたい人はなだらか特性にして使ってくれよな、ということかと思う.
わたしは"FIR"で"なだらか"を選ぶので、SD=0に設定する.
ただしSDは遅延時間の長短すなわちFIR/IIRを設定するレジスタであって、急峻さを設定するレジスタは後述する別の場所にある.なんだかなぁ.

DFS:fsを設定するレジスタであるが、ACKS=0に設定した場合に留意すべきレジスタであり、ここでは無視して構わない.なのでなんとなくDFS=0にしておく.


DEM:ディエンファシスって何だっけ? fs32kでemphasisって在ったような気がする、それかな? いずれにしろ無視、ゆえにDEM=01にしとく.


SMUTE:soft mute機能だそうだ.使わないのでSMUTE=0にしとく.


adrs[2] = 0b00001001;
{DP=0,0,DCKS=0,DCKB=0,MONO=1,DZFB=0,SELLR=0,SLOW=1}

DP:PCMかDSDかを選択する.DDCがDSDを通さないのでここではPCMでしか使わない.ゆえにDP=0にしておく.


DCKS:DSDにおけるclock選択.ここでは無関係につきDCKS=0にしとく.

DCKB:DSDにおけるclock極性選択.ここでは無関係につきDCKB=0にしとく.

MONO:でたーっ! AK4495をモノラルモードに叩き込むレジスタだっ.MONO=1にする.

DZFB:audio dataのゼロ検出機能のpolarity選択.使わないのでDZFB=0にしとく.

SELLR:でたーっ! AK4495をモノラルモードにしたとき、Lch音声にするかRch音声にするかを選択するレジスタ.プリント基板を2枚用意して、片方はLchに、片方をRchに設定する.ゆえにLchならSELLR=0とし、RchならSELLR=1に設定する.

SLOW:上のSDで述べた、アンチエイリアシングフィルタの急峻さの設定."なだらか"にしたいので、SLOW=1に設定する.

adrs[3] = 0xFF;      {ATT LCH}
adrs[4] = 0xFF;      {ATT RCH}

これらはアッテネータである.アッテネータ機能を使わないので最大volumeのFFに設定しておく.


adrs[5] = 0b00000000;
 {INVL=0,INVR=0,0,0,0,0,DFS2=0,SSLOW=0}

INVL,INVR:極性反転.使わないので両方とも0にしとく.


DFS2:上にあったfs選択レジスタのbit2.使わないので0にしとく.

SSLOW:アンチエイリアシングフィルタの急峻さを超なだらかにする.それってどんな特性なんだろうと思うのだが、datasheetには書かれてない.SSLOW=0でOK.

adrs[6] = 0;
{DDM=0,DML=0,DMR=0,DMC=0,DMRE=0,DSDD=00,DSDSEL=0}

全部DSD機能なので無視.全部0にしとく.


adrs[7] = 0;     {0,0,0,0,0,0,0,SYNCE=1}

SYNCE:複数個のAK4495を並列運転する場合は、全てのAK4495の内部カウンタまで完全に同期していて欲しい(精神衛生上かもだが).それをやるのがこのレジスタ.SYNCE=1で同期する.細かくいえばaudio data=0が8192個連続すると同期されるという仕組みだ.

ただしdatasheetを読むと嫌な事が書かれている.同期時にaudio信号に雑音がプチッと出ると書かれているのだ.実際に無音で試してみたがブチッとかボコッとかは聴こえないので問題なしと考えて運用している.

adrs[8] = 0;     {0,0,0,0,0,SC=000}


datasheetをよく読んだわけではないのだが、要するに軽いイコライザみたいな機能らしく、そういう機能は不要なのでSC=000に設定しとく.


adrs[9] = 0;     Reserved

reservedということで無視しておく.

以上でレジスタ設定の説明はおしまい.


モノラルモードで運用する場合に、Lch用AK4495とRch用AK4495のレジスタ設定の差分は、SELLRのところだけということになるのでそこんとこヨロシク.



【AK4495アンチエイリアシングフィルタと波形】
レジスタ解説で、SD,SLOW,SSLOWはAK4495内蔵アンチエイリアシングフィルタの特性選択だと述べた.最終的にSD=0,SLOW=1,SSLOW=0という設定にした根拠を述べる.

SD,SLOW,SSLOWの設定で波形がどう変わるのかをオシロで観測してみる.結構エグイんだなこれが.

↓PCのアプリで任意のaudio波形を発生させてくれる便利なのがある.これを使う.→WaveGene

<SSLOW=0>
まずSSLOWの効果を見てみる.SSLOWは"超ゆるやか"アンチエイリアシングフィルタの意味で、たぶんほとんどフィルタを効かせない特性なのではと推測する.実際に波形を観測してみた.観測点はMUSES8920の出力.

↓まずSSLOWの場合(44.1kHz 16bit 正弦波16kHz fullbit SSLOW=1)
いやはや、ガキガキとエイリアシングが出ていますな.ちょっとこれで使うわけにはいかない.SSLOW機能は使わないこととする.
↓念のためSSLOWをoffにして確認する (44.1kHz 16bit 正弦波16kHz fullbit SSLOW=0
ちゃんとLPFが効いてGOODな波形になった.

<SD=0>
Short Delayの略である.
回路的には、Short delayならばIIR filterであり、Long Delay filterならばFIR filterであろうと推察しているが、その根拠は次の波形写真から来ている.

↓まずSD=0のLong Delay filterの場合 (192kHz 24bit 矩形波10kHz fullbit SD=0 SLOW=1 SSLOW=0)
波形のオーバーシュート、アンダーシュートに着眼する.位相特性がフラットで良い特性である.これはFIR filterでなければ得られない波形である.
↓SD=1のShort Delay filterの場合 (192kHz 24bit 矩形波10kHz fullbit SD=1 SLOW=1 SSLOW=0)
オーバーシュートが非対称になった.位相特性が曲がっている事を示している.IIR filterだとこうなってしまう.好みではない.

<SLOW=1>
アンチエイリアシングフィルタが急峻かなだらかかを設定する.
datasheetに特性図があるので引用しておこう.
SLOW=0 急峻
SLOW=1 ゆるやか
これが波形に与える影響はどんなものか?

↓SLOW=0   (192kHz 24bit 矩形波10kHz fullbit SD=0 SSLOW=0)
急峻なフィルタだと波形がビラビラになる様が如実に現れている.いわゆるリンギングってやつだ.音の傾向としてはギンギンギラギラになる傾向と云えるが、まぁリンギングの周波数が可聴周波数帯域外なので聴感上はさほど悪化しないとも云える.
↓SLOW=1   (192kHz 24bit 矩形波10kHz fullbit SD=0 SSLOW=0)
リンギングが少なくて良好.
SLOW=1


以上の検討により、SD=0,SLOW=1,SSLOW=0という設定にした.


【Arduino source code】
source codeをここに置いた.Aruduino Nanoをtargetにしたので、Unoとか他のシリーズでの動作確認はしていない.

↓I2CのためにWire.hというライブラリを使う.導入はよしなにやってね.
#include <Wire.h>

↓I2Cを使うための初期化、およびシリアル通信を9600psにセット.
void setup() {
  Wire.begin();        // join i2c bus (address optional for master)
  Serial.begin(9600);  // start serial for output
}

↓ここが肝の部分.AK4495の10BYTEsのレジスタ設定をadrs[]に格納している.
void loop() {
  // setting AK4495 #0 as Lch
  char adrs[10];  // register values
  adrs[0] = 0b10001111;   // register data (adrs0) {ACKS=1,EXDF=0,ECS=0,0,DIF=111,RSTN=1}
  adrs[1] = 0b00000010;   // register data (adrs1) {DZFE=0,DZFM=0,SD=0,DFS=00,DEM=01,SMUTE=0}
  adrs[2] = 0b00001001;   // register data (adrs2) {DP=0,0,DCKS=0,DCKB=0,MONO=1,DZFB=0,SELLR=0,SLOW=1}
  adrs[3] = 0xFF;         // register data (adrs3) {ATT LCH}
  adrs[4] = 0xFF;         // register data (adrs4) {ATT RCH}
  adrs[5] = 0b00000000;   // register data (adrs5) {INVL=0,INVR=0,0,0,0,0,DFS2=0,SSLOW=0}
  adrs[6] = 0;            // register data (adrs6) {DDM=0,DML=0,DMR=0,DMC=0,DMRE=0,DSDD=00,DSDSEL=0}
  adrs[7] = 1;            // register data (adrs7) {0,0,0,0,0,0,0,SYNCE=1}
  adrs[8] = 0;            // register data (adrs8) {0,0,0,0,0,SC=000}
  adrs[9] = 0;            // register data (adrs9) {0}

↓AK4495 Lchに10BYTEsのレジスタdataを送信する.
AK4495 LchのI2Cアドレスは10Hなので、16を引数として渡している.
  Wire.beginTransmission(16); // transmit to device 16 Lch
  Wire.write(0);          // write from adrs 0
  for(int i = 0; i < 10; i++ ) Wire.write(adrs[i]);
  Wire.endTransmission();     // stop transmitting

↓AK4495 Rchにレジスタdataを送信する.
ここでの注意点は2つ.
  1)SELLR=1に変更している
  2)I2Cアドレスを11Hすなわち17にしている
// setting AK4495 #1 as Rch
  adrs[2] = 0b00001011;   // register data (adrs2) {DP=0,0,DCKS=0,DCKB=0,MONO=1,DZFB=0,SELLR=1,SLOW=1}
  Wire.beginTransmission(17); // transmit to device 17 Rch
  Wire.write(0);          // write from adrs 0
  for(int i = 0; i < 10; i++ ) Wire.write(adrs[i]);
  Wire.endTransmission();     // stop transmitting

↓AK4495レジスタ書き込みだけでなく、読んでシリアルに出力もする.9600bpsのterminalにレジスタ値が表示されるはずである.
  Serial.print("Lch: ");
  readreg(16);
  Serial.print("Rch: ");
  readreg(17);

↓0.5秒待って、同じレジスタ設定を繰り返す.蛇足だが放置している.
  delay(500);


【プリント基板アートワーク】
4層基板の呼び名を、A面 → L2 → L3 → B面 とする.

↓まず電源はこのとおり4種類必要だ.
↓A面は電源(D3V,A3V,7V,9V)およびDAC周辺配線.AGNDベタも.
↓A面 AK4495周辺のパスコンとviaの状況.セラミック22uF(MLCC)を電源ピンの間近に優先的に配置し、後背に電解100uFをパラで配置する.viaはMLCCに近接させ出来れば2つ以上打つ.GND viaはそこらじゅうに打ちまくる.電源デカップをギトギトに行った.
↓L2はベタGNDとする.AGNDのベタね.何も考えずにベタGNDで一気通貫.
↓L3は電源層.
↓B面 デカップコンおよびOPAMP配線.配置可能な部位には電解100uFをパラで追加.

こんなところでおしまいとしまーす.

かしこ

3 件のコメント:

  1. 2000円札でどこで昼食を食べるか考え中2019年8月15日 11:08

    1)IC周辺1cmぐらいのローカルエリアにおけるGND・VCC・パスコン
    このあたりの回路を自分が今まで使っていたcdkの回路が、どうなっていたか気になるところですね。
    只今試聴しているところです。
    今までのcd内蔵dacでは高域がピーキーなところがありjazzのシンバルなどは心地よく聞けましたが、90年代のRocとは相性が悪かったようです。
    BangFlat印のDACは、今までうまく再生できていなかった90年代ロックの再生がうまくいっているようです。
    90年代ロックのレコーディングはカチンカチンの硬い音になっているモノのが多く、それ故音全体が細く聴こえます。その上今までのDACの音作りがJAZZのシンバルは上手く鳴らせても90年代の硬い音には、更に硬く音が痩せてしまっていたようです。先日もコメントしましたがワイドレンジで高域がなめらかで押し出すような音が聞いていると思います。OPAMPのAK4495の傾向もあるのでしょう。

    返信削除
    返信
    1. 2000円札でどこで昼食を食べるか考え中2019年8月15日 11:15

      OPAMPのAK4495←X
      OPAMPのMUSES8920←◯
      でした

      削除
    2. パーツ違いを聴き比べると、安物=キンキン音、上物=おとなしく、というのは大抵はその方向ですかねぇ.やはり過渡応答に馬脚が顕われるもので....

      MAGICOのスピーカーなんかは過渡応答の乱れを抑え込むためにどんだけお金を投資するんだろうな「超上物」なんだろうと思っているんです.あわわ~

      削除