以下、本発明の実施の形態を図面に基づいて説明する。
図1は、本願発明に係るデータ照合装置を含むバス同期システムの回路図であり、このバス同期システムは、例えば鉄道信号保安装置などに適用される。
図1において、第1CPU11及び第2CPU12は、それぞれデータバス11a,12aを介して図外のメモリやI/Oコントローラなどとの間でのデータの送信・受信を行いながら、同一の処理を同期して行う。
前記データバス11a,12a上のデータの一致・不一致を照合するデータ照合装置は、照合回路13及びパラレル・シリアル変換回路14,15によって構成され、照合回路13は、照合データの一致状態では、前記照合データに応じた交番信号を出力し、照合データの不一致が発生した後は前記交番信号を停止状態に保持させる。
前記照合回路13から出力される交番信号は、例えば、トランスを介してリレーに出力され、データが不一致になって交番信号が停止状態に保持されると、前記リレーがオフ(接点が開いている状態)にされることで、前記バス同期システムの制御対象への電源供給が遮断されてフェイルセーフが実行される。
前記データバス11a,12a上のデータ(本実施形態では4ビットのパラレルデータ)は、パラレル・シリアル変換回路14,15によってシリアルデータに変換された後、照合回路13に入力される。
前記パラレル・シリアル変換回路14,15には、データバス11a,12a上の4ビットのパラレルデータが入力されると共に、データバス11a,12a上の4ビットのパラレルデータを、各ビット毎に反転回路(否定回路)16によって反転し、かつ、ビットの並び順を逆転させたデータが入力され、計8ビットのパラレルデータをシリアルデータに変換する。
そして、前記パラレル・シリアル変換回路14,15では、データバス11a,12a上の4ビットのパラレルデータを、ビットの並び順に従った順のシリアルデータに変換し、続けて、前記反転回路16による反転データを、前記並び順に対して逆転した順のシリアルデータとして出力する。即ち、データバス11a,12a上のデータと、該データのビットの並び順を逆転させ、かつ、各ビットデータを反転させたデータとの組み合わせを1単位として、前記照合回路13に出力する。
具体的には、データバス11a,12a上の4ビットデータが例えば〔0010〕であるとすると、この4ビットデータ〔0010〕のビットの並び順を逆転させたデータは〔0100〕であり、更に、このデータ〔0100〕の各ビットの値を反転させると、〔1011〕となるから、前記パラレル・シリアル変換回路14,15は、〔00101011〕の8ビットデータを、シルアルデータとして照合回路13に出力することになる。
次に、照合回路13の回路構成を説明する。
前記パラレル・シリアル変換回路15から出力されるシリアルデータ(第2CPU12側のデータ)は、第1遅延回路21に入力され、該第1遅延回路21の出力は、第1排他的論理和回路(第1論理回路)22の一方の入力端子に入力される。
また、前記第1排他的論理和回路22の他方の入力端子には、前記パラレル・シリアル変換回路14から出力されるシリアルデータ(第1CPU11側のデータ)が入力される。
そして、前記第1排他的論理和回路22は、パラレル・シリアル変換回路14から出力されたデータと、パラレル・シリアル変換回路15から出力された後遅延処理が施されたデータとの排他的論理和演算(EOR)を行う。
即ち、前記第1排他的論理和回路22は、パラレル・シリアル変換回路14から出力されたデータと、パラレル・シリアル変換回路15から出力された後遅延処理が施されたデータとのいずれか一方のみが「1」であるとき(両論理値に差があるとき)に「1」を出力し、双方が「0」又は双方が「1」であるとき(両論理値が同じ値であるとき)に、「0」を出力する。
前記第1排他的論理和回路22の出力は、クロック信号の立ち上がりで動作するD型フリップフロップ(D−FF)である第1フリップフロップ回路23に対してクロック信号として入力される。前記第1フリップフロップ回路23の入力信号Dとしては、後述する第2フリップフロップ回路26の出力信号Qが入力される。
前記第1フリップフロップ回路23の出力信号Qは、第2遅延回路24に入力され、該第2遅延回路24の出力は、第2排他的論理和回路25(第2論理回路)の一方の入力端子に入力される。また、前記第2排他的論理和回路25の他方の入力端子には、前記第1フリップフロップ回路23の出力信号Qがそのまま入力される。
即ち、前記第2排他的論理和回路25は、第1フリップフロップ回路23の出力信号Qと、該出力信号Qを遅延させた信号との排他的論理和演算を行い、第1フリップフロップ回路23の出力信号Qと、該出力信号Qを遅延させた信号とのいずれか一方のみが「1」であるとき(両論理値に差があるとき)に「1」を出力し、双方が「0」又は双方が「1」であるとき(両論理値が同じ値であるとき)に「0」を出力する。
従って、前記第2排他的論理和回路25は、第1フリップフロップ回路23からの出力信号Qの立ち上がり時及び立ち下がり時に、パルス信号を出力することになり、前記第2排他的論理和回路25の出力は、クロック信号の立ち上がりで動作するD型フリップフロップである第2フリップフロップ回路26に対してクロック信号として入力される。
前記第2フリップフロップ回路26の入力信号Dとして、前記パラレル・シリアル変換回路14から出力されるシリアルデータ(第1CPU11側のデータ)が入力され、出力信号Qは、前述のように、前記第1フリップフロップ回路23の入力信号Dとして出力されると共に、照合回路13の照合結果(一致・不一致)を示す信号として外部(例えば、リレーを駆動するトランス)に出力される。
後で詳細に説明するが、前記第2フリップフロップ回路26の出力信号Qは、データの一致状態では前記パラレル・シリアル変換回路14から出力されるシリアルデータ(両シリアルデータ)に応じた交番信号となり、1ビットでも不一致が発生すると、その後は前記交番出力が停止状態に保持される。
次に、前記照合回路13の動作を説明する。
第1排他的論理和回路22では、第1CPU11側のシリアルデータと、遅延処理された第2CPU12側のシリアルデータとの排他的論理和演算を行い、両データが異なる場合に、パルス信号を発生させる。
従って、第1排他的論理和回路22は、第1CPU11側のシリアルデータと第2CPU12側のシリアルデータ(遅延処理前のデータ)との立ち上がり・立ち下がりが同期するタイミングで、第1遅延回路21による遅延時間に相当するパルス幅のパルスを発生させると共に、ビットデータの不一致部分でパルスを発生させることになる。
そして、第1フリップフロップ回路23は、前記第1排他的論理和回路22から出力されるパルス信号の立ち上がり時に、そのときの入力信号Dの値に出力信号Qを遷移させてその状態を記憶する。従って、データが一致している場合には、シリアルデータの立ち上がり・立ち下がりに同期して、第1フリップフロップ回路23の出力が遷移することになる。
但し、第1フリップフロップ回路23の入力信号Dとして、第2フリップフロップ回路26で記憶されているデータが入力され、第2フリップフロップ回路26は、第1フリップフロップ回路23の出力の立ち上がり・立ち下がりに同期して、その出力がそのときの第1CPU11側のシリアルデータに遷移する。
従って、データの一致時には、第1フリップフロップ回路23は、第1CPU11側のシリアルデータの切り換り前の値を記憶することになり、第1フリップフロップ回路23の出力は、第1CPU11側のシリアルデータを反転させたデータとなる。
第1フリップフロップ回路23の出力信号Qが、「0」(ローレベル)から「1」(ハイレベル)に立ち上がった場合、及び、「1」(ハイレベル)から「0」(ローレベル)に立ち下がった場合、前記第2排他的論理和回路25は、第2遅延回路24による遅延時間に相当するパルス幅のパルスを発生させる。
そして、前記第2排他的論理和回路25の出力が立ち上がると、そのときにパラレル・シリアル変換回路14から出力されている値に、第2フリップフロップ回路26の出力信号Qが遷移する。従って、第1CPU11側のシリアルデータと第2CPU12側のシリアルデータとが一致する場合には、第2フリップフロップ回路26の出力信号Qは、第1CPU11側のシリアルデータに対応して変化する交番信号となる。
一方、データが不一致になって、データ一致時には出力が立ち上がらないタイミングで第1排他的論理和回路22の出力が立ち上がると、第1フリップフロップ回路23の出力が、第2フリップフロップ回路26の出力信号Qに遷移することで、第1フリップフロップ回路23の出力は第1CPU11側のシリアルデータと同じ値になる。
即ち、第2フリップフロップ回路26は、1つ前のビットデータを記憶するから、データの一致状態であれば、第1CPU11側のシリアルデータの立ち上がり・立ち下がりに同期して、第1フリップフロップ回路23の出力を第2フリップフロップ回路26の出力信号Qに遷移させれば、結果的に、第1フリップフロップ回路23の出力は、第1CPU11側のシリアルデータを反転させたデータとなる。
しかし、第1CPU11側のシリアルデータの立ち上がり・立ち下がりが発生していない状態で、第1フリップフロップ回路23の出力を第2フリップフロップ回路26の出力信号Qに遷移させると、第2フリップフロップ回路26が記憶している1つ前のビットデータと現時点のビットデータとは同じ値であるから、結果的に、第1フリップフロップ回路23の出力が、現時点のビットデータとは同じ値になる。
そして、前記第1フリップフロップ回路23の出力が、そのときの第1CPU11側のシリアルデータと同じ値に遷移することで、第2排他的論理和回路25の出力パルスが立ち上がると、第2フリップフロップ回路26は、そのときの第1CPU11側のシリアルデータの値に出力を遷移させるから、第1フリップフロップ回路23の出力と第2フリップフロップ回路26の出力とが同じ値になる。
また、データが不一致になって、データ一致時には第1排他的論理和回路22の出力が立ち上がるタイミングで立ち上がりが発生しないと、第1CPU11側のシリアルデータが切り換ったのに第1フリップフロップ回路23の出力が遷移しないことで、第1フリップフロップ回路23の出力がそのときの第1CPU11側のシリアルデータと同じ値を示すことになる。
そして、第1フリップフロップ回路23の出力が遷移しないと、第2排他的論理和回路25の出力が立ち上がらず、第2フリップフロップ回路26の出力信号Qが遷移されないから、本来、遷移されるべきタイミングで遷移がなされないことになり、第2フリップフロップ回路26の出力は、そのときの第1CPU11側のシリアルデータと異なる値を示すようになる。
そして、次に、第1CPU11側のシリアルデータの立ち上がり又は立ち下がりに基づいて第1排他的論理和回路22の出力が立ち上がると、第1フリップフロップ回路23の出力が、第2フリップフロップ回路26の出力信号Qに遷移されるが、これが、第1CPU11側のシリアルデータと同じ値への遷移となる。
また、第1フリップフロップ回路23の出力の遷移に応じて第2排他的論理和回路25の出力が立ち上がっても、第2フリップフロップ回路26のそれまでの記憶値と、立ち上がり又は立ち下がり後の第1CPU11側のシリアルデータとが同じであるから、第2フリップフロップ回路26での出力遷移が発生せず、結果的に、第1フリップフロップ回路23の出力と第2フリップフロップ回路26の出力とが同じ値になる。
第1フリップフロップ回路23と第2フリップフロップ回路26とが同じ値を記憶するようになると、たとえ第1排他的論理和回路22の出力パルスが立ち上がったとしても、第1フリップフロップ回路23の出力が遷移せずに同じ値を保持することになる。
そして、第1フリップフロップ回路23の出力が変化しないと、第2排他的論理和回路25からのパルス出力がなくなることで、第2フリップフロップ回路26の出力を遷移させるクロック信号の立ち上がりがなくなるから、第1CPU11側のシリアルデータが変化しても、第2フリップフロップ回路26の出力は一定に保持されることになる。
即ち、照合するデータのうちの1ビットでも不一致があると、第2フリップフロップ回路26の交番出力が停止し、その後は、係る交番信号の停止状態を保持することになる。換言すれば、照合するデータのうちの1ビットでも不一致があると、第2フリップフロップ回路26の出力は、「1」又は「0」に固定されることになる。
次に、前記パラレル・シリアル変換回路14,15から、データバス11a,12a上のデータと、該データについてビットの並び順を逆転させかつ各ビットの値を反転させたデータとを連続して照合回路13に入力させた場合の動作を、図2及び図3のタイムチャートを参照して、より具体的に説明する。図2のタイムチャートに示す例は、データバス11a上の4ビットデータが「0110」であるのに対し、データバス12a上の4ビットデータが「0010」であって、データが不一致となった場合の動作を示す。
まず、データバス11a上の4ビットデータ「0110」は、前記パラレル・シリアル変換回路14を経ることで、8ビットのシリアルデータ「01101001」となって照合回路13に入力される。一方、データバス12a上の4ビットデータ「0010」は、前記パラレル・シリアル変換回路15を経ることで、8ビットのシリアルデータ「00101011」となって照合回路13に入力される。
ここで、最初にデータバス上の4ビットデータがそのまま照合されることになるが、「0110」と「0010」とを照合した場合、第1排他的論理和回路22の出力パルスの立ち上がりは、データバス11a側のシリアルデータの立ち上がり・立ち下がりにおいてそれぞれ発生し、かつ、データバス11a側のシリアルデータの立ち上がり・立ち下がりタイミング以外で、第1排他的論理和回路22の出力パルスが立ち上がることはない。
従って、第1フリップフロップ回路23の出力は、データが一致している場合と同様に、データバス11a側のシリアルデータの反転データとなり、交番信号の出力が停止されることはない。
これは、データバス11a側のシリアルデータにおける〔0〕ビットから〔1〕ビットへの切り換りによるデータの立ち上がりに対して、データバス12a側のシリアルデータの〔1〕ビットの値が異なることで、データバス12a側のシリアルデータの立ち上がりが遅れて発生することになるが、この遅れが、第1遅延回路21による遅延で生じたものであるか、データ不一致で発生したものであるかを、照合回路13で判別できないために生じる。
しかし、本実施形態では、データバス上の4ビットデータをそのまま照合すると、続けて、各ビットを反転させ、かつ、ビットの並び順を逆転させたデータを照合することで、データの不一致が検出され、交番信号の出力を停止させることができる。
即ち、ビットの並び順を逆転させたデータでは、並び順が逆になることで、図2に示すように、データバス11a側のシリアルデータの立ち上がり・立ち下がりに対して、データバス12a側のシリアルデータの立ち上がり・立ち下がりが遅れて発生することがなく、逆に、データバス12a側のシリアルデータの立ち上がり・立ち下がりがデータバス11a側に対して早いタイミングとなる。
そして、データバス11a側のシリアルデータが連続して「0」(ローレベル)であるときに、第1排他的論理和回路22の出力パルスが立ち上がり、これによって、第1フリップフロップ回路23の出力が、データバス11a側のシリアルデータと同じ値(ローレベル)に遷移される。
そして、第1フリップフロップ回路23の出力遷移(ハイレベル→ローレベル)によって第2排他的論理和回路25の出力パルスが立ち上がることで、第2フリップフロップ回路26の値も、そのときのデータバス11a側のシリアルデータと同じ値(ローレベル)に遷移し、結果、第1フリップフロップ回路23の出力と第2フリップフロップ回路26の出力とが同じ値になる。
以後、第1排他的論理和回路22の出力パルスが立ち上がっても、第2フリップフロップ回路26の出力はローレベルであるから、第1フリップフロップ回路23の出力がハイレベルに遷移することはなく、第1フリップフロップ回路23の出力がローレベルを保持することで、第2フリップフロップ回路26の出力遷移が生じず、第2フリップフロップ回路26の出力はローレベルを保持し、交番信号の停止状態に保持される。
また、図3のタイムチャートに示す例は、データバス11a上の4ビットデータが「1001」であるのに対し、データバス12a上の4ビットデータが「1101」であって、データが不一致となった場合の動作を示す。
まず、データバス11a上の4ビットデータ「1001」は、前記パラレル・シリアル変換回路14を経ることで、8ビットのシリアルデータ「10010110」となって照合回路13に入力される。一方、データバス12a上の4ビットデータ「1101」は、前記パラレル・シリアル変換回路15を経ることで、8ビットのシリアルデータ「11010100」となって照合回路13に入力される。
ここで、最初にデータバス上の4ビットデータがそのまま照合されることになるが、「1001」と「1101」とを照合した場合、第1排他的論理和回路22の出力パルスの立ち上がりは、データバス11a側のシリアルデータの立ち上がり・立ち下がりにおいてそれぞれ発生し、かつ、データバス11a側のシリアルデータの立ち上がり・立ち下がりタイミング以外で、第1排他的論理和回路22の出力パルスが立ち上がることはない。
従って、第1フリップフロップ回路23の出力は、データが一致している場合と同様に、データバス11a側のシリアルデータの反転データとなり、交番信号の出力が停止されることはない。
これは、データバス11a側のシリアルデータにおける〔0〕ビットから〔1〕ビットへの切り換りによる立ち下がりに対して、データバス12a側のシリアルデータの〔1〕ビットの値が異なることで、データバス12a側のシリアルデータの立ち下がりが遅れて発生することになるが、この遅れが、第1遅延回路21による遅延で生じたものであるか、データ不一致で発生したものであるかを、照合回路13で判別できないために生じる。
しかし、本実施形態では、データバス上の4ビットデータをそのまま照合すると、続けて、各ビットを反転させ、かつ、ビットの並び順を逆転させたデータを照合することで、データの不一致が判断され、交番信号の出力が停止させることができる。
即ち、ビットの並び順を逆転させたデータでは、並び順が逆になることで、図3に示すように、データバス11a側のシリアルデータの立ち上がり・立ち下がりに対して、データバス12a側のシリアルデータの立ち上がり・立ち下がりが遅れて発生することがなく、逆に、データバス12a側のシリアルデータの立ち上がり・立ち下がりがデータバス11a側に対して早いタイミングとなる。
このため、データバス11a側のシリアルデータが連続して「1」(ハイレベル)であるときに、第1排他的論理和回路22の出力パルスが立ち上がり、これによって、第1フリップフロップ回路23の出力が、データバス11a側のシリアルデータと同じ値(ハイレベル)に遷移される。
そして、第1フリップフロップ回路23の出力遷移(ローレベル→ハイレベル)によって第2排他的論理和回路25の出力パルスが立ち上がることで、第2フリップフロップ回路26の値も、そのときのデータバス11a側のシリアルデータと同じ値(ハイレベル)になり、結果、第1フリップフロップ回路23の出力と第2フリップフロップ回路26の出力とが同じ値になる。
以後、第1排他的論理和回路22の出力パルスの立ち上がっても、第2フリップフロップ回路26の出力はハイレベルであるから、第1フリップフロップ回路23の出力がローレベルに遷移することはなく、第1フリップフロップ回路23の出力がハイレベルを保持することで、第2フリップフロップ回路26の出力遷移が生じず、第2フリップフロップ回路26の出力はハイレベルを保持し、交番信号の停止状態に保持される。
上記のように、データバス上の4ビットデータをそのまま照合させた場合に、交番信号の発生を停止させることができないようなエラーパターンであっても、各ビットの値を反転させ、かつ、ビットの並び順を逆転させたデータを照合させることで、交番信号の発生を停止させることができ、バス同期システムのフェイルセーフを確実に実行させることができる。
即ち、交番信号の出力停止は、第1フリップフロップ回路23と第2フリップフロップ回路26とが同じ値を記憶するようになることが条件となり、そのためには、第1CPU11側のシリアルデータの切り換りタイミング(立ち上がり・立ち下がりタイミング)でないときに、前記第1フリップフロップ回路23の出力を遷移させることが必要で、該遷移のトリガーとなるのが、第1排他的論理和回路22の出力の立ち上がりである。
そして、第1排他的論理和回路22の出力が、ビットデータの不一致部分で立ち上がることで、交番信号の出力停止が実行されることになるが、データの不一致による遅延と第1遅延回路21の遅延処理による遅延とが区別できないようなエラーパターンでは、不一致の発生に伴って第1排他的論理和回路22の出力が立ち上がらず、交番信号を停止させることができなくなる。
しかし、本実施形態のように、データバス上のデータをそのまま照合させると共に、ビットの並び順を逆転させたデータを照合させれば、データの不一致による遅延関係が逆転し、例えば、データバス12a側のデータがデータバス11a側のデータに対して遅れるエラー特性が、ビット順を逆転させたデータでは、逆に、データバス11a側のデータがデータバス12a側のデータに対して遅れるエラー特性に切り換る。
換言すれば、並び順の逆転によって、第1CPU11側のシリアルデータの切り換りタイミングでないときに、前記第1フリップフロップ回路23の出力を遷移させることができるようになる。このため、データの不一致による遅延と第1遅延回路21の遅延処理による遅延とが区別できないようなエラーがデータバス上のデータに生じたとしても、ビットの並び順を逆転させたデータの照合で交番信号の出力を停止させることができる。
前述のようなエラーパターンに対してフェイルセーフを実行させる方法としては、図1に示した、データバス12a側のシリアルデータを遅延させる照合回路とは別に、データバス11a側のシリアルデータを遅延させるようにした同様な回路構成の照合回路を設け、両照合回路の出力を突き合わせて、最終的な照合判断を下す方法がある。
しかし、上記のように、照合回路を2個備えるようにすると、照合回路を構成する論理演算回路やフリップフロップ回路などのロジックICの数が多くなり、これによって消費電流も大きくなってしまう。
これに対し、1個の照合回路に対してデータバス上のデータをそのまま入力させると共に、ビットの並び順を逆転させて入力させる構成であれば、照合回路を2個備える場合と同様に確実なフェイルセーフを実行させつつ、論理演算回路やフリップフロップ回路などのロジックICの数を減らして、消費電流を抑制することができ、低消費電流で動作させたい装置に搭載することができる。
尚、ビットの並び順を逆転させることで、交番信号の発生を停止させることができないエラーパターンになってしまう場合があるが、その場合は、データバス上の4ビットデータをそのまま照合させた結果として、交番信号の発生が停止されることになる。
また、各ビットデータを反転させずに、各ビットデータをそのままとして並び順を逆転させたデータを照合させることでも、データの不一致に対して確実に交番信号の発生を停止させることができるが、各ビットデータを反転させれば、たとえデータバス上のデータが「0000」や「1111」を保持するような場合であっても、照合回路13から一定周波数以上の交番信号を発生させ、リレーをオン状態に保持させることが可能となる。
図1に示した回路構成で、パラレル・シリアル変換回路14,15の入力側に設けられている反転回路16を全て除けば、データバス上のデータそのままと、該データバス上のデータに対してビットの並び順が逆転させたデータとが連続するシリアルデータが、照合回路13に入力されることになる。
そして、係る構成では、例えば、図2に示した例と同じデータバス上のデータに対して、図4のタイムチャートに示すように動作することになる。即ち、データバス11a上の4ビットデータが「0110」であるのに対し、データバス12a上の4ビットデータが「0010」であって、データバス11a上の4ビットデータ「0110」は、前記パラレル・シリアル変換回路14を経ることで、8ビットのシリアルデータ「01100110」となって照合回路13に入力される。
一方、データバス12a上の4ビットデータ「0010」は、前記パラレル・シリアル変換回路15を経ることで、8ビットのシリアルデータ「00100100」となって照合回路13に入力される。
ここで、最初にデータバス上の4ビットデータがそのまま照合されることになるが、前述のように、データバス上の4ビットデータがそのまま照合させた場合には、交番信号の出力が停止されることはない。
一方、ビットの並び順を逆転させたデータでは、ビットの並び順が逆になることで、図4に示すように、データバス11a側のシリアルデータの立ち上がり・立ち下がりに対して、データバス12a側のシリアルデータの立ち上がり・立ち下がりが遅れて発生することがなく、逆に、データバス12a側のシリアルデータの立ち上がり・立ち下がりがデータバス11a側に対して早いタイミングとなる。
このため、データバス11a側のシリアルデータが連続して「1」(ハイレベル)であるときに、第1排他的論理和回路22の出力パルスの立ち上がり、これによって、第1フリップフロップ回路23の出力が、データバス11a側のシリアルデータと同じ値(ハイレベル)に遷移される。
そして、第1フリップフロップ回路23の出力遷移(ローレベル→ハイレベル)によって第2排他的論理和回路25の出力パルスが立ち上がることで、第2フリップフロップ回路26の値も、そのときのデータバス11a側のシリアルデータと同じ値(ハイレベル)になり、結果、第1フリップフロップ回路23の出力と第2フリップフロップ回路26の出力とが同じ値になる。
以後、第1排他的論理和回路22の出力パルスの立ち上がっても、第2フリップフロップ回路26の出力はハイレベルであるから、第1フリップフロップ回路23の出力がローレベルに遷移することはなく、第1フリップフロップ回路23の出力がハイレベルを保持することで、第2フリップフロップ回路26の出力遷移が生じず、第2フリップフロップ回路26の出力はハイレベルを保持し、交番信号の停止状態に保持される。
上記のように、データの不一致に対して確実なフェイルセーフを実行させるためには、データバス上のデータを照合させると共に、データバス上でのビットの並び順を逆転させたデータを照合させればよく、各ビットデータの反転(反転回路16)を省略させることができる。
しかし、ビットの並び順の逆転と共に、各ビットデータを反転させれば、図5に示すように、データバス上のデータが「1111」又は「0000」であっても、照合回路13に入力されるシリアルデータは「11110000」又は「00001111」となり、データが一致する正常状態において、前記シリアルデータに対応する交番信号が発生することになる。
即ち、ビットの並び順の逆転と共に、各ビットデータを反転させれば、データバス上のデータにおけるビットの並び順で最後のビットに続けて、当該ビットのデータを反転させたデータが照合回路13に入力されることになるから、ここで、ハイレベル・ローレベルの切り換り(データの立ち上がり・立ち下がり)が発生し、これによって第2フリップフロップ回路26の出力が遷移し、照合回路13から交番信号を出力されることになる。
各ビットデータを反転させない場合、データバス上のデータが「1111」又は「0000」であると、照合回路13に入力されるシリアルデータはビットの並び順を逆転させても「11111111」又は「00000000」となり、データが一致しているのに交番信号の出力が一時的に停止してしまい、照合回路13から出力される交番信号でリレーを駆動する場合には、データが一致しているのに、リレーがオフしてしまうという不具合を生じる。
そこで、各ビットデータを反転させない場合には、データの一致状態で交番信号の出力が停止しないように、データバス上のデータが「1111」又は「0000」に設定されることを回避するなどの操作が必要となる。
しかし、前述のように、データバス上のデータに連続して、各ビットデータを反転させ、かつ、ビットの並び順を逆転させたデータを照合回路に入力させれば、たとえデータバス上のデータが「1111」又は「0000」であったとしても、照合回路13から一定周波数以上の交番信号を発生させて、リレーをオン状態に保持させることができ、交番信号を発生させるためのデータ操作の必要がなくなる。
即ち、本実施形態のように、データバス上のデータに連続して、各ビットデータを反転させ、かつ、ビットの並び順を逆転させたデータを照合回路13に入力させるようにすれば、データバス12a側のシリアルデータの立ち上がり・立ち下がりが、データバス11a側のシリアルデータの立ち上がり・立ち下がりに対して遅れるようなエラーパターンに対しても、確実に交番信号の出力を停止させることができ、かつ、データバス上のデータを制約しなくても、データが一致する状態で一定周波数以上の交番信号を発生させることができる。
尚、上記実施形態では、データバス上のデータを4ビットデータとしたが、データのビット数を4ビットに限定するものでないことは明らかである。
また、照合回路13(第2フリップフロップ回路26)の出力で、リレーを駆動する構成に限定されるものでもない。
また、データバス上のデータについて、ビットの並び順を逆転させ、かつ、各ビットの値を反転させたデータを、先に照合回路13に入力させ、続けて、データバス上のデータを照合回路13に入力させることができる。