Tweet

DTMF デコーダ

先日,仕事の関係でソフトウェアによる DTMF デコーダの実装を検討した. もっと計算量の少ない方法があったので DTMF はボツにしたのだけど,そのときの検討内容を書いてみる.

DTMF とは

簡単に言えば「プッシュホンの『ピッ,ポッ,パッ』音」である. 2つの正弦波音声を同時に鳴らして 0〜9, *, #, A〜D の 16 種類の符号を送受信する規格である. 詳しくはWikipedia の記事を参照のこと.

安易な発想

安易に思いつく構成としては

  • 中心周波数が DTMF 音のフィルタを 8 本用意
  • それぞれの出力でレベル検出
  • 判定ロジック
    • 音の組み合わせは適切か?
    • 持続時間は適切か など

というあたり.

この構成の場合

  • ディジタルフィルタを 8 本も動かすことになる
  • 周波数が近接しているので,隣接周波数を排除しようとすると鋭い特性のフィルタが必要になる
    → 計算量が大きくなる

という,嫌なことになる.

DTMF デコーダ IC では

世の中には,DTMF の複号をワンチップで行う IC がある. たとえば秋月電子で売ってる ICなど. ググれば他にも同様の IC が見つかると思う.

データシートの PDF には IC の内部構成が書かれていて,大体の IC は

  • 高群のみ・低群のみを分離する2つのバンドパスフィルタ
  • それぞれの出力に周波数カウンタ
  • 判定ロジック

のような構成になっている.

これだと,フィルタは2本で済むし,高群どうし,低群どうしを排除するようなフィルタは必要ない. つまり,個々のフィルタの特性も「安易」なものに比べ緩くすることができる. ソフトウェア実装でもこの構成は有効だと思う.

けど結局は

DTMF では無い別の方法を提案したのだけれどね. DTMF は手段であって目的ではなかったので.


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2011-06-05 (日) 23:37:00 (3154d)