ROHMのDAC(BD34301EKV-E2)を試してみましょう!の巻き(完成編) 2021.5.6
(後編はこちら)
ソフトも完成! 2021.5.6
ようやくソフトのversion1が完成しました。GW中の完成を目指していましたが、ちょっとだけ伸びてしまいました。
まだ細かい修正点や手を入れたいとこは、まだでてくるでしょうがキリがないので一旦キリをつけました.
さて、ようやく実機に接続しての試聴です.
といっても夜も遅くなってきているので、静かに試聴です.
やっぱり新しいDACの音出しっていいですね〜.
実機に接続して試聴です.
つでに、DACを電源投入するときの起動画面を撮っておきました.
いままでのDACと一番違うのは、電源投入時の電圧モニタリングをしているところです.
DAC素子のデータシートにしたがって電源の投入をおこなっています.
DACアナログ(5V、AVCC)の立ち上がりに時間がかかっていますが、LT3042の電圧設定抵抗(50kΩ)に
10uFのコンデンサが並列に繋がっているので、電圧の立ち上がりがなだらかになっているためです.
電源起動時の表示の動画を撮ってみました.手振れがひどいです(笑.
機能整理
ここいらで機能などを整理しておきましょう。書き物にすることで、ひょっとして検討が抜けているところなどが顕在化するかもしれません.
まあ、各順番は思いついたところなのでランダムです.
1.消費電流
この基板にはOPアンプを動作させる±15V電源とDACのアナログとディジタルの8V程度の3系統の電源が必要です。
簡略化するなら、DACのアナログとディジタルを共用がいいでしょう。両方をあわせて最大でも400mAあれば十分です。
でも、ハイエンドのDACを活かす点からも、できれば電源は分離したいところです。以下に消費電流について記します。
アナログ(±15V)・・最大で100mA程度
実験用電源につないでいたときはおよそ50mA程度だったので、100mAの供給能力があれば十分でしょう。
ちなみに使用したOPアンプはOPA134×6個なので、他のOPアンプの場合は必要電流は多少かわると思います。
DACアナログ・・・・40mA程度
基板上のレギュレータにLT3042を使用しているのでデータシートからは給電は5.35V以上で足りますが、余裕をみて6V以上が必要です。
ただし、電圧が高いと損失も大きくなるので供給電圧は6〜9V程度を狙えばいいでしょう。
ディジタル部・・・・最大で300mA程度
実測の最大値で260mA程度です。このうちLED表示器が約140mAともっとも電流を消費します。LEDをとりつけないなら
電流供給は200mAあれば十分でしょう。LEDをとりつけるなら300mA以上はあったほうがいいでしょう。
ちなみにLED以外の電流消費の多いのはLCDのバックライトで20〜30mA程度流れます。
DAC素子のDVCC(1.5V)はLT3042をつかい3.3Vから生成していますが、消費電流は多くても50mA程度なので基板放熱で十分です。
ディジタル部の給電は基板上のレギュレータの電圧降下に依存します。5Vレギュレータに7805をつかうなら8V以上の電圧を供給します。
私は基板放熱を活かすために表面実装型の低損失型のものをつかっています。これなら6Vもあれば十分です.
基板上の5Vレギュレータはこれをつかっています。 3.3Vはこちらです。ドロップ電圧が1.1Vとすこし大きいですが、5Vから生成するのでこれで十分です。 |
2.アナログ出力レベル
この基板は久しぶりのオールインワン構成になっているので、DACのアナログアンプを搭載しています.
回路図の定数で製作した場合の出力電圧はATT=0.0dBで振幅2.9Vです.
実効値で2.06Vrmsですね.2Vrms目標ですがE24系列の抵抗なので多少誤差があります..
最大出力振幅です.
3.入力
この基板は全部で8つの入力系統があります.それをまとめると下表になります.
CH | 入力 | 入力レベル | フォーマット | 対応周波数 | 備考 | 補足 |
0 | SPDIF0(*1) | 同軸(標準では0.5Vpp) | SPDIF | 44.1kHz〜192kHz | (*1) | |
1 | SPDIF1 | |||||
2 | SPDIF2 | CMOS 3.3Vロジック | 光モジュール接続を想定 | |||
3 | SPDIF3 | |||||
4 | AUXIN0 | CMOS 3.3Vロジック | PCM/DSD 自動判定 PCMは I2S,RJ、LJ ビット長は 16,20,24,32 から選択 |
PCM 32kHz〜768kHz DSD 2.8224MHz〜22.5792MHz (DSD64〜DSD512) |
PCM9211をスイッチとして使用 | (*2) |
5 | AUXIN1 | |||||
6 | EXTIO(*4) | BD34301へダイレクト入力 | ||||
7 | ANALOG | 最大3Vpp | − | 96kHz | 入力ゲイン変更可能(±20dB) | (*3) |
(*1)SPDIF入力
周波数範囲は44.1kHz〜192kHzです.
PCM9211のデコード仕様から32kHzも可能ですが、BD34301のマスタークロックは22.5792MHzあるいは24.576MHzで
なくてはいけません.PCM9211のデコードは128,256,512Fsの3種類のみの対応であり、768Fsの設定がないため
SPDIFでは32kHzの入力時に所定の周波数のクロックが生成できません. 32kHz入力をおこなうにはSPI(PCM)入力にします.
なお、PCM9211でのデコードの周波数は44.1,48kHzの場合は512Fs、88.2,96kHzの場合は256Fs、176.4,192kHzの
場合は128Fsに設定しておりBD.34301に対応可能なシステムクロックを生成しています.
(*2).SPI入力
DAC34301は3つのSPI(PCM/DSD)入力コネクターがあります.すべて3.3VのCMOSロジックレベルです.
PCMとDSDのフォーマットの違いは、自動判別します。
(i)PCMの場合
対応周波数(FS): 32kHz 〜 768kHz (但しシステムクロックは22.5792MHz、24.576MHzが必要)
768kHzの再生時はBCKが49.152MHzになりますが必要なシステムクロックはその半分の24.576MHzです.
これはSRC4137では対応できません(SRC4137ではシステムクロックはマスタークロックより同等以上になるため)
なおシステムクロックが49.152MHzになる場合でも、裏技をつかえば再生が可能です.
まず使用するPCMポートはEXTINを使います.そして、.メニューからシステムクロックの設定を自動からマニュアルモードに変更して、
MCK(システムクロック)の分割(M-Div)を1/2に設定します.ただし、これだけでは再生できなくて、
直前にシステムクロックが24.576MHzが供給されている必要があるので、一旦入力をANALOG(ADC)に変更します.
そうするとシステムクロックとして24.576MHzが供給されます. その後に入力をEXTINに変更すると768kHzの再生が、
システムクロック49.152MHzで実行できます. 但し、なぜこれで再生できるかは理由はよくわかりません.というか
ただし、これはイレギュラーな使い方になるので、どういう不具合が生じるかわからないので
実行の場合は自己責任でやってくださいね. 素直にシステムクロックは22.5792MHzあるいは24.576MHzに設定するのが吉です.
入力周波数 (kHz) |
システムクロック (MHz) |
FSO選択 (SRC4137 3#メニュー) |
32 | 24.576 | 768 |
44.1 , 48 | 22.5792 24.576 |
512 |
88.2 , 96 | 256 | |
176.4 192 | 128 | |
352.8 , 384 | 64 | |
705.6 , 768 | (設定不可) |
(ii)DSDの場合
対応周波数:DSD64(2.8224MHz)〜DSD512(22.5792MHz)
DSDで使用する場合のシステムクロックはBCKと同じか、BCKの2倍の周波数を与えます。
もし、システムクロックがマッチしない場合はBCKの信号をシステムクロック(MCk)にもパラに
入力する方法がよいでしょう。
BCK周波数 (MHz) |
システムクロック | 備考 | |
DSD64 | 2.8224 | =BCK あるいは =2xBCK |
DSD入力におけるシステムクロックは 通常はBCKと同じ周波数を加えるようですが、 位相調整ビットをONにすることで、BCKの 2倍の周波数を入力も可能です。 制御ソフトではBCK周波数を計測して、 位相調整ビットを自動設定します。 |
DSD128 | 5.6448 | ||
DSD256 | 11.2896 | ||
DSD512 | 22.5792 |
(*3)アナログ入力
PCM9211は96kHzサンプルの24BitADCを搭載しています.入力は最大3Vppであり、そのときに
ほぼフルスケールのDAC出力となるようです.ということはADCに1.5倍のゲインをかけると、
入力電圧と出力電圧はほぼ等しくなるということになります.1.5倍ということで、.設定可能なゲインは
3.5dBですね.
上:入力(2Vpp) 下:DAC出力(4Vpp) 上:入力(3Vpp) 下:DAC出力(6Vpp)
いづれもADCのゲインは0dB.
(*4)EXTINの存在理由
DAC34301ではPCM/DSD入力にはPCM9211で切替する端子が2つあります. おそらくこれで十分かと思いますが、
さらにDACにダイレクトに入力できるEXTIN端子も備えています.なぜEXTINを設けたかというと、1つはDAIを実装しなくて
純粋なDACとしても使えるようにしたかったことがあります.
そのためBD34301に入力する信号をPCM9211とEXTINを切り替えるロジックIC(74157)の選択端子にはわざとプルダウン抵抗を
とりつけており、DAIやPICを実装しないときはEXTINからの信号を受信できるようにしています.
BD34301のデータシートは公開されていますから、自分で制御する人用です.なお、基板にはI2C制御信号の端子も設けています.
4.制御ソフト
こんな感じになる予定です.下記は初期化後直後の設定です.
フロントページ | メインページです. 現在の入力選択、その信号周波数、ボリューム値、フィルターの設定状況が表示されます. なお、ボリューム値はPCMの場合のみ有効です(DSDでは音量調整はできません)。 変更パラメータ(入力信号) SPDIF0(既定値) SPDIF1 SPDIF2 SPDIF3 AUXIN0 AUXIN1 EXTIN ANALOG |
||
フィルター設定 (PCM) |
PCM再生時のフィルター設定 変更パラメータ: SHARP ROLL-OFF(既定値) SLOW ROLL-OFF |
||
フォーマット設定 (PCM) |
PCM入力端子のフォーマット設定 変更パラメータ: フォーマット RJ(右詰め) LJ(左詰め) I2S(既定値) ビット長 16 20 24 32(既定値) |
||
DSDカットオフ周波数設定 | DSDのカットオフ周波数設定 変更パラメータ: HIGH(既定値) MID LOW |
||
出力モード設定 | 出力モード設定 変更パラメータ: モード STEREO(既定値) MIX(PCM)、STERO(DSD) MONORAL-L MONORAL-R SWAP(左右スワップ) OFF(既定値) ON POL(極性) L-Nor(ノーマル) RーNor(ノーマル)(既定値) L-Inv(反転) RーNor(ノーマル) L-Nor(ノーマル) RーInv(反転) L-Inv(反転) RーInv(反転) |
||
ADC(ANALOG)ゲイン設定 | ADCゲイン(アナログ入力ゲイン) 変更パラメータ: -20dB〜20dB(0.5dB毎) 既定値は0dB |
||
システムクロック関連設定 |
(中略) |
システムクロック関係設定 変更パラメータ: MODE AUTO(自動:既定値) 入力周波数に応じてメーカ推奨値を設定します. MANU(手動) 下記のパラメータを設定します P-Adj (位相調整) 既定値は各周波数でのメーカ推奨値 ON OFF M-Div(マスタークロックの分周) 既定値は各周波数でのメーカ推奨値 1/1 1/2 2/3 1/3N Hpc(高精度演算) 既定値は各周波数でのメーカ推奨値 OFF ON OSR(オーバーサンプリング) 既定値は各周波数でのメーカ推奨値 X8 X16 X32 MANU設定にすると、任意のパラメータを設定できますが再生は保証されません. このメニューは各周波数帯に分かれており全部で9つあります PCMで5グループ @32 A44,48 B88,96 C176,192 D352、384 DSDで4グループ @DSD64 ADSD128 BDSD256 CDSD512 |
|
赤外線リモコン学習 | 赤外線リモコンの学習 学習キーは下記の6種類 @項目DEC A項目INC BパラメータDEC CパラメータINC D音量DOWN E音量UP |
||
フロントページへの自動復帰設定 | 自動復帰設定 キー操作が10秒以上無い場合はフロントページに自動的に復帰させる設定です. 変更パラメータ OFF(既定値) ON |
||
基板上の電圧モニタリング | 基板上の電源電圧モニタリング (注)抵抗器の誤差やAD変換精度がありますので測定精度は1%程度です. |
||
BD34301のレジスター設定 一覧 |
BD34301のレジスターデータ表示 変更対象となる主要なレジスターとそのデータを表示します. 4桁の内、上位2桁がレジスターアドレスで下位2桁がデータ値です(16進表示) ※これはリリース時には不要なので割愛するかもしれませんが、 DAC素子の内部観察のために残すかもしれません. |
5;ジャンパーピン
この基板には5つのジャンパーピンがあります. おもにLCDやLED、さらにエンコーダを使わずにシンプルにDACを使用する場合を想定して設けています.
このジャンパーピンは電源投入時にセンスされますので、稼働中の変更は無効です.
ジャンパーピン
開放時の動作 | 短絡時の動作 | 説明 | |
M1 | ボリューム値は前回値を使用 | ボリューム初期値を0.0dBに設定 | 通常の初期化ではボリュームの初期値は-110.dBになりますが、 短絡することで最大値0.0dBを初期値にします.エンコーダを使用しない場合は短絡させておきます. |
M2 | PCMフィルターを前回値を使用 | PCMフィルターをSLOWに使用 | 初期化はSHARPになりますが、SLOWで使用する場合は短絡とします. |
M3 | M3,M4のどちらかでも短絡された場合、AUXIN0,AUXIN1のフォートを変更します. RJ16 M3=短絡 M4=短絡 RJ24 M3=短絡 M4=開放 RJ32 M3=開放 M4=短絡 EXTINは前回値を使用します. |
フォーマットの既定値はI2S-32ビットですが、LCDをつかわずに右詰めフォーマットを入力する場合に使用します. | |
M4 | |||
M5 | − | 電源立ち上げ時にパラメータを初期化の実行をおこないます.. | 4つのどれかのキーを押しながら電源を立ち上げても初期化を実行しますが、その場合には項目や パラメータが変更される場合があるので、ジャンパーピンをつかった初期化を加えています. |
抜けてました〜 2021.5.7
ロータリーエンコーダをつけていたので、つい抜けていました。エンコーダがないとボリューム調整ができないのも不便です。
ということで、スイッチで音量が調整できるメニューも追加です。これでボリューム調整はエンコーダ、スイッチ、赤外線リモコンの
どれからでも操作できます。でも、考えたらDACで音量調整なんてするかな〜という気もしてきました。やっぱりアンプですよね〜。
ボリューム調整用のメニューも追加です。
マニュアル作成〜 2021.5.8
相変わらずですが、手抜きバージョンの製作マニュアルです。 → DAC34301Manual.pdf
リリースはいつものように基板と主要部品のセットの他に、DAC(BD34301)を除くセットも用意予定です。
その他、色々な組み合わせも可ですが、どうしよう?(リクエスト受付ますね!)
こちらも、準備!
DAC34301の表示アクセサリとしての2色4桁KEDもソフトも完成です。
2色4桁LEDのソフトも完成です。
こちらも幾つかのモードで動くようにしています。ジャンパーピンが2つあるので、
その組み合わせです。
M2 | M1 | 動作モード | 備考 |
開放 | 開放 | シリアル入力モード | DAC34301と接続する場合はこれ |
開放 | 短絡 | 周波数カウンターモード | 周波数カウンターとして動作します。 最小分解能は1kHzです。 精度はPICの内蔵水晶精度の1%程度でしょう |
短絡 | 開放 | オーディオ用周波数チェッカー | オーディオでの周波数チェッカとして動作します。 (最大で15MHzくらい?) 32kHz〜45.192MHzで周波数を判定します。 |
短絡 | 短絡 | 予約 |
周波数カウンターとして動作しています。表示は9298kHzです(単位kHz)。
10MHzを超えると2桁目で小数点を表示して赤色で表示します(単位MHz)。
以前の4桁LEDに比べると6割くらいのサイズになりました。
#日曜日から、また3日間出張だなあ〜.
LED表示はすこし改良 2021.5.13
周波数カウンターの機能を向上させると同時に、電圧計モードも追加しました。
M2 | M1 | 動作モード | 備考 |
開放 | 開放 | シリアル入力モード | DAC34301と接続する場合はこれ |
開放 | 短絡 | 周波数カウンターモード | 周波数カウンターとして動作します。 測定表示1Hz〜65.76MHz(実際は50MHz程度) カウント時間を1ms〜1sまで可変。 精度はPICの内蔵水晶精度の1%程度でしょう。 手元のPICだと0.18%の誤差でした。カタログ以上の実力はあるようです |
短絡 | 開放 | オーディオ用周波数チェッカー | オーディオでの周波数チェッカとして動作します。 32kHz〜45.192MHzで周波数を判定します。 |
短絡 | 短絡 | 電圧計モード | PICの電源電圧を100%として0.0〜100.0で表示します。 |
へえ〜 2021.5.13
こんな投稿もいただきました。
廉価のものが出るのは嬉しいですが、データシートをみるとSNRなどの基本性能は変わりますが、ピン配置や機能はBD34301とほとんど同じで、
チップバージョンがちがうだけのような感じです。こりゃ、偽物が出回る可能性が捨てきれません。
ということで、チップバージョンも表示できるようにしました。新規に立ち上げ時に表示してもよかったのですが、起動画面がごちゃごちゃしそうなので、
レジスター設定一覧のメニューにチップバージョンのレジスター値も表示するようにしました。
BD34301のレジスターは8ビット長ですが、ほとんどが下位4ビットしかつかっていないので、それらは4ビット表示とすることで表示エリアを
節約しました。
チップバージョンはレジスター01にあり、01ならBD34301で52ならBD34352です。
ちゃんとBD34301のようですね!
さて、そろそろリリースにかかります。
その前に・・・
2色4桁LED表示器がどこまで高周波で動くかを試しておきました。
いままでは、長いRCAケーブルでおこなっていたので、ケーブルの特性が悪くて15MHz程度しか
うまくはかれませんでしたが、発振器にダイレクトに繋いでのテストです。
その結果は50MHzは問題なくカウントできました。でも65MHzはダメでした。
まあ、50MHzまで測定できればオーディオ用としては問題ないですね。
50MHzでのカウントは問題ないようです。
65MHzはカウントをミスするようです。
DAC34301リリースします。
一応、資料類を整理しておきました。
DAC34301は基板のみなどでも頒布可能です。問い合わせください。
DAC34301 | セットA | 20,500円 | 基板+主要部品(BD34301含む) | 製作マニュアル DAC34301Manual.pdf パーツリスト DAC34301PartsList.pdf |
セットB | 10,500円 | 基板+主要部品(BD34301含まず) | ||
Small-LED4 (オプション) |
850円 | 基板+PIC+チップ抵抗、チップコンデンサ | 製作マニュアル small_led4_manual.pdf |
申し込みページはこちらです。DACのコーナにあります。
BUGFIX
ご面倒おかけしますが、下記について修正をお願いいたします。
1.ADR1,2のプルアップ抵抗(Rb)2個の値の変更 2021.5.31
(修正内容)
製作マニュアルR2以前での部品表では47kΩになっていますが、2.2kΩ以下(例えば余っている1kΩを使用するか、なければジャンパー)
としてください。
該当位置のチップ抵抗。上図では修正前の47kΩが実装されています。
(修正理由)
47kΩではプルアップが十分に働かず、「I2C ERROR」が発生する事象が報告されています。
BD34352を載せてみました! 2022.6.12
BD34301はかなりお高いので、廉価版のBD34352を搭載してみました。
基板のネームはDAC34301そのままですが、BD34301とBD34352は完全ピンコンパチなので
乗せ換えが可能です。ただ、ソフトは変更必要です。
BD34352を載せて実装してみました。
基板は再製作時にシルクを修正しています。基板の名称と搭載DACの型番が不一致ですがご愛敬。
まだソフトは作成していませんが、ラベルだけ作ってみました。
ソフトを改造しよう! 2022.6.13
DAC34301のソフトをBD34352用に書き換えです。
変更箇所についてはDAC343XXの開発のときに整理していますので、さほど手間ではありませんが、
いままではPIC18F26K20を使っていましたが、入手ができなくなったのでPIC18F27Q43用に全面的に書き換えです。
結構、コンパイラで予約されている変数名がダブったりして修正箇所が結構ありました。
ようやく修正できました。
動かしてみましょう!
ソフトも修正できたので動かしてみましょう。もともとDAC34301用に作ったアクリルケースですが、
途中でDAC343XXに変り、今回はDAC34352に変りました。
ソフトの修正箇所としてのレジスタ設定内容の変更はさほど多くはないので、
問題なく動くでしょう。ということですが、それでもヒヤヒヤしながらの電源投入です。
初物に電源を入れるときはいつもびくびくです。
で、電源を入れて問題なく立ち上がり一安心です。チップIDについてBD34352であることを確認できました。
DAC34352に乗せ換えました。
まずは問題なく起動しました。
チップIDはBD34352であることを示しています。
動かない?
起動したので、さっそくSPDIFに信号を入れて動作確認です。
でも、出力をオシロで観察しますが全然出力がでていません。なぜだろう?
DACの電圧をモニターしても、すべてが正常です。
DACの電圧も正常ですが、信号がでません。なぜだろう?
実装忘れ発見!
基板をよく見ると、R34,35が実装されていないことを発見です。そりゃ、音がでないわけだわ!
ということで、実装したところ出力信号が確認できました。
出力信号が正常なことが確認できたので、音出しといきたいところですが
今日は遅いので明日にしましょう!
R34,R35の実装を忘れていました。流石にそれでは音はでませんね。
R34,35を実装したら無事に出力がでました。
音出し! 2022.6.14
最初は配線を横着してBluetoothで接続して鳴らしましたが、どうも音が途切れます。
音が途切れるとそちらに注意がいってしまってまともに音楽が聞けません。
ということで、USB-SPDIF変換器をつかって有線で接続です。
BluetoothもYouTubeなんかは音飛びしないのですが、MediaPlayerがわるいのかなあ?
メインシステムに接続です。Bluetoothで鳴らそうとしだけど、ブツブツと音が途切れてしまいました。
ノートPCが非力なのかなあ〜?
USB−SPDIF変換器をつかいました。こちらは音が途切れません。
音はどうかな?
DAC34301との比較ですが・・・・、ってDAC34301の音なんか覚えていないです。
比較するなら、瞬時に切替えられるシステムでないと無理ですね。
でも、いつも聞いていたDAC1704と比べると、よく似た音調?出力段のOPアンプが同じ(バーブラウン)だからかな?
まあ、直前に鳴らしていても自信ないです。
まあ、そんなことより久しぶりにメインのスピーカを動かしたので、ちょっと音楽を楽しみましょう。
マニュアル作成!
DAC34352は基本はDAC34301と構成は同じで、違うのはDAC素子とPICだけですから、
そこだけを書き換えたマニュアルをコピペで作ろうかとおもいましたが、さらに手抜きバージョンです。
「DAC34301のマニュアルを参照してください」という超超超な手抜きバージョンです。
DAC34352Manual.pdf
リリースはAセット(DAC含む主要部品)、Bセット(DAC含まない主要セット)、Cセット(基板とPICのみ)の3種類を用意しようかと思っています。
でも.ロジックICがなあ〜い!
(つづく?)