FC2カウンター FPGAの部屋 NiosⅡ EDS
fc2ブログ

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

FPGAの部屋

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

NiosⅡ 9.0 IDE を使ってみる6(NiosⅡの設定を変更してみる2)

NiosⅡ 9.0 IDE を使ってみる5(NiosⅡの設定を変更してみる)”でNiosⅡ/sとNiosⅡ/fの比較を行った。今度は最後に残った軽量コアNiosⅡ/eでやってみることにした。ついでにBoard_diagのREADME.txtに従ってexboard_led_pio というLEDの名前をデフォルトのled_pio に変更した。(”NiosⅡ 9.0 IDE を使ってみる4(インターフェースボードのLEDの点灯テスト)”も参照)

最初に、SOPC Builder でNiosⅡ/eに変更した。これはキャッシュを持たないので、Caches and Memory Interfaces のEnable Burst のチェックはハイドされて選択できない。
Nios2_IDE_90_31_090819.png

いままで、LEDのSOPC Builder での名称はexboard_led_pio としてきたが、Board_diagのREADME.txtに下のように書いてある。(一部抜粋)

* Requirements
* **************
* This program requires the following devices to be configured:
* an LED PIO named 'led_pio',


Board_diagを使用してLEDのテストプログラムを自動生成してもらうためにはLEDのPIOの名前はled_pio である必要があるようなので、名前を変更することにした。
SOPC Builder のSystem Contents のexboard_led_pio をled_pio に変更した。
Nios2_IDE_90_35_090819.png

これでSOPC Builder で生成して、QuartusⅡでコンパイルした。そうしたらエラー発生。nois_sdramのポート宣言がexboard_led_pio のままだった。ここを修正して、ピンのアサインも変更する必要がある。
Nios2_IDE_90_36_090819.png

トップのnois2_sdram_led.v (niosのスペルが間違っているがこのままとする) のexboard_led_pio をled_pio に変更した。次に、IOピンのアサインはPin Planner でやるのが正式だろうが、面倒なので、nios2_sdram_led.qsf を直接書き換えてしまうことにした。

set_location_assignment PIN_88 -to exboard_led_pio[7]
set_location_assignment PIN_90 -to exboard_led_pio[6]
set_location_assignment PIN_94 -to exboard_led_pio[5]
set_location_assignment PIN_96 -to exboard_led_pio[4]
set_location_assignment PIN_99 -to exboard_led_pio[3]
set_location_assignment PIN_102 -to exboard_led_pio[2]
set_location_assignment PIN_106 -to exboard_led_pio[1]
set_location_assignment PIN_112 -to exboard_led_pio[0]



set_location_assignment PIN_88 -to led_pio[7]
set_location_assignment PIN_90 -to led_pio[6]
set_location_assignment PIN_94 -to led_pio[5]
set_location_assignment PIN_96 -to led_pio[4]
set_location_assignment PIN_99 -to led_pio[3]
set_location_assignment PIN_102 -to led_pio[2]
set_location_assignment PIN_106 -to led_pio[1]
set_location_assignment PIN_112 -to led_pio[0]


に書き換えた。
これでもう一度、QuartusⅡでコンパイルしたら通った。
NiosⅡIDEで、今までのboard_diag_0 とboard_diag_0_syslib を削除してもう一度作り直した。
board_diag_0 をBuild Project した。SignalTapⅡでコンフィグして、トリガをかけてから、NiosⅡIDEでRun As -> NiosⅡ Hardwareを選択する。
今度は、インクルードファイルをいじらなくても、Nios2 9.0 IDE の下のコンソールペインのNiosⅡTerminal Windowにa: Test LEDs のメニューが表示されている。
Nios2_IDE_90_37_090819.png

その時のSignalTapⅡの波形を下に示す。
Nios2_IDE_90_32_090819.png

完全にシングル転送となっている。
さて、a: Test LEDs がきちんと動作するかをチェックすることにする。その前にもう一度、SignalTapⅡのトリガをかける。
a キーを押すと、きちんとLEDが全部点灯した。成功。。。
a キーを押した時のSignalTapⅡの波形を下に示す。
Nios2_IDE_90_33_090819.png

やはり、シングル転送。当たり前か。。。
最後にTotal logic elements は58%(SignalTapⅡを含む)、やはり一番小さい。
Nios2_IDE_90_34_090819.png

(追加)
NiosⅡ 9.0 IDE を使ってみる5(NiosⅡの設定を変更してみる)”のNiosⅡ/sでCaches and Memory Interfaces のEnable Burst のチェックをしないで、4つのバースト転送が発生したと書いた。これは、もしかして、NiosⅡプロセッサのバスユニットはバースト転送対応でなく、シングル転送対応だが、SDRAMのコントローラにコマンドを書き込んでReadする際に、SDRAMコントローラは、最初にアクティベートコマンドを発行してバンクをアクティブにする必要がある。それや、これやで、処理待ちしている間に、シングル転送のReadコマンドがSDRAMコントローラのFIFOバッファに積まれてしまったので、SDRAMコントローラがバースト転送してしまったのではないかと思う。NiosⅡ/sでCaches and Memory Interfaces のEnable Burst のチェックをした場合にはきっちり16バースト転送が行われている。これはキャッシュフィルの場合のバースト転送ができている。
とりあえず、このような現象が起きているのではないか?と推測している。
  1. 2009年08月20日 05:41 |
  2. NiosⅡ EDS
  3. | トラックバック:0
  4. | コメント:0

NiosⅡ 9.0 IDE を使ってみる5(NiosⅡの設定を変更してみる)

NiosⅡ 9.0 IDE を使ってみる4(インターフェースボードのLEDの点灯テスト)”でスマートじゃないけどLEDのテストも出来たので、一旦NiosⅡのコアを入れ替えてみることにした。NiosⅡにコアは3種類あって、それぞれ機能が違っている。今は一番機能の多く、一番ロジックを使用するコアを使用してる。今回は2番目のNiosⅡ/sに変更した。これはいままでのNiosⅡ/f に比べて、データキャッシュやバレルシフタなどがない。
Nios2_IDE_90_22_090818.png

これでSOPC Builder で生成して、QuartusⅡでコンパイルした。するとやはり以前より小さくなった。Total logic elements が77%になった。(SignalTapⅡが入っている状態)以前は92%だった。下がNiosⅡ/s を実装した時のFlow summary。(ただし、SignalTapⅡが入っている状態)
Nios2_IDE_90_23_090818.png

下がNiosⅡ/f を実装した時のFlow summary。(ただし、SignalTapⅡが入っている状態)
Nios2_IDE_90_25_090818.png

SignalTapⅡで最初のSDRAMのReadをキャプチャしているのが、NiosⅡ/fの時にはバーストでアクセスされていたが、NiosⅡ/s を実装した時にはシングル転送だった。データキャッシュが入っていないせいだろうか?
Nios2_IDE_90_21_090818.png

下がNiosⅡ/fを実装した時の最初のSDRAMのReadのキャプチャ。
Nios2_IDE_90_15_090815.png

NiosⅡ/s を実装した時は、Nios2 9.0 IDE の下のコンソールペインにNiosⅡTerminal Windowが表示された状態では(キーを入力しなければ)SDRAMのReadは発生しない。これは命令キャッシュが入っているので当然だと思う。キー待ちのポーリング時はSDRAMにアクセスは発生しないはず。a キーを押すとSDRAMのReadアクセスが発生する。下図参照。
Nios2_IDE_90_24_090818.png

緑色で囲ったBurst Readの部分と黄色で囲ったSingle Readの部分が見える。たぶん、Burst Readの部分は命令、Single Readの部分はデータだと思われる。Single Readの部分はずいぶん上の方のアドレスを使用している。

下にNiosⅡ/fを実装した時、a キーを押した時のSDRAMのReadアクセスを示す。
Nios2_IDE_90_26_090818.png

Burst Readばかり。

最後にNiosⅡ/fを実装してSignalTapⅡを実装していない場合のTotal logic elements は79%だった。
SOPC_Builder_19_090806.png

256サンプルのSignalTapⅡに590のlogic elementsと9,728のmemory bitsを使用している。


(2009/08/19:追記)
くりさんに教えていただいて、SOPC BuilderのNiosⅡ CPUの設定項目のうちのCaches and Memory Interfaces で、Enable Bursts をチェックしてみた。デフォルトではチェックはされていないようだ。実はEnable Burstsにチェックを入れると、一番大きなNiosⅡ/fでは、リソースが多すぎてコンパイルができない。よって、NiosⅡ/sだけでやってみた。
Nios2_IDE_90_27_090819.png

Enable Burstsにチェックを入れて、SOPC BuilderでGenerateし、QuartusⅡでコンパイルする。NiosⅡ9.0 IDEからBuild Projectして、SignalTapⅡでコンフィグし000番地のReadアクセスでトリガをかけ、NiosⅡ9.0 IDEでRun As -> NiosⅡHardware を選択して、最初にSignalTapⅡにかかった波形が下の波形だ。
Nios2_IDE_90_28_090819.png

バーストReadしている。やはりEnable Burstsにチェックを入れるとバーストするようだ。次に、a キーを押した時にSignalTapⅡで000番地のReadアクセスでトリガをかけたらどんな波形が見えるかを見てみる。下の図画素の波形。
Nios2_IDE_90_29_090819.png

かなりバーストReadするようになった。0番地からF番地までバーストReadしているので、16バースト、32バイトを一度に読み込んでいる。
ちなみに上のSDRAM波形のコマンドは、最初からプリチャージ、プリチャージ、リフレシュ、アクティベート、バーストRead、プリチャージ、アクティベート、シングルRead、シングルRead、シングルRead、シングルRead。
やはり、Enable Burstsにチェックを入れる以前よりはバースト長が長い。でも、以前も4バーストReadはしていたようなので、Enable Burstというよりは、きっちり32バイト読み込むというイネーブルビットなのだろうか?
最後にどのくらい使用リソースが増えたかというと、下の図がQuartasⅡのFlow Summary。
Nios2_IDE_90_30_090819.png

Total logic elements が77%のところ85%になった。344個、logic elementsの使用が増えた。
やはりこのデバイスではNiosⅡをいろいろ試すのには小さいようだ。
  1. 2009年08月18日 06:19 |
  2. NiosⅡ EDS
  3. | トラックバック:0
  4. | コメント:2

NiosⅡ 9.0 IDE を使ってみる4(インターフェースボードのLEDの点灯テスト)

くりさんのご指摘のおかげで、(本当に恥ずかしいバグだった)”NiosⅡ 9.0 IDE を使ってみる3(SDRAMが動作しない原因を追及がわからず...わかりました)”でSDRAMを動作させることができた。
今度はテストできるはず?なのに、うまく行かないインターフェースボードのLEDをテストしてみることにした。
board_diag.h, board_diag.c を見ると、TestLEDs(void)関数があって、これを生かせば、そのままLEDのテストができるはず。だけど、下のようになっていて、LED_PIO_NAME をdefine しないと生きない。

#ifdef LED_PIO_NAME

/*
* static void TestLEDs(void)
*
* This function tests LED functionality.
* It exits when the user types a 'q'.
*/

static void TestLEDs(void)
{


そこで、#define LED_PIO_NAME をboard_diag.h に追加した。これでNios2 9.0 IDE でBuild Project をすると、エラー発生。
LED_PIO_BASEがdefine されていないそうだ。そこでSOPC Builder を起動してexboard_led_pio のベースアドレス0x00000000 を確認した。そのアドレスをLED_PIO_BASEの値としてdefine した。
結局、board_diag.h に追加したdefine は下の2つ。

#define LED_PIO_NAME
#define LED_PIO_BASE 0x00000000


これでNios2 9.0 IDE でBuild Project をするとビルド出来て、Nios2 9.0 IDE の下のコンソールペインにNiosⅡTerminal Windowが表示された。
Nios2_IDE_90_19_090816.png

前回の表示よりも a: Test LEDs の項目が増えている。a を入力するとインターフェースボードのLED 8個がすべて点灯した。
Nios2_LED_test_1_0890816.jpg

ここでq を入力するとLEDテストが終了して8個の LED がすべて消灯した。
Nios2_IDE_90_20_090816.png

これでLEDはOK。
7セグメントLEDやRS-232Cもテストしてみようかな?
  1. 2009年08月16日 20:46 |
  2. NiosⅡ EDS
  3. | トラックバック:0
  4. | コメント:8

NiosⅡ 9.0 IDE を使ってみる3(SDRAMが動作しない原因を追及がわからず...わかりました)

NiosⅡ 9.0 IDE を使ってみる2(SDRAMが動作しない)”でSDRAMのReadデータが出ていないことがわかった。今回は何とかしてSDRAMを動作させてみたい。

まずはSDRAMのイニシャライズ部分を見てみる。下のタイミングチャートに示す。
Nios2_IDE_90_14_090814.png

最初にプリチャージして、リフレッシュを2回、点線の部分がモードコマンドで、バースト長1、シーケンシャルモード、/CASレイテンシ3となっている。その後はReadしている。イニシャライズ手順は問題なさそう。

一度、sdram_clk を0度にしてやってみようと思う。やってみたがやはりだめだった。
sdram_clkを-30度にしてみたが、やはりだめだった。もう一度Pinの配置を見たけれど、問題ないみたいだ。
トップモジュールがVerilogだからダメということはないでしょうよね?原因がわからない。
サンプルをSignalTapⅡで見てみると読めているようだ。違いがわからない?
といういうわけで、いちおうサンプルではSOPC Builder , Nios2 IDEのテストをすることができたし、これでOKということにしようと思う。今度Alteraのツールを試す時には、Digi-keyでDE1を購入することにしたほうが良いかも?しれないと思うようになった。

追記:くりさんに指摘していただきましたが、SDRAM_Dがoutputになっていました。正しくはinoutです。くりさん、本当にありがとうございました。
これでSDRAMのVerifyエラーもなくなりました。SDRAMがRead出来るようになりました。下図参照。
Nios2_IDE_90_15_090815.png

000hをReadして0014hが読めています。
NiosⅡ9.0 IDE を立ち上げて、board_diga0 で右クリックかRun AS... -> NiosⅡHardwareを選択すると、NiosⅡTerminal Windowが表示された。LEDは制御できなかった。この辺がまだなぞ?
Nios2_IDE_90_16_090815.png

しかし、inout がoutputと間違っていてもエラーが出ないのですね?自分で間違ったのが悪いとはいえ、エラーを出してほしかったかなと?ちょっとさみしいです。。。
  1. 2009年08月15日 06:59 |
  2. NiosⅡ EDS
  3. | トラックバック:0
  4. | コメント:2

NiosⅡ 9.0 IDE を使ってみる2(SDRAMが動作しない)

NiosⅡ 9.0 IDE を使ってみる1”でSDRAMのVerifyがエラーになって先に進めなかった。(原因がわかりました。SDRAM_Dの宣言をinout とする必要があるところをoutputにしてしまいました。)
動作するサンプル回路は、PLLのlockedとPowerONタイマータイムアウトのANDを取ってSOPC Builderで生成したNiosⅡシステムのリセットに入っている。FPGA技術Vol.4でも備前長船さんがaltpllのlocked 信号はロック前の準安定状態でもぽつぽつ1になってしまうと書いてあったので、それでPLLのlockedとPowerONタイマータイムアウトのANDを取っているのだと思う。
今回はALTPLLの設定にHold 'locked' output low for というオプションを見つけたので、それを入れてPowerONタイマータイムアウトは入れないでどうなるか様子を見てみることにした。

さて、初めにSOPC Builder を立ち上げてpll をDelete し、Generate ボタンをクリックしてシステムを生成する。
Nios2_IDE_90_8_090813.png

システムの生成が終了した。
Nios2_IDE_90_9_090813.png

SOPC Builder で生成してあったaltpllpll をMegaWizard Plug-In Managerで修正する。QuartusⅡのToolsメニューからMegaWizard Plug-In Manager... を選択する。ダイアログでEdit an existing custom megafunction variation を選択して、Next >ボタンをクリックする。altpllpll.v を選択してNext > ボタンをクリックして、設定を開始する。
Parameter Settings のInputs/Lock の項目で、Lock output のCreate 'locked' output にチェックを入れる。次にHold 'locked' output low for にもチェックを入れる。
Nios2_IDE_90_10_090813.png

これでaltpllpllの設定は終了したのでFinishボタンで終了した。
次にトップのnois2_sdram_led.v を修正した。altpllpll をインスタンシエーションした。具体的には下のようになった。

/ nois2_sdram_led

`default_nettype none

module nois2_sdram_led(
    input    wire         clk,
    input    wire        reset_n,
    output    wire [7:0]    exboard_led_pio, 
    output    wire        sdram_clk,
    output    wire [11:0]    SDRAM_A,
    output    wire [1:0]    SDRAM_BA,
    output    wire        SDRAM_nCAS,
    output    wire        SDRAM_CKE,
    output    wire        SDRAM_nCS,
    output    wire [15:0]    SDRAM_D,
    output    wire [1:0]    SDRAM_DQM,
    output    wire        SDRAM_nRAS,
    output    wire        SDRAM_nWE);
    
    wire clk_pll;
    wire pll_locked;

  nois_sdram nois_sdram_inst
    (
      .clk_0                             (clk_pll),
      .out_port_from_the_exboard_led_pio (exboard_led_pio),
      .reset_n                           (pll_locked),
      .zs_addr_from_the_sdram          (SDRAM_A),
      .zs_ba_from_the_sdram            (SDRAM_BA),
      .zs_cas_n_from_the_sdram         (SDRAM_nCAS),
      .zs_cke_from_the_sdram           (SDRAM_CKE),
      .zs_cs_n_from_the_sdram          (SDRAM_nCS),
      .zs_dq_to_and_from_the_sdram     (SDRAM_D),
      .zs_dqm_from_the_sdram           (SDRAM_DQM),
      .zs_ras_n_from_the_sdram         (SDRAM_nRAS),
      .zs_we_n_from_the_sdram          (SDRAM_nWE)
    );
    
    altpllpll altpllpll_inst(
        .inclk0 ( clk ),
        .c0 ( clk_pll ),
        .c1 ( sdram_clk ),
        .locked ( pll_locked )
    );
endmodule


これでQuartusⅡでコンパイルして通った。やってみたのですが、やはり同じでした。残念。もう一度サンプルと同じ回路を使ってやってみます。
サンプル回路とほとんど同じにしてみました。reset_nはスイッチにつながっているので、スイッチを押さなければ1です。クロックをcountでカウントしてcount[10] が1になって、altpllpll のlocked が1になった時、ANDでNoisⅡシステムのリセットが外れるようにしました。これでサンプル回路と同じはずです。(下にソースを示します)これでもSDRAMがFailしました。

// nois2_sdram_led

`default_nettype none

module nois2_sdram_led(
    input    wire         clk,
    input    wire        reset_n,
    output    wire [7:0]    exboard_led_pio, 
    output    wire        sdram_clk,
    output    wire [11:0]    SDRAM_A,
    output    wire [1:0]    SDRAM_BA,
    output    wire        SDRAM_nCAS,
    output    wire        SDRAM_CKE,
    output    wire        SDRAM_nCS,
    inout    wire [15:0]    SDRAM_D,
    output    wire [1:0]    SDRAM_DQM,
    output    wire        SDRAM_nRAS,
    output    wire        SDRAM_nWE,
    
    output    wire [7:0]    digit);
    
    wire clk_pll;
    wire pll_locked;
    reg        [10:0] count;
    wire reset_n_int_node, reset_n_int;

  nois_sdram nois_sdram_inst
    (
      .clk_0                             (clk_pll),
      .out_port_from_the_exboard_led_pio (exboard_led_pio),
      .reset_n                           (reset_n_int),
      .zs_addr_from_the_sdram          (SDRAM_A),
      .zs_ba_from_the_sdram            (SDRAM_BA),
      .zs_cas_n_from_the_sdram         (SDRAM_nCAS),
      .zs_cke_from_the_sdram           (SDRAM_CKE),
      .zs_cs_n_from_the_sdram          (SDRAM_nCS),
      .zs_dq_to_and_from_the_sdram     (SDRAM_D),
      .zs_dqm_from_the_sdram           (SDRAM_DQM),
      .zs_ras_n_from_the_sdram         (SDRAM_nRAS),
      .zs_we_n_from_the_sdram          (SDRAM_nWE)
    );
    
    altpllpll altpllpll_inst(
        .inclk0 ( clk ),
        .c0 ( clk_pll ),
        .c1 ( sdram_clk ),
        .locked ( pll_locked )
    );
    
    always @(posedge clk) begin
        if (!reset_n)
            count <= 11'd0;
        else begin
            if (count[10]==1'b0)
                count <= count + 11'd1;
        end
    end
    assign reset_n_int_node = count[10];
    assign reset_n_int = reset_n_int_node & pll_locked;
    
    assign digit = 8'b1111_1111; // 7segment LED 消灯
endmodule


(2009/08/15:上のVerilog-HDLコードが間違っていたので、SDRAM_Dのoutputをinoutに変更しました。この下の3つの波形はSDRAM_Dをoutputとして測定した波形です。Readデータが出ていませんでした)

さてどうしよう?仕方がないので、この際せっかくSignalTapⅡの使い方を練習したので、SignalTapⅡでSDRAMとのやり取りを見てみることにした。
まずは、SDRAMにWrite しているところをキャプチャする。下の図。
Nios2_IDE_90_11_090814.png

SDRAMの領域をVerifyするのは、アドレス0番地から書いて読みだしているようだ。その0番地と1番地のWriteを見いる。最初にバンクをアクティベートしてから、0014hと0084hを書き込んでいる。
次のその番地をReadした時の値を見てみる。下の図参照。
Nios2_IDE_90_12_090814.png

0番地、1番地をReadしてもデータはFFFFhだ。読めていない。ちなみにリフレッシュはどうかというと。下の図。
Nios2_IDE_90_13_090814.png

ちゃんとプリチャージしてリフレッシュしている。間隔は20nsのクロックサイクルで256サンプル = 5.12us しかサンプルできないのでわからない。もうFPGAのリソースが残っていないので、これが限界だ。
  1. 2009年08月14日 06:15 |
  2. NiosⅡ EDS
  3. | トラックバック:0
  4. | コメント:2

NiosⅡ 9.0 IDE を使ってみる1

次に、日昇テクノロジーのMAX II/Cyclone IIボードのマニュアル2009/2/26の76ページ、第6章に従ってNiosⅡ 9.0 IDEを使ってみることにする。

最初に、前回作成した.sof をQuartusⅡのProgrammer から書き込む必要がある。nois2_sdram_led というプロジェクトなのだが、出来たSOFファイルはnios2_sdram_led_time_limited.sof だった。無料版なので時間制限があるのだろうか?
とにかくこれしかないのでProgrammer で書きこんだ。下図参照
Nios2_IDE_90_1_090809.png

そうすると、OpenCore Plus Status が出てくるので、そのままに置いておくそうだ。
Nios2_IDE_90_3_090809.png

次に、NiosⅡ9.0 IDE を立ち上げて、ワークスペースを今回のプロジェクトのフォルダに設定した。File メニューからNew -> NiosⅡ C/C++ Application を選択した。New Project ダイアログが起動した。
SOPC Builder System PTF File: にnois_sdram.ptf を選択し、Select Project Templete にBoard Diagnostics を選択してFinish ボタンをクリックする。
Nios2_IDE_90_1_090809.png

board_diag_0 を右クリックして、Build Project を選択し、ビルドを行う。
Nios2_IDE_90_4_090809.png

ビルドは結構長い。。。ビルドが終了したらエラーが出ていた。SYSID_BASEやSYSID_TIMESTAMPがundeclared だそうだ。
Nios2_IDE_90_5_090809.png

困った。Webを検索しても解決策は見つからなかったが、SYSID_BASEなどがsystem.h にあるのはわかった。boar_diag.h からsystem.h はインクルードされている。
とりあえず原因がわからないが、NoisⅡIDE起動時にもう1つNoisⅡIDEを起動していたのが原因だろうか?もう一度新しくプロジェクトを作って確かめてみることにする。

takepon256さんに教えていただいて、上の問題は解決できました。takepon256さんありがとうございました。
SOPC Builder を変更したので、”SOPC Builderを使ってみる1”を変更しました。

もう一度、board_diag_0を作り直して、ビルドしたらもんだくなくビルド出来たようだ。なお、たぶんjtag_uart_0 ではなくてjtag_uart に名前を変えたほうがNoisⅡ9.0 IDEでWarningが出るのを防げるようだ。
Nios2_IDE_90_6_090811.png

左側のペインのboard_diag_0 で右クリックしてRun As -> Nois Ⅱ Hardware を選択した。そうするとmake し始める。
ここで、board_diag_0.elf のダウンロードから先に進まない。下に示すメッセージがコンソールに出てきた。

Using cable "USB-Blaster [USB-0]", device 1, instance 0x00
Pausing target processor: not responding.
Resetting and trying again: OK
Reading System ID at address 0x00000018: verified
Initializing CPU cache (if present)
OK

Downloading 02000000 ( 0%)
Downloading 02010000 (92%)
Downloaded 70KB in 1.6s (43.7KB/s)

Verifying 02000000 ( 0%)
Verify failed between address 0x2000000 and 0x200FFFF
Leaving target processor paused


SDRAMが動作していないのかな?
日昇テクノロジーのサンプルでやってみた。LEDがアサインされていないのかコマンドを打つとエラーになったが、Board Diagnosticsのコンソールは起動した。QuartusⅡで回路を見るとリセット回路が付加されている。もしかして、これを付けないと動作しないのか?付けてやってみることにした。

(2009/08/12:追記)
原因がわかりました。IOピンのうちSDRAM_nCSのアサインを忘れていました。
SOPC_Builder_26_090812.png

あわててSDRAM_nCSをPIN_191に指定しました。これでもう一度QuartusⅡでコンパイル。
やはり、NoisⅡIDEでSDRAMがVerify failが出るのは変わらず。。。

(2009/08/15:追記)
トップのVerilog-HDLをミスっていました。
SDRAM_Dをinoutとするところoutputと記述してしまいました。
  1. 2009年08月10日 05:39 |
  2. NiosⅡ EDS
  3. | トラックバック:0
  4. | コメント:2