ロータリーエンコーダーらしきものの動作確認
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でダウンカウント。
元はリセットもあったけど、あえてなくした。