Cosmo-Zでギガビットイーサがはじめて動いた
ZYNQ搭載のADCボード、「Cosmo-Z」でギガビットイーサが初めて動きました。
1か月ほど前から動かそうと頑張ってきたのですが、なかなか動いてくれなかったこのギガビットイーサPHY。ついに原因がわかりました。
要するに、ZYNQとの相性が悪かったのです。
※「相性」の詳細は、月刊特電Vol6に書きます。ここでは相性とだけ書いておきます。
まず、このPHYチップを取り換えなければなりません。
QFNだし、裏目にパッドがあるので、半田ごてでは外せません。
そこで、ヒートガンを使います・・・が、周りの部品まで外れてしまうこと困るので、アルミホイルで隠すように包みます。
熱風が入り込まないようにカプトンテープで固定したりします。
そして、いざ、ヒートガン。
ぶおおおおーん ぶおおおおーん
・・
ICが外れてパッドが出てきました。
フラックスクリーナーで綺麗に拭いたら軽く半田メッキして、そこに新しいチップを載せて、再びヒートガンであぶります。
そして、新しいICに取り換えができました。
なお、このように簡単に書きましたが、5回くらい挑戦してようやくできました。楽じゃないです。
それから、XILINXのSDKが作り出すPeriphtestのサンプルプログラムを動かそうとしましたが、どうもイーサネットPHYからフレームが送られてこないようです。
その原因は、SDKが作り出すサンプルプログラムは、ZedBoardで使われているギガビットイーサPHY(Marvel 88E1518)用のコードだからです。そのため、今回使った入手性の良いPHYではそのままでは動きませんでした。
なお、Marvel 88E1518は情報が公開されていない上に、入手も困難です。Digikeyとかでは買えません。つまり、ZedBoardと同じPHYは使えなかったのです。
だから、Digikeyでも買えて情報が公開されているPHYを使おうとしたのですが、サンプルのPeriphtestがそのままでは動かなかったのです。
地道にデバッグして問題点を見つけて、サンプルのコードを修正したところ、ちゃんと反応が返ってくるようになりました。
次の図は、イーサPHYのループバックテストで、任意の文字列を送ってみた結果です。C言語のソースコードをそのままイーサフレームに乗せて送り出しています。
これで、RGMIIのTXDやRXD、TXENやRXDVなどの配線に問題がないことが確かめられました。
では、実際のLANにつないでみましょう。
おっ!何か受信しています。IPのパケットのようです。
ということで、PHYからコネクタ間の配線も問題ないようでした。
ZYNQのギガビットイーサを動かすのになぜこんなに苦労したか、どこを修正したらすんなり動いたかというのは、次回の月刊特電Vol6に詳しく書こうと思います。
ご期待ください。
| 固定リンク
コメント