<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 非同于MCU的獨立按鍵消抖動(dòng)

非同于MCU的獨立按鍵消抖動(dòng)

作者: 時(shí)間:2012-03-08 來(lái)源:網(wǎng)絡(luò ) 收藏

reg key_flag_r;

reg [KEY_WIDTH-1:0] key_data_r;

always@(posedge clk or negedge rst_n)

begin

if(!rst_n)

begin

key_flag_r = 1'b0;

key_value = {KEY_WIDTH{1'b0}};

end

else if(cnt == 20'd249999) //Delay_5ms

begin

case(state)

0:

begin

if(key_data != {KEY_WIDTH{1'b1}})

state = 1;

else

state = 0;

end

1:

begin

if(key_data != {KEY_WIDTH{1'b1}})

state = 2;

else

state = 0;

end

2:

begin

key_flag_r = 1'b1;

key_value = key_data; //lock the key_value

state = 3;

end

3:

begin

key_flag_r = 1'b0; //read the key_value

if(key_data == {KEY_WIDTH{1'b1}})

state = 4;

else

state = 3;

end

4:

begin

if(key_data == {KEY_WIDTH{1'b1}})

state = 0;

else

state = 4;

end

endcase

end

end

//---------------------------------------

//Capture the falling endge of the key_flag

reg key_flag_r0,key_flag_r1;

always@(posedge clk or negedge rst_n)

begin

if(!rst_n)

begin

key_flag_r0 = 0;

key_flag_r1 = 0;

end

else

begin

key_flag_r0 = key_flag_r;

key_flag_r1 = key_flag_r0;

end

end

assign key_flag = key_flag_r1 ~key_flag_r0;

endmodule

信號線(xiàn)說(shuō)明如下:

clk

系統最高時(shí)鐘

rst_n

系統復位信號

Key_data

信號(可根據需要配置為n位)

Key_flag

確認信號

Key_vaule

返回值

雷同上述按鍵消的狀態(tài),此模塊可以模擬成一下5個(gè)狀態(tài),見(jiàn)state machine:

(2)循環(huán)n次計數消

同樣,此模塊也是Bingo無(wú)數次修改測試最后成型的代碼,利用了更少的資源,更適用于并行高速FPGA的性能要求。具體代碼實(shí)現過(guò)程請有需要的自行分析,本模塊通過(guò)相關(guān)時(shí)鐘的適配,n次計數來(lái)確認按鍵信號,Verilog代碼如下所示:

/*************************************************

* Module Name : key_scan.v

* Engineer : Crazy Bingo

* Target Device : EP2C8Q208C8

* Tool versions : Quartus II 11.0

* Create Date : 2011-6-25

* Revision : v1.0

* Description :

**************************************************/



關(guān)鍵詞: 抖動(dòng) 按鍵 獨立 MCU 同于

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>