説明

トーン信号回路およびそれを用いる無線受信機

【課題】トーンスケルチ判定を、低い計算コストで、高速に行えるようにする。
【解決手段】受信機の復調信号から、トーン信号成分をアナログLPFで抽出した後、A/D変換(S1)されたデジタル復調信号を入力とし、デジタル信号処理で所望周波数のトーン信号成分の有無を判定するトーン信号回路において、前記デジタル復調信号をGoertzelフィルタに入力し(S5)、その出力の包絡線をピーク検出器で検出し(S6)、微分器で前記包絡線の微分値を求める(S7)。その結果、第1の判定部は、前記微分値が所定の閾値以上を維持しているときには、トーン信号成分が検出されていると判定する(S12−S13−S15)。したがって、トーン信号の検出確認を、乗算を行わずに、加算のみで実現し、低い計算コストで、高速に行うことができる。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、無線受信機においてトーンスケルチ機能を実現する回路等、トーン判定を必要とする装置に用いられるトーン信号回路およびそれを用いる前記無線受信機に関し、特にトーン信号の検出アルゴリズムに関する。
【背景技術】
【0002】
アナログ無線通信においては、電話音声周波数帯域外の0〜300Hzの範囲内で、特定の周波数を持つ正弦波により変調された信号(以下トーン変調信号)を、通信相手の指定などの目的に利用することが一般に行われている。例えば、米国においては、EIA−603により、このトーン変調信号を利用した通信方法(以下CTCSSと呼ぶ)が規定されている。現在標準的に使用されている無線通信機は、CTCSSトーン変調信号を受信開始してから、250msec以内に、受信信号が51本あるトーン信号の内のどれにより変調されているかを正確に判定し、それが受信許可されている無線チャンネルに対応するトーンであれば音声部分の復調信号出力を開始し(スケルチを開く)、受信禁止されている無線チャンネルに対応するトーンであれば復調信号出力を停止する(スケルチを閉じる)といった操作を行う、所謂前記トーンスケルチ機能を備えている。また、前記EIA−603では、復調停止を指示するためのトーン終了信号も規定されており、これを受信した際には、速やかにスケルチを閉じ、復調信号出力を停止する機能も備えている。
【0003】
そして、現在では、無線機内部において、受信機の復調信号をアナログ低域濾波器(前記の0〜300Hzの範囲を抽出する)に通した後、A/D変換し、そのデジタル復調信号をデジタル信号処理することにより、上述のトーンスケルチ機能を実現することが一般的である。このデジタル信号処理のために、マイクロコントローラ(以下MPU)、デジタルシグナルプロセッサ(以下DSP)、および専用デジタル論理回路などが用いられるが、トーン判定の計算方法の周波数精度が悪くなる程、高ビット幅のデジタル信号を扱う必要が生じ、該計算方法が複雑になる程、複雑なプログラムを高速に実行可能な高性能プロセッサーを利用するか、或いは計算時間の長時間化を許容する必要が生じる。これは、トーン判定に必要なデジタル回路ブロックのコストアップ、および必要な消費電力の増大を意味し、特に移動無線機において不利益をもたらし、望ましくない。
【0004】
本発明は、前記のトーンスケルチ処理や、DTMFなどのトーン判定処理を対象とするものであり、A/D変換以前の構成、および出力したトーン信号の使用方法などについては、特に問わない。以下には、入力信号中の特定周波数成分の検出、即ちトーン信号検出を行うための簡便な方法として、3つの従来技術を例示する。トーン信号検出を実現するためには、入力信号s(t)中に、特定の既知の検出対象周波数fを持つトーン信号が存在しているかどうかを判定する必要がある。
【0005】
そこで第1の従来技術は、典型的な手法であり、前記入力信号s(t)を、通過帯域中心周波数をfとする帯域濾波器(以下BPF)に入力し、その出力信号のパワーと入力信号s(t)とのパワーを比較するものである。そして、出力信号のパワーが入力信号s(t)のパワーに比べて、有意な大きさを持っているとトーン信号が存在していると判定し、充分小さいとトーン信号が存在していないと判定する。
【0006】
しかしながら、デジタル信号処理回路で、通常、このようなBPFは、無限インパルス応答(以下、IIR)フィルタとして実装されるが、低消費電力化及び低価格化のために8ビット固定小数点演算により前記IIR BPFを実現した場合には、以下のような問題点が生じる。第1は、フィルタ演算、パワー計算などのために、サンプリング毎に乗算が少なくとも2,3回以上必要となり、乗算器を持たない8ビットMPUでは計算負荷が重くなるとともに、BPFに充分なQ値を持たせるためには、通常8ビット以上のビット幅で数値表現することが必要になると言うことである。第2は、解析的なBPFの伝達関数を8ビット固定小数点IIRにより近似的に表現した場合、量子化誤差が大きくなり、一般的に、近似BPFのフィルタ特性のピーク中心が、正確な値、つまり検出対象周波数fに対して外れた位置に生じると言うことである。トーンスケルチでは、例えば2%以下の誤差でトーン周波数を判別する必要があり、誤判定を避けるためには、BPFのピーク中心を高精度に検出対象のトーン周波数に合わせておく必要がある。このようにBPFを用いる第1の従来技術では、計算負荷が重く、不正確になり易いことから、高ビット幅で、高速なMPUが必要となり、計算に要する消費電力も大きくなる。
【0007】
次に、第2の従来技術は、入力信号s(t)を高速フーリエ変換(以下FFT)によって周波数領域へ写像し、周波数fにおける信号成分が入力信号s(t)のパワーに比べて充分な大きさを持つかどうかを判定することで、トーン信号の検出を行うものである。しかし、FFTは多数回の乗算および加算と、多数の離散周波数を扱うためのバッファを必要とするので、計算負荷が大きいという問題がある。
【0008】
このため、1958年に、Gerald Goertzelによって、離散フーリエ変換(以下DFT)を特定の周波数のみについて行うように変形して、計算負荷を軽くし、必要な計算バッファ量を削減した手法が考案された(Goertzelアルゴリズムと呼ばれる)。前記Goertzelアルゴリズムでは、以下のような伝達関数G(z)で表される、無限大のQを持ったIIR BPF (以下Goertzelフィルタ)を利用する。
【0009】
【数1】

【0010】
:検出対象周波数(共振周波数)、f:サンプリング周波数、N:サンプリング点数である。なおGoertzelフィルタは、第1の従来技術で述べたBPFとは異なり、所謂安定なフィルタとはなっていないことに留意する必要がある。
【0011】
ここで、上式(1)の出力は、複素信号となる。Goertzelアルゴリズムでは、連続したN個のサンプリング点で表される有限時間長の入力信号を式(1)で表されるGoertzelフィルタに入力し、N番目の最終サンプリング点における複素出力信号のノルムを計算することで、入力信号中の検出対象周波数fにおけるフーリエ成分のパワーを見積もる。このため最終サンプリング点以外のサンプリング点については、
【0012】
【数2】

【0013】
といった形の簡略化したフィルタを使用し、計算量を削減することができる。また、必要に応じて、FFTと同様に、窓関数を利用してスペクトル漏れを低下させることもできる。さらにまた、N・f/fが整数となるように、N,fを設定することで、Goertzelフィルタのピーク中心を、検出対象周波数fと正確に一致させ、検出精度を高めることができる。
【0014】
したがって、このGoertzelアルゴリズムを使用する第2の従来技術では、前述のBPFを使用する方法における第2の問題点は解消され、8ビット固定小数点によっても、充分な精度でトーン検出を行うことができる。また、上述のように最終サンプリング点以外では式(2)の形のフィルタを用いて、2cosθによる乗算を、1回のみ行えば出力値が求められる。このため、第1の従来技術における第1の問題点も大幅に緩和される。Goertzelアルゴリズムは、このように少数のトーン信号の検出に適した手法であり、例えばDTMF信号検出などに応用されている(例えば、非特許文献1を参照。ただし、この非特許文献1で言うModified Goertzel Algorithmと、本発明で以下に記述しているModified Goertzelフィルタの意味するものは全く異なる)。
【0015】
しかしながら、このGoertzelアルゴリズムを使用する第2の従来技術にも、以下のような問題点がある。第1に、Goertzelアルゴリズムは、ある有限時間長のサンプル点数Nを持つ入力信号に対して、検出対象周波数fに対応するDFT binについて複素周波数成分値のパワーの演算を行い(すなわち、fを中心に、あるバンド幅Δfの範囲についてパワーを求め)、最終のNサンプル目の時点で結果を得るように構成されている。このため、最終サンプリング点においてのみパワー計算を行うように構成したGoertzelアルゴリズムでは、その計算期間中の入力信号の突発的な変化に対して高速に応答することができず、また連続して信号状態を観測することができない。トーンスケルチでは、トーン信号の開始(雑音からトーン信号への遷移)およびトーン信号の停止を、できるだけ速やかに検出することが求められる。ところが、Goertzelアルゴリズムを、例えば250msecの入力信号に対して適用できるように係数を調整すると、250msec毎にしか検出結果が得られず、高速応答についての要求仕様を満たすことができない。
【0016】
第2に、Goertzelアルゴリズムにより得られる出力値は、入力信号中の検出対象周波数fにおける周波数成分のパワーを、サンプリング期間N/fの間、積算して得られるエネルギー値に比例する。このため、入力トーン信号のパワーが大きな場合、或いはサンプリング期間が長い場合には、エネルギー値が非常に大きくなり、オーバーフローを起こしてしまう。このことは、連続して長時間復調信号を観測することが求められるトーンスケルチに応用する場合に問題となる。
【0017】
第3に、式(2)においても乗算1回、さらに最終サンプリング時にパワーを計算するために乗算3回を必要とし、乗算器を持たない8ビットMPUにとっては計算負荷が軽いとは言えない。
【0018】
一方、上記第2の従来技術の第1及び第2の問題点を解消する手法として、特許文献1およびその改良案と思われる特許文献2において、S.DasとM.McSheaにより述べられているように、連続した入力信号から有限時間長の検出対象信号フレームを抽出するために用いる、サンプリング窓の開始時刻をずらし、かつ前後の信号フレームと重複させてパイプライン処理を行うことで、検出間隔が実質的に短くなるようにする方法(特許文献2のFig.6参照)がある。しかしこのパイプライン処理では、必要な計算量が、重複させた分だけ倍増する。また検出間隔を充分短くしようとすると、必要なパイプライン数が非常に大きくなってしまう。例えば、260msecのサンプリング窓を重ねて20msec間隔でトーン検出する場合には、13本ものパイプラインが必要となり、計算負荷が非常に重くなる。
【0019】
また、第2の従来技術の第2の問題点を解消する手法として、式(1),(2)において、係数にダンピングファクタを乗ずることで、G(z)およびQ(z)の極が単位円の内側に存在するように操作し、無限に連続したトーン信号入力に対しても出力が発散しないようにGoertzelフィルタを安定化する方法がある。しかしこの方法では、特に8ビット固定小数点で表現した場合、修正したGoertzelフィルタのピーク中心を検出対象周波数fと正確に一致させることは困難となり、またフィルタのQ値も低下してしまうので、非常に周波数の近接したトーン信号(最近接の場合で2Hz程度)を区別することが求められるトーンスケルチ判定への応用には適さない。
【0020】
一方、第3の従来技術は、上記第2の従来技術における第1及び第2の問題点を回避するために、Goertzelアルゴリズムを連続時間で運用できるように改良したものであり、Sliding Goertzel DFTと呼ばれる(例えば、非特許文献2参照)。この手法によれば、あるサンプリング点kにおいて、該サンプリング点からNサンプル過去までの有限長の入力信号x[k−(N−1)]…x[k]の検出対象周波数fにおける離散フーリエ変換成分およびそのノルムを計算して出力するという処理を、連続したサンプリング点k,k+1,・・・について、少ない計算量で行うことができる。このSliding Goertzel DFTでは、以下の伝達関数H(z)により表されるSliding Goertzelフィルタを用いる。
【0021】
【数3】

【0022】
ただし、θ、kは式(1)と同様に定義され、f:検出対象周波数(共振周波数)、f:サンプリング周波数、N:サンプリング点数である。
【0023】
すなわち、上式(3)は、前述の式(1)の前段に、N遅延櫛型フィルタを付加した形をしている。ここで、N個以上の連続したサンプリング点の入力信号をSliding Goertzelフィルタに入力すると、N番目のサンプリング点以後の出力y[k]は、有限長の入力信号x[k−(N−1)]・・・x[k]の検出対象周波数fにおける離散フーリエ変換成分に等しくなる。そして、式(3)から理解されるように、Sliding Goertzel DFTは、Goertzelアルゴリズムをサンプリング毎に実行するよりは低い計算コストで、検出対象周波数fについてのDFTを連続して算出できる優れた手法となっている。
【0024】
しかしながら、このSliding Goertzel DFTを使用する第3の従来技術にも、以下のような問題点が存在する。すなわち、Sliding Goertzelフィルタの周波数特性は、式(3)から明らかなように、通常のDFTと同様に、検出対象周波数fを中心としたsinc関数で表される。このことは、検出対象周波数fとサンプリング周波数fとの比f/fが小さくない場合には、フィルタのQが低くなることを意味する。このため、第1の問題としては、Sliding Goertzel DFTを、低消費電力、つまり低いサンプリング周波数で、高い周波数分解能(例えば前記の2Hz)のトーン検出を行う必要があるトーンスケルチ判定に応用した場合、雑音耐性や周波数分解能の仕様を満たすことが困難になるということである。これに対して、前述のように第2の従来技術であるGoertzelフィルタは、Qが非常に高いという特徴を有している。第2の問題としては、Goertzelフィルタと異なり、サンプリング毎に式(3)の分子の計算を行う必要があり、連続で出力が得られるという長所はあるものの、Goertzelフィルタよりは計算負荷が重くなると言うことである。
【先行技術文献】
【特許文献】
【0025】
【特許文献1】米国特許第6950511号明細書
【特許文献2】米国特許公開第2005/0105716号明細書
【非特許文献】
【0026】
【非特許文献1】”Modified Goertzel Algorithm in DTMF Detection Using the TMS320C80” Application Report SPRA066, Chiouguey J. Chen, 1996 Texas Instruments
【非特許文献2】”The Sliding DFT”, Eric Jacobsen and Richard Lyons, IEEE Signal Processing Magazine March 2003, pp.74-79
【発明の概要】
【発明が解決しようとする課題】
【0027】
本発明の目的は、少ない計算量で高精度なトーン検出を行うことができるトーン信号回路およびそれを用いる無線受信機を提供することである。
【課題を解決するための手段】
【0028】
本発明のトーン信号回路は、受信機の復調信号から、トーン信号成分をアナログ低域濾波器で抽出した後、A/D変換されたデジタル復調信号を入力とし、デジタル信号処理で所望周波数のトーン信号成分の有無を判定するトーン信号回路において、前記デジタル復調信号が入力されるGoertzelフィルタと、前記Goertzelフィルタの出力の包絡線を検出する包絡線検出器と、前記包絡線検出器で検出された包絡線の微分値を求める微分器と、前記微分器から出力された微分値が所定の第1の閾値以上を維持しているときには、有意の大きさの前記トーン信号成分が存在するための第1の必要条件を満たすと判定する第1の判定部とを含むことを特徴とする。
【0029】
上記の構成によれば、デジタル信号処理でトーンスケルチ判定などを行うトーン信号回路において、通常は、Goertzelアルゴリズムで計算されるのはパワー値であり、Goertzelフィルタに有限長の入力信号を与え、最終サンプリング点における複素出力信号のノルムを計算し、トーン信号の検出確認を行っているのに対して、本発明では、新規な特徴として、前記Goertzelフィルタの出力信号の包絡線の微分値を観測し、微分値が所定の第1の閾値以上を維持しているときには、前記トーン信号成分が連続して存在しているものと判定する。
【0030】
したがって、包絡線及び微分値の計算には乗算の必要がないので、トーン信号の検出確認を、乗算を行わずに、加算のみで実現し、低い計算コストで行うことができる。また、前記微分値は連続して求めることができるので、スケルチの応答速度を高めることができる。
【0031】
また、本発明のトーン信号回路は、前記デジタル復調信号の入力振幅が既知の値に正規化されている場合に、前記Goertzelフィルタが初期化されてから、所定の時間以内に前記包絡線の値が所定の第2の閾値を超えた場合には、前記トーン信号成分が存在するための第2の必要条件を満たすと判定する第2の判定部をさらに備えることを特徴とする。
【0032】
上記の構成によれば、前記デジタル復調信号の入力振幅が不明である場合にも、前記の包絡線の微分値のみに基いて判定した場合よりも短時間で、トーン信号の検出を行うことができる。すなわち、前記微分値による判定では、例えばターゲット周波数から2Hz以下の近接したトーンを250msec以内に判別することが困難なため、包絡線の大きさを用いた判定が必要になるが、この判定の際に必要となる閾値を決定するために、入力パワーの計算を行うと計算負荷が増加する。そこで、入力振幅を既知の値に正規化しておくことで、振幅の大きさを既定の第2の閾値と比較するだけで、トーン信号成分の有無を判定することができる。
【0033】
好ましくは、上記の入力信号の振幅規格化にあたって、前記Goertzelフィルタへの入力信号を二値化するリミッタを利用する。
【0034】
上記の構成によれば、リミッタを通して矩形波化すると、リミッタの出力信号には入力信号の奇数次高調波成分が現れるが、n倍高調波成分のパワーは基本波の1/nの大きさしか持たない。このため、もし奇数次高調波が検出対象周波数fに一致するような周波数のトーン信号が入力されたとしても、所定時間以内に検出対象周波数fに対応する、所謂DFT binに蓄積されるエネルギーは小さい値に止まり、第2の判定部での第2の判定閾値を超える程包絡線の値が大きくはならず、トーン信号が誤検出されることは無い。一方、検出対象周波数fのトーン信号に加えて、別の周波数のトーン信号を含むような複数トーン入力信号をリミッタで処理すると、検出対象周波数fの成分の検出が困難となってしまう場合があるが、CTCSSトーンスケルチの場合、1つの無線チャンネルで利用されるトーン信号の数は1つであるので、そのような問題が生じることは無い。
【0035】
さらにまた、本発明のトーン信号回路では、前記Goertzelフィルタへの入力信号のサンプリング周波数は、検出すべきトーン信号の周波数の3倍または6倍の周波数であることを特徴とする。
【0036】
上記の構成によれば、Goertzelフィルタの伝達関数が、整数係数の簡単な伝達関数となり、乗算を必要とせず、加算のみで出力値を計算可能となり、乗算器の無い小ビット幅のMPUでも、高速且つ正確に、低消費電力でフィルタ処理を実行することができるようになる。
【0037】
また、本発明のトーン信号回路では、前記Goertzelフィルタの入力段には、フィルタ出力が、常に非負値となるように、入力デジタル復調信号及びフィルタ状態変数の符号反転を行うバッファを備えることを特徴とする。
【0038】
上記の構成によれば、該フィルタ出力の極大ピークの間隔を1/2に狭め、出力信号の包絡線を滑らかにし、該包絡線の微分値に含まれる雑音を低減することができる。
【0039】
さらにまた、本発明のトーン信号回路では、前記Goertzelフィルタが、チョップトリガ入力により指示されたタイミングで内部状態変数のスケーリングを行うことを特徴とする(以下ではこの操作をチョッピングと呼ぶ)。
【0040】
上記の構成によれば、長時間連続してトーン信号を入力した際に起きるオーバーフローを避けるために、チョップトリガをアサートした時に、状態変数と同じ比率で出力値がスケールダウンされる。
【0041】
したがって、適切なタイミングで前記チョップトリガをアサートすることで、オーバーフローを起こさずに出力値の包絡線の観測を行うことが可能になる。なお、このチョッピング・スケーリングおよび前記の状態変数を含めた符号反転による出力の正値化を行うために、本発明のGoertzelフィルタは、従来のGoertzelフィルタを変形したものとなり、以下、Modified Goertzelフィルタと言う。
【0042】
また、本発明のトーン信号回路は、前記微分値が所定の第3の閾値以下まで低下するとトーン信号が終了したものと判断して、前記Modified Goertzelフィルタを初期化して次のトーン検出手続きを始める第3の判定部をさらに備えることを特徴とする。
【0043】
上記の構成によれば、トーン終了判定を行うことができる。
【0044】
さらにまた、本発明のトーン信号回路では、前記A/D変換を、前記Modified Goertzelフィルタへの入力信号のサンプリング周波数のN倍(N>2)以上の周波数で行い、該Modified Goertzelフィルタへは1/Nのダウンサンプリングが行われた入力信号を与え、前記ダウンサンプリングに伴うエイリアシングを避けるために、周波数特性に少数のノッチを持つ低次FIRフィルタから成るDecimationフィルタを利用してもよい。
【0045】
このDecimationフィルタの周波数特性のノッチ位置が、検出対象周波数fに対してエイリアシングを起こす周波数と正確に一致していない場合でも、通常、充分なアンチエイリアシング効果が得られる。従って、通常このDecimationフィルタは少数の2の累乗に近い係数を持つFIRフィルタとして構成することが可能であり、乗算を行わずに、少数回の加算とシフト演算によりフィルタ処理を行うことができる。
【0046】
さらにまた、本発明の無線受信機は、前記のトーン信号回路をトーンスケルチに用いることを特徴とする。
【発明の効果】
【0047】
本発明のトーン信号回路およびそれを用いる無線受信機は、以上のように、デジタル信号処理でトーンスケルチ判定などを行うトーン信号回路において、通常は、Goertzelアルゴリズムで計算されるのはパワー値であるのに対して、本発明では、新規な特徴として、Modified Goertzelフィルタとして、その出力信号の包絡線の微分値を観測し、微分値が所定の閾値以上を維持しているときには、前記トーン信号成分が連続して検出されていると判定する。
【0048】
それゆえ、トーン信号の開始及び終了の検出確認を、乗算を行わずに、加算のみで実現し、低い計算コストで、高速に行うことができる。これは特に移動無線機の低消費電力化、回路の簡単化、低コスト化のために有効である。
【図面の簡単な説明】
【0049】
【図1】本発明の実施の一形態に係るトーンスケルチ判定回路における判定アルゴリズムを説明するためのフローチャートである。
【図2】本発明でGoertzelフィルタとして用いるModified Goertzelフィルタの機能構成を示すブロック図である。
【図3】図4〜図7で示すシミュレーションに使用した入力信号の一部の期間について示すグラフである。
【図4】図1で示すトーンスケルチ判定アルゴリズムによる本件発明者のシミュレーション結果を示すグラフであり、前記Modified Goertzelフィルタの出力信号の時間変化の一部をプロットしたものである。
【図5】前記Modified Goertzelフィルタの出力信号を包絡線検波した結果を示すグラフであり、検出対象周波数に対して入力トーン周波数が一致している状態を示す。
【図6】前記の包絡線信号を微分し、次に低域濾波処理した結果を示すグラフである。
【図7】前記Modified Goertzelフィルタの出力信号を包絡線検波した結果を示すグラフであり、検出対象周波数に対して入力トーン周波数が2Hz離れている状態を示す。
【図8】本発明の実施の他の形態に係るトーンスケルチ判定回路における判定アルゴリズムを説明するためのフローチャートである。
【発明を実施するための形態】
【0050】
(実施の形態1)
図1は、本発明の実施の一形態に係るトーンスケルチ判定回路における判定アルゴリズムを説明するためのフローチャートである。この図1において、記入されているフィルタの次数や、サンプリング周波数は、検出対象周波数fを、CTCSSに規定されるトーン周波数の内で、隣接トーンとのチャンネル間隔が最も狭く検出が困難となる67Hzに設定した場合の具体例を示すものである。すなわち、67Hzのトーン周波数の場合、最近接トーンの周波数は69.3Hzとなっており、このためトーン信号を約2Hz以下の誤差で、業界の標準的水準として、受信開始から前記250msec以内に検出できることが求められる。一方、前記CTCSSの規定では、トーン周波数が上がる程、トーンの間隔が広がり、例えば203.5Hzのトーンに対しては隣接トーンがほぼ10Hz離れており、より容易にトーン検出を行うことができる。
【0051】
他の検出対象周波数について、この図1のアルゴリズムを適用する場合は、後述するように、Modified Goertzelフィルタのサンプリング周波数、A/Dコンバータのサンプリング周波数、およびDecimationフィルタの次数や低域濾波器のフィルタ定数を、検出対象周波数fに応じて変更する必要がある。
【0052】
図1の実際のアルゴリズムを説明する前に、本発明の考え方について説明する。本発明は、デジタル復調信号から、デジタル信号処理でトーン検出を行うにあたって、できるだけ計算量を低減するようにしたものである。そして、基本的に、式(2)で表されるGoertzelフィルタの共振器部分を利用したものとなっている。
【0053】
先ず、前記式(2)で表されるGoertzelフィルタに、その共振周波数θに等しい周波数を持つトーン信号、x[n]=αsin(θn)を入力した時の出力信号q[n]を計算すると、
【0054】
【数4】

【0055】
となる。ここで、n≫1である場合には、
【0056】
【数5】

【0057】
と近似される。したがって、上式(5)から、出力信号の包絡線は、サンプリング時間nT(ただし、Tはサンプリング周期)に対して線形に増加する関数となることが理解される。
【0058】
次に、式(2)で表されるGoertzelフィルタに、その共振周波数θと異なる周波数ωを持つトーン信号、x[n]=αsin(ωn)を入力した時の出力信号q[n]を計算すると、
【0059】
【数6】

【0060】
となる。したがって、上式(6)から、出力信号は、(ω+θ)/2の周波数で振動し、その包絡線は、(ω−θ)/2の周波数で振動し(すなわち、包絡線の絶対値はω−θの周波数で振動する)、その振幅は離調周波数ω−θに反比例することが理解される。
【0061】
したがって、上式(5)および(6)から、Goertzelフィルタから出力される信号の包絡線の微分値および振幅を観測することで、入力トーン信号の周波数ω(=f)と、検出ターゲット周波数θ(=f)との差である離調周波数ω−θを、見積り可能であることが理解される。本発明は、このような本件発明者の知見に基いて、後述するようなトーンスケルチ判定アルゴリズムを構成している。
【0062】
次に、本発明で前記Goertzelフィルタとして用いるModified Goertzelフィルタの機能構成を、図2に示す。図2のブロック構成は、基本的な(前記式(2)に対応した)Goertzelフィルタ共振器に、前記の本件発明者の知見に基づく修正を施して構成したアルゴリズムを模式的に示すものである。ただし、本発明のフィルタ処理アルゴリズムは、この図2で示す機能ブロックにより完全には説明することはできない。その充分説明されていない点については、後に数式で定義する。
【0063】
図2のModified Goertzelフィルタは、入力信号x[k]に、適宜符号反転を行うバッファ1と、出力信号q[k]を1サンプリング周期だけ遅延する2段の遅延バッファ2,3と、それらの遅延バッファ2,3の出力に係数1,−1をそれぞれ乗算(この場合はバッファおよび符号反転バッファとして機能)するバッファ4,5と、バッファ5の入力または出力側(図2では出力側)に介在されるバッファ8と、バッファ4,8の出力を加算する加算器6と、加算器6の出力を前記バッファ1の出力に加算する加算器7と、加算器7の出力に介在され、前記出力信号q[k]を導出するバッファ9とを備えて構成される。そして、バッファ1,4,5が、基本的なModified Goertzelフィルタに対する追加構成であり、バッファ4,5が、ラッチしている状態変数の所定の比率によるスケーリング(チョッピング)を可能にする機能を備える点が主な修正点である。
【0064】
以下に、前記の本件発明者の知見に基づく修正点を詳しく説明する。先ず第1の特徴として、θ=2πfとした時、fが有理数であり、尚且つcosθが有理数となるようなfを積極的に利用している。そのようなfは、f[0,1/2]の範囲では、f={0,1/6,1/3,1/2}しか存在しない。この内、0はサンプリング周波数fを無限大に設定することを、1/2は検出対象周波数fをナイキスト周波数に設定することを意味する(式(1)を参照)ので、1/6と1/3とのみが有用な、fとfとの比となる。その内、エイリアシングフィルタの要求仕様を緩和するためには、1/6の比に設定する方がより望ましい。このため図1においては、f=6fに設定し(67Hz×6=402Hz)、さらにサンプリング点数Nを6の倍数に設定している。この時、cosθ=1/2となり、式(2)は、
【0065】
【数7】

【0066】
のような、整数係数の簡単な伝達関数となる。従って図2中のバッファ4,5におけるフィルタ係数は、それぞれC1=1,C2=−1となっている。なお1/3の比に設定した場合にはcosθ=−1/2となり、フィルタ係数は、それぞれC1=−1,C2=−1となる。
【0067】
こうして、本実施の形態のModified Goertzelフィルタでは、第1の特徴によって、乗算を必要とせず、加算のみで出力値を計算可能となり、乗算器の無い8ビットMPUでも、高速、低消費電力でフィルタ処理を実行することができるようになる。なお上記のModified Goertzelフィルタを8ビットMPU用に実装した場合でも、加算は16ビット精度で行っており、フィルタ出力は16ビット固定小数点値となる。更に、式(7)の形のフィルタを用いることで、固定小数点演算に利用するビット幅に依らず、フィルタの量子化誤差が0に抑えられることが理解される。このため、8ビット固定小数点による粗い表現を用いた場合でも、本実施の形態のModified Goertzelフィルタによって、量子化雑音が付加されることは無い。
【0068】
次に、第2の特徴として、フィルタ出力q[k]が、常に非負値となるように、必要に応じて符号反転を行っている。さらに、第3の特徴として、フィルタ出力値がオーバーフローを起こさないように、出力のチョッピングを行っている。これらの第2および第3の特徴については、図2のブロックダイアグラムのみにより充分に説明することは困難であるので、以下に式を用いて説明する。
【0069】
先ず、図1で使用されているModified Goertzelフィルタは、入力信号をx[k]、チョップトリガ入力信号をc[k]、出力信号をq[k]とすると、下式で表すことができる。kはサンプリング点の番号を表す整数変数である。
【0070】
【数8】

【0071】
ここで、チョップトリガ入力c[k]は、論理値0,1のみを取る2進信号であり、c[k]の値によって、C1,C2は、
【0072】
【数9】

【0073】
と定義される。C1,C2はそれぞれ図2のバッファ4,5のゲインに対応する。なお、式(9)の右辺はcosθ=−1/2となるように設定し、チョッピングによるスケーリングの比率を1/2とした場合の数値であり、これ以外の条件の場合にも同様にしてC1,C2を定義することができる。
【0074】
また、S1,S2は、−1と1のみを取る符号反転用の変数であり、S1は、
【0075】
【数10】

【0076】
と定義される。ただしここでsgnは符号関数であり、xが0以上の場合にsgn[x]=1、xが負の場合にsgn[x]=−1を与える。つまり、q[k]は、常に正値となる。更にS2は、
【0077】
【数11】

【0078】
と定義される。また、S3は、初期値が1の変数であり、S1の値によって、
【0079】
【数12】

【0080】
と定義される。
【0081】
そして、上式(8)のように定義したModified Goertzelフィルタは、フィルタ出力q[k]が常に非負値となるようにS1を用いて必要に応じて符号反転を行っており、しかもフィルタ出力q[k]の負値側が滑らかに連続した形で正値側に折り返されるように、S2,S3を用いて、状態変数、入力変数の符号反転も行っている。このような符号反転の操作によって、フィルタ出力q[k]の極大値ピークの間隔を1/2に狭め、出力信号の包絡線をより滑らかにし、該包絡線の微分値に含まれる雑音を低減することができる。また、必要な場合にはフィルタ計算に無符号2進数を用いるようにすることで、フィルタ出力値の表現可能範囲を、例えば符号付16ビット値[−32768,32767]ではなく、無符号16ビット値[0,65535]とし、出力信号の包絡線のダイナミックレンジを、[0,32767]から[0,65535]に広げることができる。さらにまた、フィルタ出力値がオーバーフローを起こさないように、C1,C2を用いて出力のチョッピングを行っており、適切なタイミングでチョップトリガ信号をアサートすることで、オーバーフロー抑制制御を行うことができる。
【0082】
ところで、このような出力のチョッピングを行うと、オーバーフローを起こさずに出力値の包絡線の観測を行うことが可能になるが、例えば式(5)に対応する、Modified Goertzelフィルタから出力される信号の包絡線は、チョッピングにより鋸波状の形に変形される。しかしながら、後述するように、出力信号の包絡線の微分を行う際に、チョッピングにより微分値が不連続とならないようにすることは容易である。したがって、前記チョッピングによるオーバーフロー抑制制御を行っても、本実施の形態のModified Goertzelフィルタの出力信号の包絡線の微分値を観測すれば、前記式(5),(6)に基いて、次のようにして、入力トーン信号の周波数fが検出対象周波数fに合致するかどうかの判定を連続して行えることが理解される。
【0083】
すなわち、第1の判定条件では、Modified Goertzelフィルタを初期化してから、所定の時間以内に包絡線の微分値が0以下まで減衰した場合には、f≠fであると判定し、所定の時間の間微分値が第1の正の閾値以上の値を保ち続けた場合には、更に第2の判定条件を適用する。次に、第2の判定条件では、入力信号x[k]の振幅(式(4),(5),(6)のα)が、或る一定値にリミッタ等により規格化されているという前提の下で、Modified Goertzelフィルタを初期化した時点から、所定の時間以内に、包絡線の値が或る第2の閾値を超えた場合には、f=fであり、超えない場合には、f≠fであると判定する。
【0084】
なお、Modified Goertzelフィルタに雑音信号のみを入力した場合には、包絡線が乱雑に変化し、その微分値が0以下となる点が数多く発生する。微分値が0以下となると図1のフローチャートに従ってModified Goertzelフィルタが初期化される。また雑音中の、検出対象周波数fにおける周波数成分のパワーは小さいので、通常、初期化された時点から短時間の間に積算されるエネルギーは僅かな量に止まり、包絡線が第1の閾値を超えるほど充分な大きさの値まで成長することは無い。従って雑音信号入力時に上述の第1および第2の判定条件によって、トーン信号の誤検出が起こることは無い。
【0085】
一方、前述したように、トーンスケルチでは、トーン信号の終了も、可能な限り速やかに判定することが求められるが、これも以下に説明するように、Modified Goertzelフィルタの出力値の包絡線を観測することによって、実現することができる。先ず、一般的に、或る周波数のトーン信号を用いた通信を終了する際には、トーン終了信号を送信する。そのトーン終了信号としては、(i)トーン終了信号送信開始直前まで送信されていたトーン信号の位相を、トーン信号の振幅が中心値、つまりDC値に等しくなった瞬間にπだけ遅延させた信号と、(ii)トーンの存在しない信号(無変調信号)とのいずれかを、200msecの間送信し続けるように規定されている。(i)は、トーン信号のDC値が0である場合には、トーン終了信号送信開始の瞬間に、トーン信号の符号を反転させると言い換えても良い。更に不測の事態として、(iii)突然受信波が中断して雑音のみになる場合があり、トーンスケルチ判定回路は、(i)(ii)(iii)の全ての場合に速やかに終了信号を認識可能なものでなければならない。(ii)(iii)の場合には、トーン終了により雑音信号がModified Goertzelフィルタに入力されることになり、上述のように包絡線の微分値が負となるサンプリング点が頻繁に発生する。
【0086】
次に、(i)の方法によって与えられるトーン終了信号について終了判定を行う例として、一般性を失うことなく、
【0087】
【数13】

【0088】
なるサンプリング点Mにおいてトーンが終了され、入力信号x[n]が、
【0089】
【数14】

【0090】
によって与えられる場合を考える。ただし、
【0091】
【数15】

【0092】
である。
【0093】
ここで、入力トーン信号の周波数ωが、Modified Goertzelフィルタの共振周波数θに等しい場合について、式(14)で与えられる入力信号x[n]を、式(2)で与えられるGoertzelフィルタの共振器に入力した時の出力信号q[n]を、式(5)を利用して計算すると、下式が得られる。
【0094】
【数16】

【0095】
上式(16)から、サンプリング点Mの前後で、出力信号の包絡線の微分値が、α/2sinθから、−α/2sinθへと、不連続且つ急激に変化することが理解される。なお、入力トーン信号の周波数ωが、Modified Goertzelフィルタの共振周波数θと正確には一致しない場合にも、このような出力信号の包絡線の微分値の不連続な変化が生じる。したがって、(i)の場合には、トーン終了時に出力包絡線の微分値の急激な減少が観測される。以上のことから、以下のようなトーン信号終了判定条件を与えることができる。
【0096】
すなわち、第3の判定条件では、包絡線の微分値が、或る第3の閾値以下まで低下した時点でトーン信号が終了したものと判断し、Modified Goertzelフィルタを初期化して次のトーン検出手続きを始めることができる。同時に、包絡線の微分値が或る第3の閾値以上の状態を保ち続けているかどうかを観測することで、f=fを満たすトーン信号が連続して入力されていることを検出確認することができる。
【0097】
図1に示した本実施の形態によるトーンスケルチ判定アルゴリズムは、基本的に、上述の第1〜第3の判定基準に従ってスケルチの開閉が行われるように構成したものである。図1のフローチャートを構成している、Modified Goertzelフィルタ以外のブロックについて、以下に簡単に説明する。
【0098】
先ず、前述のように、受信機の復調信号がアナログ低域濾波処理された後、ステップS1では、A/D変換器においてデジタル信号に変換され、トーンスケルチ回路に対する入力信号を与える。この際、離散時間信号化に使用するサンプリング周波数は、前記アナログ低域濾波器の遮断周波数が低く、次数が高いほど、低く設定することができるが、通常は低コスト化・低消費電力化のために低次のアナログ低域濾波器が使用されることが多く、該サンプリング周波数をある程度高い周波数に設定せざるを得ない。図1の例では、804Hz以上の周波数成分が前記のアナログ低域濾波処理によって充分に除去されていると想定し、1608Hzのサンプリング周波数によりアナログ入力信号を8ビットのデジタル信号に変換している。したがって、該デジタル信号には300Hz以上の電話音声周波数帯域内に存在する、トーン信号以外の周波数成分も含まれることになる。
【0099】
一方、前述のように、67Hzのトーン信号を検出するModified Goertzelフィルタでは、検出対象周波数の6倍の周波数の402Hzでサンプリングを行う必要があるので、ステップS3で、1608Hzから402Hzへ、1/4ダウンサンプリングが行われている。その際に検出対象周波数に折り返される300Hz以上804Hz以下の周波数成分によるエイリアシングを避けるために、ステップS2のDecimationフィルタが必要となる。Modified Goertzelフィルタ自体は非常に高いQを持つBPFとみなせるため、ここで用いるDecimationフィルタには、阻止帯域を持った一般的な低域濾波器ではなく、単にエイリアシング周波数点にのみノッチを持つ簡単なノッチフィルタを利用することができる。図1の例で言えば、300Hz以上804Hz以下の周波数帯域において、エイリアシングのために、Modified Goertzelフィルタで誤検出される可能性がある周波数点は、335(=402−67)Hz、469(=402+67)Hz、737(=402×2−67)Hzであり、この3点にのみノッチを持つ低次FIRフィルタとして、前記Decimationフィルタを構成すればよい。
【0100】
更に、このFIRフィルタの係数を簡単な2に近い値(nは自然数)に丸めても、殆どの場合問題なく利用することができる。何故なら、8ビット固定小数点で表現された信号は、大振幅の信号であっても、1/100程度に減衰させられると、値が0に切り捨てられるので、所望の周波数点においてある程度抑圧されていれば、Decimationフィルタとして充分な効果が得られるからである。したがって、通常、このDecimationフィルタ処理においては、乗算を行う必要はなく、シフト数回と加算のみの軽い計算によって構成することができる。
【0101】
なお、検出対象周波数fが充分高く、アナログ低域濾波器の遮断周波数が充分低い場合には、ステップS2のDecimationフィルタおよびステップS3のダウンサンプリングは不要となる。例えば、検出対象周波数fが250.3Hzである場合、Modified Goertzelフィルタのサンプリング周波数は、その6倍の1501.8Hzとなり、アナログ低域濾波器によって入力信号中の750.9Hz以上の周波数成分が充分低減されている場合には、Decimationフィルタを通さずに直接サンプリングした入力信号をModified Goertzelフィルタに与えることが可能となり、計算負荷を軽くすることができる。
【0102】
続いて、ステップS4では、リミッタ処理が行われる。上述の第1の判定条件を用いると、入力信号の振幅に依らず、包絡線の微分値が0となった時点で、f≠fであると判定できる。しかしながら、前述のように、CTCSSトーンスケルチにおいて、最も困難な場合には、例えば67Hzトーンと69.3Hzトーンとを250msec以内に区別しなければならず、これを第1の判定条件のみで行うことは困難である。例えば、ターゲット周波数fから2Hz離調したトーン信号を入力した場合を考えると、式(6)から、Modified Goertzelフィルタを初期化した時点から包絡線の微分値が0となるまでの時間は250msecと見積もられる。
【0103】
したがって、これよりも短い時間で、2Hz以下の精度で正しくトーン信号を検出するためには、第1の判定条件だけではなく、第2の判定条件も併用する必要がある。ところが、第2の判定条件を適用するためには、式(5),(6)における入力信号の振幅α、或いは入力パワーが既知でなければならないが、入力パワーの計算を行うと計算コストが増加する。これを避けるために、図1では、入力信号の正規化を行っており、そのために最も簡単な方法として、このステップS4のリミッタを用いている。
【0104】
リミッタを通して矩形波化すると、出力信号には入力信号の奇数次高調波成分が現れるが、n倍高調波成分のパワーは基本波の1/nの大きさしか持たない。このため、もし奇数次高調波が検出対象周波数fに一致するような周波数のトーン信号が入力されたとしても、所定時間以内に第2の判定条件の閾値を超える程包絡線の値が大きくはならず、トーン信号が誤検出されることは無い。また、検出対象周波数fから大きく離調したトーン信号を主成分とする入力信号をModified Goertzelフィルタに与えた場合には、式(6)に従って短時間内に包絡線の微分値が0となるので、第1の判定条件によって、f≠fであると判断できる。さらにまた、検出対象周波数fのトーン信号以外に、別の周波数のトーン信号を主たる成分として含むような入力信号を、リミッタで処理すると、検出対象周波数fの成分の検出が困難となってしまう場合があるが、無線通信機のCTCSSトーンを用いた交信においては、通常、2波以上のトーン信号が同時に入力されることは無いので、本実施の形態のトーンスケルチ判定アルゴリズムにおいて、リミッタ処理によって問題が生じることは無い。
【0105】
その後、ステップS5で、式(8)で示されるようなModified Goertzelフィルタ処理を行うと、その出力q[k]は、前述のように(ω+θ)/2の周波数で振動する波形を持つ。そこで、ステップS6で、この出力信号q[k]の局所的極大値(ピーク値)を、次のピーク値が生じるまでの包絡線検出器の出力値p[k]として、ホールドし続けることで、階段状の包絡線を得ることができる。ここで、或るサンプリング点kでの出力値q[k]が極大値であるかどうかは、単に前後のサンプリング値q[k−1]、q[k+1]との比較によって判定することができる。
【0106】
その後、ステップS7に移り、微分器で微分処理が行われる。これは、実際には差分処理で実現され、その出力値dp[k]は、単に入力の差分を取ることによって、dp[k]=p[k]−p[k−1]として計算される。f=fであるトーン信号が入力されている場合には、後述のステップS11のチョップトリガに応答して、オーバーフロー回避のためにModified Goertzelフィルタの出力は繰り返しチョッピングされ、包絡線p[k]は鋸波状に変化する。その際、チョッピングが行われたサンプリング点の前後で微分器の出力値が不連続となるのを避けるために、図1の微分器はチョップトリガがアサートされると、その時点の直後に生じたピーク値をp[k]、直前のピーク値をp[k−1]として、ステップS5において述べたModified Goertzelフィルタのチョッピング時に用いられているスケール値と同じ値でスケールダウンを行う。例えば、式(9)ではスケール値を1/2としており、これに対応して
【0107】
【数17】

【0108】
を出力するようにプログラムされている。これによって、チョッピングの影響を避け、トーン信号入力中に、常時ほぼ一定の微分値を得ることができる。
【0109】
前記ステップS6の包絡線p[k]が階段状に変化するため、ステップS9の微分器の出力dp[k]は連続した零値を含むパルス列となっている。これを連続して滑らかに変化する微分値に変換し、また雑音の影響を低減するために、ステップS8では、dp[k]を低域濾波器に入力し、連続した微分値y[k]を出力させている。この低域濾波器は、2で表される簡単な係数を持つ1次のIIRフィルタとして構成することができる。このため、乗算を行う必要は無く、シフト数回と加算のみの軽い計算によって実現できる。
【0110】
続いて、ステップS10では、スケルチの状態を判定し、閉状態となっている場合にはステップS12へ遷移し、第1の判定部として、第1の判定条件に従い、その連続した微分値y[k]が或る第1の閾値以上の状態を所定時間以上維持しているか否かが判断される。維持している場合にはステップS13へ遷移し、第2の判定条件に従い、包絡線の大きさが第2の閾値以上となっているか否かが判断される。維持されていない場合にはステップS14でスケルチが閉状態のままに保たれ、Modified Goertzelフィルタが初期化され、トーン検出処理がリスタートされる。前記ステップS13での第2の判定条件による判定の結果、第2の閾値以上となっているとステップS15でスケルチを開き、未満であると前記ステップS14に遷移してスケルチが閉状態のままに保たれるとともに、Modified Goertzelフィルタが初期化され、トーン検出処理がリスタートされる。
【0111】
これに対して、前記ステップS10で、スケルチが開状態となっている場合にはステップ11へ遷移し、第4の判定部として、包絡線のチョッピング判定が行われる。第4の判定部における判定条件としては、包絡線の大きさが第4の閾値以上であるか否か、或いは、前回のチョップトリガアサート時点から所定の時間が経過したか否か、の何れかを用いることができる。そして、第4の閾値以上である場合、或いは前記所定時間が経過した場合には、前記ステップS5におけるModified Goertzelフィルタにおいて、フィルタ出力値q[k]がオーバーフローを起こさないように、チョップトリガがアサートされる。更にステップS11からステップS16へ遷移し、第3の判定部として、前記第3の判定条件に従い、連続した微分値y[k]が或る第3の閾値以下まで低下したか否かが判断される。低下した場合にはトーン信号が終了したものと判断して、ステップS17でスケルチを閉じるとともに、Modified Goertzelフィルタを初期化して次のトーン検出手続きを始める。ステップS16で、微分値y[k]が第3の閾値よりも大きな値であった場合には、ステップS18でスケルチは開状態に保たれる。
【0112】
以上の説明では、検出対象周波数fを67Hzとし、8ビットMPUを実装プラットホームとした場合のトーンスケルチ判定プログラムを例に挙げたが、本実施の形態を他の検出対象周波数について、8ビットMPU以外のMPU、DSP用プログラムとして、或いはFPGAを利用した論理回路として実装することも同様に可能である。なお、説明の簡略化のため省略したが、入力信号x[k]のDC値が0ではない場合には、必要に応じて図1のサンプリングの直後に、高域濾波器を挿入してもよい。
【0113】
図4〜図7に、上述のような本実施の形態によるトーンスケルチ判定アルゴリズムをコード化したプログラムを実行させた本件発明者のシミュレーション結果を示す。シミュレーションには、図3で示す入力トーン信号を使用している。図3および図4では、シミュレーション期間における特徴的な一部の期間についてのみ示している。
【0114】
図3で示す入力信号x[k]は、一定振幅のf=67Hzの正弦波に、白色ガウス雑音を加算した信号を、1608Hzのサンプリング周波数で8ビット値としてデジタル化したものである。このシミュレーション例では、シミュレーション開始から0.25秒までの間は、雑音信号だけを入力信号として与え、次に6.23秒まではこの図3のような雑音を付加したトーン信号を入力し、6.23秒の時点でトーン信号の位相をπだけ遅延させて、上記(i)の方法によってトーン終了信号を入力している。
【0115】
そして、図4は、そのような入力信号x[k]に対する本実施の形態の67Hz用Modified Goertzelフィルタ(ステップS5)の出力信号q[k]の時間変化の一部をプロットしたものである。(ii)で説明したように、Modified Goertzelフィルタの出力q[k]は、負値の部分が正値に符号反転されているので、出力信号q[k]のピークの周期は、式(5)で与えられる値の半分となり、出力信号q[k]は、2f=134Hzの周波数で振動しているように見える。また、式(5)で与えられるように、出力信号q[k]の極大値は、ほぼ一定の正の傾きで増加し続けている。
【0116】
既に説明したように、参照符号α1で示す出力信号q[k]の包絡線は、チョッピングによって鋸波状に変化しており、長期間連続してトーン信号を入力した場合でも、オーバーフローを起こさずに、連続してフィルタ処理を行うことが可能となっていることが理解される。そして、前述のように、約6.23秒の時点で入力トーン信号の位相がπだけ遅延し、そのため式(16)に従って、約6.23秒のサンプリング点の前後で、出力信号q[k]の包絡線の傾きが、参照符号α1からα2で示すように、絶対値は同じで、符号が正から負の値に急激に変化している。
【0117】
その後6.26秒の時点で出力値がほぼ0に急激に減衰している理由は、出力包絡線p[k]の微分値dp[k]が0以下に変化したことに応答して、この時点で図1の低域濾波器の出力値y[k]が設定した第3の閾値以下となり、ステップS16においてModified Goertzelフィルタに、図1に示されている初期化トリガが送信され、フィルタが保持する状態変数q[k−1],q[k−2]が0に初期化されるためである。
【0118】
一方、図5は、上述のようなModified Goertzelフィルタの出力を受ける包絡線検出器(ステップS6)の出力信号p[k]の時間変化をプロットしたものである。包絡線検出器は、前述したように、図4に示される出力信号q[k]のピーク値をホールドすることで、この図5のような階段状に変化する包絡線p[k]を得る。前述のように包絡線p[k]の大きさは、Modified Goertzelフィルタを初期化した時点からサンプル点kまでの間、入力信号中の検出対象周波数fの成分のパワーを積分した値に比例する。このため、前記0.25秒までの雑音信号が入力されている期間では、包絡線の微分値が0以下となる点が頻繁に発生し、その度にModified Goertzelフィルタが初期化されるので、包絡線の値が小さな値に留まり、スケルチは閉状態を維持する。
【0119】
一方、前記0.25秒においてトーン信号の入力が開始されると、式(5),(6)に従って包絡線が上昇し始める。所定の時間の間、包絡線の微分値が設定した第1の閾値以上に保たれ、尚且つ、Modified Goertzelフィルタが最後に初期化された時点から、所定の時間以内に、包絡線の出力値が設定した第2の閾値(この例では8000に設定している)を超えると、上述の第1および第2の判定条件が満たされるので、スケルチが開かれる(S12−S13−S15)。スケルチが開状態にある期間には、上述の第3の判定条件に従って包絡線の微分値の観測が連続して行われ、図5に示されているように、上述の第4の判定条件に従って一定時間毎にチョップトリガがアサートされ、包絡線がオーバーフローしないように制御される。そして図4に示したように、トーン終了信号が入力されると、包絡線の微分値が第3の閾値以下に変化し、これに対応してスケルチが閉じられる(S10−S11−S16−S17)。このシミュレーション例では示していないが、上述したように、(ii)および(iii)の方法によってトーン信号が終了させられた場合にも、包絡線の微分値が第3の閾値以下に変化するので、同様にしてスケルチを閉じることができる。
【0120】
図6は、前記ステップS9での低域濾波器の出力の時間変化をプロットしたものである。前述したように、低域濾波器の出力値y[k]は、図5に示した包絡線の微分値の移動平均に相当するものである。0.25秒までの雑音信号のみを入力している期間には、頻繁に包絡線の微分値が0以下となって初期化が行われるため、低域濾波器の出力値y[k]は、小さな値に留まっている。
【0121】
これに対して、6.23秒までのトーン信号が入力されている期間中は、式(5)に従って包絡線の傾きがほぼ一定となるので、低域濾波器の出力値y[k]も85付近でほぼ一定の正値を保っている。なお、不均等な間隔で、出力がスパイク状に減衰しているのは、入力トーン信号に大きな雑音を付加しているためであり、包絡線のチョッピングに因るものではない。トーン終了信号が入力された約6.23秒の時点以降に、低域濾波器の出力値y[k]が急激に0付近まで減少しており、これを検出してスケルチが閉じられる。
【0122】
一方、図7は、2Hz離調させた69Hzのトーン信号入力に対する包絡線検出器の出力信号p[k]の時間変化をプロットしたものである。図5と同様に、シミュレーション開始から0.25秒までは雑音信号のみを入力信号として与え、次に雑音を付加した69Hzトーン信号を入力している。
【0123】
前記式(6)から明らかなように、検出対象周波数fから離調したトーン信号を入力した場合、図5で示す検出対象周波数fと一致したトーン信号を入力した場合に比べて、包絡線の振幅は離調周波数に反比例して小さくなり、包絡線の絶対値は離調周波数で振動するようになる。したがって、包絡線の大きさと増加率は図5の場合よりも小さくなり、図7において、包絡線は所定時間内に所定の第2の閾値(この例では8000に設定している)を超える大きさまで成長することができず、第2の判定条件の結果Modified Goertzelフィルタの初期化が行われ(S13−S14)、包絡線p[k]の値も0に戻るという過程を繰り返している。65Hzのトーン信号を入力した場合にも、図7と同様の出力が得られる。したがって、±2Hzまで近接した周波数を持つトーン信号を67Hz用トーンスケルチ判定プログラムに入力しても、スケルチが誤って開くことは無く、正確にスケルチ判定が行われていることが理解される。
【0124】
以上のように、通常は、Goertzelアルゴリズムで計算されるのはパワー値であり、第2の従来技術のGoertzelアルゴリズムでは、Goertzelフィルタに有限長の入力信号を与え、最終サンプリング点における複素出力信号のノルムを計算し、トーン信号の検出確認を行っているのに対して、本発明では新規な特徴として、Modified Goertzelフィルタの出力信号の包絡線の微分値を観測することで、トーン信号の検出確認を、乗算を行わずに加算のみで実現し、低い計算コストで、しかも連続して行うことを可能にしている。
【0125】
すなわち、概略的に説明すれば、第2の従来技術では、式(1)のフィルタ出力(のノルム)を求めるために、式(2)を用いた計算をN回と、N回目のサンプリング点で、式(1)によるG(z)の分子の計算を行い、更に式(1)によるG(z)の出力値(複素数)の大きさ(実部の2乗+虚部の2乗)を計算する必要があり、このため乗算をN+3回程度行う必要が生じる。また、無限長の入力信号を扱うために、Nを大きくするとオーバーフローを生じる。これに対して、本実施の形態では、図1から明らかなように、Modified Goertzelフィルタ(S5)以外の箇所では、乗算を必要としないので、本実施の形態は効果的である。
【0126】
さらに本実施の形態では、検出対象周波数fの6倍或いは3倍の比較的低いサンプリング周波数を用いて、高い周波数分解能でのトーンスケルチ判定を、トーン信号が入力開始されてから短時間以内に行うことを可能としているが、同様な条件下で第3の従来技術のSliding Goertzel DFTを用いた場合には、仕様を満足する周波数分解能と雑音耐性とを備えたトーンスケルチ判定を行うことは、一般的に困難となる。また、図1に示された本実施の形態のトーンスケルチ判定アルゴリズムによれば、8ビット固定小数点入力信号に対して、充分な精度で、入力信号周波数fがターゲット周波数fと一致するか否かの判定を、乗算を用いることなく、軽い演算処理のみで実現することが可能となる。このようにして、乗算器を持たない演算性能の低い一般的な8ビットMPUであっても、高速且つ高精度にトーンスケルチ判定を行うことが可能となり、従来よりも低消費電力且つ低コストで、しかも入力信号レベルに依存しないトーンスケルチ機能を実装することができる。
【0127】
また、本実施の形態のトーンスケルチ判定アルゴリズムをFPGA上に小規模の論理回路として実装することも可能である。このため、本実施の形態は、移動無線受信機のバッテリ駆動時間の長時間化および低コスト化のために有効である。
【0128】
なお、現在では、多ビットMPUの低価格化、低消費電力化が進んだために、例えば8ビットMPUと32ビットMPUとで、パッケージ品に、コストや消費電力の差異はあまり無い。しかしながら、前記のFPGAのように、例えば45nmルールの同じ半導体プロセスを使用する条件で比較すると、一般的に8ビットMPUは、32ビットMPUよりも、低コストで実装し、低消費電力で動作させることができる。
【0129】
(実施の形態2)
図8は、本発明の実施の他の形態に係るトーンスケルチ判定回路における判定アルゴリズムを説明するためのフローチャートである。この図8のアルゴリズムにおいて、図1のアルゴリズムに類似し、対応する部分には同一のステップ番号を付して示し、その説明を省略する。注目すべきは、このアルゴリズムでは、ステップS1aでのサンプリング周波数fを、任意の値に設定することである。すなわち、このアルゴリズムは、サンプリング周波数の設定値に関して制約が存在し、検出対象周波数の6倍或いは3倍に設定することが困難な場合、或いは8ビット乗算を行うことによる消費電力や計算時間の増加が許容される場合に、好適に利用可能なアルゴリズムである。
【0130】
しかしながら、サンプリング周波数fに任意の周波数の利用が可能になる反面、式(1)に従って算出されるGoertzelフィルタの係数cosθは非整数値となる。このため、図2のModified Goertzelフィルタにおけるバッファ4の係数C1も1以外の値となり、Modified Goertzelフィルタの出力値を求めるためには、8ビット乗算を1回行うことが必要となる。また該フィルタ演算により、出力信号に量子化雑音が付加されることとなり、トーンスケルチ判定における雑音耐性が、第1の実施形態に比べて劣化する。本実施の形態においても、Nf/fができるだけ整数値に近い値となるように、サンプリング周波数fとサンプリング点数Nとを調整することが望ましい。
【0131】
一方、本実施の形態では、入力信号x[k]のサンプリング周波数と、Modified Goertzelフィルタのサンプリング周波数fとが一致しているために、図1の実施形態と異なり、ダウンサンプリング(S3)を行う必要が無く、Decimationフィルタ(S2)を省略することができる。
【0132】
しかしながら、このことは、図2において、Modified Goertzelフィルタ入力x[k]から、スケルチ判定値出力q[k]までのブロックが全て入力信号x[k]のサンプリング周波数と同じ高いクロックで駆動されることを意味する。したがって、本実施の形態では、第1の実施の形態と比較して、計算コストが増大し、消費電力も増加する。
【0133】
本発明のアルゴリズムは、アナログ無線通信機以外にも、例えばDTMFなどにも適用することができる。その場合は、2波以上のトーンの同時検出を行う必要があるので、リミッタ(S4)は削除し、複数のModified Goertzelフィルタを使用することが必要となる。
【符号の説明】
【0134】
1,4,5,8,9 バッファ
2,3 遅延バッファ
6,7 加算器

【特許請求の範囲】
【請求項1】
受信機の復調信号から、トーン信号成分をアナログ低域濾波器で抽出した後、A/D変換されたデジタル復調信号を入力とし、デジタル信号処理で所望周波数のトーン信号成分の有無を判定するトーン信号回路において、
前記デジタル復調信号が入力されるGoertzelフィルタと、
前記Goertzelフィルタの出力の包絡線を検出する包絡線検出器と、
前記包絡線検出器で検出された包絡線の微分値を求める微分器と、
前記微分器から出力された微分値が所定の第1の閾値以上を維持しているときには、有意の大きさの前記トーン信号成分が存在するための第1の必要条件を満たすと判定する第1の判定部とを含むことを特徴とするトーン信号回路。
【請求項2】
前記デジタル復調信号の入力振幅が既知の値に正規化されている場合に、前記Goertzelフィルタが初期化されてから、所定の時間以内に前記包絡線の値が所定の第2の閾値を超えた場合には、前記トーン信号成分が存在するための第2の必要条件を満たすと判定する第2の判定部をさらに備えることを特徴とする請求項1記載のトーン信号回路。
【請求項3】
前記Goertzelフィルタへの入力信号のサンプリング周波数は、検出すべきトーン信号の周波数の3倍または6倍の周波数であることを特徴とする請求項1または2記載のトーン信号回路。
【請求項4】
前記Goertzelフィルタの入力段には、フィルタ出力が、常に非負値となるように、入力デジタル復調信号及びフィルタ状態変数の符号反転を行うバッファを備えることを特徴とする請求項1〜3のいずれか1項に記載のトーン信号回路。
【請求項5】
前記Goertzelフィルタが、指示されたタイミングで出力のスケーリングを行うことを特徴とする請求項3記載のトーン信号回路。
【請求項6】
前記微分値が所定の第3の閾値以下まで低下するとトーン信号が終了したものと判断して、前記Goertzelフィルタを初期化して次のトーン検出手続きを始める第3の判定部をさらに備えることを特徴とする請求項1〜5のいずれか1項に記載のトーン信号回路。
【請求項7】
前記A/D変換は、前記Goertzelフィルタへの入力信号のサンプリング周波数とは異なるサンプリング周波数で行われ、該Goertzelフィルタへはダウンサンプリングが行われて入力信号が与えられ、
前記ダウンサンプリングに伴うエイリアシングを避けるために、ノッチを持つ低次FIRフィルタから成るDecimationフィルタが介在されることを特徴とする請求項3記載のトーン信号回路。
【請求項8】
前記Goertzelフィルタへの入力信号を正規化するリミッタを介在することを特徴とする請求項2記載のトーン信号回路。
【請求項9】
前記請求項1〜7のいずれか1項に記載のトーン信号回路をトーンスケルチに用いることを特徴とする無線受信機。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2012−90048(P2012−90048A)
【公開日】平成24年5月10日(2012.5.10)
【国際特許分類】
【出願番号】特願2010−234614(P2010−234614)
【出願日】平成22年10月19日(2010.10.19)
【出願人】(000100746)アイコム株式会社 (273)
【Fターム(参考)】