MicroBlazeのAXI4でシステムの基礎となるデザイン
MicroBlazeで、組み込みシステムの基礎となるデザインができました。
特電Spartan-6ボードにイーサネットPHYをつないで、組み込みシステムのデザインのベースとなるものがあります。イーサ、DDR2、UARTがあるので、組み込みLinuxの基礎となりそうなデザインです。
この基板自体はうちの元バイト君が残していったもので、裏面はちょっと見せられません。パスコンがパスコンの役割をなしていなかったりとかいろいろあるのですが、一応、動いてはいるようです。そんで、中身のFPGAのデザインを今作っています。
内部バスはAXI4のインターフェースで出来ていて、DDR2、イーサネット、タイマ、UART、キャッシュ、GPIOが乗っています。イーサネットはRMIIのインタフェースでPHYと接続しています。
ここまで動かすのにいろいろ苦労しました。
まず、ethernetliteというIPコアを組み込んだのですが、使っているPHYチップはRMIIなので、MIIからRMIIへ変換してやらねればなりません。幸いEDKにはmii_to_rmiiというIPコアがあってこれを使えばいいのですが、EDKの中で配線をしても、Generate Netlistのエラーが出てうまくいきませんでした。
そこで、いったんEDKの外へ出して、メインのVHDLデザインの中でMIIの信号を折り返してmii_to_rmiiにつなぐようにしたら合成できるようになりました。(エラーメッセージが変なのでISE13.1のEDKのバグかもしれません)
EthernetLiteペリフェラルテストもPASSしています。

しかし、今度はそのようにして作ったデザインでDDR2メモリをテストすると、FAILしてしまいました。以前に、MicroBlaze+DDR2メモリだけで作ったデザインではうまく動いていたのですが、どうしてもこのデザインでは上手く動きません。
そこで、同じ内容で新しくデザインを作り直したら、DDR2メモリのテストも通るようになりました。
MHSファイルに差異はないので不思議ですね。
このボードのDDR2メモリは64MBytesのサイズがあるので、64MBytesまではPASSしています。

MITOUJTAGを使ったら、DDR2メモリのテスト中にメモリに読み書きが行われているのが見えました。

DDR2メモリはたぶん300MHz(600MHz)で動いています。
それにしてもMicroBlazeの熱いこと熱いこと。省エネではないですね。
いずれはMicroBlazeで組み込みLinuxを動かしたいと思っています。
しかし、EDKは何をやるにもツールが重すぎます。ちょっとハードウェアデザインを変更しただけで、ネットリストの生成や配置配線で20分くらいかかります。この重さのせいで大変多くの時間をロスした気がします。
Spartan-6のAXI4デザインのプロジェクトを固めて下に置いておきます。
ダウンロードはこちらから
このデザインが、EDKで何かを作ろうとされている皆様の参考になれば幸いです。
※ダウンロードの際にシリアル番号を聞かれたら、特電Spartan-6ボードや、EXPARTAN-6Tのシリアル番号を入力してください。
だから、Simple MicroBlazeにも興味を持っています。Simple Micro BlazeならEDK不要でWebPACKでも使えますし。Simple MicroBlazeでArduinoのシールドやMARYの拡張基板が動かせたらいいな・・なんてことを考えています。
| 固定リンク





コメント