PCM/DSD信号のHDMI/RJ45接続を考えてみよう、の巻き(後編その2) 20216.28
(後編はこちら)
最後にPiLVDSを動かしてみましょう
こちらも部品点数は少ないので、夕食後の一休み中に完成です。片手にビールを飲みながらの酔っ払い運転です(笑。
とりあえず写真撮影のために適当なPICを探して差し込みました。型番みたらPIC16F88でした。秋月の通販サイトをみたらまだ売っていました。
だいぶ高くなっていますが・・・・。ちなみにMicrochip社の方針としては、古いタイプのPICも廃版にせずに作り続けるらしいです。
これは保守が必要なユーザにとっては嬉しいですね。
PiLVDSの基板が出来上がりました。出力は10Pコネクタ,HDMI、RJ45が使えます。大量の
ジャンパーピンはRJ45をLDVSでつかうか、シングルエンド出力で使うかの切替です。
わざわざジャンパーピンを付けるんじゃなくて、直接半田付けしてもよかったかもです。
この基板を動作させるにはRasPIが必要ですが、本物のRasPiに接続すると電源の入り切りがとても面倒になります。
なんせ、RasPiって電源入れても立ち上がるのに、結構な時間がかかりますからね。ということで、RasPiと同じAudio信号
がだせる模擬基板を作成です。同じ基板をつかって、10Pコネクタのところに信号を入れて、40Pコネクタから信号をだすようにしています。
この模擬基板には5Vを外部から供給しますが、3.3Vの電源も必要になるのでNJM12888-3.3をつかったレギュレータ基板を
搭載です。NJM12888は秋月で5個100円ですから気楽に使えます。ただ、パッケージがSOT23なので変換基板が必要です。
これは、以前DAC9018S用に作成した変換基板があるのでそれ流用です。
RasPiと同じ信号を出せるような模擬基板を作成です。
中央の基板は3.3V電源レギュレータ用の基板です。
NJM12888-3.3はDAC9018SのアドオンでつかったADP1515と同じピン配置なので
DAC9018Sのアドオン電源基板をつかって3.3Vを生成します。
ジャンパーピンの機能
PiLVDSにはJP1にM0〜M3の4本のモード設定用のジャンパーを設けています。
まずは、この機能を定義しておきましょう。
PiLVDSの基本機能は、RasPiのBCK信号を逓倍してMCK(マスタークロック)を生成する単純なものです。
したがって、その倍率をどのように設定するかを決めておきます。
設定可能な倍率はICS570Bで下表のように決まっています。
ICS570Bでの設定倍率と対応周波数
1)M0=L(短絡)の場合・・・倍率固定
完全固定です。ICS570Bは回路図での使い方だと倍率は1,2,3,,4,6,8,10,16で切替えられます。
もっともICS570Bで使用できる周波数帯は限定されますが、詳しくはICS570のデータシートを参照してください。
16倍なんて使うことはないでしょうが、なにか違う目的でICS570を使う機会があったときに
こういった基板があれば便利かもしれません。6倍が選択できるというのは384Fs相当
になりますから、FN1241を動かす場合には役立つでしょう。
M3 | M2 | M1 | 倍率 | 備考 |
H | H | H | 1 | 64FS |
H | H | L | 2 | 128FS |
H | L | H | 3 | 192FS |
H | L | L | 4 | 256FS |
L | H | H | 6 | 384FS |
L | H | L | 8 | 512FS |
L | L | H | 10 | |
L | L | L | 16 | 1024FS |
H=開放 L=短絡 |
2)M0=H(開放)の場合・・・倍率可変
LRCKの周波数を計測して、DACに適したマスタークロックに変換します。こちらがメインの使い方になるでしょう。
単純に256FSに設定した場合もあれば、DAC34301のように22〜24MHzに限定したい場合もあるでしょう。
さらにできるたけ高いMCKに設定したい場合もあるので、それらに対応させます。
全てのJP1を開放時には256FS主流モードです。おそらくこれが一番使うパターンだと思います。
ただし、すべてで256FSへの対応は無理で、主要帯域の44.1〜192kHzの範囲になります。
32kHz受信時はBCK周波数が低いので×16固定になります。また352kHz以上では高すぎるのでx2あるいはx1になります。
モード機能をまとめると下記のようにする予定です。
M2 | M1 | 設定 | 32kHz | 44.1,48kHz | 88.2,96kHz | 176.4,192kH | 352.8,384kHzz | 705.6,768kHz |
H | H | 256FS主流モード | 1024Fs (x16) |
256FS (x4) |
256FS (x4) |
256FS (x4) |
128FS (×2) |
64FS (×1) |
H | L | 高MCKモード1 | 1024Fs (x16) |
1024FS (x16) |
512FS (x8) |
256FS (x4) |
128FS (×2) |
64FS (×1) |
L | H | 高MCKモード2 (最大512FS) |
1024Fs (x16) |
512FS (x8) |
512FS (x8) |
256FS (x4) |
128FS (×2) |
64FS (×1) |
L | L | 22〜24MHz近似モード (DAC34301向け) |
1024Fs (x16) |
512FS (x8) |
256FS (x4) |
128FS (x2) |
128FS (×1) |
64FS (×1) |
M3はPCM以外の信号、すなわちLRCKが32kHz〜768kHz以外(許容差±2%)でない場合、すなわちDSD信号の入力時に
設定する倍率を指定します。
M3 | PCM信号以外の倍率 |
H | ×2 |
L | ×4 |
プログラム完成!
使用したPICはPIC16F1827で4kWのものですが、プログラム使用率21%程度で済みました.
早速動かしてみましょう!まずは模擬基板をソースにつかっての動作確認です.
これは問題なく通過です.
まずは模擬基板と連結して動作確認です.当然のことながら多少のデバッグはありました.
RasPiと接続しよう!
結構、ドキドキです.
すでに他の基板をつかってLVDS変換での信号転送はできることは確認していますが、
PiLVDSでパターン間違いがあればいやだな〜といったところです.
結果としては、HDMI、RJ45、10Pコネクタすべての場合で44.1kHz,96kHz,192kHzまで信号伝送を確認しました.
ちなみに、RasPiはMODEL3Bをつかっています. 最近購入した4BはAD/DAが搭載されて計測器と化しています.
まずはHDMIでの接続です. 接続構成は
RasPi3B(VOLUMIO)→ PiLVDS →(HDMIケーブル3.5m)→ HDM-LVDS-R → FESP5142
となっています.
HDMIケーブルでの接続は問題なしです.アナログ信号の確認です。
次はRJ45でのLANケーブル(CAT6,2m)です.こちらも問題なく動きました.勿論電源は別にしています.
というか、RasPiは携帯用のモバイルバッテリで動いています.
RasPi3B(VOLUMIO)→ PiLVDS →(LAN CAT6 2m)→ RJ45-LVDS-T/R → FESP5142
最後に10Pリボンケーブルでの直接接続です.こちらも大丈夫です。これは動いて当然です。
RasPi3B(VOLUMIO)→ PiLVDS →(リボンケーブル 0.3m)→ FESP5142
完成かな?
色々とチェックしたけど、バグはなさそうです.PICのラベルも作っておきました.
PICのラベルも作成しました.
これで、LVDSを使用した変換基板は一通り動作の確認が終わりました.
HDMIでもLANケーブルでもどちらでも2m以上のケーブルでも問題ないことが確認できました.
どこまで伸ばせるかはテストが必要ですが、そもそも機器間での接続が目的なのでそれほど長くする必要はないでしょう.
ケーブルとしてはLANの方が柔らかいし、それに安価なので使い勝手はよさそうですが、HDMIはケーブルもシールドされており
信頼性は高そうです.HDMIケーブルもスリムタイプがあるのでそれを使えばケーブルも曲げやすいでしょう.
さてさて、
そろそろドキュメントも揃えていきましょう.
この作業が一番面倒ですが、作っておかないと暫くしたら何がなんだか分からなくなってしまいます.
RJ45のシングルエンドで伝送はできるか? 2021.6.29
LVDSを使えば、3m程度のケーブルをつかっても問題なく信号伝送ができることは確認できていますが、
シングルエンドだったらどこまでいけるだろう?という疑問が沸いてきます。LVDSはシングルエンドより耐ノイズ性に
優れるのはわかりますが、それに見合うコストを払っています。ドライバとレシーバの素子を両方買うと700〜800円ほどかかります。
オーディオ機器にとって大した金額でないといえばそれまでですが、それだけあったら昼飯1回食べられるな〜(笑。
まあ、後学のためシングルエンドでどこまで信号伝送ができるか調べてみることにしました。
そのためにはRJ45コネクタをつかってLANケーブルで試します。
今手元にあるる最短のものが秋月で購入した2m(CAT6)のものですが、これでは長すぎる予感もあったので、
帰り際に100均で1m(CAT6)のものも買っておきました。
DAISOで買った1mのLANケーブル(CAT6)です。税込み110円です。
テスト準備
うまくいくようだと、実機でもつかいたいのであらかじめ基板を分割しておきました。コネクタがついてからでは
切り離しが難しくなるので基板の段階で分離しておきす。
事前に基板を分割しておきました。うまく行けば実機に組み込みましょう。
あとはコネクタをとりつけるだけです。LVDSの変換ICは搭載しないので、信号線はジャンパーでとばします。
2個の素通りのコネクタが出来上がりました。
受信側には終端抵抗として510Ωを取り付けています。これで、信号の反射を抑えましょう!
いざテスト!
1)1mでテスト
まずは1mの100均のケーブルをつかってのテストです。このくらい短いと大丈夫かな〜と思ってのテストでfすが、
問題なく信号が送れました。192kHzでも問題ありません。LANケーブルはツイストペアとなっているので、シングルエンド
といってもかなりノイズの耐性が強いのでしょう。1mのケーブルが使えるのであれば、わざわざLVDSにしなくても、
これでいいかもしれません。でも、余裕がどのくらいあるかちょっと心配です。もっと長いケーブルでも試してみましょう!
1mの100均一のLANケーブルでは192kHzまで問題なく信号が送れました。
2)2mでテスト
今度は秋月の2mケーブルでもテストです。こちらも、半分予想に反して192kHzまですんなり動いてしまいました。
を、シングルエンドでも大丈夫じゃん!という感じです。
2mの秋月LANケーブルでも192kHzまで問題なく信号が送れました。
3)もっと長い(たぶん7,8m)ケーブル
2mで動くのはわかりましたが、もっと長ければどうなるだろう?というか、動かない限界を確認したくなります。
ということでケーブルを色々と探して、ながそうなのを見つけました。巻き姿から換算して7〜8mはありそうです。
で、さすがにこれは無理だろう!と思いながら接続したところ、あっけなく動いてしまいました。
7〜8mのLANケーブルでも192kHzがすんなり通ってしまいました。
ちゃんと192kHz信号を受信して動いています。
ここいらで、ちょっと波形を確認しておきましょう。受信側(FESP5142)のコネクタでのBCKの信号波形を観測してみましたが、
意外や意外、綺麗な波形です。立ち上がり立下りもしっかりしています。それにリンギングもさほど大きくないようです。
信号レベルが3V程度しかありませんが、これは送り出し側に51Ωのダンピング抵抗があり、受信側に510Ωの終端抵抗があるので
電圧は3.3Vの90%になっているからです。
BCK信号(12.288MHz)ですが、想像以上に綺麗です。
この結果は意外だったな〜。
でも、色々なノイズが入るかもしれないから、やっぱりLVDSにすべきかな〜。
ちょっと悩む結果となりました。
RasPiのシングルエンド伝送はどうかな? 2021.6.30
SRC4137の出力は74LVC245というバッファーをつかっているので、かなりの駆動力があります。それに対してRasPiの出力はどうでしょう?
とくにドライバーも設けずに、CPUからの出力をダンピング抵抗を介して直接RJ45にいれているので、ちょっとドライブ力が劣るかもしれません。
RasPiでのシングルエンド出力でも、どこまで伝送できそうか試してみました。
PiLVDSのRJ45をシングルエンド出力にするために、ジャンパーピンをすべてS-END側に設定します。ちなみにLVDS側にすればLVDS出力です。
結果的には長いLANケーブル(7〜8m)をつかってもシングルエンドでの信号は問題なくできました。
BCKの波形をみても、若干鈍りはありますが問題ない感じですね。
ただ、RasPiがどうやってこの周波数を発振させているかわかりませんが、信号自体に若干のジッタがのっています。
おそらくDDS(ダイレクトディジタルシンセサイザ)と同じような方法で発振させているとすれば、このジッタも仕方ないでしょう。
ただ普通の音楽再生には問題なないですが、ジッタクリーナあたりはあったほうが精神上いいかもしれません。
ジャンパーピンをすべてS-END側に設定すれば、シングルエンド出力になります。
長め(7〜8m)のLANケーブルをつかってFESP5142に接続です。
192kHzでも問題なく再生できました。
BCK信号です。すこしジッタがありますが、おそらくDDSのような方式で発振させているのであれば
仕方ないでしょう。
マニュアル作成! 2021.7.6
いつものごとく、手抜きバージョンですが製作資料をまとめました。
誤字脱字、意味不明な点あればBBSへ!
基板名 | 内容 | 製作マニュアル | その他 |
HDMI-LVDS-T HDMI-LVDS-R |
HDMI-10Pin変換基板 送信と受信は個別です。 極力小さく作った基板です。 |
HDMI_LVDS_TorR_Manual.pdf | |
HDMI-LVDS-T/R | HDMI-10Pin変換基板 送信と受信は兼用で、どちらにでも 組み立てられます。 |
HDMI_LVDS_TR_Manual.pdf | |
RJ45-LVDS-T/R | RJ45-10Pin変換基板 送信・受信兼用基板です。 LVDS、シングルエンドどちらも対応可。 |
RJ45_LVDS_TR_Manual.pdf | |
PiLVDS | RaspberryPi用のHDMI,RJ45、10pin出力用基板 MCK用の逓倍回路も搭載しています。 |
PiLVDS_Manual.pdf | PICバイナリーデータ (PIC16F1827用) |
頒布用の基板もできました。 2021.7.8
こちらは表面処理はいつもの金フラッシュです。
右上から時計回りにPiLVDS、RJ45-LVDS-T/R、HDMI-LVDS-T.R、HDMI-LVDS-R(3枚連結)、HDMI-LVDS-T(3枚連結)です。
表面処理は金フラッシュです。
、
こちらは半田面です。半田面にも部品が結構とりつくので、どちらが部品面かわかりづらいですが、コネクタが実装される面が
部品面です。
HDMI-LVDS-R、HDMI-LVDS-Tは一部はルータで1枚づつに切り出しました。
これが結構面倒でした。
(つづく)