« DIP28タイプのSpartan-6やRX基板を考えてみた | トップページ | MITOUJTAGのSPI ROMライタをWinbondに対応させようとしています »

2011.01.26

Spartan-6ボード用MicroBlazeのプロジェクトを公開

特選Spartan-6ボード用に作ったMicroBlazeのプロジェクトを公開します。

ここからダウンロードできます

このプロジェクトはTKDN-SP6-16用ですが、たぶんTKDN-SP6-45や、EXPARTAN-6Tにも使えます。
EDKで作ったMicroBlaze、MPMC、UART、GPIO(LED8個)、SPI、Timerを入れています。
Mb_1

CPUの設定では、バレルシフタと乗算器、除算器をONにしています。MMUと浮動小数点はOFFです。キャッシュは、命令・データともに2kBytes入っています。
MicroBlazeにいろんなコンポーネントを入れていくと、信号線を自分で設定して取り出さなければなりません。そのことを知らずに最初はハマりました。コアの外に出て行くポートはこんな感じです。
Mb_2

内蔵RAMとして32kB分のBRAM使っています。DDR2 SDRAMはアドレス0x48000000~0x4FFFFFFFに64MB分配置されています。GPIOやUARTなどは0x81400000あたりにあります。
Mb_3

自動的に作られるブロック図は、見てもよくわかりません。
Mb_4

ソフトウェアは、UARTを介して115200bpsでホストPCと通信できます。
FPGAが動き出すと、MicroBlazeが起動してEDKに付属のXil_TestMem32関数を使ってSDRAMの先頭1MBytesを検査します。

その後、簡単なモニタプログラムが起動します。このモニタは、メモリテストや、メモリのFill、Intel Hexファイルのロード、ジャンプ、メモリライト、メモリダンプができます。

下の図は、memtstというコマンドでメモリ全域(64MB)に乱数を書き込んでテストし、その後、テスト用に書き込まれたデータをダンプしています。
Mb_5

このモニタプログラムはFPGAの回路とともに、BitStream中(のBRAMの初期値として)格納されます。
だから、BitファイルをJTAGでダウンロードすれば起動しますし、出来上がったBitファイルをSPI ROMに書き込めば電源ONで即起動します。

このシンプルなモニタが動いたら、HEXファイルを流し込んでセカンドブートローダーを起動できます。
U-bootを移植して動かしてみたものの、ほとんどのコマンドがないので、今はまだ何もできません。
helpと打つと、出てくるコマンドが寂しい限りです。
Mb_6

SPIやTimerのモジュールが動くかどうかはこれからテストします。

FPGAの中でマイコンが動いている感覚が面白いです。
今夜はワクワクしながら徹夜で実験です。

|

« DIP28タイプのSpartan-6やRX基板を考えてみた | トップページ | MITOUJTAGのSPI ROMライタをWinbondに対応させようとしています »

コメント

コメントを書く



(ウェブ上には掲載しません)




« DIP28タイプのSpartan-6やRX基板を考えてみた | トップページ | MITOUJTAGのSPI ROMライタをWinbondに対応させようとしています »