BBB(G)やRaspberry PiをDDCとしてDAC基板に接続するのに、I2Sで接続する場合ケーブルの長さの制約がどうしても出来てしまいます。そこで差動伝送のLVDSを使うことによって機器間で使うには十分問題ない程度まで距離を延ばせます。既にHDMIを使ってHDMI I2S基板などがやなさんから出ていますね。ここではHDMIではなくRJ45でLANケーブルを使います。なぜLANケーブルかと言うと、周りに沢山のケーブルが余っていたからです、なので全く独自の仕様になります。送受信一対で使用しないと使い物になりません😃
そして、これが重要なのですがLANケーブルはSTP(Shielded Twist Pair)ケーブルを使います。
仕様
伝送する信号はMCLK,BCLK,LRCK,そしてDATAの4本です。ミュート信号やPCM/DSDの識別信号は含まれません。送信側はBBBブリッジ基板とRaspberry Pi Zero DACサイズマスタークロック出力基板を想定しています。なので基板サイズはRaspberry Pi Zeroサイズになり、I2Sアイソレータ基板の置き換えになります。受信側はCombo384基板とサイズとI2S信号のピン配置を同一にしたものとしました。
使用デバイス
送信側のデバイスはTIのSN65LVDS31DR、受信側のデバイスはSN65LVDS32DRです。このデバイスは3.3V単一電圧で動作し、転送レートが400Mbpsです。I2Sのマスタークロック周波数は最大でも49.51MHzですので仕様的には問題ないでしょう。
コネクタピン配置
RJ45コネクタのピン配置(回路図)です。
当然ですが、LAN機器につないではいけません。他のRJ45コネクタでI2S入力を持つ機器とも繋げません(奇跡的にピン配が同じでない限り)。
送信側コネクタのピン配置(回路図)です。
受信側のコネクタピン配置(回路図)です。
外観
送信側(左)と受信側(右)の基板です。ドライバーICとレシーバーICがそれぞれ1個載ったシンプルな基板です。送信側のヘッダーピンはI2S アイソレータ基板にもありますが、マスタクロックをBBBブリッジ基板から取るか、RBD-P5122+ ZERO WMO基板から取るかを選択する為のジャンパースイッチです。
動作確認
さて、動作確認ですが考えてみたら受信側の基板を繋げるDAC基板がありません。それもそのはずでこれまではJSTのEHかXHのコネクタ接続でしたので。どうしたのもかと思案していたら、いやいやあるじゃないですか。今となっては全く使わなくなってしまったSSDACの試作基板です。このSSDAC基板はCombo384互換基板でUSB接続していました。ここに受信基板を接続すれば良いのです。その場合、受信基板には3.3Vが必要なのでそれをSSDAC基板の3.3Vから取る必要があります。Combo384ではリザーブになっている12ピンを受信基板の3.3V入力としていますのでそこに供給してあげます。
送信側はBBBブリッジ基板に載っけています。そして受信基板はSSDAC試作基板のCombo384互換基板用のコネクタに接続しています。LANケーブルはアマゾンで購入したCAT7 LANケーブルと謳われていた1mのものを使いました。この環境で特に問題なく動作しています。
波形確認
さらに詳しくみてみましょう。I2S信号がちゃんと伝送されているかをオシロスコープで観測します。
初めに送信と受信でどの程度の伝送遅延が発生しているかを見ます。
黄色(CH1)が送信側のBCLK信号で、青(CH2)が受信側のBCLK信号です。観測は送信側はLVDS変換前で受信側はLVDS変換後になりますので、トータルで約10nsの遅延になります。立ち下がりも波形も載せてはいませんが同様です。この遅延に関してはすべての信号が同じですので問題にはなりません。
次に送信側のBCLKとDATAの関係と受信側のBCLKとDATAの関係を見ます。BCLKのクロック周波数は24.576MHzです。
黄色(CH1)がBCLKで青(CH2)がDATAです。BCLKの立ち上がりとDATAの立ち下がり時点の時間(この場合セットアップ時間)ですが約19nsとなっています。
そして受信側のBCLKとDATAの波形です。
送信側とほぼ同じでBCLKの立ち上がりとDATAの変化時の時間(セットアップ)は約20nsとなっています(1nsの違いはBCLKの立ち上がりのカーソル位置が少しずれているためで実際には同じでした)。波形もきれいで問題ありません。ちょっと気になるのがTr/Tf(信号がLからHへ、HからLへの遷移時間)が緩やかになっている点です。約2nsほど受信側が遅くなっています。この程度であれば49.5MHzの周波数は問題ないですが。また、使用しているオシロスコープの帯域が50MHzなので測定し切れていないと言うこともあります。
以上の観測からLVDSでI2S信号が正しく伝送されているのが確認出来ます。今回はLANケーブル長は1mでしたので、今後もっと長い距離での観測をしてみようと思います。
5mのCat7 LANケーブルでも試しまいた。動作も波形も問題ないことが確認できています。
基板の頒布
I2S to LVDS ドライバー基板とLVDS to I2Sレシーバー基板をこちらで頒布しています。
コメント
先日、CollybiaOSなるもので、音出しをして、好印象を持ったので、紹介させていただきます。
これは、MamboberryDACを作っている会社が自分のところのI2S・DACのためにArchphileを元に作ったものです。
設定を覗いたところ、「dtoverlay=hifiberry-dac」になっていました。つまり、スレーブモードで動くDAC用の設定という訳です。「マスターモードじゃないの?」と思って、FAQを見てみたら、ESSのDACは自分でクロックを作るからスレーブで充分と書かれていました。
経験上、マスターモードの方がスレーブモードより音質が良いと思っているので、スレーブモードで充分というのは半信半疑なのですが、LINUXCOMさんのI2SDACを使うには、マスターモードにしなくてはなりません。
設定の変更は簡単で、config.txtの「dtoverlay=hifiberry-dac」を「dtoverlay=hifiberry-dacplus」に書き換えるだけです。
config.txtはWindowsから見ることができるので、エディターで簡単に書き換えられます。
また、CollybiaOSはブラウザから各種の設定をすることができるので、LINUXを使わなくても使えます。
簡単で、なかなか魅力的な音なので、紹介させていただきます。
ただ、私の家の環境ではNASに繋がりません。(元になったArchphileはNASに繋がります。)
解決策を知りたいということもあり、投稿させていただきました。
yseki118さん、CollybiaOSのご紹介ありがとうございます。
簡単かつ魅力的な音ということですので近いうちに試してます。
Collybia OSで音出しができました。
RasPi3BでCollybiaのバージョンはv.1.2.0です。
当初、nasにつながらずやはりダメなのかと思いましたが、なんのことは無いPathの指定を間違えていただけでした(これに気づくのにかなりの時間を要しましたが)。
# お役に立てなくて申し訳ありません。
yseki118さんのブログで紹介されていた方法でもまだSpotifyはできていません。もう少しチャレンジしてみます。
LINUXCOMさんの環境ではNASが繋がったのですね。Pi3とPi4で違いがあるのでしょうか?Pi3が壊れてしまっているので、確かめられないのが残念です。
我が家では、NASが繋がらないので、CollybiaOSはSpotifyマシンになってしまいました。でも、怪我の功名で、PCM5122がこんなに良い音を出すとは思ってもみませんでした。
Archphileは安定していますので、ぜひ音出しをしてみて下さい。マニュアルが整備されているのも利点です。
お返事ありがとうございます。
CollybiaOSの元になったArchphileも復活しています。
LINUXCOMさんのDACと相性が良いと思いますので、お時間がありましたら、こちらも音出しをしてみて下さい。
Pi4用のCollybiaOS(v.1.3.1)が公開されました。
今回は、NASもちゃんと繋がりました。Spotifyの設定なんか、チェックを入れるだけでOKでした。
暖色系の音で、心が安らぎます。
yseki118さん、ありがとうございます。
P3B用のv.1.3.0で試しました。
Nasは簡単に繋げることが出来るのですがspotifyの設定が出来ませんでした、というか設定のしかたがわからない。
因みに、AirPlayもできたんですね。
Spotifyの設定は超簡単で、「Audio settings」の中にある「○」をクリックして「✔」にするだけです。
操作はスマホやパソコンでやるので、正確にはSpotify Connectですね。
あっ、そういことですか。
できました、簡単ですね。