Spartan-6 LX9 MicroBoard で未経験者シンプルHDLお試し

お安いFPGAボード Avnet Spartan-6 LX9 MicroBoard を遊びで購入したが、AvnetのチュートリアルFPGA未経験の私にとって良く判らん。

可能な限りシンプルなやり方でFPGAを動かしてみたい。
で、そのやり方。
※ツッコンでください。
※USBのドライバとかは入っている前提。


1. ISE Project Navigatorを起動する
2. File > New Project
  ウィザードで以下を入力
    Name :Test1
    Location :適当\Test1
    Working Directory:Locationと同じ
    Top-level source type::HDL
  Nextクリック

  Project Setting
    Evaluation Development Board :Avnet Spartan-6 LX9 MicroBoard
    ※「Avnet Spartan-6 LX9 MicroBoard」が出てこない場合は、Avnetの
     Support and Downloadページの「EDK 13.2 XBD/IP-XACT files」を
     入れると出てきます。
    Preterred Language :Verilog
  Next
  Finish

3. ソースファイルを作る
  Project > New Source
    Verilog Module
    File name:DECODER.v
  Next
  Define Module
    未入力でOK
  Next
  Finish

DECODER.vのソースは以下。

module DECODER(A,B,C,D,Y);
input A,B,C,D;
output [3:0] Y;
reg [3:0] Y;

always @(A or B or C or D)
begin
	case({A,B,C,D})
		4'b0000:Y=4'b0000;
		4'b0001:Y=4'b0001;
		4'b0010:Y=4'b0010;
		4'b0011:Y=4'b0011;
		4'b0100:Y=4'b0100;
		4'b0101:Y=4'b0101;
		4'b0110:Y=4'b0110;
		4'b0111:Y=4'b0111;
		4'b1000:Y=4'b1000;
		4'b1001:Y=4'b1001;
		4'b1010:Y=4'b1010;
		4'b1011:Y=4'b1011;
		4'b1100:Y=4'b1100;
		4'b1101:Y=4'b1101;
		4'b1110:Y=4'b1110;
		4'b1111:Y=4'b1111;
		default:Y=4'bxxxx;
	endcase
end
endmodule

  次はポート定義的なもの
  Project > New Source
    Implimentation Constraints File
    File name:DECODER.ucf

DECODER.ucfは以下。

NET A LOC = "B3";
NET B LOC = "A3";
NET C LOC = "B4";
NET D LOC = "A4";
NET Y[0] LOC = "P4";
NET Y[1] LOC = "L6";
NET Y[2] LOC = "F5";
NET Y[3] LOC = "C2";

4. 論理合成など
  HierarchyでDECODER.vを選択
  Generate Target DeviceConfigure Target Deviceをダブルクリック
  (で、DECODER.vを再保存してもう一度Generate Target DeviceConfigure Target DeviceしないとFPGAでなぜか動かいない。初回だけ)
  ※2012/9/9 Generate Target Device から Configure Target Device に訂正(日曜プログラマさんからの指摘で訂正)

5. LX9に転送する
  Tools > iMPACT
    ProjectFileが無い的なワーニングダイアログが表示される。
    OK
    左上のBoundary Scanをダブクリ。
    ウィンドウ右で右クリック Add Xilinx Device を選択。
    decoder.bit を選択。
    LX9のチップ画像をクリック。
    LX9をPCに接続(おっきい方のUSBだけでOK)。
    左中央の Program をダブクリ。
    Device Programing Properties ダイアログが表示される。
    OK

6. 動かしてみる
 DipSwitchのOnOffでLEDが光る。


基本的にICEで論理合成して?iMPACTでFPGAにダウンロードする?感じ。
Avnetのチュートリアルでは色々なツールが登場してしまい良く判らない状態になりますが、上記の様なシンプル構成の方が初心者には優しいです。