Programmer's Note

コード読み書きの備忘録。

VerilogでPapilio ProのLEDを光らせる

PapilioはVHDLをベースに語られてるが、個人的にはVerilog文法の方が分かりやすい。

世の中に転がってるサンプルは、そんなにシンプルでもないので、 一番シンプルにボードについているLEDを光らせるまでをやった。 あまりまとまった情報がなかったため、なんども心が折れそうになった。

ボードには一個しかユーザ指定可能なLEDがついていない。(LED1)

環境:Ubuntu/VertualBox/Mac OS X

以下メモ。

1. Xilinx ISE起動

コマンドラインで起動。

   $ ise 

2.「File」->「New Project...」

   Name: led_sample
   Top-level source type: HDL

-> 「Next>」ボタン押す

   Family: Spartan6
   Device: XC6SLX9
   Package: TQG144
   Speed: -2
   Synthesis Tool: XST(VHDL/Verilog)
   Simulator: ISim(VHDL/Verilog)
   Preferred Language: Verilog

-> 「Next>」ボタン押す

-> 「Finish」ボタン押す

3. 「Project」->「New Source...」

-> Verilog Moduleを選択

   File name: led_test

-> 「Next>」ボタン押す

Port Name Direction
CLK input
LED output

-> 「Next>」ボタン押す

-> 「Next>」ボタン押す

以下のテンプレートソースができる。(コメント文は削除)

`timescale 1ns / 1ps

module led_test(
    input CLK,
    output LED1
    );


endmodule

4. ソースの修正

以下のように修正。

module led_test(
    input CLK,
    output LED1
    );
  reg LED1;

   always @(posedge CLK)
      LED1 <= 1;
                                                

endmodule

5. 「Project」->「Add Copy of Source...」

Papilio Proボードのポート設定ファイルが必要。拡張子はucf。 下記からダウンロードし、「Project」->「Add Copy of Source...」で追加する。

6. 「Implement Design」->「Process Properties...」

Implement DesignはMenuになく、左下のプロパティウィンドウにある。 Translate Propertiesの以下をチェックボックをチェックする。

Switch Name Property Name
-aul Allow Unmatched LOC Constraints

-> 「Apply」ボタン押す

7. BPC3011-Papilio_Pro-general.ucf の修正

左上ウィンドウのファイル名をダブルクリックしてISEの中のエディタで以下の2行をコメントアウト。(先頭に"#"を追加することでコメントアウトできる)

#NET TX             LOC="P105" | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST | PULLUP; # TX
#NET FLASH_SO       LOC="P65"  | IOSTANDARD=LVTTL | DRIVE=8 | SLEW=FAST | PULLUP; # FLASH_SO

7. 「Generate Programming File」をダブルクリック

Generate Programming Fileも左下のプロパティウィンドウにある。

完了後、作成したプロジェクトのディレクトリ下に、*.bitファイルができる。 これを Papilio Loaderを使って転送すればOK。

しかし、Virtual PCを古いMac miniで走らせてのUbuntu環境はちと限界だな・・・。

参照URLメモ

以上。