[[DE0-Nano]] ~ #contents * DE0-Nano/Synthesijer [#c664fa6b] JavaRock の後継プロジェクトの [[Synthesijer>http://synthesijer.sourceforge.net/]] の synthesijer_samples-20140818 を ~ Terasic 社製 FPGA ボード DE0-Nano 上で動作させる手順について記載します。 ~ ~ 本稿の大まかな流れ、Quartus のバージョンなど一部項目については [[DE0-Nano/JavaRock]] と重複しています。~ ~ 本稿の大まかな流れは以下のとおりです。~ ~ - ホストマシン上の構成 ~ Windows PC 上に Virtul Machine(Ubuntu 12.04LTS、64bit版)を作成し作業を行います。 ~ (Ubuntu 12.04LTSのインストールについては本稿では省略します) ~ また Windows、Ubuntu 上で使用しているアプリケーションの概要について記載しています。 ~ ~ - Ubuntu の設定とファイル編集 ~ Ubuntu上での開発ツールのインストールや、DE0-Nano を動作させるための ~ 変更点などについて記載しています。 ~ ~ - DE0-Nano への書き込み ~ Synthesijer のサンプルを DE0-Nano 上で実行する手順について記載してます。 ~ ~ ** ホストマシン上の構成 [#jd4ef5c5] 本稿のホストマシン上の構成について記載します。 ~ 使用する OS と主なアプリケーションは以下のとおりです。 ~ ~ また本稿の作業はほぼ Ubuntu 12.04LTS(64bit版)上で行っています。 ~ ~ OS: ~ ~ - ホストOS: Windows7 (64bit版、以降 Windows と記載します) ~ - ゲスト OS: Ubuntu 12.04LTS(64bit版、以降 Ubuntu と記載します) ~ ~ アプリケーション: ~ ~ - VMware Player (Windows) ~ - DE0-Nano System Builder (Windows) ~ - Quartus II 12.0sp1 (Ubuntu、以降Quartusと記載します) ~ ~ VMware Player 上に Ubuntu のイメージを作成します。 ~ ディスク容量は20GBとしています。 ~ ~ DE0-Nano System Builder は Terasic社から提供されている DE0-Nano の qpf(プロジェクトファイル)、~ qsf(ピンアサイン等の設定ファイル)を作成するためのアプリケーションです。~ ~ また DE0-Nano System Builderは Windows 上でのみ実行可能です。~ ~ Quartus は ALTERA 社から提供されている FPGA 、CPLD などのデザイン開発ツールです。 ~ ~ Quartus は Ubuntu 上にインストールします、本稿でのバージョンは12.0sp1を使用しています ~ これは DE0-Nano/JacaRock で使用しているバージョンとあわせるためです。 ~ ~ ** Ubuntu の設定とファイル編集 [#j1949d65] Ubuntu の設定とファイル編集について記載します。~ *** 開発ツールのインストール [#jcddb250] Ubuntu 上に Quartus をインストールするために以下の開発ツールを ~ インストールします。 ~ ~ $ sudo apt-get install build-essential ia32-libs ia32-libs は Quartus の各バイナリが 32bit版のためインストールしています。 ~ ~ 下記 Java SE、Synthesijer、Quartus の配置、インストールは /home/beat ディレクトリで ~ 行っていますが、適宜変更してください。~ ~ Synthesijer を動作させるために Java SE 7u67 をインストールします。 ~ Oracle の Web ページから Linux 版の Java SE 7u67 をダウンロードしアーカイブを展開します。~ ~ $ tar xvfz jdk-7u67-linux-x64.tar.gz 注:Synthesijer のWeb では Java SE 7 and later と記載がありますが ~ synthesijer-20140818.jar では Java8 で使用するとアノテーションエラーがでるため ~ Java SE 7u67 を使用しています。 ~ ~ synthesijer-20140818.jar、synthesijer_samples-20140818.zipを ~ http://synthesijer.sourceforge.net/ からダウンロードします。 ~ synthesijer_samples-20140818.zip は unzip コマンドで解凍します。~ ~ $ unzip synthesijer_samples-20140818.zip Quartus をインストールします。アーカイブを展開し setup を実行します。~ 以降 GUI に沿ってインストールを行ってください。~ ~ $ tar xvfz 12.0sp1_232_quartus_free_linux.tar.gz $ cd 12.0sp1_232_quartus_free_linux/ $ ./setup また、この状態で Quartus を起動すると下記のエラーが ~ 表示されますので~/altera/12.0sp1/quartus/ 以下に linux64 という ~ シンボリックリンクを作成します。 ~ ~ $ cd ~/altera/12.0sp1/quartus/ $ ln -s linux linux64 *** The Quartus II software cannot be started because the current platform, 'linux64', does not appear to be installed in: '/home/beat/altera/12.0sp1/quartus'. /home/beat/altera/12.0sp1/quartus/bin/jtagd: 69: exit: Illegal number: -1 作業を行いやすくするため以下の3行を .bashrc の末尾に追加します。 ~ $ vi .bashrc export JAVA_HOME=/home/beat/jdk1.7.0_67 export PATH=$JAVA_HOME/bin:/home/beat/altera/12.0sp1/quartus/bin:$PATH export SYNTHESIJER=/home/beat/synthesijer-20140818.jar *** udevルールの追加と適用 [#j65bca02] DE0-NanoとUbuntuをUSB接続しプログラミング(イメージの転送)するためのデバイス USB-Blaster を ~ Ubuntu 上で認識させるため udev (自動的にデバイスファイルの作成や削除を行う仕組み)のルールファイルに ~ USB-Blaster 用ルールファイル /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 ** DE0-Nano への書き込み [#y343e4e7] synthesijer_samples-20140818 内の quickstart サンプルをビルドし ~ DE0-Nano 上で動作させる手順について記載します。 ~ *** quickstart [#e16cde72] quickstart は LED が点滅するサンプルです。 ~ Synthesijer の Web ページに記載されているのと同様の手順でビルドします。~ $ cd ~/synthesijer_samples/sample/quickstart/ $ java -cp $SYNTHESIJER synthesijer.Main Test.java Top.java Output VHDL: Top.vhd Output VHDL: Test.vhd Output Verilog HDL: Top.v Output Verilog HDL: Test.v DE0-Nano System Builder でプロジェクトファイルを作成します。~ Synthesijer の quickstart に合わせてプロジェクト名は Top にします。 ~ ~ 作成したプロジェクトを Ubuntu に移動します。 ~ その際プロジェクトファイル内にある Top.v はリネームしておきます。~ ~ Ubuntu 上で Top.qsf をビルドした quickstart のTop.vhd にあわせて以下のように編集します。~ また上記ビルドした Top.vhd、Test.vhd をコピー同じディレクトリにコピーします。~ ~ $ vi Top.vhd library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; entity Top is port ( clk : in std_logic; reset : in std_logic; flag_return : out std_logic ); end Top; ...<略> $ vi Top.qsf ...<略> #============================================================ # CLOCK #============================================================ set_location_assignment PIN_R8 -to clk set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to clk #set_location_assignment PIN_R8 -to CLOCK_50 #set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to CLOCK_50 #============================================================ # LED #============================================================ set_location_assignment PIN_A15 -to flag_return set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to flag_return #set_location_assignment PIN_A15 -to LED[0] #set_instance_assignment -name IO_STANDARD "3.3-V LVTTL" -to LED[0] ...<略> #============================================================ # 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 Test.vhd set_global_assignment -name VHDL_FILE Top.vhd set_global_assignment -name STRATIX_DEVICE_IO_STANDARD "2.5 V" Quartus を起動し、File -> Open Project から Top.qpf を選択します。 ~ $ quartus Processing -> Start Complication を押下します。 ~ ここで作成した Project 内の各ファイルのコンパイル(分析・統合)を行います。 ~ 注: Warning は大量に表示されますが、特に問題ありません。 ~ ~ Assignments -> Pin Planner を押下し、上記変更箇所が反映されていることを確認します。~ ~ Tools -> Programmer を押下します。~ Programmer は作成されたイメージを DE0-Nano にプログラミング(書き込む)ための機能です。 ~ またどのデバイスで書き込むかも選択します。本稿では上記で設定した USB-Blaster を選択します。 ~ ~ もし No Hardware と表示されている場合、Hardware Settingsを押下し、 ~ 下図のように Currently selected hardware 内の USB-Blasterを選択します。 ~ ~ 注:USB-Blaster の選択が表示されていない場合は再度追加した ~ udev ルールファイルを確認してください。 ~ ~ 完了後Programeer 内 Startを押下します。~ これで作成されたイメージを DE0-Nano に転送します。 ~ ~ Progress が 100%(Successful)になることを確認し、~ その際 DE0-Nano の LED0が点滅を開始することを確認します。 ~ 以上で quickstart の動作確認は完了です。~