RasPi用のシンプルなSPDIF出力基板を考える、の巻き! 2022.7.4

RasPiは音楽サーバとしてとてもお気楽に使えるのですが、オーディオシステムに接続するには
DACに接続してアナログ出力を得る必要があります。


RasPiで音を鳴らすにはDACを接続してアナログ出力が必要です。
SPDIF出力ができればメインシステムのDACに簡単に接続できるのですが・・・。


簡単にシステムに接続するならSPDIF出力があれば便利なところです。
家にはいくつもRasPiがあるので、それらをシンプルに音楽サーバとして使えるようにSPDIF出力を
持たせようかと思いましたが、SPDIF出力が可能な基板を探したらPiSRC4137のみです。
いままでに作った基板の一覧を作ってみましたが、ほとんどがアナログ出力を得るための
基板になっています。

RasPiに直結できる基板類(年代順)  SPDIF出力ができるのはPiSRC4137だけでした。
コードネーム 関連検討記 機能 アナログ出力 I2S出力 SPDIF出力 備考
PiLVDS PCM/DSD信号のHDMI/RJ45接続を考えてみよう、の巻き 
PCM/DSD信号のHDMI/RJ45接続を考えてみよう、の巻き(後編)
HDMI/RJ45接続を考えてみよう、の巻き(後編その2) 
NCK生成 HDMI,RJ45,10P BCK逓倍機能
PiDAC9218 ES9218Pを動かしてみる!
新デバイスは楽しみですね〜!! 
DAC ヘッドホン出力
PiPA142 超お気楽ラズパイアンプの巻き! DAC Dクラスパワーアンプ
PiDAC4493 PiDAC4490-1.1をAK4493用に改造する、の巻き!  DAC
PiPA5756Dual PiPA○○○は実現するか?の巻き
PiPA5756Dualを組み立てよう!
DAC 2WAY
Dクラスパワーアンプ
PiPA5756S  PiPA○○○は実現するか?の巻き DAC Dクラスパワーアンプ
PiDAC4497 PiDAC4497は実現するか? の巻き。 DAC
PiDAC4490-1.1 PiDAC4497は実現するか? の巻き。 DAC
PiDAC1860 PiDAC4497は実現するか? の巻き。 DAC
PiPCM-CONV PiDAC4497は実現するか? の巻き。 変換器 RJ出力
PiSRC4137 Raspberry Pi3で遊んでみる、の巻き SRC PCM/DSD
両出力可
BCK逓倍機能
PiDAC4490 Raspberry Pi3で遊んでみる、の巻き DAC
DAC51X2 MINI BPLUS Raspberry Piで遊んでみる!の巻き。
Raspberry Piで遊んでみる!(その2)の巻き。 
DAC
MCK GEN-BPLUS Raspberry Piで遊んでみる!の巻き。
Raspberry Piで遊んでみる!(その2)の巻き。 
MCK生成 10P BCK逓倍機能
MCK GENERATOR
MCK GEN-B
Raspberry Piで遊んでみる!の巻き。 MCK生成 10P BCK逓倍機能
DAC51X2 MINI Raspberry Piで遊んでみる!の巻き。 DAC 初代RasPiのみ


 このPiSRC4137は周波数変換に加えてDSDも出力できる多機能な基板ですが、そのため必要な
部品が多少多くなります。多くなるだけならまだしも、入手が難しいAK4137が必要だったりします。
AK4137についてはちょっと前にDIGIKEYで在庫が復活していたようなのですが、気付いたら無く
なっていました。
 そんなこともあり、入手可能なデバイスのみてシンプルにSPDIF変換ができる基板を考えて
みることにしました。

必要な機能

 I2SをSPDIFに変換するためのデバイスはPCM9211を選定します。これが、いまのところ
もっとも入手が安定していそうです。あと、MCK生成のための逓倍ICはPT7C4511を使います。
いままではICS570をつかっていましたが、案外こちらのICが使いやすかったりします(ほとんど
差異はありませんが・・・。

基本機能
 ・RasPiのアドオンボード
 ・I2S信号をSPDIFへ変換(同軸、光モジュールも可とする)
 ・変換周波数は最大192kHz(これはPCM9211に依存)
 ・電源はRasPiの3.3Vを借用


その他、便利なように下記の機能ももたせるようにしましょう。
 ・ACアダプタコネクタ(5V)も実装可とする。
   →RasPiへの給電がφ2.1mmアダプタでできると便利です。
 ・3.3Vレギュレータも搭載可とする
   →RasPiの3.3V出力に余裕がない場合があるかもしれません。
 ・10PinのI2S出力もだせるようにする。
   →他のDACとの接続も一応考慮しておきましょう。
 ・動作状態を示すLEDも搭載する。
   →受信周波数を表示するようにしておけば動作状況もわかるでしょう。


回路図を書いてみる!

まずはこんなところで、回路図を書いてみます。
部品点数はさほど多くはありません.


回路図を書いてみました.

使用するPICは悩みどころ

PCM9211の制御のためのPICはピン数や容量からしてもPIC16Fの18Pinのもので足りそうです。
そうなるとPIC16F1827が適しているのですが、結構古いPICでもあるのでそろそろ
秋月での取り扱いも終了しそうな雰囲気です。できれば新しいPIC16Fシリーズを使いたいところですが、
残念ながら持っているCコンパイラではサポートしていません。
 最近のPICを使うためには最近(?)購入したCコンパイラで動くPICとなってしまうので、PIC18Fシリーズ
ということになってしまいます。ということで、ピン数や容量にかなり無駄が生じてしまいますが、PIC18Fの
28Pinタイプをつかうことにしましょう。図体が大きいですが、なんとか実装できるでしょう。

レイアウトを検討!
回路図が決まれば部品のレイアウトを考えていきましょう.
コネクタ類が多いのと、28PinのPICをつかうため、結構面積を喰ってしまいます.
3.3Vのレギュレータがなければいいのですが、まあなんとか乗りそうなので
このままいきましょう.


必要になりそうな部品を搭載してみます.結構きちきちになりそうです.


配線のときはPICの最寄りのピンに接続するので、回路図とは異なってきます。
ということで回路図の再度書き直しが必要です。

部品点数も少ないので配線もスムーズにできました。

部品面でのパターンです。


半田面でのパターンです。

最終的にパターンを確認してから半田面にベタを塗りましょう。

まずは回路図とパターン完成

回路図はパターンを見て実績ベースで修正です。

回路図→PiDIT9211.pdf


部品面


半田面

さてさて、いつ製作できるかな〜。



基板注文! 2022.8.21

1週間前ほどに基板注文しました。
でも、どうやら込み合っているようなので時間がかかりそう。
予定では月末に納品予定です。それまで、すこし中休み!

基板到着 2022.8.30


PiDIT9211基板です.


忘れた頃に・・・ 2022.10.28

Renew SRC4137やEVC72343にとりかかっていたことと、仕事もあって、この基板を失念していました。
って、忘れるって年だなあ〜(笑。

というころで、週末になったことだしおもむろに実装開始です。
ちょうど、基板作成もソフト作成ばっかりだったので半田ゴテを握りたくなったところでした。

部品は少ないので、割と短時間で完成です。
リード線の処理も面倒なので、ほぼSMDと使いました。
というか、単にリード線の抵抗器を探すのが面倒だっただけですが・・・。
チップ抵抗はあまり種類は多くないのでリールで探すのも簡単です。


こんな感じで完成です。

3.3Vの電圧レギュレータは実装せずに、3.3V電源はRasPiから供給してもらうことにしました。
RasPiの5V電源についてはUSB供給でもよいのですが、ちょっとUSBのコネクタの半田が取れると
いやなので、この基板にDCジャックを実装して、ここからRasPiに5Vを供給することにします。

動かしてみましょう!

動かすためにはRasPiと組み合わせる必要がありますから、
稼働中のものをすこし構成を変更です。

いまVOLUMIO稼働用につかっているRasPiはPiDAC9218とPiLVDSを搭載しているので、
一番上のPiLVDSと入れ替えて動かしてみます。


現在のRasPiの状況です。RasPi-3Bの上にPiDAC9218とPiLVDSを載せています。



まずPiLVDSを外します。PiDAC9218が見えますね。

PiDIT9211を取り付けようとしたら、PiDAC9218のDCジャックと光送信モジュールの
突起部が干渉することがわかりました。ということで、すこしプラスチックの部分を削りました。
あまり削ると突起部の機能が失われるので最小限で削りました。


一部干渉することがわかりました。


光モジュール部分の突起部分を少し削ってやりましょう。

色々バグがあるなあ〜

1)光送信モジュールのPIN1,3が反対だあ〜

ちょっと違和感があったので、光送信モジュールのデータシートを確認したら
どうやら、PIN1,3が反対になっていることがわかりました。 光リンクを使わないなら
別に問題ありませんが、私の場合は光は結構使うので、これは必要です。
ということで、すこしパタンを修正です。


PIN1,3を入れ替えです。


光送信モジュールの信号はIC5のPin8から取り出しです。

2)LEDが点灯しないぞ〜

ソフトを組んで動作確認していたらLEDが点灯しないことがわかりました。
パターンをみたらLEDのカソードがGNDに接続されていませんでした。
ということで、カソード近くのレジストを削って半田ジャンパーです。


LEDのカソード近くのベタのレジストをすこし削ります。


半田でジャンパーです。

3)LRクロックの周波数計測ができないぞ〜

LRクロックの周波数を計測して、BCKの逓倍率を設定しますが、なにやら周波数計測ができません。
パターンを確認したら、計測のために配線が抜けていました。
ということで、ジャンパー線をとばします。


周波数計測のためのジャンパー線です。PICのPIN11と近くのチップ抵抗のランドをつかって
ジャンパーをとばしました。


ソフトも完成!

ソフトは極めてシンプルです。LRクロックの周波数を計測して、
それに併せてBCKの逓倍率を決めるだけです。
逓倍率はLRクロック周波数で自動で設定しますが、あるていど
ジャンパーピンで組み合わせが変更できるしました。

といっても、PCM9211でSPDIFに変換できる周波数の限界は192kHzなので
(ひょっとして384kHzもできるかもしれませんが、受信器がないので確認できません)
関係が大きいのは352kHz以上の場合です. ただ、RasPi3BをつかってVolumioで
352kHz以上の再生はできないようなので、あまり意味はないかもしれません.

完成です。SPDIF(同軸)をつかって出力させています。


ジャンパーの設定とマスタークロック周波数の生成テーブル.

再生FS MODE0

JP2:開放

JP3:開放
(推奨)
MODE1

JP2:短絡
JP3:開放

MODE2

JP2:開放

JP3:短絡

MODE3

JP2:開放
JP3:短絡
LED表示
FREQ2 FREQ1
44.1kHz、48kHz 512FS 512FS 512FS 256FS - 点灯
88.2kHz、96kHz 256FS 256FS 512FS 256FS 点灯
-
176.4kHz、192kHz 128FS 128FS 256FS 256FS 点灯 点灯
352.8kHz、384kHz 128FS 64FS 128FS 256FS - 点滅
705.6kHz、768kHz 64FS 64FS 64FS 128FS 点滅 -
設定の狙い 標準的? MCKが極力22〜24MHz
になるように設定.
#DAC34301とPCM接続
を考慮.
MCKが最大45〜49MHz
のなるように設定.
MCKが極力
256FSに一定に
なるように設定.

単純にSPDIFのみをつかうのなら、192kHz以下になるのでジャンパー設定はどれでも動作します.
あとはPCM接続する場合でのDAC側での対応ですね. といっても、最近のDACなら
標準設定(MODE0)で動きそうな気がします. DAC34301はマスタークロックが22〜24MHzが推奨なので
MODE1が必要になりそうです.

さて、こちらも忘れないうちにマニュアルも作成しておきましょう.

その前に

メインシステムと光で接続です。
ただ、メインシステムのDACは少々古いので低速(6MHz)の光受信モジュールなので
送信速度はあまり早くできません。

メインシステムとは光で接続です。

そういえば、昔は光と同軸とどちらがいいかよく議論されていたような気がしますが、
最近はないなあ〜。完全に電気絶縁できる光の方が個人的には好きなのですが・・・。

マニュアル作成しました.
PiDIT9211Manual.pdf

(そろそろリリース?)