チャタリング除去回路#2 (独立したスイッチが複数個ある場合)

pp.57-58
非公式訳:

前述したように、一般にタイマーはフリップフロップをたくさん消費する。そのため、ディバウンスすべきスイッチが複数ある場合は、タイマーを複数必要としない方法を見つけることが大変に望ましい。それが、図2.30に示した方法2 (低速クロック方式)の目的である。ここではスイッチを3つ(x1~x3)使う。カウンターでクロックを分周して周期TsclkTdebの低速クロック(sclk)を生成する。この低速クロックを3つのディバウンサーに与える。(回路規模が大きくなりがちな)コンパレーターを使わずに済むよう、カウンターのモジュロは2の冪乗にする。そのためカウンターのMSBがsclkの役割を直接果たす。Nの値はceil(log2(fclk・Tdeb))である。

ディバウンサーそのものは、xの最後の2値を保存する2段のシフトレジスタで構成する。その2値が等しい場合は、その2値を出力レジスタへコピーする。sclkはミリ秒のオーダーであるため、ここでもやはりシンクロナイザーは不要である。また、出力にグリッチが現れないこともつけ加えておく。

この方法の缺点は、カウンターが常時有効であること、そしてカウンターが高速作動することである。ディバウンサーが必要になるのはほんのごく短時間に過ぎないため、クロックゲーティング(セクション2.10)を用いれば省電力化に効果的である(エクササイズ13.16)。