FC2カウンター FPGAの部屋 NiosⅡ 9.0 IDE を使ってみる6(NiosⅡの設定を変更してみる2)
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

コメント

コメントの投稿


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

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