追い出したソフトウェアを“ハードウェア化”する準備−ザ・組み込み−ソフトウェアのハードウェア化(6)(2/4 ページ)

» 2009年01月29日 00時00分 公開
[鳥海佳孝 設計アナリスト,@IT MONOist]

FPGAボードの動作確認

 続いて、準備した開発環境でFPGAボードが動作するかどうかを確認してみましょう(この手のことに関しては、筆者はハード屋さんなのでお茶の子さいさいです! 単に確かめるだけですし……)。

 まずは、FPGAボードで動作させるファイル(動作確認用のファイル)をゲットしましょう。

 今回は、連載「触って学ぼう FPGA開発入門」の第4回「単相同期回路で設計する理由」で使用した「T_UPDOWN10-2.v」と「UPDOWN10-2.v」の2つのファイルを再利用します。

 続いて、開発環境を起動する「ise」コマンドのために、ホームディレクトリの下にある「.bashrc」の中に環境変数を設定します。

PLATFORM=lin
XILINX=/opt/Xilinx/10.1/ISE
PATH=${XILINX}/bin/${PLATFORM}:$PATH
LMC_HOME=${XILINX}/smartmodel/${PLATFORM}/installed_${PLATFORM}
LD_LIBRARY_PATH=${XILINX}/lib/${PLATFORM}:/usr/X11R6/lib:${LMC_HOME}/lib/linux.lib:${LMC_HOME}/lib/amd64.lib 

 この設定内容をすぐに反映させたい場合は、

# . ~/.bashrc 

と入力してください(このコマンドを実行しなくても、新たにシェルを立ち上げれば、設定内容は反映されます)。

 今回の解説では、上記2つのファイル「T_UPDOWN10-2.v」「UPDOWN10-2.v」を「/home/tori/UPDOWN10」というディレクトリ以下に配置します。また、今回のFPGAボード用に「UPDOWN10-2.v」をリスト1のように書き換え、ピン固定用のファイル「UPDOWN10.ucf」をリスト2のように準備しておきます。

module UPDOWN(RESET, CLK, DEC, COUNT);
input RESET, CLK, DEC;
output [3:0] COUNT;
 
parameter SEC1_MAX = 50000000; // 6MHz -> 50MHz
 
reg [25:0] tmp_count;
reg [3:0] COUNT_TMP;
wire ENABLE;
 
always @(posedge CLK or posedge RESET)
begin
        if (RESET == 1'b1)
                tmp_count <= 26'h0000000;
//      else
        else if (ENABLE == 1'b1)
                tmp_count <= 26'h0000000;
        else
                tmp_count <= tmp_count + 26'h1;
end
 
// assign DIVIDE_CLK = tmp_count[22];
assign ENABLE = (tmp_count == (SEC1_MAX - 1))? 1'b1 : 1'b0;
 
//always @(posedge DIVIDE_CLK or negedge RESET)
always @(posedge CLK or posedge RESET)
begin
        if (RESET == 1'b1)
                COUNT_TMP <= 4'h0;
        else if (ENABLE == 1'b1)
//      else if (DEC == 1'b1)
                if (DEC == 1'b0)
                        if (COUNT_TMP == 4'h9)
                                COUNT_TMP <= 4'h0;
                        else
                                COUNT_TMP <= COUNT_TMP + 4'h1;
                else
                        if (COUNT_TMP == 4'h0)
                                COUNT_TMP <= 4'h9;
                        else
                                COUNT_TMP <= COUNT_TMP - 4'h1;
end
 
assign COUNT = COUNT_TMP;
 
endmodule
 
 
リスト1 UPDOWN10-2.v(書き換え版) →ダウンロードはこちら

NET "RESET" LOC = "N17";
NET "CLK" LOC = "C9";
NET "DEC" LOC = "H18";
NET "COUNT<0>" LOC = "F12";
NET "COUNT<1>" LOC = "E12";
NET "COUNT<2>" LOC = "E11";
NET "COUNT<3>" LOC = "F11";
リスト2 ピン固定用のファイル「UPDOWN10.ucf」 →ダウンロードはこちら

 ここまでの準備ができたところで、以下のコマンドを実行し、

# ise & 

ISEを起動してください。起動したら以下の手順でFPGA用の設計データを作成します。

 ISEのメイン画面のメニューから[File]−[New Project...]を選択すると、「New Project Wizard − Create New Project」ダイアログが表示されます。この画面で、(1)HDLファイルが置いてある1つ上のディレクトリを指定(今回は/home/toriを指定)し、(2)HDLファイルが置いてあるディレクトリと同じプロジェクト名を指定してください(画面4)。

プロジェクトの作成 画面4 プロジェクトの作成

 続く「New Project Wizard − Device Properties」画面では、画面5を参考に該当するデバイスを指定してください。

該当するデバイスの指定 画面5 該当するデバイスの指定

 「New Project Wizard − Create New Source」画面では特に何も指定せずに、そのまま[Next]ボタンを押してください。次の「New Project Wizard − Add Existing Sources」画面で、[Add Source]ボタンを押し、先ほど準備したHDLファイルのあるディレクトリを指定して、「UPDOWN10-2.v」と「UPDOWN10.ucf」の2つを選択し、[Open]ボタンを押します(画面6)。

ファイルの選択 画面6 ファイルの選択

 「UPDOWN10-2.v」と「UPDOWN10.ucf」が選択されていることを確認して[Next]ボタンを押すと、最後の画面「New Project Wizard − Project Summary」が表示されますので、内容を確認して[Finish]ボタンを押してください。

 すると、画面7が表示されます。ここで「UPDOWN10-2.v」と「UPDOWN10.ucf」の左側に緑色のチェックマークが表示されていれば無事終了です(画面7)。

緑色のチェックマークが表示される 画面7 緑色のチェックマークが表示される

 ISEのメイン画面に戻り、今度は、画面左の[Process]ツリーにある「Generate Programming File」を右クリックして[Run]を実行します(画面8)(注)。これで、FPGA用の設計データの生成は完了です。

「Generate Programming File」を右クリックして[Run]を実行 画面8 「Generate Programming File」を右クリックして[Run]を実行
※注:ここで、ザイリンクス社にメールを送信するかどうかを問うダイアログが表示されます。今回は表示された「Send To Xilinx」の画面で[Cancel]ボタンを押してください。


Copyright © ITmedia, Inc. All Rights Reserved.