以下、本発明の実施形態を、図面を参照して説明する。まず、図1を参照して、本発明の実施形態に係るASK(Amplitude Shift Keying)復調装置1000の構成について説明する。ASK復調装置1000は、キャリア(搬送波)の有無を「1」又は「0」に割り当てることによりベースバンド信号を変調するASK変調により生成されたASK信号を、ベースバンド信号に復調する装置である。ベースバンド信号は、「1」と「0」とにより構成される二値化データを示す信号である。
搬送波の周波数は、例えば、250kHzである。搬送波には、ASK変調装置内や伝搬経路の途中で、ノイズが重畳されることがある。ASK復調装置1000は、搬送波に重畳されたノイズを除去しながら、ASK信号を復調する。ノイズの除去は、ASK信号の復調時に、マイクロプロセッサ100が有する割り込み機能などを用いた簡単な処理により実行される。このため、本実施形態では、ASK信号を復調する処理の前処理として、アナログのバンドパスフィルタやデジタルのバンドパスフィルタによりフィルタリング処理がなくても、適切なASK復調が実現可能である。図1に示すように、ASK復調装置1000は、マイクロプロセッサ100と、共振回路200と、を備える。
共振回路200は、伝送線上の信号の中から、搬送波の周波数帯域の信号を、ASK信号として抽出する。共振回路200は、アナログフィルタとしての機能も有するが、通過帯域は比較的広い。このため、共振回路200は、搬送波に近い帯域のノイズもASK信号として抽出する。共振回路200は、抽出したASK信号をコンパレータ102に供給する。
マイクロプロセッサ100は、共振回路200から供給されたASK信号を復調する。マイクロプロセッサ100は、コンピュータなどに実装される、プロセッサを集積回路で実装したものである。マイクロプロセッサ100は、CPU(Central Processing Unit)コアに加え、パラレルポート、タイマカウンタ、メモリなどの周辺回路を含む。マイクロプロセッサ100は、タイマ割り込み、外部割り込み、オーバーフロー割り込みなどの種々の割り込みの機能を有する。マイクロプロセッサ100は、これらの割り込み機能を駆使して、ASK信号に含まれるノイズを除去しながら、ASK信号を復調する。
マイクロプロセッサ100は、CPU101、コンパレータ102、フレーム間隔タイマ103、エッジ検出ポート104、ゲート開始タイマ105、ゲート終了タイマ106、ゲート信号出力ポート107、正常キャリア検出ポート108、正常キャリアカウンタ109、異常キャリア検出ポート110、異常キャリアカウンタ111、ビット検定出力ポート112、ビット検定入力ポート113、ビット長タイマ114、ベースバンド出力ポート115、シリアル受信ポート116を備える。なお、図1において、複数の構成要素間において、信号やデータの流れを示す矢印が明示されていなくても、これらの複数の構成要素間での信号やデータの通信が可能である。このように、マイクロプロセッサ100が備える各構成要素間では、適宜、通信が可能である。
CPU101は、マイクロプロセッサ100の全体の動作を制御するCPUコアである。CPU101は、ROM(Read Only Memory)やRAM(Random Access Memory)を備える。CPU101は、RAMを一時記憶領域として使用しながら、ROMに記憶されたプログラムに従って動作する。
コンパレータ102は、共振回路200から供給されたASK信号を、電源電圧と0Vとのいずれかの電圧を有する信号(以下、適宜「正規化ASK信号」という。)に正規化(増幅)する。コンパレータ102は、ASK信号の電圧が基準電圧以上であるとき正規化ASK信号として電源電圧を出力し、ASK信号の電圧が基準電圧未満であるとき正規化ASK信号として0Vを出力する。以下、適宜、電源電圧のことを「1」、0Vのことを「0」とする。本実施形態では、コンパレータ102は、マイクロプロセッサ100に内蔵されているものとして説明するが、外付けのものであってもよい。
フレーム間隔タイマ103は、マイクロプロセッサ100が備える汎用のタイマである。フレーム間隔タイマ103は、例えば、マイクロプロセッサ100の電源投入直後、通信フレームの受信完了後、異常キャリアカウンタのオーバーフロー割り込みの割り込みルーチン(割り込みハンドラ)、又は、DMA(Direct Memory Access)により起動される。フレーム間隔タイマ103は、起動時に設定された目標値までカウントすると、タイマ割り込みを発生する。このタイマ割り込みの割り込み処理において、エッジ検出ポート104による外部割り込みが許可され(イネーブルに設定され)、ASK信号の復調動作が開始される。フレーム間隔タイマ103は、例えば、RTC(Real Time Clock)を備える。
エッジ検出ポート104は、マイクロプロセッサ100が備える汎用のエッジ検出機能付きのパラレルポートである。エッジ検出ポート104は、コンパレータ102から出力された正規化ASK信号の立ち上がりエッジ又は立ち下がりエッジを検出する。本実施形態では、検出されるエッジは、立ち上がりエッジであるものとする。エッジ検出ポート104は、外部割り込みが許可されているときにエッジを検出すると、外部割り込みを発生する。この外部割り込みの割り込み処理において、ゲート信号がオフにされたり、正常キャリア検出ポート108や異常キャリア検出ポート110の外部割り込みが許可されたりする。また、外部割り込みの割り込み処理において、先頭のエッジが検出された場合、ゲート開始タイマ105やビット長タイマ114が起動される。なお、先頭のエッジは、例えば、ASK信号(正規化ASK信号、搬送波)に含まれるエッジのうち、各通信フレームに含まれる最初の「1」を示すデータを構成する搬送波に含まれる最初の立ち上がりエッジである。
ゲート開始タイマ105は、マイクロプロセッサ100が備える汎用のタイマである。ゲート開始タイマ105は、例えば、エッジ検出ポート104やゲート終了タイマ106による指示により起動する。ゲート開始タイマ105は、起動時に設定された目標値までカウントすると、タイマ割り込みを発生する。このタイマ割り込みの割り込み処理において、ゲート終了タイマ106が起動される。ゲート開始タイマ105は、例えば、RTCを備える。
ゲート終了タイマ106は、マイクロプロセッサ100が備える汎用のタイマである。ゲート終了タイマ106は、例えば、ゲート開始タイマ105による指示により起動する。ゲート終了タイマ106は、起動時に設定された目標値までカウントすると、タイマ割り込みを発生する。このタイマ割り込みの割り込み処理において、ゲート開始タイマ105が起動されたり、ゲート信号が出力されたりする。ゲート終了タイマ106は、例えば、RTCを備える。
ゲート信号出力ポート107は、マイクロプロセッサ100が備える汎用のパラレルポートである。ゲート信号出力ポート107は、ゲート開始タイマ105のタイマ割り込み処理に従ってゲート信号を出力し、エッジ検出ポート104の外部割り込み処理やゲート終了タイマ106のタイマ割り込み処理に従ってゲート信号の出力を停止する。
正常キャリア検出ポート108は、マイクロプロセッサ100が備える汎用のレベル検出機能付きのパラレルポートである。正常キャリア検出ポート108は、外部割り込みが許可されているときにゲート信号がHレベルであることを検出すると、外部割り込みを発生する。つまり、この外部割り込みの割り込み要因は、Hレベル入力である。この外部割り込みは、エッジ検出ポート104の外部割り込みにより許可される。また、この外部割り込みでは、この外部割り込みの許可が解除され(ディセーブル)、正常キャリアカウンタ109がカウントされる。本実施形態では、各信号が出力されていることを、適宜、各信号が「Hレベル」である、又は、各信号が「1」であるという。同様に、各信号が出力されていないことを、適宜、各信号が「Lレベル」である、又は、各信号が「0」であるという。
正常キャリアカウンタ109は、マイクロプロセッサ100が備える汎用のカウンタである。正常キャリアカウンタ109は、正常キャリア検出ポート108の外部割り込み処理によりカウンタ値がカウントアップ(インクリメント)する。正常キャリアカウンタ109は、起動時に設定されたカウント値をオーバーフローするまでカウントアップすると、オーバーフロー割り込みを発生する。このオーバーフロー割り込みの割り込み処理において、ビット検定信号が「1」に設定される。なお、ビット検定信号の初期値は「0」であり、このオーバーフロー割り込みが発生しない場合、ビット検定信号は「0」のままである。
異常キャリア検出ポート110は、マイクロプロセッサ100が備える汎用のレベル検出機能付きのパラレルポートである。異常キャリア検出ポート110は、外部割り込みが許可されているときにゲート信号がLレベルであることを検出すると、外部割り込みを発生する。つまり、この外部割り込みの割り込み要因は、Lレベル入力である。この外部割り込みは、エッジ検出ポート104の外部割り込みにより許可される。また、この外部割り込みでは、この外部割り込みの許可が解除され(ディセーブル)、異常キャリアカウンタ111がカウントされる。
異常キャリアカウンタ111は、マイクロプロセッサ100が備える汎用のカウンタである。異常キャリアカウンタ111は、異常キャリア検出ポート110の外部割り込み処理によりカウンタ値がカウントアップ(インクリメント)する。異常キャリアカウンタ111は、起動時に設定されたカウント値をオーバーフローするまでカウントアップすると、オーバーフロー割り込みを発生する。このオーバーフロー割り込みの割り込み処理において、異常発生時処理が実行される。異常発生時処理は、ビット検定信号を「0」に設定するだけの処理であってもよいし、エッジ検出ポート104の外部割り込みを禁止する処理や、通信フレームを再取得するための初期化処理を含んでいてもよい。
ビット検定出力ポート112は、マイクロプロセッサ100が備える汎用のパラレルポートである。ビット検定出力ポート112は、正常キャリアカウンタ109や異常キャリアカウンタ111の指示に従って、ビット検定信号を出力(「1」を出力)したり、ビット検定信号の出力を停止(「0」を出力)したりする。
ビット検定入力ポート113は、マイクロプロセッサ100が備える汎用のパラレルポートである。ビット検定入力ポート113は、ビット検定出力ポート112から出力されたビット検定信号を入力する。
ビット長タイマ114は、マイクロプロセッサ100が備える汎用のタイマである。ビット長タイマ114は、例えば、エッジ検出ポート104による指示により起動する。ビット長タイマ114は、起動時に設定された目標値までカウントすると、タイマ割り込みを発生する。ビット長タイマ114は、シリアル伝送における1ビットの時間を計測し、1ビット分の時間が経過したことに応答して、タイマ割り込みを発生する。このタイマ割り込みの割り込み処理において、ビット検定入力ポート113に入力されたビット検定信号の値に応じた値を有するベースバンド信号が、ベースバンド出力ポート115から出力される。ビット長タイマ114は、例えば、RTCを備える。
ベースバンド出力ポート115は、マイクロプロセッサ100が備える汎用のパラレルポートである。ベースバンド出力ポート115は、ASK復調により取得されたベースバンド信号を出力する。ベースバンド出力ポート115から出力されるベースバンド信号は、共振回路200に供給されたASK信号よりも、1ビット分遅延した信号となる。
シリアル受信ポート116は、マイクロプロセッサ100が備える汎用のシリアル受信ポートである。シリアル受信ポート116は、ベースバンド出力ポート115から出力されたベースバンド信号を受信する。シリアル受信ポート116は、シリアル通信機能によりスタートビット判定、パリティ判定、ストップビット判定、シリアルデータからバイトデータへの変換などの処理を、ソフトウェアを介さずに自動で実行する。なお、シリアル受信ポート116が生成したバイトデータは、シリアル受信ポート116が備えるバッファメモリに保存される。
次に、図2を参照して、本実施形態に係るASK復調装置1000の機能について説明する。図2に示すように、ASK復調装置1000は、機能的には、エッジ検出部11、余裕期間設定部12、検出待機モード設定部13、復調対象期間特定部14、正常エッジカウント部15、二値化データ判定部16、異常エッジカウント部17を備える。
エッジ検出部11は、二値化データを振幅の有無により示すASK信号のエッジを検出する。エッジ検出部11がエッジを検出するASK信号は、例えば、電源電圧と0Vとのうちのいずれかの電圧を示す正規化ASK信号である。エッジ検出部11は、例えば、正規化ASK信号の立ち上がりエッジを検出する。エッジ検出部11は、例えば、エッジ検出ポート104を備える。
余裕期間設定部12は、エッジ検出部11により先頭のエッジが検出された時刻に基づいて余裕期間を設定する。余裕期間は、例えば、エッジ検出部11により後続のエッジが検出されることが予測される時刻を含む期間である。ASK信号は、予め定められた周波数の搬送波を含む信号である。従って、通信フレームの先頭のエッジが検出された時刻を基準として、この搬送波の周期の整数倍の時間が経過した時刻が、後続のエッジが検出されることが予測される時刻(以下、「検出予測時刻」という。)となる。検出予測時刻に一定の余裕を持たせた期間、つまり、検出予測時刻の前後に予め定められた時間を設けることにより得られた期間が、余裕期間に設定される。余裕期間に検出されたエッジは、正常なエッジとみなされ、余裕期間外に検出されたエッジは、異常なエッジとみなされる。余裕期間設定部12は、例えば、ゲート開始タイマ105、ゲート終了タイマ106を備える。
検出待機モード設定部13は、余裕期間設定部12により設定された余裕期間の開始時刻が到来したことに応答して検出待機モードを設定する。また、検出待機モード設定部13は、エッジ検出部11によりエッジが検出されたこと、又は、余裕期間の終了時刻が到来したことに応答して、検出待機モードを解除する。検出待機モードは、ASK復調装置1000が、エッジの検出を待機するモードである。本実施形態では、検出待機モードが設定されている間、ゲート信号が出力され、検出待機モードが設定されていない間、ゲート信号の出力が停止される。つまり、検出待機モードを設定することは、ゲート信号を出力することであり、検出待機モードを解除することは、ゲート信号の出力を停止することである。検出待機モードが設定されている間にエッジが検出された場合、検出されたエッジは正常なエッジであると見なされる。一方、検出待機モードが設定されていない間にエッジが検出された場合、検出されたエッジは異常なエッジであると見なされる。検出待機モード設定部13は、例えば、ゲート信号出力ポート107を備える。
復調対象期間特定部14は、エッジ検出部11により先頭のエッジが検出された時刻に基づいて、復調対象期間を特定する。復調対象期間は、ASK信号により復調対象の1ビットの二値化データが示される期間である。つまり、復調対象期間は、ASK信号の1ビット期間のうち、復調の対象とする期間である。なお、1ビット期間は、ASK信号により1ビットの二値化データが示される期間である。従って、1ビット期間の間、ASK信号は、振幅を有する状態を維持するか、もしくは、振幅を有さない状態を維持する。復調対象期間特定部14は、例えば、ビット長タイマ114を備える。
正常エッジカウント部15は、復調対象期間特定部14により特定された復調対象期間においてエッジ検出部11により検出されたエッジのうち、検出待機モード設定部13により検出待機モードが設定されている間に検出されたエッジの個数をカウントする。なお、余裕期間中、必ずしも検出待機モードに設定されているとは限らない。例えば、1つの余裕期間中に2つのエッジが検出された場合、1つ目のエッジが検出された時点で、検出待機モードが解除される。この場合、2つ目のエッジは、正常エッジカウント部15のカウントの対象とはならない。この2つ目のエッジは、異常エッジカウント部17のカウントの対象となる。正常エッジカウント部15は、例えば、正常キャリア検出ポート108、正常キャリアカウンタ109を備える。
二値化データ判定部16は、正常エッジカウント部15によりカウントされた個数に基づいて、復調対象の1ビットの二値化データを判定する。二値化データ判定部16は、例えば、正常エッジカウント部15によりカウントされた個数が、予め定められた個数以上である場合、復調対象の1ビットの二値化データが「1」であると判定する。一方、二値化データ判定部16は、例えば、正常エッジカウント部15によりカウントされた個数が、予め定められた個数よりも少ない場合、復調対象の1ビットの二値化データが「0」であると判定する。二値化データ判定部16は、例えば、ビット検定出力ポート112を備える。
異常エッジカウント部17は、復調対象期間特定部14により特定された復調対象期間においてエッジ検出部11により検出されたエッジのうち、検出待機モード設定部13により検出待機モードが設定されていない間に検出されたエッジの個数をカウントする。異常エッジカウント部17は、例えば、余裕期間中に検出されたエッジのうち2個目以降のエッジや、余裕期間外に検出されたエッジの個数をカウントする。異常エッジカウント部17は、例えば、異常キャリア検出ポート110、異常キャリアカウンタ111を備える。
ここで、二値化データ判定部16は、異常エッジカウント部17によりカウントされた個数に基づいて、復調対象の1ビットの二値化データが異常であると判定することができる。例えば、二値化データ判定部16は、異常エッジカウント部17によりカウントされた個数が、予め定められた個数以上である場合、復調対象の1ビットの二値化データが異常であると判定する。
また、余裕期間設定部12は、二値化データ判定部16により復調対象の1ビットの二値化データが異常であると判定された頻度に応じて、余裕期間の長さを調整することができる。典型的には、余裕期間設定部12は、この頻度が予め定められた閾値よりも高い場合、余裕期間の長さを伸長する。データが異常であると判定される頻度が高い場合、余裕期間の長さが維持されたままでは、以後も、正常にASK信号が復調できない可能性が高い。そこで、このような場合、余裕期間の長さが伸長される。例えば、余裕期間設定部12は、1フレーム分の二値化データのうち異常であると判定された二値化データの割合が閾値以上である場合、現在設定されている余裕期間を含む期間を新たな余裕期間に設定する。余裕期間設定部12は、二値化データが異常であると判定された頻度が高い程、余裕期間を伸長する長さを長くすることができる。
なお、ASK復調装置1000は、外部割り込み機能とタイマ割り込み機能とを備えるマイクロプロセッサ100を備えることができる。ASK復調装置1000は、これらの割り込み機能を駆使して、ASK信号を適切に復調することができる。
例えば、余裕期間設定部12は、エッジ検出部11によりエッジが検出されたことに応答して発生する外部割り込みの割り込みルーチンにおいて第1タイマを起動することができる。また、余裕期間設定部12は、第1タイマの起動により発生する第1タイマ割り込みの割り込みルーチンにおいて第2タイマを起動し、第2タイマの起動により発生する第2タイマ割り込みの割り込みルーチンにおいて第1タイマを起動することができる。ここで、第1タイマは、例えば、ゲート開始タイマ105である。また、第2タイマは、例えば、ゲート終了タイマ106である。
また、検出待機モード設定部13は、第1タイマ割り込みの割り込みルーチンにおいて検出待機モードを設定することができる。また、検出待機モード設定部13は、外部割り込みの割り込みルーチン、又は、第2タイマ割り込みの割り込みルーチンにおいて検出待機モードを解除することができる。
次に、図3と図4とを参照して、ベースバンド信号が「1」と判定されるまでの処理について説明する。図3は、正常キャリアカウンタ109が十分にカウントアップされる様子を示す図である。図4は、ベースバンド信号が「1」と判定される様子を示す図である。
より詳細には、図3(A)は、正規化前のASK信号のレベルを示す図である。図3(B)は、正規化後のASK信号のレベルを示す図である。図3(C)は、ゲート信号のレベルを示す図である。図3(D)は、余裕期間の設定状態を示す図である。図3(E)は、正常キャリアカウンタ109のカウント値を示す図である。図4(A)は、正規化前のASK信号のレベルを示す図である。図4(B)は、正常キャリアカウンタのカウンタ値を示す図である。図4(C)は、ビット長タイマの状態を示す図である。図4(D)は、ビット検定信号のレベルを示す図である。図4(E)は、ベースバンド信号のレベルを示す図である。
図3(A)に示すように、正規化前のASK信号(ただし、ASK信号が「1」を示す状態の場合)は、予め定められた周波数および予め定められた振幅を有する正弦波である。また、図3(B)に示すように、正規化後のASK信号は、「1」と「0」との間で振幅する矩形波である。図3(B)に示すように、正規化後のASK信号の周期がT0であるとすると、T0の間隔でエッジ(立ち上がりエッジ)が発生する。
この場合、余裕期間は、先頭のエッジが検出された時刻からT0が経過する毎に到来する検出予定時刻を含む期間に設定される。また、余裕期間の中心の時刻が検出予定時刻となる。図3(D)に示す例では、余裕期間は、T21、T22、T23、T24で示される期間である。余裕期間の長さは、ノイズ環境などにより適切な長さに設定される。余裕期間の長さは、ゲート終了タイマ106に設定された目標値に対応する長さである。先頭のエッジが検出された時刻から先頭の余裕期間までの期間は、T10により示される期間である。各余裕期間の間の期間は、T11、T12、T13により示される期間である。ここで、T10の長さは、T21の長さの半分の長さをT0の長さから減じた長さとなる。一方、T11、T12、T13の長さは、T21の長さをT0の長さから減じた長さとなる。
ASK信号が正常である場合、設定された余裕期間内に後続のエッジが検出されることになる。この場合、図3(C)に示すように、余裕期間の開始時刻にゲート信号が「1」(有効)となり、余裕期間の終了時刻が到来する前にエッジが検出されてゲート信号が「0」(無効)となる。そして、図3(E)に示すように、ゲート信号が「1」である間に検出されたエッジの個数が、正常キャリアカウンタ109によりカウントされる。
ここで、図4(A)に示すように、復調対象期間において、正規化前のASK信号が「1」を示す場合、図4(B)に示すように、正常キャリアカウンタ109は、オーバーフローするまでカウンタ値をカウントする。ここで、ASK信号が正常である場合、1ビット期間で50個のエッジが検出されるものと仮定し、1ビット期間で40個以上のエッジが検出された場合、ASK信号が「1」を示すと判定されるものとする。また、正常キャリアカウンタ109は、カウンタ値が255から256にカウントアップされたときに、オーバーフローすると仮定する。この場合、例えば、カウンタ値の初期値を216に設定することにより、40個のエッジが検出された時点でオーバーフローが発生する。
ここで、カウンタ値がオーバーフローすると、オーバーフロー割り込みが発生する。この場合、図4(D)に示すように、ビット検定信号が「0」から「1」に変更される。その後、図4(C)に示すように、ビット長タイマ114のタイマ割り込みが発生すると、図4(E)に示すように、このタイマ割り込みが発生した時点におけるビット検定信号のレベルである「1」が、ベースバンド信号のレベルとして設定される。なお、ビット検定信号のレベルは、「1」から「0」に戻される。このように、ASK信号が適切に「1」を示す場合、ASK信号は、「1」を示すベースバンド信号に適切に復調される。
次に、図5と図6とを参照して、ベースバンド信号が「0」と判定されるまでの処理について説明する。図5は、正常キャリアカウンタ109が十分にカウントアップされない様子を示す図である。図6は、ベースバンド信号が「0」と判定される様子を示す図である。
より詳細には、図5(A)は、正規化前のASK信号のレベルを示す図である。図5(B)は、正規化後のASK信号のレベルを示す図である。図5(C)は、ゲート信号のレベルを示す図である。図5(D)は、余裕期間の設定状態を示す図である。図5(E)は、正常キャリアカウンタのカウンタ値を示す図である。図6(A)は、正規化前のASK信号のレベルを示す図である。図6(B)は、正常キャリアカウンタの値を示す図である。図6(C)は、ビット長タイマの状態を示す図である。図6(D)は、ビット検定信号のレベルを示す図である。図6(E)は、ベースバンド信号のレベルを示す図である。
図5(A)に示すように、正規化前のASK信号が予め定められた周波数および予め定められた振幅を有する適切な正弦波でないものとする。この場合、図5(B)に示すように、正規化後のASK信号は、「1」と「0」との間で振幅する矩形波となるが、T0の間隔でエッジ(立ち上がりエッジ)が発生する信号とはならない。一方、余裕期間は、図3(D)で示したものと同様、図5(D)に示すように、T21、T22、T23、T24で示される期間となる。
ASK信号が正常でない場合、設定された余裕期間内に後続のエッジが検出されないことがある。この場合、図5(C)に示すように、余裕期間の開始時刻にゲート信号が「1」(有効)となるが、余裕期間の終了時刻が到来する前にエッジが検出されずにゲート信号が「0」(無効)となることがある。図5(C)は、ゲート信号が「1」となった3回目の期間には、エッジが検出されなかった例を示している。そして、図5(E)に示すように、ゲート信号が「1」である間に検出されたエッジの個数が、正常キャリアカウンタ109によりカウントされる。
ここで、図6(A)に示すように、復調対象期間において、正規化前のASK信号が適切に「1」を示さない場合でも、図6(B)に示すように、正常キャリアカウンタ109は、カウンタ値をカウントする。しかしながら、ASK信号が適切でない場合、正常キャリアカウンタ109によるカウントが不足し、オーバーフロー割り込みが発生しない。
この場合、図6(D)に示すように、ビット検定信号は「0」を維持する。その後、図6(C)に示すように、ビット長タイマ114のタイマ割り込みが発生すると、図6(E)に示すように、このタイマ割り込みが発生した時点におけるビット検定信号のレベルである「0」が、ベースバンド信号のレベルとして設定される。このように、ASK信号が適切に「1」を示さない場合、ASK信号は、「0」を示すベースバンド信号に適切に復調される。なお、ASK信号が復調対象期間において「0」を示す場合も、オーバーフロー割り込みが発生しないため、ASK信号は、「0」を示すベースバンド信号に適切に復調される。
次に、図7と図8とを参照して、ベースバンド信号が異常により「0」と判定されるまでの処理について説明する。図7は、異常キャリアカウンタ111が十分にカウントアップされる様子を示す図である。図8は、ベースバンド信号が「異常」により「0」と判定される様子を示す図である。
より詳細には、図7(A)は、正規化前のASK信号のレベルを示す図である。図7(B)は、正規化後のASK信号のレベルを示す図である。図7(C)は、ゲート信号のレベルを示す図である。図7(D)は、余裕期間の設定状態を示す図である。図7(E)は、異常キャリアカウンタのカウンタ値を示す図である。図8(A)は、正規化前のASK信号のレベルを示す図である。図8(B)は、異常キャリアカウンタの値を示す図である。図8(C)は、ビット長タイマの状態を示す図である。図8(D)は、ビット検定信号のレベルを示す図である。図8(E)は、ベースバンド信号のレベルを示す図である。
図7(A)に示すように、正規化前のASK信号が予め定められた周波数および予め定められた振幅を有する適切な正弦波でないものとする。例えば、正規化前のASK信号に、搬送波の周波数よりも高い周波数のノイズが重畳されているものとする。なお、搬送波の高調波成分(搬送波の周波数の2倍、4倍、6倍・・・の周波数成分)もノイズと考えることができる。この場合、図7(B)に示すように、正規化後のASK信号は、「1」と「0」との間で振幅する矩形波となるが、T0の間隔でエッジ(立ち上がりエッジ)が発生する信号とはならない。一方、余裕期間は、図3(D)で示したものと同様、図7(D)に示すように、T21、T22、T23、T24で示される期間となる。
ASK信号が正常でない場合、設定された余裕期間内に後続のエッジが検出されず、設定された余裕期間外に後続のエッジが検出されることがある。この場合、図7(C)に示すように、余裕期間の開始時刻にゲート信号が「1」(有効)となるが、余裕期間の終了時刻が到来する前にエッジが検出されずにゲート信号が「0」(無効)となることがある。また、この場合、余裕期間の終了時刻の経過後、次の余裕期間の開始時刻が到来する前に、エッジが検出されることがある。図7(C)は、ゲート信号が「1」となった2回目の期間とゲート信号が「1」となった3回目の期間との間に、1個のエッジが検出され、ゲート信号が「1」となった3回目の期間とゲート信号が「1」となった4回目の期間との間に、2個のエッジが検出された例を示している。そして、図7(E)に示すように、ゲート信号が「0」である間に検出されたエッジの個数が、異常キャリアカウンタ111によりカウントされる。
ここで、図8(A)に示すように、復調対象期間において、正規化前のASK信号が適切に「1」や「0」を示さない場合、図8(B)に示すように、異常キャリアカウンタ111は、カウンタ値をカウントする。そして、異常キャリアカウンタ111によるカウントによりオーバーフローが発生し、オーバーフロー割り込みが発生する。ここで、1ビット期間で10個以上の異常なエッジが検出された場合、ASK信号が「異常」と判定されるものとする。また、異常キャリアカウンタ111は、カウンタ値が255から256にカウントアップされたときに、オーバーフローすると仮定する。この場合、例えば、カウンタ値の初期値を246に設定することにより、10個のエッジが検出された時点でオーバーフローが発生する。
この場合、図8(D)に示すように、ビット検定信号は、仮に「1」であった場合でも「0」に変更される。その後、図8(C)に示すように、ビット長タイマ114のタイマ割り込みが発生すると、図8(E)に示すように、このタイマ割り込みが発生した時点におけるビット検定信号のレベルである「0」が、ベースバンド信号のレベルとして設定される。このように、ASK信号が適切に「1」や「0」を示さない場合、ASK信号は、「異常」により「0」を示すベースバンド信号に復調される。なお、「異常」により「0」と復調された場合、「正常」に「0」と復調された場合と区別可能なように、オーバーフロー割り込みなどにより、初期化処理などが実行される。
次に、図9に示すフローチャートを参照して、ASK復調装置1000が実行するASK復調処理について説明する。ASK復調装置1000は、例えば、ASK復調装置1000の電源が投入されたことに応答して、図9に示すASK復調処理を実行する。
まず、CPU101は、初期化処理を実行する(ステップS101)。初期化処理は、ASK復調装置1000が備える、パラレルポート、タイマ、カウンタなどを初期化する処理や、ASK復調処理に使用する変数を初期化する処理を含む。
CPU101は、ステップS101の処理を完了すると、フレーム間隔タイマ103を起動する(ステップS102)。CPU101は、通信フレームの長さに応じた目標値をフレーム間隔タイマ103に設定し、フレーム間隔タイマ103を起動する。一方、フレーム間隔タイマ103は、CPU101による指示に従って、カウント値のカウントアップを開始する。
CPU101は、ステップS102の処理を完了すると、ASK復調処理の終了指示があるか否かを判別する(ステップS103)。CPU101は、ASK復調処理の終了指示がないと判別すると(ステップS103:NO)、ステップS103に処理を戻す。一方、CPU101は、ASK復調処理の終了指示があると判別すると(ステップS103:YES)、ASK復調処理を終了する。
次に、図10に示すフローチャートを参照して、フレーム間隔タイマ103のタイマ割り込み処理について説明する。なお、フレーム間隔タイマ103のタイマ割り込み処理は、フレーム間隔タイマ103がカウント値を目標値までカウントアップすることにより発生する割り込み処理である。
CPU101は、エッジ検出ポート104の外部割り込みを許可する(ステップS201)。具体的には、CPU101は、立ち上がりエッジにより外部割り込みが発生するように、エッジ検出ポート104の外部割り込みに関するレジスタを設定する。以後、エッジ検出ポート104により正規化ASK信号の立ち上がりエッジが検出されると、エッジ検出ポート104の外部割り込みが発生する。CPU101は、ステップS201の処理を完了すると、フレーム間隔タイマ103のタイマ割り込み処理を完了する。
次に、図11に示すフローチャートを参照して、エッジ検出ポート104の外部割り込み処理について説明する。なお、エッジ検出ポート104の外部割り込み処理は、エッジ検出ポート104により正規化ASK信号の立ち上がりエッジが検出されることにより発生する割り込み処理である。
CPU101は、検出されたエッジが先頭のエッジであるか否かを判別する(ステップS301)。例えば、CPU101は、フレーム間隔タイマ103のタイマ割り込み処理においてリセットされ、エッジが検出されたことに応答してセットされるフラグの状態を参照することにより、検出されたエッジが先頭のエッジであるか否かを判別することができる。
CPU101は、検出されたエッジが先頭のエッジであると判別すると(ステップS301:YES)、ビット検定信号をオフする(ステップS302)。つまり、CPU101は、ビット検定出力ポート112によるビット検定信号の出力を停止する。
CPU101は、ステップS302の処理を完了すると、ビット長タイマ114を起動する(ステップS303)。具体的には、CPU101は、ビット長タイマ114に1ビット期間の長さに応じた目標値を設定した上で、ビット長タイマ114がカウント値のカウントアップを開始するように、ビット長タイマ114のタイマ割り込みに関するレジスタを設定する。以後、ビット長タイマ114は、定期的に、カウント値をカウントアップする。そして、カウント値が目標値に達したことに応答して、ビット長タイマ114のタイマ割り込みが発生する。
CPU101は、ステップS303の処理を完了すると、ゲート開始タイマ105を起動する(ステップS304)。具体的には、CPU101は、ゲート開始タイマ105にT10の長さに応じた目標値を設定した上で、ゲート開始タイマ105がカウント値のカウントアップを開始するように、ゲート開始タイマ105のタイマ割り込みに関するレジスタを設定する。以後、ゲート開始タイマ105は、定期的に、カウント値をカウントアップする。そして、カウント値が目標値に達したことに応答して、ゲート開始タイマ105のタイマ割り込みが発生する。
CPU101は、検出されたエッジが先頭のエッジでないと判別すると(ステップS301:NO)、ゲート信号をオフする(ステップS305)。つまり、CPU101は、ゲート信号出力ポート107によるゲート信号の出力を停止する。
CPU101は、ステップS305の処理を完了すると、正常キャリア検出ポート108の外部割り込みを許可する(ステップS306)。具体的には、CPU101は、ゲート信号がHレベルである状態において外部割り込みが発生するように、正常キャリア検出ポート108の外部割り込みに関するレジスタを設定する。以後、正常キャリア検出ポート108によりゲート信号がHレベルである状態が検出されると、正常キャリア検出ポート108の外部割り込みが発生する。
CPU101は、ステップS306の処理を完了すると、異常キャリア検出ポート110の外部割り込みを許可する(ステップS307)。具体的には、CPU101は、ゲート信号がLレベルである状態において外部割り込みが発生するように、異常キャリア検出ポート110の外部割り込みに関するレジスタを設定する。以後、異常キャリア検出ポート110によりゲート信号がLレベルである状態が検出されると、異常キャリア検出ポート110の外部割り込みが発生する。CPU101は、ステップS304又はステップS307の処理を完了すると、エッジ検出ポート104の外部割り込み処理を完了する。
次に、図12に示すフローチャートを参照して、ゲート開始タイマ105のタイマ割り込み処理について説明する。なお、ゲート開始タイマ105のタイマ割り込み処理は、ゲート開始タイマ105がカウント値を目標値までカウントアップすることにより発生する割り込み処理である。
CPU101は、ゲート信号をオンする(ステップS401)。具体的には、CPU101は、ゲート信号出力ポート107によるゲート信号の出力を開始する。CPU101は、ステップS401の処理を完了すると、ゲート終了タイマ106を起動する(ステップS402)。具体的には、CPU101は、ゲート終了タイマ106にT21の長さに応じた目標値を設定した上で、ゲート終了タイマ106がカウント値のカウントアップを開始するように、ゲート終了タイマ106のタイマ割り込みに関するレジスタを設定する。以後、ゲート終了タイマ106は、定期的に、カウント値をカウントアップする。そして、カウント値が目標値に達したことに応答して、ゲート終了タイマ106のタイマ割り込みが発生する。CPU101は、ステップS402の処理を完了すると、ゲート開始タイマ105のタイマ割り込み処理を完了する。
次に、図13に示すフローチャートを参照して、ゲート終了タイマ106のタイマ割り込み処理について説明する。なお、ゲート終了タイマ106のタイマ割り込み処理は、ゲート終了タイマ106がカウント値を目標値までカウントアップすることにより発生する割り込み処理である。
CPU101は、ゲート信号をオフする(ステップS501)。具体的には、CPU101は、ゲート信号出力ポート107によるゲート信号の出力を停止する。CPU101は、ステップS501の処理を完了すると、ゲート開始タイマ105を起動する(ステップS502)。具体的には、CPU101は、ゲート開始タイマ105にT11の長さに応じた目標値を設定した上で、ゲート開始タイマ105がカウント値のカウントアップを開始するように、ゲート開始タイマ105のタイマ割り込みに関するレジスタを設定する。以後、ゲート開始タイマ105は、定期的に、カウント値をカウントアップする。そして、カウント値が目標値に達したことに応答して、ゲート開始タイマ105のタイマ割り込みが発生する。CPU101は、ステップS502の処理を完了すると、ゲート終了タイマ106のタイマ割り込み処理を完了する。
次に、図14に示すフローチャートを参照して、正常キャリア検出ポート108の外部割り込み処理について説明する。なお、正常キャリア検出ポート108の外部割り込み処理は、正常キャリア検出ポート108によりゲート信号がHレベルである状態が検出されることにより発生する割り込み処理である。
CPU101は、正常キャリアカウンタ109のカウント値をカウントアップする(ステップS601)。CPU101は、ステップS601の処理を完了すると、正常キャリア検出ポート108の外部割り込みを禁止する(ステップS602)。例えば、CPU101は、正常キャリア検出ポート108の外部割り込みが発生しないように、正常キャリア検出ポート108の外部割り込みに関するレジスタを設定する。CPU101は、ステップS602の処理を完了すると、正常キャリア検出ポート108の外部割り込み処理を完了する。
次に、図15に示すフローチャートを参照して、異常キャリア検出ポート110の外部割り込み処理について説明する。なお、異常キャリア検出ポート110の外部割り込み処理は、異常キャリア検出ポート110によりゲート信号がLレベルである状態が検出されることにより発生する割り込み処理である。
CPU101は、異常キャリアカウンタ111のカウント値をカウントアップする(ステップS701)。CPU101は、ステップS701の処理を完了すると、異常キャリア検出ポート110の外部割り込みを禁止する(ステップS702)。例えば、CPU101は、異常キャリア検出ポート110の外部割り込みが発生しないように、異常キャリア検出ポート110の外部割り込みに関するレジスタを設定する。CPU101は、ステップS702の処理を完了すると、異常キャリア検出ポート110の外部割り込み処理を完了する。
次に、図16に示すフローチャートを参照して、正常キャリアカウンタ109のオーバーフロー割り込み処理について説明する。なお、正常キャリアカウンタ109のオーバーフロー割り込み処理は、正常キャリアカウンタ109のカウント値がオーバーフローすることにより発生する割り込み処理である。
CPU101は、ビット検定信号をオンする(ステップS801)。具体的には、CPU101は、ビット検定出力ポート112によるビット検定信号の出力を開始する。CPU101は、ステップS801の処理を完了すると、正常キャリアカウンタ109のオーバーフロー割り込み処理を完了する。
次に、図17に示すフローチャートを参照して、異常キャリアカウンタ111のオーバーフロー割り込み処理について説明する。なお、異常キャリアカウンタ111のオーバーフロー割り込み処理は、異常キャリアカウンタ111のカウント値がオーバーフローすることにより発生する割り込み処理である。
CPU101は、ビット検定信号をオフする(ステップS901)。具体的には、CPU101は、ビット検定出力ポート112によるビット検定信号の出力を停止する。CPU101は、ステップS901の処理を完了すると、エラーカウントを示すカウント値をカウントアップする(ステップS902)。このカウント値は、エラーが発生したビットの個数を示す値である。CPU101は、ステップS902の処理を完了すると、異常キャリアカウンタ111のオーバーフロー割り込み処理を完了する。
次に、図18に示すフローチャートを参照して、ビット長タイマ114のタイマ割り込み処理について説明する。なお、ビット長タイマ114のタイマ割り込み処理は、ビット長タイマ114のカウント値が目標値に達することにより発生する割り込み処理である。
CPU101は、ベースバンド信号の状態をビット検定信号の状態とする(ステップS1001)。具体的には、CPU101は、ビット検定入力ポート113に入力されているビット検定信号のレベルを示すベースバンド信号を、ベースバンド出力ポート115から出力する。CPU101は、ステップS1001の処理を完了すると、エラーカウントを示すカウント値が閾値以上であるか否かを判別する(ステップS1002)。
CPU101は、エラーカウントを示すカウント値が閾値以上であると判別すると(ステップS1002:YES)、初期化処理を実行する(ステップS1003)。この初期化処理は、通信フレームの受信や変調を再試行するための初期化処理であり、例えば、ステップS101の初期化処理と同様の処理である。
CPU101は、ステップS1003の処理を完了すると、ゲート開始タイマ105とゲート終了タイマ106の目標値を変更する(ステップS1004)。つまり、CPU101は、エラーが発生する頻度が高い場合、エラーが発生しにくくなるように、余裕期間を伸長する。CPU101は、ステップS1004の処理を完了すると、フレーム間隔タイマ103を起動する(ステップS1005)。
一方、CPU101は、エラーカウントを示すカウント値が閾値以上でないと判別すると(ステップS1002:NO)、ビット検定信号をオフする(ステップS1006)。具体的には、CPU101は、ビット検定出力ポート112によるビット検定信号の出力を停止する。CPU101は、ステップS1006の処理を完了すると、ビット長タイマ114を起動する(ステップS1007)。CPU101は、ステップS1005又はステップS1007の処理を完了すると、ビット長タイマ114のタイマ割り込み処理を完了する。
以上説明したように、本実施形態では、復調対象期間において検出されたエッジのうち、検出待機モードが設定されている間に検出されたエッジの個数がカウントされ、カウントされたエッジの個数に基づいて、復調対象の1ビットの二値化データが判定される。従って、本実施形態によれば、低いコストで、キャリア周波数に近い周波数のノイズを含むASK信号を適切に復調することが期待できる。また、本実施形態では、正常なエッジが全て検出されなくても、正常なエッジが閾値以上検出されればよい。このため、ノイズ除去のために、必要以上に、再送処理などを繰り返すことなどを抑制することが期待できる。
また、本実施形態では、復調対象期間において検出されたエッジのうち、検出待機モードが設定されていない間に検出されたエッジの個数に基づいて、復調対象の1ビットの二値化データが異常であると判定される。従って、本実施形態によれば、キャリア周波数に近い周波数のノイズを含むASK信号をさらに適切に復調することが期待できる。
また、本実施形態では、復調対象の1ビットの二値化データが異常であると判定された頻度に応じて、後続のエッジが検出されることが予測される時刻を含む余裕期間の長さが調整される。つまり、二値化データの異常発生頻度に応じて、フィルタの帯域幅が調整される。例えば、二値化データの異常発生頻度が低い場合、狭帯域フィルタが実現され、キャリア周波数近傍のノイズに対するノイズ耐性が向上する。従って、本実施形態によれば、ASK信号に含まれるノイズの周波数や程度に応じた適切なASK復調が期待できる。
また、本実施形態では、復調対象の1ビットの二値化データが異常であると判定された頻度が予め定められた閾値よりも高い場合、余裕期間の長さが伸長される。従って、本実施形態によれば、ASK信号に含まれるノイズの周波数や程度により適切にASK信号が復調できない場合に、適切にASK復調ができるようになることが期待できる。
また、本実施形態では、マイクロプロセッサ100が備える外部割り込み機能とタイマ割り込み機能とが駆使されて、ASK復調処理が実現される。このため、ASK信号を復調するための処理が割り込みルーチン(割り込み処理)において実行され、メインルーチンにおける処理の負荷が低減される。このように、本実施形態では、一般的なアナログのバンドパスフィルタに代えて、汎用CPUの周辺回路を利用してバンドパスフィルタを実現している。従って、アナログのバンドパスフィルタを追加することなく、ソフトウェアによりバンドパスフィルタが実現可能である。また、汎用CPUの周辺回路を利用してバンドパスフィルタを実現する場合、一般的なデジタルのバンドパスフィルタのように、処理負荷が大きくない。このため、ソフトウェア負荷を圧迫せずに、バンドパスフィルタを実現可能である。従って、アプリケーション処理を実行するマイクロプロセッサ100にASK復調処理を実行させても、アプリケーション処理の実行速度が維持されることが期待できる。従って、本実施形態によれば、さらに低いコストで、キャリア周波数に近い周波数のノイズを含むASK信号を適切に復調することが期待できる。
(変形例)
以上、本発明の実施形態を説明したが、本発明を実施するにあたっては、種々の形態による変形及び応用が可能である。
本発明において、上記実施形態において説明した構成、機能、動作のどの部分を採用するのかは任意である。また、本発明において、上述した構成、機能、動作のほか、更なる構成、機能、動作が採用されてもよい。
上記実施形態では、各種の割り込み機能(割り込み処理)を利用して、各種の処理が実現される例について説明した。本発明において、例えば、DMA機能を利用して、各種の処理が実現されてもよい。なお、上述したASK信号を復調するための処理は、データの転送処理や、カウント値のカウントアップ処理など、簡単な処理が多い。従って、上述したASK信号を復調するための処理の大部分を、DMA機能を用いたデータ転送処理などにより実現することが期待できる。
上記実施形態では、復調対象の1ビットの二値化データが異常であると判定された頻度が多い場合、余裕期間の長さが伸長される例について説明した。本発明において、例えば、復調対象の1ビットの二値化データが異常であると判定された頻度が少ない場合、余裕期間の長さが短縮されてもよい。
本発明に係るASK復調装置1000の動作を規定する動作プログラムを既存のパーソナルコンピュータや情報端末装置に適用することで、当該パーソナルコンピュータ等を本発明に係るASK復調装置1000として機能させることも可能である。
また、このようなプログラムの配布方法は任意であり、例えば、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto Optical Disk)、メモリカードなどのコンピュータ読み取り可能な記録媒体に格納して配布してもよいし、インターネットなどの通信ネットワークを介して配布してもよい。
本発明は、本発明の広義の精神と範囲を逸脱することなく、様々な実施形態及び変形が可能とされるものである。また、上述した実施形態は、本発明を説明するためのものであり、本発明の範囲を限定するものではない。つまり、本発明の範囲は、実施形態ではなく、特許請求の範囲によって示される。そして、特許請求の範囲内及びそれと同等の発明の意義の範囲内で施される様々な変形が、本発明の範囲内とみなされる。