DE0-Nano Quartus II 14.0 QSYS 入門1

Terasic の DE0-Nano ボードで、メモリマップド I/O のテストを PC 側のコンソールから出来るらしいので試してみます。

スクリーンショット 2014-08-31 09.53.13

DE0-Nano ボード付属 CD にあるサンプルプロジェクト DE0_Nano_GOLDEN_TOP フォルダをコピー・ペーストして作業用フォルダを作成します。DE0_Nano.qpf をダブルクリックして、Quartus II を立ち上げます。

スクリーンショット 2014-08-31 09.55.43

プロジェクトに作業フォルダ内の DE0_Nano.v ファイルを追加します。

スクリーンショット 2014-08-31 09.56.07

Project メニューから Add/Remove Files in Project でファイル追加を行います。

スクリーンショット 2014-08-31 09.57.09

Qsys を起動します。

スクリーンショット 2014-08-31 10.03.12

Qsys を起動して、JTAG to Avalon Master Bridge と PIO (Parallel I/O) を追加します。

JTAG to Avalon Master Bridge 追加時の設定変更なし
PIO (Parallel I/O) 追加時の設定変更なし(Direction が Output でなければ Output にする)

各コンポーネントの配線は、画面コピー参照

Export 名の設定は、PIO の出力を、FPGA のポートに付けないといけないので PIO external_connection 行にある export 欄をダブルクリックして export します。今回は名前変更せずそのまま使用しています。

PIO の S1 のメモリマップ上のアドレスを入れます。今回は試しに 0x8000_0000 にしました。アドレスのところをクリックして修正します。

スクリーンショット 2014-08-31 10.04.02
スクリーンショット 2014-08-31 10.04.20

設定が終れば、Generate -> Generate HDL を選択して Qsys の HDL を生成します。Generate ボタンを押すと処理開始ですが、作成した設定を保存していないので、セーブのダイアログが出ます。今回は qsysPio という名前で保存しました。

スクリーンショット 2014-08-31 10.05.02

Qsys の Generate が完了したら、 DE0_Nano.v に Qsys のインスタンス作成するためのコードを書かないといけません。 Generate -> HDL Example を選択して インスタンスするコードをクリップボードにコピーします。そして DE0_Nano.v を開いてペーストします。


    qsysPio u0 (
        .clk_clk                          (CLOCK_50),                          //                       clk.clk
        .pio_0_external_connection_export (LED)  // pio_0_external_connection.export
    );

endmodule

ファイルの最後に endmodule がありますが、その手前にペーストして、() 括弧の中を書き換えます。
クロック入力は、CLOCK_50 、LED 出力は LED という名前です。修正が終れば CTRL-S で上書き保存。

次に Qsys の Generate 時に保存した、qsysPio.qsys をプロジェクトに追加します。 DE0_Nano.v を追加したときと同じ手順で追加します。

Processing -> Start Compilation や、コンパイルボタンを押してコンパイルします。

スクリーンショット 2014-08-31 10.09.00

コンパイル完了したらプログラマで DE0-Nano ボードへ .sof ファイルを書き込みます


スクリーンショット 2014-08-31 10.30.37

書き込み完了すれば早速テストを行ってみます。Tools -> System Debugging Tools -> System Console メニューを選択してシステムコンソールを起動します。ALTERA の オンライン資料: Quartus II 開発ソフトウェア に Analyzing and Debugging Designs with System Console という pdf があり、これにコマンド説明があります。

% set master_path [lindex [get_service_paths master] 0]
/devices/EP3C25|EP4CE22@1#USB-0/(link)/JTAG/master_0.jtag/phy_0/master_0.master
% open_service master $master_path
% master_write_32 $master_path 0x80000000 0x55

という方法も動きますが、先程の PDF では open_service はサポートされなくなり claim_service を使ってとありますので注意必要です。

% set service_paths [get_service_paths master]
/devices/EP3C25|EP4CE22@1#USB-0/(link)/JTAG/master_0.jtag/phy_0/master_0.master
% set master_service_path [lindex $service_paths 0]
/devices/EP3C25|EP4CE22@1#USB-0/(link)/JTAG/master_0.jtag/phy_0/master_0.master
% set claim_path [claim_service master $master_service_path mylib]
/channels/local/mylib/master_1
% master_write_32 $claim_path 0x80000000 0x55

% master_write_32 $claim_path 0x80000000 0xaa

% master_write_32 $claim_path 0x80000000 0x33

% close_service master $claim_path

ということで、claim_service 版で 0x8000_0000 に値を書き込みして LED の表示が変るかやってみます。

2014-08-31 10.27.12

2014-08-31 10.27.22

無事動いてよかったです。

Terasic DE0-Nano 購入しました。

2014-07-20 16.30.26

日曜日、ふと思い付きで京都方面へお出かけ。目的は、↓の写真にある

2014-07-20 09.18.24

2014-07-20 10.50.17

電電宮という電気の神さんと、京都御苑内にある技芸上達の白雲神社にお参りでした。私の場合は朝早めに出て午後になったら早々に撤収するのがパターンなのですが、この日にかぎって帰りにわざわざ日本橋に寄って最初の写真にある FPGA ボードを買って帰った次第。

最初の写真左側 10年いきませんが Xilinx Spartan-3 (Spartan-3Eではない)のボード。右の小さなボードが DE0-Nano 。40ピンの GPIO コネクタのピン数はちょっと少なくなりますが、基板サイズはちっちゃくなってコンパクトです。搭載されている石は DE0 の Cyclone III と違い Cyclone IV です。Altera の Quartus II Web エディションで楽しめます。残念なのは、Xilinx の Spartan-6 が ISE 14.7 以降はサポートしないのと同じような感じで DE0-Nano の Cyclone-IV も Quartus II 14.0 以降はおそらくサポートされなさそう。ということろでしょうか。まぁ、書籍執筆される方は、開発ソフトのバージョン固定出来るので入門本書きやすいでしょう。

2014-07-21 08.40.06

今日は、HDL だけの LED チカチカを組んで書き込む練習だけしました。FPGA 使ってややこしいことする予定は無く自己学習でございます。