「超入門!FPGAスタータ・キット DE0で始めるVerilog HDL」を見ながらDE0ボードで遊び始めているが、色々な実験をする前にピンアサインを入れてしまおう。毎回Pin Plannerで設定するのも嫌なので、本の途中を飛ばして第17章へ。最上位階層(top module)でないとFPGAのI/Oには接続できないが、ここで最上位階層の枠を決めて対応するピンもPin Plannerで定義してやると、あとはこれを保存しておけば別のデザインを始めるときに呼び出すだけでよい。ついでにLEDやスイッチのテストも兼ねた記述を入れた。

https://gist.github.com/4620609

// terasIC DE0 topmodule skeleton
// onboard I/O 3-button,10-sw,10-LED,4-7SEG
//
module Skeleton(clk,btn,sw,led,hled0,hled1,hled2,hled3,lcd_bl);
  input clk;
	input [2:0] btn;
	input [9:0] sw;
	output [9:0] led;
	output [7:0] hled0;
	output [7:0] hled1;
	output [7:0] hled2;
	output [7:0] hled3;
	output lcd_bl;
	
	assign led=(btn[2]==1'b1) ? sw: ~sw; // button2 press, then invert all LED
	assign hled0[7:0]=(btn[1:0]==2'b11) ? ~sw[7:0]: 8'b11111111; // 7segment digit xxx0
	assign hled1[7:0]=(btn[1:0]==2'b10) ? ~sw[7:0]: 8'b11111111; // 7segment digit xx0x press button 0
	assign hled2[7:0]=(btn[1:0]==2'b01) ? ~sw[7:0]: 8'b11111111; // 7segment digit x0xx press button 1
	assign hled3[7:0]=(btn[1:0]==2'b00) ? ~sw[7:0]: 8'b11111111; // 7segment digit 0xxx press button 1,0
	assign lcd_bl=sw[9]; // optiona LCD backlight
 
endmodule

プッシュボタンは押すと'0'、離した状態で'1'。
スライドスイッチは上の位置で'1'、下の位置で'0'。
緑のLEDは'1'で点灯。
7セグメントLEDはアノードコモンなので'0'で点灯。セグメントは上から時計回りにa,b,c,d,e,f、中央はg、小数点はdp。

 ピンプランナーでの画面。
pinplanner


せっかくピンアサインの対応表を作ったので以下にcsvファイルを置いときます。お手持ちの表計算ソフトで読み込んで下さい。

https://gist.github.com/4620569

動画はこちら。