FC2カウンター FPGAの部屋 soc-lm32をSpartan3E Stater Kitにコンフィギュレーション
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

soc-lm32をSpartan3E Stater Kitにコンフィギュレーション

”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** >"のプロンプトが表示された。
すごい、もう動作している。。。非常にうれしい。といっても当たり前なのか?
soc-lm32_3_081003.png
これで、コマンドを入れてみたが、”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を押すとメモリテストができるようになった。
soc-lm32_4_081003.png
やはり、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コントローラをつけてみようと思う。
  1. 2008年10月03日 06:02 |
  2. Spartan3E Starter Kit でマイコンを作る
  3. | トラックバック:0
  4. | コメント:0

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
https://marsee101.blog.fc2.com/tb.php/898-291a26bd
この記事にトラックバックする(FC2ブログユーザー)