chattering.v
チャタリング除去回路
スイッチの接点で発生するチャタリングを除去します.
順序回路として設計するときに,最も簡潔かつ有効なチャタリング除去回路です.
パラメータ
パラメータ名 | 既定値 | |
---|---|---|
N | 1 | チャタリングを除去する信号の数 |
入出力ポート
ポート名 | ビット数 | ||
---|---|---|---|
入力 | clk | 1 | グローバルクロック |
入力 | reset | 1 | グローバルリセット |
入力 | in | N | N個のスイッチに接続 |
出力 | out | N | チャタリングを除去した信号を出力 |
動作原理
2^16=65536クロックサイクルごとに1回,入力をフリップフロップにサンプリングする.
クロックの周波数が50MHz(=20ns)なら,約760Hz(=1.3ms)のサンプリング間隔.
チャタリングの期間が1.3ms以下であれば,チャタリングを除去することができる.
ソースコード
module chattering(clk,reset,in,out); parameter N=1; input clk,reset; input [N-1:0]in; output [N-1:0]out; reg [N-1:0]out,buffer; reg [15:0] count; always @(posedge clk or negedge reset) if(!reset) count <= 0; else count <= count + 1; always @(posedge clk) if(count==0) begin buffer <= in; out <= buffer; end endmodule
最終更新時間:2009年04月18日 12時11分43秒