#contents * DE0-Nano/JavaRock [#ue08de8e] JavaRock samples を用いて DE0-Nano の LED を点滅させる Project ファイルを作成、~ DE0-Nano に書き込む手順について記載します。 * ホストマシン上の構成 [#h11f1935] 本稿のホストマシン上の構成について記載します。~ 使用する OS と主なアプリケーションは以下のとおりです。 OS: ~ - ホストOS: Windows7 (64bit版) ~ - ゲスト OS: Ubuntu 12.04LTS(32bit版、以降Ubuntuと記載します) ~ アプリケーション: ~ - VMware Player (Windows、64bit版) ~ - DE0-Nano System Builder (Windows) ~ - Quartus II 12.0sp1 (Ubuntu、以降Quartsと記載します) ~ VMware Player 上に Ubuntu のイメージを作成します。~ ディスク容量は20GBとしています。 ~ DE0-Nano System Builder は DE0-Nano の qpf(プロジェクトファイル)、~ qsf(ピンアサイン等の設定ファイル)を作成する際に使用します。 ~ ~ また DE0-Nano System Builderは Windows 上でのみ実行可能です。 ~ http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=165&No=593&PartNo=4 ~ ~ Quartus は Ubuntu 上にインストールします ~ (本稿では Quartus のインストールについては省略します)。~ ** 開発用ツールのインストール [#wbadc982] Ubuntu に開発用ツールと OpenJDK をインストールします。 ~ $ sudo apt-get install build-essential $ sudo apt-get install openjdk-7-jdk ** udevルールの追加 [#wfe4b458] DE0-NanoとUbuntuをUSB接続した際にビルドしたイメージを ~ 転送できるように/etc/udev/rule.dにを51-usbblaster.rulesを追加します。~ ルールファイル追加後udevを再起動します。 ~ $ sudo vi /etc/udev/rules.d/51-usbblaster.rules SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="09fb", ATTRS{idProduct}=="6001", MODE="0666", SYMLINK+="usbblaster/%k" $ sudo udevadm control --reload-rules ** Ubuntu 作業用ファイル・ディレクトリ構成 [#mef9ded6] Ubuntu 上で使用する主なファイル・ディレクトリ構成は以下のとおりです。 ${HOME} |-- altera/ <- Quartusインストールディレクトリ | `-- JavaRock |- javarock_20130708.jar <- JavaRock 実行ファイル `- samples/ <- JavaRock samples_20130707.tar.gz展開ディレクトリ | <snip> | |-- de0-nano/ <- DE0-Nano作業用追加ディレクトリ | |- model/ <- DE0-Nano プロジェクトファイル配置用ディレクトリ | | |- test.qpf | | `- test.qsf | | | |- test.java | `- test.sh <snip> | `-- led/ |- counter.java `- led.java ** 環境変数設定 [#l417a0e9] Quartusの起動とJAVAROCKのビルドを実行しやすくするため、~ bashrc の末尾に Quartus の PATH と JAVAROCK の実行ファイルへの PATH を追加します。 ~ $ vi ~/.bashrc <snip> # sources /etc/bash.bashrc). if [ -f /etc/bash_completion ] && ! shopt -oq posix; then . /etc/bash_completion fi + export PATH=$PATH:/home/beat/altera/12.0sp1/quartus/bin + export JAVAROCK=/home/beat/JavaRock/javarock_20130708.jar ** 追加ファイルについて [#nf792475] 本稿で追加してるファイルの概要は以下のとおりです。 ~ - de0-nano/model/test.qpf: 本稿用のプロジェクトファイル ~ - de0-nano/model/test.qsf : DE0-Nano System BuilderからCLOCKとLED[8]のみ選択し作成したファイルを ~ JavaRock で生成される vhd ファイルに合わせて編集したもの ~ - de0-nano/test.sh、test.java: samples/test/test.sh、test.java を LED 点滅用に編集したもの ~ *** test.sh、test.javaの編集について [#b801ac88] test.java、test.shはそれぞれ以下のように編集しています。 ~ 本稿では LED の点滅のみ実行するため、それ以外のものは削除もしくはコメントアウトしています。 ~ - test.sh $ diff -upN samples_orig/test/test.sh samples/de0-nano/test.sh --- samples_orig/test/test.sh 2013-07-08 07:25:19.000000000 +0900 +++ samples/de0-nano/test.sh 2014-05-20 18:30:01.516000467 +0900 @@ -1,5 +1,3 @@ -java -cp $JAVAROCK:../led:../sc1602:../echo:. openjdk.com.sun.tools.javac.Main \ +java -cp $JAVAROCK:../led:. openjdk.com.sun.tools.javac.Main \ ../led/counter.java ../led/led.java \ - ../sc1602/SC1602Wrapper.java ../sc1602/SC1602Writer.java ../sc1602/sc1602_test.java \ - ../echo/echo.java ./rs232c.java \ test.java - test.java $ diff -upN samples_orig/test/test.java samples/de0-nano/test.java --- samples_orig/test/test.java 2013-07-08 07:25:19.000000000 +0900 +++ samples/de0-nano/test.java 2014-05-20 17:38:47.528038697 +0900 @@ -3,8 +3,8 @@ import net.wasamon.javarock.rt.*; @javarockhdl public class test{ led obj0 = new led(); - echo obj1 = new echo(); - sc1602_test obj2 = new sc1602_test(); + //echo obj1 = new echo(); + //sc1602_test obj2 = new sc1602_test(); //VGAJavaTest vga = new VGAJavaTest(); @combination @@ -15,8 +15,8 @@ public class test{ @auto public void main(){ obj0.start(); - obj1.start(); - obj2.start(); + //obj1.start(); + //obj2.start(); //vga.start(); } } ** test.shの実行 [#da6466f1] 上記の設定と修正完了後、test.shを実行しtest.vhd、led.vhd、counter.vhd が ~ de0-nano ディレクトリに作成されていることを確認します。 ~ $ ./test.sh Compile: counter Compile: led Compile: test pass: connection pass: bypass pass: optimization pass: linkage pass: generate ** test.qpf、test.qsfについて [#m1ee0efc] test.qpf、test.qsfの詳細については添付ファイルを参照してください。~ test.qsf は上記で作成された test.vhd に合わせた変更と作成された vhd ファイルを ~ コンパイル時に読み込むよう以下のように変更してください。 ~ - test.vhd(参考用) entity test is -- net.wasamon.javarock.model.vhdl.VHDLModule@33117621 port ( notify_method_busy : OUT std_logic; output_port_led : OUT std_logic; notify_method_request : IN std_logic; reset : IN std_logic; clk : IN std_logic ); -- net.wasamon.javarock.model.vhdl.VHDLModule@33117621 - model/test.qsf #============================================================ # CLOCK #============================================================ -set_location_assignment PIN_R8 -to CLOCK_50 -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_50 +set_location_assignment PIN_R8 -to clk +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to clk #============================================================ # LED #============================================================ -set_location_assignment PIN_A15 -to LED[0] -set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LED[0] +set_location_assignment PIN_A15 -to output_port_led +set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to output_port_led #============================================================ # End of pin assignments by Terasic System Builder #============================================================ +set_location_assignment PIN_A11 -to reset +set_instance_assignment -name IO_STANDARD 2.5V -to reset +set_global_assignment -name VHDL_FILE ../led.vhd +set_global_assignment -name VHDL_FILE ../counter.vhd +set_global_assignment -name VHDL_FILE ../test.vhd +set_global_assignment -name PARTITION_NETLIST_TYPE SOURCE -section_id Top +set_global_assignment -name PARTITION_FITTER_PRESERVATION_LEVEL PLACEMENT_AND_ROUTING -section_id Top +set_global_assignment -name PARTITION_COLOR 16764057 -section_id Top + +set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V" + + + +set_instance_assignment -name PARTITION_HIERARCHY root_partition -to | -section_id Top * DE0-Nanoへの書き込み [#nc2ff26c] DE0-Nanoへの作成したファイルの書き込み手順は以下のとおりです。 ~ 1. Quartusの起動します。 ~ ref(quartus01.png,,60%); ~ 2. Open Project から test.qpf(Projectファイル)の読み込みます。 ~ ref(quartus02.png,,60%); ~ 3. メニューバー 「Processing」内 「Start Complication」 を押下します。 ~ 注: Warning は大量に表示されますが、特に問題ありません。 ~ ref(quartus03.png,,100%); ~ 4. メニューバー 「Tools」 内 「Programmer」を押下します。 ~ 仮にNo Hardware の場合、Hardware Settingsを押下し、 ~ Currently selected hardware 内の USB-Blasterを選択します。 ~ ~ 注:USB-Blasterの選択が表示されていない場合は再度追加したudevルールファイルを確認してください。 ~ ref(quartus06.png,,60%); ~ 5. Programeer 内 Startを押下し Progress が 100%(Successful)になることを確認し、 ~ その際 DE0-Nano の LED0が点滅を開始することを確認します。 ~ ref(quartus06.png,,60%); ~ 参考: 本稿でのPin設定は以下のとおりです。 ~ ref(quartus04.png,,60%); ~