ソフト・マクロのCPUでLinuxを動かす(前編) ――FPGAベースのボード・コンピュータを設計する
● LANコントローラ
ネットワーク接続機器を考慮したボードでは,LAN接続機能(100Base-TX/10Base-T対応)が必須です.
LAN接続を実現するには,二つの方法が考えられます.
- FPGA内にEthernet MAC回路を搭載し,FPGAの外にPHYチップを乗せる.
- MAC/PHYが一体となったLANコントローラLSIを外付けする.
FPGA内にEthernet MAC回路を搭載する場合,当然ですが,MACを独自に開発するか,市販のIPコアを利用することになります.設計期間の短縮を目ざすためには市販のIPコアを利用することになりますが,MAC機能は比較的高価という問題がありました.独自に設計する場合は,ハードウェアのみならずソフトウェア(OSのデバイス・ドライバ)のことも考える必要があり,手間がかかります.
MAC回路を内蔵するとFPGAのゲート規模が大きくなるという問題もありました.FPGAの規模が大きくなってしまうと,価格の面で不利になります.また,ユーザの利便性に配慮して,無償のFPGA設計ツール「ISE Web PACK」で設計できるようにしておきたいところです.このためには,40万ゲートのSpartan-3より小さい品種ということになります.
LANコントローラLSIを外付けするのであれば,FPGA 内の回路が大きくなることもなく,Linuxのデバイス・ドライバもすでに存在しています.このような検討を行った結果,FPGAの外部に100Base-TX/10Base-T対応のLANコントローラLSI(MAC/PHY)を接続することにしました.
LANコントローラLSIには,米国Standard Micro-systems社(SMSC)の「LAN91C113」を使用しました.本LSIは国内の製品にも多数使用されているようです.LANというほかのコンピュータとインターフェースになる部分に対して,できるだけ世の中で広く採用されているメーカの製品を使用することで,なるべく障害を少なくしたいと考え,本LSIを選択しました.
例えば,あるネットワークで通信エラーが発生したとき,通信相手の問題か,自分自身のソフトウェアの問題なのかという原因の切り分けが必要です.このようなときに,世の中で広く採用されているLSIとドライバを使用していれば,原因を追求しやすくなると考えられます.組み込み用途では,通信相手もカスタム設計された製品の場合が多いので,エラー発生時への配慮も重要です.