--- /dev/null
+/**\r
+* Push switch module\r
+* Module name "push_sw"\r
+* @author Yujiro Kaneko\r
+* @version 0.1\r
+*/\r
+\r
+#define CNT_1ms 19'd500000 // Count value for 1m sec at 50MHz\r
+//#define CNT_1ms 26'd50 // Count value for test\r
+\r
+#define TRUE 1'd1\r
+#define FALSE 1'd0\r
+\r
+declare push_sw {\r
+ input i_sw ; // Button signal input terminal\r
+ func_out fo_sw_enb ; // Button enable signal\r
+}\r
+module push_sw {\r
+ reg r_cnt[19] = 19'd0 ; // Button enable count\r
+ reg r_rise_flag = FALSE ; // Button signal rising flag\r
+ reg r_sw_hld = 0 ; //\r
+ reg r_finish_flag = FALSE ; // "fo_btn_enb" transfer flag\r
+\r
+ r_sw_hld := i_sw ;\r
+\r
+ if( i_sw & ~r_sw_hld ) {\r
+ r_rise_flag := TRUE ;\r
+ } else if( ~i_sw ) {\r
+ r_rise_flag := FALSE ;\r
+ r_finish_flag := FALSE ;\r
+ }\r
+ \r
+ if( r_rise_flag == TRUE ){\r
+ any {\r
+ ( r_cnt == CNT_1ms ) & ( r_finish_flag == FALSE ) : {\r
+ r_finish_flag := TRUE ;\r
+ fo_sw_enb() ;\r
+ }\r
+ else : {\r
+ r_cnt++ ;\r
+ }\r
+ }\r
+ } else {\r
+ r_cnt := 26'd0 ;\r
+ }\r
+}
\ No newline at end of file