Spartan3E Sample Pack
ET2005で抽選で配られていたボードについて、いろいろわかってきました。
まず、このボードの名前は「Spartan3E Sample Pack」というようです。これは、前に発売された例のSpartan3 Starter Kitと、2005年12月に発売が予定されているSpartan3E Starter Kitの間に位置するようなボードといったところでしょう。
このボードの名前が「Spartan-3E Sample Pack」ということがわかったので、Googleで検索してみると、DigilentのWebサイトの中にあるユーザガイドがヒットします。
このボードを調べていて、どのようにしてSpartan3Eがコンフィギュレーションされてるかがわかりました。Spartan3Eは、M2,M1,M0のピンを010または011と設定することで、パラレルフラッシュROMからコンフィグレーションするようになるようです。
このとき、フラッシュROMとFPGAの接続は固定的に決まるようで、つまりFPGAのどの信号がフラッシュROMのどの信号につながる、ということは一意に決まってしまいます。
(ということは、Spartan3EとフラッシュROMの部品の位置関係やパターンもほとんど一意に決まる)
さて、Spartan3E FPGAコンフィグ用のビットストリームは、FPGAと共存するCPUのブートコードと重ならないように選択できます。つまり、メモリの0番地から下向き(?)に格納する方法と、FFFFF番地から上向き(?)に格納する方法が選べるようです。
そこで、MITOUJTAGのフラッシュROMライタで確認すると、アドレス0xE423からおなじみのコンフィギュレーションビット列が入っているのがわかります。
これは、ボードの電源を入れたときに起動する、"Circling LED Design"というサンプルアプリケーションです。
また、どんどんしらべていくと、アドレスE0000からF1BDCまで、別のビットストリームが、TopとBottomが逆向きに格納されているのがわかります。これは"Dice Game"という別のサンプルアプリケーションです。
なるほどSample Packの説明書を読むと、起動時にはUPモードでコンフィギュレーションし、ボタンを押すとDOWNモードで再コンフィギュレーションするようで、MultiBootという技術が使われているようです。
データシートを読むと、MultiBootは、STARTUP_SPARTAN3Eというプリミティブを使用することで使えるようになる機能で、コンフィギュレーション後に別のデザインをロードするしくみです。このMultiBootのトリガとなる信号は、FPGAの内部信号であってもよく、つまり、FPGAに、自分自身で再コンフィギュレーションを行うしくみが備わっているということです。誤ったコンフィグデータを書いてしまわないためのフェイルセーフに使えるでしょう。
つまり、マルチブートを発動すると、最初の起動とは逆の方向からコンフィギュレーションデータを探すというものです。このボードでは、最初、0x0000から下向き(?)にコンフィギュレーションデータを探したので、マルチブートの際には0xfffffから上向き(?)に探し、Dice Gameが起動するというものです。
データシートをざっと読んで理解したコンフィギュレーションの仕組みを絵に表すと、下の図のような感じです。

(間違ってたらすみません)
コンフィギュレーションファイルをフラッシュメモリに書き込むのは、iMPACTではできないようです。
このボードでは、FPGAに「フラッシュ書き込み回路」をコンフィギュレーションしておき、FPGAに書き込み用回路がダウンロードされると、JTAGを通じてデータを受信してフラッシュメモリに書き込む機能がインプリメントされ、書き込みアプリケーションが動作するようです。実際のところ、私もまだ試していません。
このアプリケーションでは、FPGAの中でMicroBlazeが動いているようです。昨日の日記で、JTAGロジアナを使って観測されたアドレスバスの動きは、そのMicroBlazeの動作と思われます。
MITOUJTAG用で使う、Spartan3Eのフラッシュメモリ定義ファイルは、下記のリンクからダウンロードできます。
MITOUJTAG BASICをお持ちの方は、是非お試しください。
「s3esp.jfc」をダウンロード
| 固定リンク
コメント