お気楽なDAC343XX-Sを考えてみる! 2022.3.8

DAC343XXをリリースしましたが、BD34352のデバイスの価格から考えると、結構使う部品を奢っています。
電圧レギュレータにLT3042をつかい、DACアナログの電圧ONにもフォトカプラでGND分離し、そしてアンプ部も
シングルのOPアンプになっています。これがBD34301を使うのなら、このくらい投資してもいいかもしれませんが、
DACってRasPiにつないだり、またマルチウエイ出力に何個もつないだりするので、できるだけお気楽な
ものが一つにはあれば便利です。
 ということで、もうちょっとお気楽な構成について考えてみました。

主な仕様はこんなとことでしょうか。すこし検討が必要なのは青字の2箇所でしょう.

1.使用するDACはBD34352。勿論BD34301も搭載可能にする。
2.アナログアンプはDUALのアンプを使用する。一応DIPサイズが標準.
3.DAC電源入力は5V単一とする。OPアンプ用電源は±15V。
4.電圧レギュレータは一般的なLDOを使う
5.入力は10Pコネクタ(PCM/DSD)のみ。
6.基本的にセッティングはメーカ推奨値として、細かい調整のためのスイッチやLCDは使わない。
7.RasPiと接続しやすいように、内部でMCKを生成する。
8.基板のサイズは標準サイズとする。

さて、ここから色々と検討です。

「 4.電圧レギュレータは一般的なLDOを使う」はどうする?

BD34352のディジタル部を動作させるには3.3Vと1.5Vが必要です。3.3Vのレギュレータについては
秋月でも色々とありますので、あまり悩むことはなさそうです。


DACディジタル部の電源供給. 1.5Vは外部からON/OFFできるようにすることが必要です.

3.3Vのレギュレータは色々とあります.


これはいつも3.3Vレギュレータで使うデバイスです。


これなんかもサイズが小さくていいかもしれません。容量も十分です。

1.5Vのレギュレータはどうしよう?
1.5Vというのは秋月のラインアップにはないようです。DIGIKEYで200mA程度流せるものを選んでみました。
これは結構よりどりみどりですが、下記のような標準的なパッケージのものがたくさんあります。
ピン配置もほぼ同じです。 これらは外部からON/OFFが制御できます.

1.5Vレギュレータはこんな形のものを使いましょう。およそ数10円で手に入ります。
ADP151シリーズが低ノイズ品の1つになります.

Pin3がEN端子になっていて、.これをHレベルにすると出力がONします.

DACアナログの5Vレギュレータはどうしよう?

これが結構悩みどころです. 下図のように電源の立ち上げ順番が規定されており、AVCC(5V)は一番最後に
ONする必要があります. 少々の立ち上がりが前後しても大丈夫なような気がしますが、ラッチアップでもしようものなら
一瞬で壊れてしまいます。やはり、ここは仕様を守ったほうがいいでしょう。
 そのため、ON/OFFが制御できて、かつ5Vを供給するためのデバイスと元電源を
考える必要があります. そのための方法は幾つか考えられそうです.

BD34352/BD34301では電源の立ち上げ順番が指定してあります.
これを守らないと、動いたとしてもデバイスにストレスをかけるかもしれません.

案1)OPアンプの電源から供給する.

OPアンプの電源からDACアナログの5Vを下図のように生成します。



5Vのレギュレータですが外部からON/OFFできるものが必要ですが、これについてはいくつもあります.
ただしアナログ電源15Vから5Vを生成しますから、電圧ドロップは10Vと大きいです。流れる電流も最大で45mA
程度ですから、消費電力は0.5Wに達します。そのため、すこしでも大き目のパッケージのものがいいでしょう。
でも、こんな大きなパッケージのものを使うのもちょっとためらわれます. それに15V電源の容量もかなり大きな
ものが必要になる可能性がでてきます.

発熱を考えると、このようなすこしパッケージの大きいものがいいでしょう。


案2)元電源電圧を6V程度に設定する.
一番アンチョコな方法が下図でしょうね. 5V電源ではなく6V程度の電源を使う方法です.
これならば、電圧ドロップも低くなるので小さい素子が使えます. ただし供給電圧が6Vとなると
それ専用に電源を準備する必要があります. RasPiとつかうなら、5V以外に6Vの電源を準備する
必要があります. これって、やはり面倒かなあ〜.

一番簡単なのは6V程度の電源供給ですが、その電源準備が面倒そうだなあ〜.


案3)5V電源からスイッチを介して供給する
 
シンプルにDACディジタルからの5Vをスイッチを介してDACアナログ部に供給するのもいいかもしれません.
もちろん、デジタルとアナログの電源を分離するのもSW以前で分離すれば簡単に実現できるでしょう..

こういった方法もいいかもしれません.

さて、この場合はスイッチに何を使うかが結構課題になるかもしれません.
というのもDACアナログ電源(AVCC)の最小値は4.5Vになりますから、0.6Vの電圧ドロップがあるバイポーラ
トランジスタをつかうことができません. PNPのトランジスタが使えると簡単なんですけどね.
で、バイポーラではなくてP-CHのMOSFETをつかうべきかもしれませんが、
たとえば下記なんかいいかもです. On抵抗が6.1mΩなので50mA流れても電圧ドロップは0.3mVです.
でも3.3VのPICでP-CHのMOSFETがON/OFFなんかできないだろうな〜.


これはON抵抗も6.1mΩも十分に低いです.でもPICでは直接ドライブは難しいでしょう.

それよりは、ラインアップがP-CHよりもっと豊富で、さらに低ON抵抗となるN-CHのMOSFETをつかったほうがいいでしょう.
不足する電圧を補うために、バイアス電圧としてOPアンプ用の電源(+12〜15V)をつかえばいいでしょう.
たとえば次のような回路にしてしまう方法です. 


OPアンプ用のアナログ電源をバイアスにつかってN-CHのMOSFETをON/OFFすればいいでしょう.


そして1.6mΩのON抵抗のMOSFETをつかえば、DACアナログ部に最大値である45mAが流れても電圧低下は72uVですから気になるレベルではありません.


これなんて1.6mΩとON抵抗が低いです. 秋月だと140円ですね.

MOSFETをつかう案3)をまずは最善案としておきましょう.

「7.RasPiと接続しやすいように、内部でMCKを生成する。」はどうする?

MCKはBCKを逓倍すれば生成できます.そのためにICS570というICを使っていましたが、ICS570シリーズの一部は生産中止になっているようです.
まだ、市中在庫はあるようですが、ここらあたりで次の素子を探しておいたほうがいいかもしれません.
 調べてみるとPT7C4511というのが、同じSO-8パッケージでピンレイアウトもよくにています.
ひょっとして代替品としてつかえるか調べてみました.

型番 ICS570 PT7C4511
パッケージ SO-8 SO-8

パッケージは同じです.
ピン配置

電源配置は同じだけど、他は異なっています.
置き換えすることはできないでしょう.
ブロック図も基本は似ていますが、やはり違いますね.

残念ながら、パッケージは同じでピン配置も似ていますが、完全に入れ替えることはできなさそうです.
でも、ICS570の供給には不安もあるので、新たな設計ならこちらの方がいいでしょう.

回路規模をイメージしてみよう!

このあたりで、どのくらいの回路規模になるかイメージできるように回路図を書いてみましょう.
全体では1枚でおさまりそうな感じです. 



まだ部品番号は滅茶苦茶です.これについてはパターンを描きながら修正していきましょう. 
またPIC回りも、実際のパターンを書き出すと回路図通りにしないほうが、配線がしやすかったりしますから、この辺りも仮の姿です.

パターンを描いてみましょう!

ざっくり(?)と描いてみました。部品点数は少ないですが、結構な配線になってしまいました。
単に部品配置が悪いだけかなあ〜。描いていて、やっぱりDACアナログの電源は別系統にできると
いいかもしれないので、分離することにしました。これで、デジーアナ分離です。

まだベタは塗っていません。

一応パターン完成 2021.3.14

まずはベタ塗りました。


まずはパターンを描いてみました


最終的な回路図です。

部品を試してみましょう 2022.3.24

今回はクロック逓倍器にPT7C4511を使うつもりですが、初物でもあるので一度動かしてみることにしました。
ということで、DIGIKEYへの注文ついでに入れ込みました。

 
試しにチップ購入です。SO-8パッケージをみるとホット一安心です。
なんせでかいですから、半田付け楽ちんです。


物も届いたので早速動かしてみましょう。

変換基板に搭載した時点でパスコンもつけておきました。



クロック源にはCLK5340を使用です。これはオーディオ関係のクロックの生成に重宝しています。最近ようやくSi5340が入手できたので
基板在庫の復活しました。


簡単だなあ〜

使い方としては、BCKの信号を22.579あるいは24.576MHzのマスタークロックになるように逓倍します。
そのため48kHz入力だと、BCKは3.072MHzですから8倍します。
96kHz入力だと、BCKは6.144MHzですから4倍、192kHz入力だと、BCKは12.288MHzですから2倍です。
これらがちゃんと動くか確認してみました。

入力3.072MHzのときは8倍です。


入力6.144MHzのときは4倍です。


入力12.288MHzのときは2倍です。オシロの帯域を広げたら
やはりリンギングが大きいですね。


問題なく、逓倍できることが確認できました。
結構簡単に使えるICですね。

限界は?あれ?

このPT7C4511は出力周波数は最大200MHz(5.0V),180MHz(3.3V)までつかえるようです。
本当にそうなのか確認してみましょう。ただ、ブレッドボードなので、まともに測定できるか心配です。
電源電圧は5Vにしています。

まずは簡単に8逓倍にして入力を5,10,20MHzとして、出力は40,80,160MHzになるかを確認です。

入力5MHzで倍率8倍で出力40MHz。大丈夫ですね。


入力10MHzで倍率8倍で出力80MHz。これも大丈夫ですね。


入力20MHzで倍率8倍で出力160MHz。大丈夫ですね。オシロプローブの
帯域が狭いのでどんどん出力が小さくなってきます。


とりあえず160MHzまでは確認できました。まあ、カタログスペックに嘘はないでしょう。

#ああ、また明日から4日ほど出張だなあ〜
#ああ〜♪〇〇は〜♪今日も〜♪雨だあった〜♪


記憶は忘却の彼方へ・・・・ 2022.6.18

基板はすこし前にできていたのですが、しばらく経ってしまうとどういった指向で作ったかを
完全に忘れてしまいました。記憶は忘却の彼方です(笑。
 そのため回路図を印刷して、眺めること数分。ようやく、思い出してきました。


基板はすこし前にが出来ましたが、どんな回路で作ったか忘れてしまいました。


再度回路図を眺めて、記憶を引き出します。

組み立てましょう!
 さっそく部品を実装していきましょう。 今回はできるだけ表面実装部品をつかってみました。
電解コンデンサも大容量(10uF)のセラミックに変更しています。
アナログ5Vのスイッチ用のMOSFETはTO220タイプを使う予定でしたが、IRFW540が目についたので
これをつかうことに。Ron抵抗は52mΩとすこし高目ですが、100mAの電流でも電圧降下は5mV程度なので
気にすることもないでしょう。

必要な部品を実装しました。 まずはお出かけ用の写真を撮っておきましょう。


表面実装部品を多用したので、実装高さは非常に低いです。一番高い部品はコネクタピンです。


シルクミスありました

実装していて気付きましたが、一部シルクミスがありました。本来はRc(1kΩ)なのですが、Ra(51Ω)になっていました。
動作確認の中で、まだまだでてくるかもしれないなあ〜。


シルクミスが一か所ありました。

ソフトを作成しましょう 2022.6.19

設定テーブルの検討

この基板ではマスタークロック(MCK)はBCKを逓倍して生成することを基本にしています。そうすることで、RasPiなどの
MCKの出力のないものとの接続も可能することを考えています。しかしながら、クロックの逓倍ICの倍率がx2〜x8であり、
x1(素通り)ができないことと、搭載するDACであるBD34352/BD34301のマスタークロックの推奨値がPCMの場合は
22.5792MHzあるいは24.576MHzであり、DSDの場合はBCKと同じかその倍であることが求められています(DSDでは
推奨値がMCK=BCKとなっている)。
 基本的にこのDAC基板では受信データに応じてメーカの推奨値になるように設定する予定ですが、逓倍ICをつかう制約などを
考えて、設定するパラメータを少し整理しておきます。まあ、私の備忘録みたいなものです。 最終的にはソースコードに
反映されるわけですが、ソースだけをみても何をしているかがあとでわかりにくいので、あえて文章にしておこうかと
思っています。
 メーカ推奨値から離れてしまうと動作がどうなるかわかりませんが、それについては実際に確認するしかないでしょう。

1.PCMモードの設定
 fs=384kHzまでは、本基板の基本設定で対応可能だが FS=705.6kHzではBCK以下のMCKを加える必要がでてくるため
MCKの外部入力が必要になってきます。

fs=32kHzの場合
ADRS Register メーカ推奨値
MCK=24.576MHz
実際の設定
BCK=2.048MHz
MCK= BCK x 8
備考
04h Clock 1 03h (1/3設定) 02h (1/2倍) 逓倍ICでx8倍したのち内部分周で1/2設定とする。
内部のマスタークロックが8.192MHzになるように設定する
06h Clock2 00h 00h
10h Audio I./F 1 0bh (I2S 32Bit) 0bh (I2S 32Bit)
03h (LJ 32Bit)
00h (RJ 16bit)
02h (RJ 24Bit)
フォーマットに併せて変更
30h FIR Filter 1 01h 01h
31h FIR Filter 2(Sharp) 80h 80h
FIR Filter 2(Slow) 83h 83h
40h Delta Sigma 02h 02h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

fs=44.1kHz,48kHzの場合
ADRS Register メーカ推奨値
MCK=22.5792MHz
MCK=24.576MHz
実際の設定
BCK=2.822MHz
BCK=3.072MHz
MCK= BCK x 8
備考
04h Clock 1 02h (1/2設定) 02h (1/2倍) 逓倍ICでx8倍すればメーカ推奨値のMCKとなる。
06h Clock2 00h 00h
10h Audio I./F 1 0bh (I2S 32Bit) 0bh (I2S 32Bit)
03h (LJ 32Bit)
00h (RJ 16bit)
02h (RJ 24Bit)
フォーマットに併せて変更
30h FIR Filter 1 01h 01h
31h FIR Filter 2(Sharp) 80h 80h
FIR Filter 2(Slow) 83h 83h
40h Delta Sigma 02h 02h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

fs=88.2kHz,96kHzの場合
ADRS Register メーカ推奨値
MCK=22.5792MHz
MCK=24.576MHz
実際の設定
BCK=5.644MHz
BCK=6.174MHz
MCK= BCK x 4
備考
04h Clock 1 00h (1/1設定) 00h (1/1倍) 逓倍ICでx4倍すればメーカ推奨値のMCKとなる。
06h Clock2 00h 00h
10h Audio I./F 1 0bh (I2S 32Bit) 0bh (I2S 32Bit)
03h (LJ 32Bit)
00h (RJ 16bit)
02h (RJ 24Bit)
フォーマットに併せて変更
30h FIR Filter 1 02h 02h 32〜48kHzの場合と異なるので注意
31h FIR Filter 2(Sharp) 01h 01h
FIR Filter 2(Slow) 04h 04h
40h Delta Sigma 11h 11h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

fs=176.4kHz,192kHzの場合
ADRS Register メーカ推奨値
MCK=22.5792MHz
MCK=24.576MHz
実際の設定
BCK=11.288MHz
BCK=12.288MHz
MCK= BCK x 2
備考
04h Clock 1 00h (1/1設定) 00h (1/1倍) 逓倍ICでx2倍すればメーカ推奨値のMCKとなる。
06h Clock2 00h 00h
10h Audio I./F 1 0bh (I2S 32Bit) 0bh (I2S 32Bit)
03h (LJ 32Bit)
00h (RJ 16bit)
02h (RJ 24Bit)
フォーマットに併せて変更
30h FIR Filter 1 04h 04h 32〜48kHzの場合と異なるので注意
31h FIR Filter 2(Sharp) 02h 02h
FIR Filter 2(Slow) 05h 05h
40h Delta Sigma 11h 11h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

fs=352.8kHz,384kHzの場合
ADRS Register メーカ推奨値
MCK=22.5792MHz
MCK=24.576MHz
実際の設定
BCK=22.5792MHz
BCK=24.576MHz
MCK= BCK x 2
備考
04h Clock 1 00h (1/1設定) 02h (1/2倍) 逓倍ICはx1ができないのでx2倍にする。
そのためMCKは内部で1/2分周とする。
06h Clock2 00h 00h
10h Audio I./F 1 0bh (I2S 32Bit) 0bh (I2S 32Bit)
03h (LJ 32Bit)
00h (RJ 16bit)
02h (RJ 24Bit)
フォーマットに併せて変更
30h FIR Filter 1 08h 08h 32〜48kHzの場合と異なるので注意
31h FIR Filter 2(Sharp) 80h 80h
FIR Filter 2(Slow) 80h 80h
40h Delta Sigma 11h 11h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

fs=705.6kHz,768kHzの場合 (逓倍ICは使用不可。外部クロックへの切替が必要)
ADRS Register メーカ推奨値
MCK=22.5792MHz
MCK=24.576MHz
実際の設定
BCK=45.1584MHz
BCK=49.1586MHz
MCK= EXT-IN
備考
04h Clock 1 00h (1/1設定) 00h (1/1倍) 逓倍ICの最低倍率x2でもDACの周波数上限を超えるので、
この周波数の場合は外部クロックへの切替が必要。
メーカ推奨値のクロックをJP6を変更して外部から供給する
06h Clock2 00h 00h
10h Audio I./F 1 0bh (I2S 32Bit) 0bh (I2S 32Bit)
03h (LJ 32Bit)
00h (RJ 16bit)
02h (RJ 24Bit)
フォーマットに併せて変更
30h FIR Filter 1 08h 08h 32〜48kHzの場合と異なるので注意
31h FIR Filter 2(Sharp) 80h 80h
FIR Filter 2(Slow) 80h 80h
40h Delta Sigma 01h 01h
60h Setting 5 16h 16h
61h Setting 6 16h 16h


2.DSDモードの場合

メーカ推奨値はMCK=BCKとなっているが、逓倍ICではx2が最低となるため、DAC内部で1/2に分周することとする。
その他はメーカ推奨値と同じ。逓倍ICをつかっても、DSD512まで対応可能でしょう。

BCK=2.822MHz(DSD64)
ADRS Register メーカ推奨値
MCK=2.822MHz
実際の設定
MCK= BCK x 2
備考
04h Clock 1 00h (1/1設定) 00h (1/1倍)
06h Clock2 00h 00h
10h Audio I./F 1 8bh 8bh
16h DSD Filter 1 02h(BD34301)
06h(BD34352)
02h(BD34301)
06h(BD34352)
周波数によって変化するので注意
40h Delta Sigma 02h 02h
60h Setting 5 9Eh 9Eh
61h Setting 6 1Eh 1Eh

BCK=5.6448MHz(DSD128)
ADRS Register メーカ推奨値
MCK=5.6448MHz
実際の設定
MCK= BCK x 2
備考
04h Clock 1 00h (1/1設定) 00h (1/1倍)
06h Clock2 00h 00h
10h Audio I./F 1 8bh 8bh
16h DSD Filter 1 01h(BD34301)
05h(BD34352)
01h(BD34301)
05h(BD34352)
周波数によって変化するので注意
40h Delta Sigma 02h 02h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

BCK=11.2896MHz(DSD256)
ADRS Register メーカ推奨値
MCK=11.2896MHz
実際の設定
MCK= BCK x 2
備考
04h Clock 1 00h (1/1設定) 00h (1/1倍)
06h Clock2 00h 00h
10h Audio I./F 1 8bh 8bh
16h DSD Filter 1 00h(BD34301)
04h(BD34352)
00h(BD34301)
04h(BD34352)
周波数によって変化するので注意
40h Delta Sigma 02h 02h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

BCK=11.2896MHz(DSD512)
ADRS Register メーカ推奨値
MCK=22.5792MHz
実際の設定
MCK= BCK x 2
備考
04h Clock 1 00h (1/1設定) 00h (1/1倍)
06h Clock2 00h 00h
10h Audio I./F 1 8bh 8bh
16h DSD Filter 1 00h(BD34301)
04h(BD34352)
00h(BD34301)
04h(BD34352)
周波数によって変化するので注意
40h Delta Sigma 02h 02h
60h Setting 5 16h 16h
61h Setting 6 16h 16h

ジャンパーピンの機能定義

動作設定のためにM0〜M3の4本のジャンパーピンがあるので、その使い方を定義しておきましょう。

内容 設定(1:OPEN、0:SHORT) 備考
M0 PCM入力フォーマット設定 (M1,M0)
(1,1)=I2S 32Bit
(1,0)=LJ 32Bit 左詰め
(0,1)=RJ 16Bit 右詰め
(0,0)=RJ 24Bit 右詰め
M1
M2 PCMフィルター設定 1:Sharp Roll Off
0: Slow Roll Off
M3 MCK設定

制御設定
1:逓倍IC使用(MCK不要)
0:外部MCK使用

1:内部制御
2:外部制御
(※)外部MCKを選択した場合は下記クロックが必要。
PCM: 22.5792MHzあるいは24.576MHz
DSD ; BCKと同じ周波数
パラメータはメーカ推奨値とする。


外部制御とした場合は、BD343XXに対してコマンドを送りません.
内蔵のPICは電源制御のみで稼働します.
すなわち、外部からI2C制御をおこなってユーザから任意のパラメータ設定ができるようにします.
クロック逓倍ICについては、.外部信号に応じて下記の設定とします.
PCM入力時
 48kHz以下 x8
 96kHz以下 x4
 上記以外  x2

DSD入力時
 常に x2


LEDの表示機能

4つのLEDがあるので、それらで動作状態を示します。

名称 No 表示内容
PWR D1 点灯: 電圧正常。
点滅: 電圧正常だがDACとI2C通信エラーが発生している状態
消灯: 未起動。他のLEDで電圧不足箇所を表示
     FREQ2が点灯してい場合:D電源電圧が不安定
     FREQ1が点灯している場合:DVDD(1.5V)の電圧不足
     PCM/DSDが点灯している場合:AVCC(5V)の電圧不足
PCM/DSD D2 点灯: DSD入力時
消灯: PCM入力時
FREQ1 D3  組み合わせで入力周波数を表示(下表参照)
FREQ2 D4
FREQ2 FREQ1 DSD入力時 PCM入力時
消灯 消灯 DSD64 32〜48kHz
消灯 点灯 DSD128 88.2,96kHz
点灯 消灯 DSD256 176.4,192kHz
点灯 点灯 DSD512 352kHz以上


動かしてみましょう! 2022.6.20

ソフトもほぼコーディングが終わったので動かしてみましょう.
この基板には表示としてはLEDのみなので、内部レジスターの設定状況などがわからないので
テンポラリーにLCD表示器をとりつけます.I2Cでの動作なのでDEBUG PORTに接続です.


正しくレジスターが設定できているかなどを確認するために、LCDを取り付けています.


SRC4137と接続して動作チェックです.

LCDが有る無しでは、デバッグの効率がまったく違います. 色々でてくるバグをつぶして完成です.


問題なく動作するようになりました.

すこし仕様変更

もともとこの基板はRasPiなどのMCK出力がないボードや、DIV5142など複数のDACが必要とするものとの接続
を想定して、無調整での動作を目的に考えています.  ここでRasPiと接続するなら、ついでにRasPiからもI2C制御が
できるようにしてやれば、ユーザが自由にDACのパラメータを弄れることになります. 
 そこで、ジャンパーピンのM3については、これを短絡すれば基板上のPICについては電源制御とMCKの生成制御
のみを行って、.DACへのパラメータ設定を行わないようにすることにしましょう. すなわちI2Cの制御線はHi-Z(ハイインピーダンス)
のままにしておいて、基本的には外部からの制御を受け付けるようにします.

どこまで動くかな?

最終の動作確認です.

PCMについては回路上では384kHzまで動くはずです.
というのもfs=384kHzではBCKの周波数は24.576MHzになりますが、x2で逓倍してマスタークロックは
49.152MHzになります. これはDACの許容入力周波数範囲内です.
しかし、768kHzまであげるとDAC自体は動作範囲ですが、マスタークロックが98.304MHzまで上がるので
DACの動作範囲外になってしまいます. でも、どんな挙動になるか調べてみました.
 結果は振幅1/2で出力がでるようですが、なにか変な動作をしているようにも見えます.
やはりクロックが高すぎですね. 受信可能な周波数はPCMでは384kHzになりそうです.
768kHzまでうけようとすれば、マスタークロックを低くするために外部からの供給にする必要がありそうです.


PCM入力ではfs=384kHzでは問題なく動作します.


PCM入力でfs=768kHzまであげると少し波形が乱れます.
それに振幅も半分になってしまいます.

DSD
についてはDS512、すなわちBCKが22.5792MHzでも仕様上は動作できます.
でも、その上のDSD1024ではどうだろう?ちょっと試してみましょう.
結果はDSD1024でも動くようです. マスタークロックは90MHzを超えますが
大丈夫なようです. でも、たまたまかもしれませんね. メーカとしては保証範囲外でしょう.


DSD512での再生は問題ありません.


DSD1024でも再生できるようです.

ちょっと備忘録

1.OPアンプの実装
 このDACではDUALのOPアンプを使用しますが、DIPだけでなくSO8パッケージも搭載できるように
パッドを設けました. 変換基板をつかえばDIPのパターンだけでもいいのですが、変換基板をつかうと、
どうしてもSO8のICが横を向いてしまいます.これはちょっとかっこ悪い.ということで、無理やりDIPもSO8も
同じ向きになるようにランドを設けましたが、このままでSO8を実装すると足がDIPのパターンにかかってしまいます.
そこで、SO8を実装するには足を少し切ってから実装するようにしました.


無理やりSO8が搭載できるようにランドを設けています.


でも、そのまま搭載するには足の幅が大きいです.


そのためSO8パッケージのOPアンプは足を短くしてから取り付けています.

2.MOSFETの実装
 MOSFETは低On抵抗なTO-220パッケージのものを想定していますが、
表面実装のものも搭載可能にしています. サイズとしては小さい方がいいのですが、
手持ちでなかったので少し大きなIRFW540をつかいました. 
それでも、問題なく取り付けられました. 次回作るときは、すこし小さめのMOSFETを
準備しておきましょう.


IC7は3.3Vレギュレータ、Q2はMOSFET(N)です.
TO-220パッケージ以外にも表面実装パッケージのものも搭載できます.


TO-263(D2-PAK)のMOSFET(IRFW540)でも搭載できそうです.
本当はTO-252のような小さめのパッケージが見栄えもいいでしょう.

マニュアル作成!

さて、最後の仕上げでマニュアルも書いておきましょう.
ああ〜これが一番面倒です(笑.

現実逃避? 2022.6.21

1.ソフト微修正
面倒な作業より楽しいプログラミング!ということでソフトを微修正。
LEDの周波数表示をすこし細かく分類できるように改造です。
 FREQ1,FREQ2のどちらのLEDも消灯しているときは信号なしという
ことがわかるようにしました。

PCM/DSD FREQ2 FREQ1 周波数
PCM入力時
消灯
消灯 点灯 32〜48kHz
点灯 消灯 88.2,96kHz
点灯 点灯 174.6,192kHz
消灯 点滅 352.8,384kHz
点滅 消灯 705.6kHz、768kHz
消灯 消灯 上記以外
DSD入力時
点灯
消灯 点灯 DSD64
点灯 消灯 DSD128
点灯 点灯 DSD256
消灯 点滅 DSD512
点滅 消灯 DSD1024
消灯 消灯 上記以外

2.RasPiと接続&試聴

試聴のためにRasPiに接続してみましょう。 この基板は±12〜15Vが必要なので
専用の電源を準備するのも大変なので、5V入力のDCDCコンバータを搭載です。
3Wのもので十分です。以前に共立電子で安く売っていました。 しかし、なぜ共立d電子で
このタイプのDCDCを大量に扱っているのだろう? どこかの不要な在庫を買い取ったのかな?


DAC343XX-Sでは±12〜15Vが必要なのでDCDCコンバータを搭載です。
共立のエレショップで250円で売っていました(今はまだあるかな?)


RasPiにはすでにPiDAC9218とPiLVDSが接続されています。一番簡単なのはフラットケーブル1本で
接続できますが、それではMCKが不要な確認にならないので、わざわざバラ線で接続です。
接続するのはDATA、LRCK、BCK,GNDの4本(青色)です。そしてあと1本は5V電源ライン(黄色)です。


RasPiとの接続はリボンケーブルでも良かったのですが、MCKが不要ということを確認するためにバラ線で接続です。
ちなにみ1本の黄色線はRasPiからDAC343XX-Sへの5Vの供給線です。
RasPiは3Bで、すでにPiDAC9218とPiLVDSが親亀子亀状態で3段で接続されています。


メインシステムに接続して試聴準備です。RasPiには5VのACアダプタ(2A容量)で電源を供給です。


メインシステムに接続して試聴です。 夜も遅いので、静かにBGM代わりに鳴らしましょう。

RasPiの音楽プラットフォームはVOLUMIOです。RasPiは3Bと一世代前ですが、これでも十分に動きます。
でも、まだ最新のVOLUMIOにはバージョンアップしていません。 動かなくなってしまうと面倒だしな〜。
音楽は簡単にネットラジオのイージーリスニングを選択です。
 すこし前に自炊したHDDをつないで鳴らしたのですが、接続をPCに戻したらHDDを認識しなくなってしまって、
色々と修正をするハメになったのでとりあえずは簡単なソースとしました。


VOLUMIOで鳴らします。RasPi3Bなので、まだ最新のVOLUMIOにはバージョンを上げていません。
まずはネットラジオで軽く試聴です。



リサンプリングは192kHzに設定しています。


左からPWR,PCM/DSD,FREQ1,FREQ2です。
右二つが点灯しているので174.6〜192kHz表示です。

夜も遅いので、音量は小さめですがいい感じで鳴ってくれています。
設定も不要で、とりあえずつなげば動くのはお気楽でいい感じです。

そろそろ、現実逃避から抜け出さねば・・・・・・

マニュアル作成 2022.6.22

またまた手抜きなマニュアル作成です。
DAC343XX-S_Manual.pdf

あわせてリリース準備です。主要部品は添付予定ですが、
それ以外にもオキラクオプションも考えています。


オキラクオプション MOSFET(IRFW540)、インダクタ―
OPアンプ(TL072×3)


とりあえず明日の仕事終わったらリリース準備です。


電子ボリューム追加? 2022.7.5

こんな投稿をいただきました.



もともとDAC343XX-Sはシンプルに使うということで、あまり電子ボリュームなどの接続は考えていなかったです.
でも、拡張のための端子はいくつかあり、CN3の予備ポートを使えばVRを接続できますし、CN4をつかって減衰量表示の
ためのsmall-LED4が接続できそうです.
 ちょっと改造を検討してみましょう.


まずは改造検討のためのVRとsmall-LED4を取り付けておきましょう.

減衰曲線はなめらかにしてみましょう

いつもは3段階程度の折れ線近似で減衰曲線をつくっています. なぜ折れ線をつかうかといえば、
単純にプログラムの容量が小さいからです. 初期に電子ボリュームアンプなどを製作していたときはPICの容量が
2kW程度しかありませんでしたから、VR値に対するルックアップテーブルなんかは作ろうにもつくれません.
なんせ10Bitの分解能だとテーブルだけで1kByteは必要になってきます.
その点、最近ではほぼ使うPICがPIC18Fになってきたので、容量的にも余裕があります. それと、DAC343XX-Sでは
制御ソフトも軽いのでこの程度のテーブルなら余裕で入ります.

ということで、今回は折れ線近似ではなく下記のような曲線をルックアップテーブルとして持つことにしましょう.


この曲線でVRの値を減衰量に変換します.

なお、この曲線の式は下記です(備忘録)

 VOL設定値= 220-284x(1-(1/(0.0028x(AD変換値-15)-1))+10

テーブルで表すとこうなります.エクセルをつかって計算しています.
テーブルは定数なのでRAMにおかずにROMに置くため、変数宣言の前にromを入れています.
こうしないとRAMに配置されてしまいRAMの容量が足りなくなってしまいます.

rom unsigned int vol_table[1024]=
{255,255,255,220,220,219,218,217,216,215,215,214,213,212,211,210,210,209,208,207,207, 206,205,204,204,203,202,201,201,200,199,198,198,197,196,195,195,194,193,193,192,191, 191,190,189,188,188,187,186,186,185,184,184,183,183,182,181,181,180,179,179,178,177, 177,176,176,175,174,174,173,173,172,171,171,170,170,169,168,168,167,167,166,166,165, 165,164,163,163,162,162,161,161,160,160,159,159,158,157,157,156,156,155,155,154,154, 153,153,152,152,151,151,150,150,149,149,148,148,147,147,146,146,146,145,145,144,144, 143,143,142,142,141,141,140,140,140,139,139,138,138,137,137,136,136,136,135,135,134, 134,133,133,133,132,132,131,131,131,130,130,129,129,128,128,128,127,127,126,126,126, 125,125,125,124,124,123,123,123,122,122,122,121,121,120,120,120,119,119,119,118,118, 117,117,117,116,116,116,115,115,115,114,114,114,113,113,113,112,112,112,111,111,111, 110,110,110,109,109,109,108,108,108,107,107,107,106,106,106,105,105,105,104,104,104, 103,103,103,103,102,102,102,101,101,101,100,100,100,100,99,99,99,98,98,98,98,97,97,97, 96,96,96,96,95,95,95,94,94,94,94,93,93,93,92,92,92,92,91,91,91,91,90,90,90,90,89,89,89, 88,88,88,88,87,87,87,87,86,86,86,86,85,85,85,85,84,84,84,84,83,83,83,83,83,82,82,82,82, 81,81,81,81,80,80,80,80,79,79,79,79,79,78,78,78,78,77,77,77,77,77,76,76,76,76,75,75,75, 75,75,74,74,74,74,73,73,73,73,73,72,72,72,72,72,71,71,71,71,71,70,70,70,70,70,69,69,69, 69,69,68,68,68,68,68,67,67,67,67,67,66,66,66,66,66,65,65,65,65,65,64,64,64,64,64,64,63, 63,63,63,63,62,62,62,62,62,62,61,61,61,61,61,60,60,60,60,60,60,59,59,59,59,59,59,58,58, 58,58,58,58,57,57,57,57,57,57,56,56,56,56,56,56,55,55,55,55,55,55,54,54,54,54,54,54,53, 53,53,53,53,53,52,52,52,52,52,52,52,51,51,51,51,51,51,50,50,50,50,50,50,50,49,49,49,49, 49,49,49,48,48,48,48,48,48,48,47,47,47,47,47,47,47,46,46,46,46,46,46,46,45,45,45,45,45, 45,45,44,44,44,44,44,44,44,43,43,43,43,43,43,43,43,42,42,42,42,42,42,42,41,41,41,41,41, 41,41,41,40,40,40,40,40,40,40,40,39,39,39,39,39,39,39,39,38,38,38,38,38,38,38,38,37,37, 37,37,37,37,37,37,36,36,36,36,36,36,36,36,36,35,35,35,35,35,35,35,35,35,34,34,34,34,34, 34,34,34,33,33,33,33,33,33,33,33,33,32,32,32,32,32,32,32,32,32,31,31,31,31,31,31,31,31, 31,31,30,30,30,30,30,30,30,30,30,29,29,29,29,29,29,29,29,29,29,28,28,28,28,28,28,28,28, 28,28,27,27,27,27,27,27,27,27,27,27,26,26,26,26,26,26,26,26,26,26,25,25,25,25,25,25,25, 25,25,25,24,24,24,24,24,24,24,24,24,24,24,23,23,23,23,23,23,23,23,23,23,23,22,22,22,22, 22,22,22,22,22,22,22,21,21,21,21,21,21,21,21,21,21,21,20,20,20,20,20,20,20,20,20,20,20, 20,19,19,19,19,19,19,19,19,19,19,19,19,18,18,18,18,18,18,18,18,18,18,18,18,17,17,17,17, 17,17,17,17,17,17,17,17,16,16,16,16,16,16,16,16,16,16,16,16,16,15,15,15,15,15,15,15,15, 15,15,15,15,15,14,14,14,14,14,14,14,14,14,14,14,14,14,13,13,13,13,13,13,13,13,13,13,13, 13,13,13,12,12,12,12,12,12,12,12,12,12,12,12,12,12,11,11,11,11,11,11,11,11,11,11,11,11, 11,11,10,10,10,10,10,10,10,10,10,10,10,10,10,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8, 8,8,8,8,8,8,8,8,8,8,8,8,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6, 5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,3,3,3,3,3,3,3,3,3, 3,3,3,3,3,3,3,3,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,1,1,1,1,0,0,0,0,0,0};


プログラムを組んでみましょう!

電子ボリュームとかsmall-LED4用のルーチンを色々とかき集めてきて、
DAC343XX-Sに組み込みです.

ちゃちゃらちゃらちゃらちゃっちゃっちゃ〜ん!!! ← 料理番組の音楽です.

完成かな?

まずはVRとLED表示は大丈夫なところまできました.


目視ではコントラストよく光っていますが、写真だとなかなかわからないですね.


半透明のアクリル板をつかうと、よくわかります. これはボリューム表示です.
-7.5dBを示しています.



入力(DSD/PCM)や周波数が変ったときは2秒ほど、その状態を
表示するようにしました. 折角2色LEDをつかうので、ボリューム表示は
緑色、周波数表示は赤色にしました. 表示はPCMで48kHzを示しています.

実際の動作確認はまた後日やりましょう.

最終確認

ボリュームの感覚も確認のため、ヘッドホンを接続して実際に試聴しながら行います。
接続したヘッドホンはオーディオテクニカのATH-W10VTGでインピーダンス48Ωです。
保護抵抗なしてダイレクトに接続していますが、-20dBの音量でも結構大きな音がします。
-20dBということは出力としては最大で0.2V程度ですから電力にすれば1mWにも届かない値です。
OPアンプでも十分にヘッドホンの駆動はできるということでしょう。
 このヘッドホンも1996年発売で、出だして間もなくかったこともあり、使いだして25年は経つ代物です。
一度イヤーパッドも交換したこともあり特に問題なくつかえていますが、そろそろ新調してもいいかな〜とも思ったり。
ですが最近のヘッドホンてなんかもの凄く高価で、ちょっと躊躇してしまいます。


ヘッドホンを接続して聞きながら動作確認しています。接続先はSRC4137です。


愛用のATH-W10VTGです。

さてさて動作確認です。
 ・周波数変更時の表示  → OK
 ・ボリューム感覚      → OK (問題なし。折れ線近似でも良かったかあ?)

ちょっと変更したのはDSDのときのボリューム表示です。
DSD入力時には電子ボリュームは動作しないので、表示も減衰のない”0.0”という表示に
することにしました。

加えて、ジャンパー設定を変更したときにも表示をするようにしておきましょう.
最初の1文字目がフィルターの設定で”F"(FAST)あるいは”S"(SLOW)
次の3文字がフォーマット設定で”I2S”、”LJ",”R16”、”R24”を示すようにしてみました.
まあ、ジャンパー設定はほとんど変更することはないので、この表示はあまり意味がないかもしれないですね.

ちなみに”I2S”を7セグメントで表すと数字の”125”と同じなので、なんのこっちゃ?というように見えるかもしれないです.
また”R"も大文字だと”A"とも区別がつかないので”r”の小文字表現です.

マニュアル追記

機能追加したPICのためのマニュエルも追記しておかないといけないなあ〜。


制御PICがv2になりました。

追記しました 2022.7.8
DAC343XX-S_Manual.pdf
あわせてリリースも行います.

(つづく?かな?)