ScarabHardwareでminiSpartan6+を買いました。
LEDのカウントアッププログラムを動作させるまでが思ったとおり大変だったので、備忘録も兼ねて共有します。
全体像
全体の流れはGetting StartedとMiniSpartan6+ bringupを参考にしました。- xc3sprogをインストールする
- iseをインストールする
- iseでプロジェクトを作成する
- iseで必要なファイルを作成する
- iseでプロジェクトからbitファイルを作成する
- xc3sprogでbitファイルをminiSpartan6+に送信する
xc3sprogをインストールする
miniSpartan6+にはFTDIのチップが搭載されているので、そのチップをJTAGとして利用します。
そのためFTDIに関するプログラムもインストールします。
sudo apt-get install libftdi-dev sudo xc3sprog -c ftdi
svn co https://xc3sprog.svn.sourceforge.net/svnroot/xc3sprog/trunk xc3sprog cd xc3sprog cmake . sudo make install
インストールできたらminiSpartan6+をPCに接続して、下記のコマンドで接続を確認します。
sudo xc3sprog -c ftdi
下記のような情報が表示されたら成功です。
iseをインストールする
xilinxのホームページからiseのLinux用フルインストーラをダウンロードします。
※vivadoデザインツールではありません。
インストールのコマンドなどは、下記のサイトを参考にしました。
ISE WebPack 13.3 インストール(ESXi-Ubuntu 11.10)
※vivadoデザインツールではありません。
インストールのコマンドなどは、下記のサイトを参考にしました。
ISE WebPack 13.3 インストール(ESXi-Ubuntu 11.10)
tar xvf Xilinx_ISE_DS_Lin_14.7_1015_1.tar cd Xilinx_ISE_DS_Lin_14.7_1015_1/ sudo ./xsetup
パスを通します
64bit PCの場合
echo "PATH=\$PATH:/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin64" >> ~/.bashrc32bit PCの場合
echo "PATH=\$PATH:/opt/Xilinx/14.7/ISE_DS/ISE/bin/lin" >> ~/.bashrc
bashを読み直します。
source ~/.bashrc
下記のコマンドでiseが起動するはずです。
ise
iseでプロジェクトを作成する
iseでプロジェクトを作ります。
File -> New Project
Top-level source typeはHDLにします。
今回は~/xilinx/testを作成しました。
File -> New Project
Top-level source typeはHDLにします。
今回は~/xilinx/testを作成しました。
MiniSpartan6+ bringupと同じ設定にしました。
Finishを押すと、下のように新しいプロジェクトの画面になります。
iseで必要なファイルを作成する
MiniSpartan6+ bringupに従って、下記2つのファイルを作成します。test_led.vhd
作成手順:Project -> New Source
VHDL moduleを選択します
その後はデフォルトの設定で良さそうなので、ポップアップが消えるまでOKやfinishを押します。
test_led.vhdに下記のプログラムを記述します。
test_led.vhd
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.NUMERIC_STD.ALL; entity led_Test is Port ( clk50 : in STD_LOGIC; leds : out STD_LOGIC_VECTOR (7 downto 0)); end led_Test; architecture Behavioral of led_Test is signal count : unsigned(29 downto 0) := (others => '0'); begin process(clk50) begin if rising_edge(clk50) then count <= count+1; leds <= STD_LOGIC_VECTOR(count(count'high downto count'high-7)); end if; end process; end Behavioral;
miniSpartan6.ucf
作成手順:ucfファイルは作成前に設定を変更する必要があります。
Source -> Source properties
View AssociationをImplementationに変更して、Applyを押した後、OKを押します。
そうすると、ucfファイルを選択できるように鳴るので、先ほどのvhdのようにファイルを追加します。
Project -> New Source -> Implementation Constraints File
miniSpartan.ucfに下記のプログラムを書きます。
miniSpartan.ucf
NET "clk50" PERIOD = 20 ns | LOC = "K3"; # IO_L42P_GCLK25_TRDY2_M3UDM NET "LEDS<0>" LOC="P11"; NET "LEDS<1>" LOC="N9"; NET "LEDS<2>" LOC="M9"; NET "LEDS<3>" LOC="P9"; NET "LEDS<4>" LOC="T8"; NET "LEDS<5>" LOC="N8"; NET "LEDS<6>" LOC="P8"; NET "LEDS<7>" LOC="P7";
test_led.vhdとminiSpartan6.ucfを作成したら、ファイルを保存します。
iseでプロジェクトからbitファイルを作成する
「▶」ボタンを押します。
しばらく経って成功した場合、Implement Designの横にチェックマークが付きます。
ここまで成功していたらGenerate Progarmming Fileの横の丸をダブルクリックします。
Generate Programming Fileの横にチェックマークが付いたら成功です。
しばらく経って成功した場合、Implement Designの横にチェックマークが付きます。
ここまで成功していたらGenerate Progarmming Fileの横の丸をダブルクリックします。
Generate Programming Fileの横にチェックマークが付いたら成功です。
xc3sprogでbitファイルをminiSpartan6+に送信する
iseで作ったプロジェクトのフォルダに移動します。cd ~/xlinx/test
送信するbitファイルがあることを確認します。
ls *.bit
miniSpartan6+をPCに接続して、下記のコマンドを入力します。
sudo xc3sprog -c ftdi led_test.bit
LEDがチカチカ(2進数のカウントアップを)していたら成功です。
お疲れ様でした!
備考
FPGAの設定が間違っていると、下記のエラーが出ます。ERROR:MapLib:30 - LOC constraint P7 on leds<7> is invalid: No such site on the device. To bypass this error set the environment variable 'XIL_MAP_LOCWARN'.
自分の場合は、チップを右クリックして設定を修正したらうまくいくようになりました。
参考ページ
Getting StartedとMiniSpartan6+ bringupISE 10.1 Quick Start Tutorial
Putting my code into the FPGA
0 件のコメント :
コメントを投稿