”Mico32でもう一度やってみた”でインプリメントできたsoc-lm32を実際にSpartan3E Starter Kitにコンフィギュレーションしてみた。
その前に、Spartan3E Starter KitでuCLinuxを試しているホームページが見つかった。それは
moleのあなぼこさんの下のページだ。
・Spartan3E Starter KitでuCLinux・
Spartan3E Starter KitでuCLinux 2とてもよく解説されていて、助かっています。
ここではVMware PlayerとDebianを使用しているが、私はできればCygwinでやっていこうと思っている。
さて、コンフィギュレーションしてみると、LD0~LD7のLEDに何か表示される。これは
soc-lm32/xilinx-s3eskのページによると、SW1がオフの時にはWISHBONEバスの{clk, reset, uart_txd, uart_rxd, lm32i_stb, lm32i_ack, lm32d_stb, lm32d_ack} を表示しているそうだ。道理でうすく点いているLEDがある。
さて、
”Spartan3E Starter KitでuCLinux”によると、SW0をオンするとRS-232Cでやり取りができるとのことなので、シリアルケーブルをSpartan3E Starter Kitに接続して、Teratermを立ち上げ、115200bpsに設定したところ、"**soc-lm32/bootloader** >"のプロンプトが表示された。
すごい、もう動作している。。。非常にうれしい。といっても当たり前なのか?

これで、コマンドを入れてみたが、
”Spartan3E Starter KitでuCLinux”に書いてあるようにmコマンド(Memory Test)や、vコマンド(View Memory)に何も反応しない。dとgを押すと、行ったきりになって反応しなくなる。なんかおかしい。
そういえば、このソフトウェアどうやって入れているんだろうか?wb_bram.vのコードもRAMBプリミティブをインスタンシエーションしているわけでなく、Verilog記述から推定するようになっているし、どこで入れているんだろうか?
そういえば気になる記述が1つあったな?initial文を使っている。これってシミュレーションのみでなかったか?下にその部分のソースを転載します。
initial
begin
if (mem_file_name != "none")
begin
$readmemh(mem_file_name, ram);
end
end
もしかしてこの$readmemh でソフトウェアを読み込んでいるのでは?そう思って、一番上の system.v をみると、こう書いてあった。
parameter bootram_file = "../../firmware/boot0-serial/image.ram",
このbootram_file が bramのmem_file_name として入力されている。どうやらこうやってBRAMにソフトウェアを書き込んでいるようだ。ためしにISE10.1iSP3のXSTガイドのマニュアルを見てみると、246ページに”ブロックRAMの初期化 (外部デー タ フ ァ イル)の Verilog コード例”として書かれていた。ひとつ利口になった気がします。
やはり、moleさんとは入っているソフトウェアが違っていたみたい。bootloaderにしないと同じにならないようだ。そこでsystem.v のparameterをした記述に変更してみた。
parameter bootram_file = "../../firmware/bootloader/image.ram",
そうするとmを押すとメモリテストができるようになった。

やはり、MEMTEST ERRORがいっぱい出ている。
”Spartan3E Starter KitでuCLinux”に書いてあるようにrtl/wb_ddr/ddr_wpath.vの146行目の(moleさんのところには143行目と書いてあったが、私がダウンロードしたファイルでは146行目だった)
read_shr <= { 8'b00011000 };
を
read_shr <= { 8'b00110000 };
に修正したが、やはりMEMTEST ERRORが出てしまった。おかしい?
これはシフトレジスタを使ってDDR のリードのタイミングをとっているのだと思う。タイミングを変更するのに良い。私も自分のDDRコントローラにアイデアをいただくこととする。
その後、8'b01100000 ~ 8'b00001100 まで変えてやってみたが、やはりMEMTEST ERRORが出てしまう。
今日は、この辺で終了とする。
なかなか面白くなってきた。もう少しいじってみてDDRコントローラがだめそうだったら、自分のDDRコントローラをつけてみようと思う。
- 2008年10月03日 06:02 |
- Spartan3E Starter Kit でマイコンを作る
-
| トラックバック:0
-
| コメント:0