2011年04月20日

XuLA-200(Spartan-3Aボード)




XuLA-200 という FPGA ボードがあるのを知った。

TQ100 の Spartan-3A の XC3S200A に SDRAM と SPI-FLASH を付けたボードで、USB コントローラも 付いている。ツール類もオープンソースで公開している。

    価格は、$69 。XuLA-50 というのもあって こちらは $39 。XC3S50A と XC3S200A の価格差は そんなにないから、戦略的な価格づけ? いままで AVR互換コアを作ってきた経験から言うと 50A ではできることは多くない。お試し版という感じか。

    今買うなら、『Avnet Spartan-6 LX9 MicroBoard』$89 ( 国内版 だと 11000円 ) が良いのかも知れないが。 このコンパクトさはすばらしい。

    2011/09/01 追記: Avnet Spartan-6 LX9 MicroBoard 秋月でも扱いだした。7980円也。

USB コントローラは、PIC で違うが、その他は設計してきた FPGA ボードと構成が近い。



まだ組み立てていないし、結線がどれぐらい違うのかチェックしてみようと思う。ひょっとしたら自分のボードの問題点が見つかるかもしれない。UCF ファイルとかも、どういう風に定義しているのか?気になる。

あと、ツール類。どんなものを提供しているのか? ひょっとしたら楽できるかも知れない。

とにかく要チェックだ。

ちょっとツールをチェック。

  • XSTOOLs

    SouceForge のプロジェクト git で管理されているが、ここ から snapshot をダウンロードできる。

    最新は、2011/1/27 Ver. 5.13 。これは一体どういうものなのか?

  • xulaload

    XuLA 専用。JTAG bitstream (.bit ファイル?) を書きこむもので python スクリプト。

    ... ふうむ。細いことを言わずに config だけするのもアリか。

    今の計画では、SPI-FLASH への 書き込みをするために AVR互換コアで作った ファームウェアを FPGA に config する必要がある。FPGA のテストでは、SPI-FLASH に書くのは 単に 二度手間になるだけで無意味。
    でも手軽で高速ならそれでも良いかも知れない。

    この最初の config はどうしよう。PC 側で serjtag の streame にして jtag として操作するのが最初だとは思うが 遅いようなら config ファイルを 送り込んで Mega32u の方で 変換することも考えた方が良いかも知れない。

    以前 USB で マスストレージクラスを作ったが、500KB/sec ぐらいだった。受信データをそのまま SPI で送り込むのが大半なので これぐらいの速度が出た。シリアルだと 200KB/sec 程度だったような。serjtag も たぶん同じぐらいのはず。

    一方 XC3S50A は 400Kbit(50KB) XC3S200A は 1.2Mbit(150KB) 。... 速度はあまり気にする必要はなさそう。

    serjtag は 通常のオペレーションなら 62B(or 60B ? 忘れた) 単位のブロックをUSBシリアルで連続で送る。そういう操作をするプログラムは簡単なものになるはず。xulaload を参考に C か perl で作ってみよう。

    で、次に SPI-FLASH に書くツール。操作のほとんどは、FPGA 側でやるつもり。インターフェイスはシリアルだから AVR のライタのような仕様にしても良いし。... (ブロックモード付き)AVR910 もどきとか。

    あとは、xilprg/cblsrv か。-- ずっと放置していたが、この機会に検討しよう。

    XSTOOLs は中身を見て、良さそうなら対応を考える。あとは OpenOCD か。Jtag デバッグするなら対応しないといけないが ... なにしろデカイし後回し。

ちょっとツールをチェック2

  • XSTOOLs

    ダウンロードして README を見てみた。

    XESS 社 (www.xess.com) のボードの専用ツールで、 ボードの diagnostic test, RAM or flash との upload/download をするものだそうだ。そこに自分のボードを割りこませても意味はない。

  • xulaload

    内容は次のようになっている。

    73 bitstream.py
    180 jtag.py
    22 loader.py
    366 xula.py
    641 total

    思ったよりは大きいが、コンポーネントに分かれていて汎用性は高そう。だが、私は python 使いではない。やはり参考にするだけにする。

    bitstreme のフォーマットをどう扱って jtag をどう操作するか分れば後は自分で作れる。

    C で書いても 大差なさそうだが、perl でプロトタイプを作るかも。

  • xc3sprog

    SouceForge のプロジェクトで xc3sprog というのを見つけた。ダウンロードファイルは 4MB もある。一体何が含まれているのだろう?

    ただこういうツールは微妙。たぶん jtag 使ってのデバッグはできないだろうし、SPI-Flash への書き込みは別に作らないといけない。やはり自前で作って SPI-FLASH と config を統一的に扱えた方が良い。

    ただ、どういうものかはチェックしておこう。

      4MB はバイナリだった Linux (32bit/64bit) と Windows 用が同梱されている。

      ソースコードは こちら。snapshot をダウンロードしてみたが、cable は FT2232 とパラレルに対応。-- ちょっと面白くない。Digilent に対応していると serjtag への移植が簡単だったりするのだが。

      対応デバイスは、device.list に載っている。気になるものをピックアップすると。

        04002093 6 0x9 XC6SLX16
        04008093 6 0x9 XC6SLX45
        02210093 6 0x9 XC3S50A
        02218093 6 0x9 XC3S200A

        06e1c093 8 0x1 XC2C32A_VQ44
        06c5e093 8 0x1 XC2C64-VQ44

        0970203f 4 0x1 ATmega128

      SPI ベースならドライバを定義すれば、なんでもいけるのか -- 悪くはない。

      AVR互換コアでの SPI-FLASH ライタの設計も再考の余地がある。シリアルよりも SPI スレーブの方が 汎用のツールに対する親和性があるようだ。 例えば -- なにか Xilinx のデバイスのふりをさせると 汎用ツールの cable を違う設定にするだけでいける。


    ところで、自分のボードに名前を付けたい。現状 xc3s50a-sdram ボードという名前になっていて、カッコ悪い。ググるとヒットするからこれでも良いかという気もするが ..

    追記: 名前は、artemis-50A にしようかと思う。『Teensy(1.0)互換ボード』 に angel162 と名づけてしまったし。

    それ用の ファームウェアを angel_loader (最新版: angel_loader-1.4c.zip) としていて、これが自作ツールのベースになる。

    angeel - artemis のつながりは、とある物語の『あだな』。ART が入っているし、気に入ったかも。
    (三つ目の名前を考えないといけなくなったら swan3 )

追記: PIC18F14K50

    XuLa-200 では、PIC18F14K50 を使っている。秋月でなんと 150円 。ATmega32u2 だと デジキーで 333円 25個でようやく単価 209円(2011/5/21 現在) 。

    AVR しか使うつもりはないが、ちょっと羨ましい。

      AVR しか使わないのは、開発環境の構築を含めた自由度の問題が大きい。それに、いろいろ作ってきて資産がある。いまさら PIC で似て非なることをするつもりは全くない。
posted by すz at 01:30| Comment(0) | TrackBack(0) | artemis
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/44449767
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック