FC2カウンター FPGAの部屋 スイッチのチャタリング
FC2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

スイッチのチャタリング

今日はスイッチのチャタリングを確かめてみようという企画だ。
どんなスイッチにもチャタリングがある。チャタリングは可動する接点が静止する接点にぶつかってバウンドする現象だ。スイッチによってチャタリングの度合いが変わる。
スパルタン3スタータボードのスイッチでどのくらいチャタリングが出るか確かめてみた。
まずはここにあるプロジェクトをダウンロードして、スパルタン3スタータボードのFPGAをコンフィグする。
回路は16ビットのバイナリカウンタのクロックにSW0が入力されている。バイナリカウンタの出力は7セグメントLEDダイナミック点灯回路に入力され、バイナリカウンタの出力が7セグメントLEDで確認できるようになっている。
やってみるとSW0のレバーを上に上げたときだけ1カウントアップするはずが、1以上カウントアップしてしまうのがわかると思う。
このようにチャタリングが発生し、カウンタを狂わしてしまう。
それじゃどうしたらチャタリングの影響を除けるかだが、いろいろ方法はあるが、手っ取り早いのは、チャタリングが持続する間隔より長い周期でサンプリングすることである。
対策を施したプロジェクトをここにおく。やってみるとSW0のレバーを上に上げたときだけ1カウントアップするのがわかると思う。
swdiv.vhdは5ms間隔でイネーブルを出し、そのイネーブルでSW0を入力するフリップフロップをラッチする。
こうすれば、最初のクロックの立ち上がりでチャタリングが発生しているときにSW0の値をサンプルしても、次のクロックの立ち上がりのときにはチャタリングが収束しているので、チャタリングが除去できる。
ちなみにBTN3がリセットである。BTN3を押すと7セグメントLEDをリセットできる。
スイッチ入力をBTN0などにすると押しボタンスイッチのチャタリングを確かめられるが、どうやらSW0などのスライドスイッチよりもチャタリングが少ないようである。
  1. 2006年01月05日 18:51 |
  2. FPGAリテラシー及びチュートリアル
  3. | トラックバック:0
  4. | コメント:2

コメント

接点に流す電流によっても、古い接点でも異なります。
試してみると面白いと思いますよ。
また広義のチャタリングはチャタリング+バウンスですが
本来はチャタリングとバウンスとは意味が異なるとか。
スイッチ屋が言うとりました。

  1. 2010/10/26(火) 10:25:32 |
  2. URL |
  3. hazezi #-
  4. [ 編集 ]

hazeziさん、こんにちは。
了解しました。力の入れ方によってもだいぶ違います。同じ型番のスイッチでも派手にチャタリングが出るのと、オシロでは、全く出ているように見えないスイッチもあります。
  1. 2010/10/26(火) 12:07:00 |
  2. URL |
  3. marsee #f1oWVgn2
  4. [ 編集 ]

コメントの投稿


管理者にだけ表示を許可する

トラックバック URL
http://marsee101.blog.fc2.com/tb.php/117-9d3fca95
この記事にトラックバックする(FC2ブログユーザー)