<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è) > 嵌入式系統 > 牛人業(yè)話(huà) > 【從零開(kāi)始走進(jìn)FPGA】非同于MCU的獨立按鍵消抖動(dòng)

【從零開(kāi)始走進(jìn)FPGA】非同于MCU的獨立按鍵消抖動(dòng)

作者: 時(shí)間:2015-03-02 來(lái)源:網(wǎng)絡(luò ) 收藏
編者按: 進(jìn)入電子,無(wú)處不用到按鍵, FPGA中的按鍵消抖動(dòng)更是非同一般,并針對不同情況有相應的對策。

  (2)循環(huán)n次計數消抖動(dòng)

本文引用地址:http://dyxdggzs.com/article/270304.htm

  同樣,此模塊也是Bingo無(wú)數次修改測試最后成型的代碼,利用了更少的資源,更適用于并行高速的性能要求。具體代碼實(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 :

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

  module key_scan

  #(

  parameter KEY_WIDTH = 2

  )

  (

  input clk, //50MHz

  input rst_n,

  input [KEY_WIDTH-1:0] key_data,

  output key_flag,

  output reg [KEY_WIDTH-1:0] key_value

  );

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

  //escape the jitters

  reg [19:0] key_cnt; //scan counter

  reg [KEY_WIDTH-1:0] key_data_r;

  always @(posedge clk or negedge rst_n)

  begin

  if(!rst_n)

  begin

  key_data_r <= {KEY_WIDTH{1'b1}};

  key_cnt <= 0;

  end

  else

  begin

  key_data_r <= key_data; //lock the key value

  if((key_data == key_data_r) && (key_data != {KEY_WIDTH{1'b1}})) //20ms escape jitter

  begin

  if(key_cnt < 20'hfffff)

  key_cnt <= key_cnt + 1'b1;

  end

  else key_cnt <= 0;

  end

  end

  wire cnt_flag = (key_cnt == 20'hffffe) ? 1'b1 : 1'b0;//!!

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

  //sure the key is pressed

  reg key_flag_r;

  always@(posedge clk or negedge rst_n)

  begin

  if(!rst_n)

  begin

  key_flag_r <= 0;

  key_value <= 0;

  end

  else if(cnt_flag)

  begin

  key_flag_r <= 1;

  key_value <= key_data; //locked the data

  end

  else //let go your hand

  key_flag_r <= 0; //lock the key_value

  end

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

  //Capture the rising 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

fpga相關(guān)文章:fpga是什么



上一頁(yè) 1 2 3 下一頁(yè)

關(guān)鍵詞: FPGA 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>