ロータリーエンコーダーらしきものの動作確認

spartan-3eの評価基板には一応ロータリーエンコーダらしきものがついている。
まぁ一応、カウントできるのでロータリーエンコーダなのかな?
んでその動作確認をめんどくさいので、適当なソースでやった。

/*		4bitup_down_conter.v		*/

module	up_down_conter(CLK,EN,UP,Q);
//4bitのアップダウンカウンタ、UP信号がHでUPカウント、Lでダウンカウント
//EN信号がHでカウント
	input	CLK,EN,UP;
	output	[3:0] Q;
	reg		[3:0] Q;
	
	always @(posedge CLK)
		if(EN) begin
			if(UP) begin
				if(Q == 15)
					Q <= 0;
				else
					Q <= Q+1;
			end else begin
				if(Q == 0)
					Q <= 15;
				else
					Q <= Q-1;
			end
		end
endmodule

手抜きにもほどがあるくらい手抜きだけど
んでUCFはこんな感じ。

#PACE: Start of Constraints generated by PACE

#PACE: Start of PACE I/O Pin Assignments
NET "CLK"  LOC = "K18"  | IOSTANDARD = LVTTL | PULLUP;
NET "EN"  LOC = "L13"  | IOSTANDARD = LVTTL | PULLUP;
NET "Q[0]"  LOC = "F12"  | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8;
NET "Q[1]"  LOC = "E12"  | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8;
NET "Q[2]"  LOC = "E11"  | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8;
NET "Q[3]"  LOC = "F11"  | IOSTANDARD = LVTTL | SLEW = SLOW | DRIVE = 8;
NET "UP"  LOC = "L14"  | IOSTANDARD = LVTTL | PULLUP;

#PACE: Start of PACE Area Constraints

#PACE: Start of PACE Prohibit Constraints

#PACE: End of Constraints generated by PACE

とまぁこんな感じでロータリーエンコーダらしきものを回せばLEDでカウントしていく。ENスイッチをOFFにすればカウントしない。
またUPスイッチをONでアップカウント、OFFでダウンカウント。
元はリセットもあったけど、あえてなくした。