(57)【要約】【課題】バイフェーズ符号化データの復号化方法を提供する。【解決手段】本発明のバイフェーズ符号化データの復号化方法は、バイフェーズ符号化データ中の立下りエッジ変換を検出することによって、隣り合う２つの立下りエッジ変換の間の時間差値及び前１ビットの論理値に基づき、相応する復号化を行い、時間差値が1個ビット周期であり且つ前１ビットが論理１である時、現在のビットが論理１であると判定し、時間差値が1個のビット周期であり且つ前１ビットが論理０である時、現在のビットが論理０であると判定し、時間差値が1.5個のビット周期であり且つ前１ビットが論理１である時、現在及び後１ビットが何れも論理０であり、時間差値が1.5個のビット周期であり且つ前１ビットが論理０である時、現在のビットが論理１であると判定し、時間差値が2個のビット周期であり且つ前１ビットが論理１である時、現在及び後１ビットがそれぞれ論理０及び1であると判定する。【選択図】図２
2012244298.tif 000002
【特許請求の範囲】
【請求項１】
バイフェーズ符号化データが複数のビットを含み且つ１個目のビットの論理値が既知であり、１つのビットのビット周期中の１つのタイミングが第１レベル第２レベルに変換される時、前記ビットの論理値が第１論理値であり、１つのビットのビット周期中の前記タイミングが第２レベルから第１レベルに変換される時、前記ビットの論理値が第２論理値であるバイフェーズ符号化データの復号化方法であって、
前記バイフェーズ符号化データ中の特定レベル変換を検出することによって、隣り合う２つの特定レベル変換の間の時間差値を取得し;
前記時間差値が1個のビット周期であり且つ前１ビットの論理値が第１論理値である時、現在のビットの論理値が第１論理値であると判定し;
前記時間差値が1個のビット周期であり且つ前１ビットの論理値が第２論理値である時、現在のビットの論理値が第２論理値であると判定し;
前記時間差値が1.5個のビット周期であり且つ前１ビットの論理値が第１論理値である時、現在のビット及び後１ビットの論理値が何れも第２論理値であると判定し;
前記時間差値が1.5個のビット周期であり且つ前１ビットの論理値が第２論理値である時、現在のビットの論理値が第１論理値であると判定し;
前記時間差値が2個のビット周期であり且つ前１ビットの論理値が第１論理値である時、現在のビット及び後１ビットの論理値がそれぞれ第２論理値及び第１論理値であると判定することを含むバイフェーズ符号化データの復号化方法。
【請求項２】
第１レベルが第２レベルより高いか、第１レベルが第２レベルより低い請求項１に記載のバイフェーズ符号化データの復号化方法。
【請求項３】
前記特定レベル変換が第１レベルから第２レベルに変換するか、前記特定レベル変換が第２レベルから第１レベルに変換するものである請求項１に記載のバイフェーズ符号化データの復号化方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、バイフェーズ符号化データの復号化方法に関し、特に、バイフェーズ符号化データ中の特定レベル変換を検出することにより隣り合う２つの特定レベル変換の間の時間差に基づき、相応する復号を行うバイフェーズ符号化データの復号化方法に関する。
【背景技術】
【０００２】
リモートコントロール機器は、一般に発信及び受信の二端を有し、発信及び受信の二端間の指令伝送は、１組の符号化及び復号化標準を有する必要があり、そうして初めて指令を効率的に伝送及び識別することができる。RC-5プロトコルは、赤外線リモートコントロール機器の指令に用いる符号化標準であり、その発信端は、マンチェスター(Manchester)符号化された指令を高周波に変調し、赤外線発光ダイオードを介し赤外線信号に変換して発送し、その受信端は、発光ダイオードを介し、赤外線信号を受信した後、マンチェスター符号化された指令に復調し、復号を行い、指令を取得する。そのうち、マンチェスター符号化は、１種のバイフェーズ符号化である。
【０００３】
現在の復号化方法は、ほとんどが別途ハードウェアを利用するか、波形高低レベルの定期的読み取るか、又は高低レベル時間の読み取り、高低レベルの先後の順序を判断し、復号化を行っている。但し、別途のハードウェアを利用し、復号化を行う方法は、別途復号化チップを必要とし、コストが比較的高く、波形高低レベルの定期的読み取り復号化を行う方法は、抗干渉性が良好でなく、復号エラーを発生し易く、高低レベルの先後の順序を判断し、復号化を行う方法は、カウント及びレベルの判断をする必要があり、比較的多くのシステムリソースを占有し、且つソフトウェアソリューションが比較的複雑である。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
これに鑑みて、本発明の目的は、別途復号化チップを必要とせず、復号化に多くのシステムリソースを占用せず、復号化に容易にエラーを発生せず、且つソフトウェアソリューションが比較的簡単であるバイフェーズ符号化データの復号化方法を提供することにある。
【課題を解決するための手段】
【０００５】
上記の目的又はその他の目的を達成する為、本発明が提供するバイフェーズ符号化データの復号化方法は、バイフェーズ符号化データが複数のビットを含み且つ第１ビットの論理値が既知であり、１ビットのビット周期中の１つのタイミングで第１レベルを第２レベルに変換する時、該ビットの論理値が第１論理値であり、１ビットのビット周期中の該タイミングで第２レベルから第１レベルに変換する時、該ビットの論理値が第２論理値である。
【０００６】
バイフェーズ符号化データの復号化方法は、以下を含む：バイフェーズ符号化データ中の特定レベル変換の検出を介し、隣り合う２つの特定レベル変換の間の時間差値を取得する；時間差値が１個のビット周期であり且つ前１ビットの論理値が第１論理値である時、現在のビットの論理値が第1論理値であると判定する；時間差値が１個のビット周期であり且つ前１ビットの論率が第２論理値である時、現在のビットの論理値が第２論理値であると判定する；時間差値が１．５個のビット周期であり且つ前１ビットの論理値が第１論理値である時、現在のビット及び後１ビットの論理値が何れも第２論理値であると判定する；時間差値が１．５個のビット周期であり且つ前１ビットの論理値が第２論理値である時、現在のビットの論理値が第１論理値であると判定する；時間差値が２個のビット周期であり且つ前１ビットの論理値が第１論理値である時、現在のビット及び後１ビットの論理値がそれぞれ第２論理値及び第１論理値であると判定する。
【０００７】
実施例において、バイフェーズ符号化データがマンチェスター符号化データである。
【０００８】
実施例において、第１レベルが第２レベルより高く、即ち、第１レベルが高レベルであり、第２レベルが低レベルである。他の実施例において、第１レベルが第２レベルより低く、即ち、第１レベルが低レベルであり、第２レベルが高レベルである。
【０００９】
実施例において、第１論理値が論理１であり、第２論理値が論理０である。他の実施例において、第１論理値が論理０であり、第２論理値が論理１である。
【００１０】
実施例において、特定レベル変換が第１レベルから第２レベルに変換するものである。他の実施例において、特定レベル変換が第２レベルから第１レベルに変換するものである。
【００１１】
実施例において、バイフェーズ符号化データがRC-5プロトコルを採用するリモートコントロール符号化データに適用される。他の実施例において、バイフェーズ符号化データが拡張RC-5 (Extended RC-5)プロトコルを採用するリモートコントロール符号化データに適用される。
【発明の効果】
【００１２】
本発明は、バイフェーズ符号化データ中の特定レベル変換を検出することによって、隣り合う２つの特定レベル変換の間の時間差値及び前１ビットの論理値に基づき、相応する復号化を行い、別途復号化チップを必要とせず、復号化が多くのシステムリソースを占用せず、復号化がエラーを発生し難く且つソフトウェアソリューションが比較的簡単である。
【図面の簡単な説明】
【００１３】
【図１】マンチェスター符号化の波形説明図である。
【図２】本発明のマンチェスター符号化データの復号化方法の実施例のフロー図である。
【図３】図２が示す方法を応用し、マンチェスター符号化データを復号化する実施例の説明図である。
【発明を実施するための形態】
【００１４】
当業者に本発明の上記及びその他の目的、特徴及び利点を分かり易くするため、下記に具体的実施例を挙げ、図面に合わせて詳細に説明を行う。
【００１５】
説明に便利である為、バイフェーズ符号化データは、マンチェスター符号化データを例とし、第１レベルは、高レベルを例とし、第２レベルは、低レベルを例とし、第１論理値は、論理１を例とし、第２論理値は、論理０を例とし、特定レベル変換は、第１レベルから第２レベルへの変換を例とし、従って、特定レベル変換は、高レベルから低レベルへの変換である(即ち、立下りエッジ変換)。但し、本発明を制限することに用いるのではなく、例えば、第１論理値は、論理０を例とし、第２論理値は、論理１を例とするよう変更するか、特定レベル変換を低レベルから高レベルへの変換（立ち上がりエッジ変換）を例とするよう変更することもできる。
【００１６】
図１は、マンチェスター符号化の波形説明図である。図１を参照し、例えば、マンチェスター符号化データの毎１ビットのビット周期がＴであり、毎１ビットの各ビット周期Ｔ中のタイミングt = T/2箇所では、何れもレベル変換を有する。本例において、１ビットがそのビット周期Ｔ中のタイミングt = T/2箇所で高レベルから低レベルに変換される(即ち、立下りエッジ変換)時、該ビットの論理値が論理１であることを示す。１ビットがそのビット周期Ｔ中のタイミングt = T/2箇所で低レベルから高レベル(即ち、立上りエッジ変換)に変換される時、該ビットの論理値が論理０であることを示す。
【００１７】
マンチェスター符号化自身の特性により、隣り合う２つの立下りエッジ変換の間の時間差値(Δt)及び前１ビットの論理値は、以下の関係を有する:
(A)時間差値が１個のビット周期(即ち、Δt = 1T)であり、且つ前１ビットが論理１である時、現在のビットは、必ず論理１である;
(B)時間差値が１個のビット周期(即ち、Δt = 1T)であり、且つ前１ビットが論理０である時、現在のビットは、必ず論理０である;
(C)時間差値が１．５個のビット周期(即ち、Δt = 1.5T)であり、且つ前１ビットが論理１である時、現在のビット及び後１ビットは、必ず論理０である;
(D)時間差値が１．５個のビット周期(即ち、Δt = 1.5T)であり、且つ前１ビットが論理０である時、現在のビットは、必ず論理１である;
(E)時間差値が２個のビット周期(即Δt = 2T)であり、且つ前１ビットが論理１である時、現在のビット及び後１ビットは、必ずそれぞれ論理０及び論理１である。
【００１８】
そのうち、現在のビットは、復号化過程において、現在復号化を行っているビットを指す。上記関係は、表１のように整理できる。
【００１９】
【表１】
2012244298.tif 000003
【００２０】
従って、バイフェーズ符号化データの１個目のビットの論理値が既知である時、マンチェスター符号化データ中の立下りエッジ変換を検出することによって、隣り合う２つの立下りエッジ変換の間の時間差値Δt及び前１ビットの論理値に基づき、相応する復号化を行うことができる。
【００２１】
図２は、本発明のマンチェスター符号化データの復号化方法の実施例フロー図である。図２を参照し、例えば、マンチェスター符号化データがN個ビットを含み、そのうち、１個目のビット、２個目のビット、…、N個目のビットがそれぞれb[0]、b[1]、…、b[N-1]で示され、Nが正の整数であり、隣り合う２つの立下りエッジ変換の間の時間差値(以下、時間差値と称する)がΔtで示され、現在のビット数がbit_indexで示され、現在のビットがb[bit_index]で示され、前１ビットの論理値がpre_bitで示される。
【００２２】
ステップＳ２１において、プロセッサは、割り込みピンを利用し、マンチェスター符号化データを受信し、毎回マンチェスター符号化データ中の立下りエッジ変換を受信する時に割り込み、立下り割り込みサービスプログラムを実行し、前回の中断から今回の中断までの時間差値(即ち、隣り合う２つの立下りエッジ変換の間の時間差値Δt)を取得し、前１ビットの論理値を合わせ、符号化の動作を行う。１回目の立下り割り込み時、動作の初期化を行い、例えば、時間差値Δt、現在のビット数bit_index等の変数を設け、今回の割り込みは、まだ時間差値Δtを有していないので、復号化動作を行わない。１回目の立下り割り込みの後、立下り割り込みを発生すれば、時間差値Δtを取得することができる。
【００２３】
ステップＳ２２において、プロセッサは、時間差値Δtが2Tより大きいか、或いは、1Tより小さいかを判断する。時間差値Δtが2Tより大きいか、1Tより小さい場合、取得した時間差値Δtは、無効値であり、この復号化プロセスを終了する。時間差値Δtが1T〜2Tの間にあれば、取得した時間差値Δは、有効値であり、ステップＳ２３を実行する。
【００２４】
ステップＳ２３において、プロセッサは、現在のビット数bit_indexが０であるかを判断する。現在のビット数bit_indexが０ (即ちbit_index = 0)であれば、現在のマンチェスター符号化データの１個目のビットb[0]が復号化を行うことを示すが１個目のビットb[0]の論理値が既知であり(本例では、論理１である)、復号化を必要とせず、従って、ステップＳ２６を行う。現在のビット数bit_indexが０でなければ、現在のマンチェスター符号化データの２個目のビットb[1]〜N個目のビットb[N-1]に対し復号化を行い、従って、ステップＳ２４を行う。
【００２５】
ステップＳ２４において、プロセッサは、前１ビットb[i-1]の論理値pre_bitが論理１であるかを判断し、iは、1〜(N-1)中の任意の数である。前１ビットb[i-1]の論理値pre_bitが論理１ (即ち、pre_bit = 1)であれば、表1の関係(A)、(C)又は(E)を介し、現在のビットb[i]及び/又は後１ビットb[i+1]の論理値を判定することができ、従って、ステップＳ２４１を行う。前１ビットb[i-1]の論理値pre_bitが論理０ (即ち、pre_bit = 0)であれば、表1の関係(B)又は(D)を介し、現在のビットb[i]の論理値を判定し、従って、ステップＳ２５１を行う。
【００２６】
ステップＳ２４１において、プロセッサは、時間差値Δtが1Tに等しいかを判断する。時間差値Δtが1Tに等しければ、表1の関係(A)に合致し、ステップＳ２４２を行う。ステップＳ２４２において、プロセッサは、以下のステップを順に実行する:
(1) b[bit_index]←1:現在のビットb[i]を論理１に設ける;
(2) bit_index++:現在のビット数bit_indexに1を加え、b[bit_index]に後１ビットb[i+1]を指させ、この時、後１ビットb[i+1]が既にN個目のビットb[N-1]を超過しているかを判断する必要があり、超過していれば、復号化を終了し、直接ステップＳ２６を行い、超過していなければ、復号化がまだ終了していないことを示す；
(3) pre_bit←1:復号化がまだ終了していない時、前１ビットの論理値pre_bitを現在のビットb[i]と同じ論理１に設け、その後、ステップＳ２６を行う。
【００２７】
ステップＳ２４３において、プロセッサは、時間差値Δtが1.5Tに等しいかを判断する。時間差値Δtが1.5Tに等しければ、表1の関係(C)に合致し、ステップＳ２４４を行う。ステップＳ244において、プロセッサは、以下のステップを順に行う:
(1) b[bit_index]←0:現在のビットb[i]を論理０に設ける;
(2) bit_index++:現在のビット数bit_indexに１を加え、b[bit_index]に後１ビットb[i+1]を指させ、この時、後１ビットb[i+1]がN個目のビットb[N-1]を超過しているかを判断する必要があり、超過していれば、復号化の終了を示し、直接ステップＳ２６を行い、超過していなければ、復号化がまだ終了していないことを示す；
(3) b[bit_index]←0:復号化がまだ終了していない時、後１ビットb[i+1]を論理０に設ける;
(4) bit_index++:現在のビット数bit_indexに１を加え、b[bit_index]に後２ビットb[i+2]を指させ、この時、後２ビットb[i+2]がN個目のビットb[N-1]を超過しているかを判断する必要があり、超過していれば、復号化の終了を示し、直接ステップＳ２６を行い、超過していなければ、復号化がまだ終了していないことを示す;
(5) pre_bit←0:復号化がまだ終了していない時、前１ビットの論理値pre_bitを後１ビットb[i+1]と同じ論理０に設け、その後、ステップＳ２６を実行する。
【００２８】
ステップＳ２４５において、プロセッサは、時間差値Δtが2Tに等しいかを判断する。時間差値Δtが2Tに等しければ、表1の関係(E)に合致し、ステップＳ２４６を行う。ステップＳ２４６において、プロセッサは、以下のステップを順に行う:
(1) b[bit_index]←0:現在のビットb[i]を論理０に設ける;
(2) bit_index++:現在のビット数bit_indexに１を加え、b[bit_index]に後１ビットb[i+1]を指させる;
(3) b[bit_index]←1:後１ビットb[i+1]を論理１に設ける;
(4) bit_index++:現在のビット数bit_indexに１を加え、b[bit_index]に後２ビットb[i+2]を指させ、この時、後２ビットb[i+2]がN個目のビットb[N-1]を超過しているかを判断する必要があり、超過していれば、復号化の終了を示し、直接ステップＳ２６を行い、超過していなければ、復号化がまだ終了していないことを示す;
(5) pre_bit←1:復号化がまだ終了していない時、前１ビットの論理値pre_bitを後１ビットb[i+1]と同じ論理１に設け、その後、ステップＳ２６を行う。
【００２９】
ステップＳ２５１において、プロセッサは、時間差値Δtが1Tに等しいかを判断する。時間差値Δtが1Tに等しければ、表1の関係(B)に合致し、ステップＳ２５２を行う。ステップＳ２５２において、プロセッサは、以下のステップを順に行う:
(1) b[bit_index]←0:現在のビットb[i]を論理０に設ける;
(2) bit_index++:現在のビット数bit_indexに１を加え、b[bit_index]に後１ビットb[i+1]を指させ、この時、後１ビットb[i+1]がN個目のビットb[N-1]を超過しているかを判断する必要があり、超過していれば、復号化終了を示し、直接ステップＳ２６を行い、超過していなければ、復号化が終了していないことを示す;
(3) pre_bit←0:復号化が終了していない時、前１ビットの論理値pre_bitを現在のビットb[i]と同じ論理０に設け、その後、ステップＳ２６を行う。
【００３０】
ステップＳ２５３において、プロセッサは、時間差値Δtが1.5Tに等しいかを判断する。時間差値Δtが1.5Tに等しければ、表1の関係(D)に合致し、ステップＳ２５４を行う。ステップＳ２５４において、プロセッサは、以下のステップを順に行う:
(1) b[bit_index]←1:現在のビットb[i]を論理１に設ける;
(2) bit_index++:現在のビット数bit_indexに１を加え、b[bit_index]に後１ビットb[i+1]を指させ、この時、後１ビットb[i+1]がN個目のビットb[N-1]を超過しているかを判断する必要があり、超過していれば、復号化終了を示し、直接ステップＳ２６を行い、超過していなければ、復号化が終了していないことを示す;
(3) pre_bit←1:復号化が終了していない時、前１ビットの論理値pre_bitを現在のビットb[i]と同じ論理１に設け、その後、ステップＳ２６を行う。
【００３１】
ステップＳ２６において、プロセッサは、復号化が終了しているかを判断し、符号化が終了していれば、この復号化プロセスを終了し、復号化が終了していなければ、ステップＳ２１に戻り、この復号化プロセスを継続する。
【００３２】
説明すべきことは、図２が示すステップＳ２４１は、時間差値Δtが1Tに等しいかを判断するが、当業者は、実際に設計において、各種要因がもたらす偏差を考慮する必要があるので、実際には、時間差値Δtが1T±ΔTであるかを判断するだけでよく、そのうち、ΔTは、許容可能な偏差値であることができるということである。同様に、図２が示すステップＳ２４３、Ｓ２４５、Ｓ２５１及びＳ２５３は、それぞれ時間差値Δtが1.5T±ΔT、2T±ΔT、1T±ΔT及び1.5T±ΔTであるかを判断すればよい。
【００３３】
図３は、図２が示す方法を応用し、マンチェスター符号化データを復号化する実施例の説明図である。図２及び図３を同時に参照し、図３が示すマンチェスター符号化データは、例えば、RC-5プロトコル又は拡張RC-5プロトコルを採用したリモートコントロール符号化データであり、それは、14個のビットb[0]〜b[13]を含む。４回目及び５回目の立下り割り込みを例とし、４回目の立下り割り込み時、現在のビット数bit_indexを4として開始する。ステップＳ２１において、時間差値Δt = 1.5Tを取得する。前１ビットb[3]が論理０であるので、ステップＳ２４，Ｓ２５１及びＳ２５３の判断を経て、ステップＳ２５４を行う。ステップＳ２５４において、関係(D)に基づき、現在のビットb[4]を論理１に設け、前１ビットの論理値pre_bitを現在のビットb[4]と同じ論理１に設け、この時、現在のビット数bit_indexが５に変わり、５回目の立下り割り込み時に現在のビット数bit_indexを5として開始する。
【００３４】
５回目の立下り割り込み時、現在のビット数bit_indexを5として開始する。ステップＳ２１において、時間差値Δt = 2Tを取得する。前１ビットb[4]が論理１であり、ステップＳ２４、Ｓ２４１、Ｓ２４３及びＳ２４５を経てステップＳ２４６を行う。ステップＳ２４６において、現在のビットb[5]及び後１ビットb[6]は、それぞれ論理０及び論理１に設け、前１ビットの論理値pre_bitは、後１ビットb[6]と同じ論理１に設け、この時、現在のビット数bit_indexが7に変わる。
【００３５】
上記のように、本発明は、バイフェーズ符号化データ（例えば、マンチェスター符号化データ）中の特定レベル変換を検出することによって、隣り合う２つの特定レベル変換の間の時間差値及び前１ビットの論理値に基づき、相応する復号化を行い、別途復号化チップを必要とせず、復号化が多くのシステムリソースを占用せず、復号化がエラーを発生し難く且つソフトウェアソリューションが比較的簡単である。
【００３６】
なお、本発明では好ましい実施例を前述の通り開示したが、これらは決して本発明に限定するものではなく、当該技術を熟知する者なら誰でも、本発明の精神と領域を脱しない均等の範囲内で各種の変動や潤色を加えることができることは勿論である。
【符号の説明】
【００３７】
ｔ  タイミング
Ｔ  ビット周期
Δt  隣り合う２つの立下りエッジ変換の間の時間差値
b[0]、b[1]、…、b[N-1]  マンチェスター符号化データ中の１個目のビット、２個目のビット、…、N個目のビット
bit_index  現在のビット数
b[bit_index]  現在のビット
pre_bit  前１ビットの論理値
Ｓ２１  Δtを取得する
Ｓ２２  Δt > 2T又はΔt < 1T?
Ｓ２３  bit_index = 0?
Ｓ２４  pre_bit = 1?
Ｓ２４１  Δt = 1T?
Ｓ２４２  (1) b[bit_index]←1;(2) bit_index++;(3) pre_bit←1
Ｓ２４３  Δt = 1.5T?
Ｓ２４４  (1) b[bit_index]←0;(2) bit_index++;(3) b[bit_index]←0;(4) bit_index++;(5) pre_bit←0
Ｓ２４５  Δt = 2T?
Ｓ２４６  (1) b[bit_index]←0;(2) bit_index++;(3) b[bit_index]←1;(4) bit_index++;(5) pre_bit←1
Ｓ２５１  Δt = 1T?
Ｓ２５２  (1) b[bit_index]←0;(2) bit_index++;(3) pre_bit←0
Ｓ２５３  Δt = 1.5T?
Ｓ２５４  (1) b[bit_index]←1;(2) bit_index++;(3) pre_bit←1
Ｓ２６  符号化終了しているか?
【図１】
2012244298.tif 000004
【図２】
2012244298.tif 000005
【図３】
2012244298.tif 000006