Re: [問題]彈跳開關

看板Electronics作者 (bakerly)時間17年前 (2008/06/06 07:37), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串4/4 (看更多)
※ 引述《mosquito520 ( )》之銘言: : ※ 引述《kb76628 (小伊)》之銘言: : : 小弟我這學期修了一門verilog的實驗課,最近須要用到一個 : : 彈跳開關,功能如下: : : 按下去它可以產生一個正脈衝(即0到1再到0) : : ____ : :  ___| |_____ (畫得不好請見諒) : : 這種開關去電子材料行買要怎麼講呢? : : 它還有分四支腳和二支腳的(有什麼差呢?) : : 和正脈衝及負脈衝彈跳開關 : : 另外開關所產生的脈衝維持1的時間大概有多長呢? : : 這個可以查嗎? : 基本上應該是沒有你要的開關... : 如你所言, : : 按下去它可以產生一個正脈衝(即0到1再到0) : 換言之,這個開關按住之後隔一段固定時間會自動跳開 : ﹝即使你還保持在按住的狀態﹞ : 上面回覆的跟推文提到的應該都不是你要的, : 而且就我所知也沒有這種東西... : ﹝如果有就還請指正﹞ : 簡單說開關就分有段無段兩種... : 無段按下去就是一個狀態,放開則是另外一個狀態。 : 有段按下去會轉態﹝從某個狀態變成另外一個狀態﹞,放開不動作。 : 你要的東西應該要用開關、電阻、電容、樞密特IC或是簡單的邏輯電路來實現... : 至於怎麼實現... : 這就要靠你自己去想了:) 反正你己經在寫verilog了...這東東你就順便寫進去code裡就好啦 這樣你就只需要一個普通的關關 反正一樣會用要一隻腳.. 假設你的開關按下去會從high 變 low 把輸入訊號接到這個module的Din, 再把Dout接到你要的地方 module abc ( Din, Dout, CLK, RESETn); input CLK, RESETn; input Din; output Dout; reg Din_d1, Din_d2; always @ ( negedge RESETn or posedge CLK ) if ( ~RESETn ) Din_d1 <= 1'b1; else Din_d1 <= Din; always @ ( negedge RESETn or posedge CLK) if ( ~RESETn ) Din_d2 <= 1'b1; else Din_d2 <= Din_d1; wire Dout = ~Din_d1 & Din_d2; endmoudle 這樣就會產生一個你要的東東了... 每按一下會產生一個一個clock的正脈衝... 不過你要記得在要加debounce的線路... 要不然你會發現按一下有時會很多個脈衝跑出來 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.66.222.12 ※ 編輯: bakerly 來自: 218.168.130.251 (06/07 09:13)
文章代碼(AID): #18I7Z1wr (Electronics)
討論串 (同標題文章)
文章代碼(AID): #18I7Z1wr (Electronics)