トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

H8(PIC,AVR)などから SpartanII をコンフィグする手順

[電子工作]

やりたいこと

  • Xilinx の ISE が吐く .bit ファイルから、コンフィグ ROM を使わずにマイコン経由で SpartanII をコンフィグレーションしたい。

.bit ファイルを使ってスレーブシリアルでコンフィグする

  • 上記の解説でほぼわかるのですが、ちょっと誤植があるので注意(Field 4 が2つあったり、raw bit stream の長さの桁が多かったりする)。
    • FPGA FAQ から引用したヘッダの例(誤植を訂正してまとめました。)
00000000:  00 09 0f f0 0f f0 0f f0 0f f0 00 00 01 61 00 0a  *.............a..*
00000010:  78 66 6f 72 6d 2e 6e 63 64 00 62 00 0c 76 31 30  *xform.ncd.b..v10*
00000020:  30 30 65 66 67 38 36 30 00 63 00 0b 32 30 30 31  *00efg860.c..2001*
00000030:  2f 30 38 2f 31 30 00 64 00 09 30 36 3a 35 35 3a  */08/10.d..06:55:*
00000040:  30 34 00 65 00 0c 28 18 ff ff ff ff aa 99 55 66  *04.e..(.......Uf*
フィールド 1
2 bytes フィールド長 0x0009 (big endian)
9 bytes some sort of header
フィールド 2
2 bytes フィールド長 0x0001
1 byte key 0x61 (文字 "a")
フィールド 3
2 bytes フィールド長 0x000a (デザイン名に依存)
10 bytes デザイン名 "xform.ncd" (後に続く 0x00 を含む)
フィールド 4
1 byte key 0x62 (文字 "b")
2 bytes フィールド長 0x000c (パーツ名称文字列に依存)
12 bytes パーツ名称文字列 "v1000efg860" (後に続く 0x00 を含む)
フィールド 5
1 byte key 0x63 (文字 "c")
2 bytes フィールド長 0x000b
11 bytes 日付文字列 "2001/08/10" (後に続く 0x00 を含む)
フィールド 6
1 byte key 0x64 (文字 "d")
2 bytes フィールド長 0x0009
9 bytes 時刻文字列 "06:55:04" (後に続く 0x00 を含む)
フィールド 7
1 byte key 0x65 (文字 "e")
4 bytes フィールド長 0x000c9090 (デバイスタイプ、ram bit stream 長に依存)
823440 bytes 0xffffffffaa995566 の sync word で始まる raw bit stream。
↑これを FPGA に送信すればいい
  • スレーブシリアルでプログラムをするには、M0-M2 をすべてオープン(PULL-UP状態)にして、/PROGRAMH->L->H してプログラムモードにした後、/INITL->H に戻るのを待つ。
  • あとは .bit ファイルから、raw bit stream のところだけ取り出して、1バイトずつ 上位ビットから DIN を内容のとおりに動かし、CCLKL->H してやればいいということ。

サンプルプロジェクト(ページ最下部に添付。無保証)

  • ストロベリーリナックス製の SpartanComplete基板(H8/3069F + SpartanII(XC2S200))をターゲットにしてテストしたサンプルプロジェクトです。
  • プロジェクトファイルは Renesas製 H8S,H8/300 C/C++ Compiler 6.2.0 + Hew 4.03 で作成してあります。バージョンが古い方は Update してください。
  • SCI1 から 115200bps (Debug ビルドは Hterm にあわせて 38400bps) で .bit をそのままバイナリ転送してやると、ヘッダを解析(ってか、raw bits を取り出してるだけ)して、CCLK と DIN をパカパカするだけのプログラムです。
  • Spartan Complete に添付されていた「楽チン FPGA」の H8 用ファームとほぼ同じような機能です。
  • 「楽チン FPGA」と違う点
    • 巷でデファクトになっている、Renesas さんが配布されている Hterm を使ったモニタで動作します(もちろん直接焼くこともできます)。モニタを使用した場合には、モニタでロード>FPGA ロード のシリアル2段ブート可能。
    • ソースが改変できますので、コンフィグした後、ユーザプログラムを実行できます。また、他の H8 マイコンや AVR 等にも容易に移植可能と思われます。マイコンの空き Flash 領域に .bit の内容を置いたり、最近流行の MMC(SD)からコンフィグしてもいいのではないかと思います。
  • TeraTerm Pro のファイル転送(バイナリのチェックボックスにチェックを忘れずに!)で正常動作を確認しています。
    • Release ビルドで H8/3069F の内蔵 FLASH から動作(115200bps)。
    • Debug ビルドで H8/3069F 用にコンフィグされた Renesas 製 Hterm 対応モニタから動作(38400bps)。
  • 純正コンパイラをお持ちでなくても、Release ビルド側の .mot を焼けば動作しますが、ポートは SpartanComplete と同じである必要があります。
    • ポート設定はプロジェクト内のソース、 spartan.h をご覧ください。
  • ライセンスは NYSL(煮るなり焼くなり好きにして) とします。なにかの参考になれば幸いです。
spacon_tst_20080110.zip

 カテゴリ : もくしいゲームレシピコンピュータ雑文生活電子工作おいしい店マップ

                  Topページへ | もてないSNS「もくしい」