ロームのDAC BD34301EKVを搭載した基板を作りましたが,チップが手に入らなかったので確認が出来ずにいました.チップの入手は今年の11月以降になると諦めていたのですが思いもよらず早く手に入れることができたので早速基板に実装して確認することにします.
今回設計した基板は前回設計したES9038Q2Mを実装した基板とは違って,マイコンを載せていませんのでAKMのAK4499EQを搭載したDAC -A4499基板と同様にLOBDAS基板を接続することになります.もっとも,AKMのDACはピンコントロールモードというのがあって,PCMの再生であればマイコンを使わずに電源をつなげるだけで確認できたのですがBD34301EKVはそうはいきません.LOBDASのESP32のファームを変更して確認することになります.
動作確認環境
動作を確認した環境です.BBB & Bridge & I2S Isolation にはオリジナルのBotic7が載っています.LOBDASではUSBの接続も可能ですがI2S直で確認することにします.
部品を載せた基板
部品を実装した基板です.
火入れ
まず初めに電源の確認です.BD34301EKVには3系統の電源(DVDDIO,DVDD,AVCC)を供給しますが,それらがショートしていないかテスターで抵抗を測ります.測定の結果,特に問題はないので電源を入れましょう.それぞれの電圧が正く出力されているのが観測できました.基板への電源は±12Vと5Vを供給しますが,今回使ったのはDC-DC ±12V/5V電源基板です.
I2Cバスの確認
BD34301EKVは,I2Cバス経由でレジスタにデータを読み書きすることで動きを制御します.そこでまずはI2C ScannerというプログラムでI2Cバスに接続されているデバイスのスレーブアドレスをスキャンして,I2Cバスに問題のないことを確認します.
基板にはGroveシステムのユニバーサル4ピンコネクタを2つ実装していますので,その一つにOLEDを接続してI2C Scanner を実行します.
シリアルモニター上の0x1CがBD34301EKVで,0x3CはOLEDそして0x52はLOBDAS基板のCPLDのスレーブアドレスです.ちゃんと確認できました.これでBD34301EKVを制御できそうです.
PCM モードでの再生
再生の確認ですが,まずはPCMモードの44.1kHzでの確認ですね.
PCMモードのサンプリング周波数決め打ちでの再生は,BD34301EKVのレジスタの初期設定のみで確認できるはずです.データシートには電源立ち上げシーケンス時のレジスタの設定方法をStep1からStep8までとして記載されていますのでこれに沿ってレジスタを設定していきます.AKM等ではこのような詳細な設定方法についての記載がないのである程度トライアンドエラーが必要でしたがロームのデータシートはその点は親切ですね.BD34301EKVのレジスタの初期設定はこのStep1に記載されているレジスタを設定します.PCM 44.1kHzを再生するにはデフォルト値に対してClock1レジスタ,FIR Filter1レジスタ,FIR Filter2レジスタをそれぞれ0x02,0x01そして0x80に変更しています.Step2からStep8はこの記載の通りに設定します.
とこれで再生できるはずなのですが,あれっ,波形が出ません.
レジスタの設定が違っているのかと何度も見直し,さらにBD34301EKVに正しく書かれないのかレジスタのリードバック(読み出し)をしましたが合っています.
ファーム的には問題なさそうということでハードを見直してみると,原因がわかりました.BD34301EKVはexternal resisterというのがRch,Lchにあって,910Ωが推奨されています.ところが実装されていたのはなんと910kΩでした.発注し納品された部品の表記を確認せずにはんだ付けしていましたがまさか910kΩだなんて思ってもいませんでした.(自分では910Ωを発注したつもりなのでさては間違って納品されたなと思い,これは直ぐにクレームを入れようとメールを書いていざ送信しようとしましたが思いとどまって,発注内容を見てみたら,なんと注文したのが910kΩでした.いやぁ,送信ボタンを押さないでよかった.)
とりあえず,手元にある最も近い抵抗値の825Ωに変更したところ波形が確認されました.
ここまでくれば一安心です.他のサンプリング周波数の波形を確認していきましょう.
AKMのAK449xやESSのES9038Q2MはPCMかDSDそしてサンプリング周波数を自動で検知するモードを持っていますが,BD34301EKVは入力に合わせてレジスタを設定する必要があります.そのため,サンプリング周波数に合わせて自動で切り替わるようにするには外部でサンプリング周波数の検知が必要になります.LOBDASにはその機能がありますのでそれで切り替えるようにファームを設計しています.これでサンプリング周波数に応じて32kHzから384kHzまで自動で切り替え,再生が確認できました.このサンプリング周波数の変更についてはデータシートにモード切り替えシーケンスが記載されているのでこれに従ってレジスタを設定しています.
なお,サンプリング周波数が705.6kHzと768kHzについてはBCLKが45.1584MHzと49.1520MHzが必要で,現在この環境がないので未確認です.
DSD モードでの再生
DSDモードの再生ですが,これについてもAKMのAK449xやESSのES9038Q2Mと違っています.
AK4499EQやES9038Q2MではサンプリングレートによってMCLKはDSDCLKの1倍から8倍になりますが,BD34301EKVではサンプリングレートによらずDSDCLKと同じ周波数か2倍の周波数を入力します.ここではひとまず,DSDCLKと同じ周波数をMCLKに入力することにします.そのために,LOBDASのCPLDをBD34301EKVの時はDSDモードのMCLKをDSDCLKと同じになるように設計を変更しました.
これで,DSDモードでDSD64,DSD128,DSD256そしてDSD512までPCMモードと同じように,入力のサンプリングレートに応じて自動で切り替え,再生が確認できました.
Volume の確認
ボリュームの確認です.
実際にはアッテネータですが,AKMのAK449xでは設定値が0xFFで出力レベルは0.0dBですがBD34301EKVは-∞になります.LOBDASのボリュームの増減を制御する関数をそのまま使ったら全く波形が出なくなったのでちょっと焦りましたが,すぐこのレジスタの設定の違いに気がついて修正後,問題なく増減の確認が出来ました.
デジタルフィルタ特性の確認
PCM モード時のFIRデジタルフィルタ特性はシャープロールオフ・フィルタとスローロールオフ・フィルタの2種類の設定が可能です.PCM 44.1kHzの矩形波を再生した出力を見ます.
シャープロールオフ・フィルタ
スローロールオフ
尚,ΔΣオーバーサンプリング・レートは「x 8」です.
さて,基本的なところは確認できたようです.この後は音質,性能に関わりそうなパラメータを振って確認していくことになります.