DE0-Nano/JavaRock

 JavaRock samples を用いて DE0-Nano の LED を点滅させる Project ファイルを作成、
DE0-Nano に書き込む手順について記載します。

ホストマシン上の構成

 本稿のホストマシン上の構成について記載します。
使用する OS と主なアプリケーションは以下のとおりです。

OS:

アプリケーション:

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 のインストールについては省略します)。

開発用ツールのインストール

Ubuntu に開発用ツールと OpenJDK をインストールします。

$ sudo apt-get install build-essential
$ sudo apt-get install openjdk-7-jdk

udevルールの追加

 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 作業用ファイル・ディレクトリ構成

 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

環境変数設定

 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

追加ファイルについて

 本稿で追加してるファイルの概要は以下のとおりです。

test.sh、test.javaの編集について

 test.java、test.shはそれぞれ以下のように編集しています。
本稿では LED の点滅のみ実行するため、それ以外のものは削除もしくはコメントアウトしています。

$ 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
$ 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の実行

上記の設定と修正完了後、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について

 test.qpf、test.qsfの詳細については添付ファイルを参照してください。
test.qsf は上記で作成された test.vhd に合わせた変更と作成された 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
 #============================================================
 # 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への書き込み

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%);


BC::labsへの質問は、bc9-dev @ googlegroups.com までお願い致します。
トップ   新規 一覧 単語検索 最終更新   最終更新のRSS