Spartan-6ボード用MicroBlazeのプロジェクトを公開
特選Spartan-6ボード用に作ったMicroBlazeのプロジェクトを公開します。
このプロジェクトはTKDN-SP6-16用ですが、たぶんTKDN-SP6-45や、EXPARTAN-6Tにも使えます。
EDKで作ったMicroBlaze、MPMC、UART、GPIO(LED8個)、SPI、Timerを入れています。
CPUの設定では、バレルシフタと乗算器、除算器をONにしています。MMUと浮動小数点はOFFです。キャッシュは、命令・データともに2kBytes入っています。
MicroBlazeにいろんなコンポーネントを入れていくと、信号線を自分で設定して取り出さなければなりません。そのことを知らずに最初はハマりました。コアの外に出て行くポートはこんな感じです。
内蔵RAMとして32kB分のBRAM使っています。DDR2 SDRAMはアドレス0x48000000~0x4FFFFFFFに64MB分配置されています。GPIOやUARTなどは0x81400000あたりにあります。
ソフトウェアは、UARTを介して115200bpsでホストPCと通信できます。
FPGAが動き出すと、MicroBlazeが起動してEDKに付属のXil_TestMem32関数を使ってSDRAMの先頭1MBytesを検査します。
その後、簡単なモニタプログラムが起動します。このモニタは、メモリテストや、メモリのFill、Intel Hexファイルのロード、ジャンプ、メモリライト、メモリダンプができます。
下の図は、memtstというコマンドでメモリ全域(64MB)に乱数を書き込んでテストし、その後、テスト用に書き込まれたデータをダンプしています。
このモニタプログラムはFPGAの回路とともに、BitStream中(のBRAMの初期値として)格納されます。
だから、BitファイルをJTAGでダウンロードすれば起動しますし、出来上がったBitファイルをSPI ROMに書き込めば電源ONで即起動します。
このシンプルなモニタが動いたら、HEXファイルを流し込んでセカンドブートローダーを起動できます。
U-bootを移植して動かしてみたものの、ほとんどのコマンドがないので、今はまだ何もできません。
helpと打つと、出てくるコマンドが寂しい限りです。
SPIやTimerのモジュールが動くかどうかはこれからテストします。
FPGAの中でマイコンが動いている感覚が面白いです。
今夜はワクワクしながら徹夜で実験です。
| 固定リンク
コメント