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秒