以下、通信装置の幾つかの実施形態について図面を参照しながら説明する。各実施形態において実質的に同一又は類似部分には同一符号を付して必要に応じて説明を省略し、各実施形態では特徴部分を中心に説明する。
(第1実施形態)
図1は、通信システムSyの電気的構成図を概略的に示している。車両内には、複数の通信ノード1~4が搭載されており、これらの通信ノード1~4がバスライン5に接続されることにより、通信システムSyが構築されている。これらの通信ノード1~4のうち、何れか一つがマスタノード1として動作し、他の通信ノード2~4がスレーブノード2~4として動作する。このため、図1には、通信ノード1をマスタノード1とし、通信ノード2~4をスレーブノードと示している。
これらの通信ノード1~4は、車両のボディ系のアプリケーションを実行するための電子制御装置(ECU(Electronic Control Unit))、または、車両の状態を検出するための各種センサ又は各種スイッチにより構成される。例えば、ボディ系のECUとしては、ボディワイパECU、スライドドアECU、ミラーECU、等の各種ECUを挙げることができる。また各種センサ又は各種スイッチとしては、レインセンサ、ワイパスイッチ、ライトスイッチなどを挙げることができる。
バスライン5は、車載ネットワークを構築するための通信線であり、これらの通信ノード1~4は、バスライン5を通じて互いにデータ通信可能になっている。図2は、各通信ノード1~4の間でバスライン5を通じて送受信する2値レベルの伝送信号波形を示している。このバスライン5に流れる2値レベルは、ビットを規定する境界に位置して一方から他方のレベルに変化するエッジ(例えば立下りエッジ)を備えると共に、ビットの途中で信号レベルが他方から一方のレベル(例えばロウレベル「L」からハイレベル「H」)に変化するPWM信号を用いており、デューティ比の異なるPWM信号を用いて論理「1」/論理「0」を表現する。以下では、論理「0」をドミナントとし、論理「1」をレセッシブとして説明する。以下では、「一方のレベル」をハイレベル「H」とし、「他方のレベル」をロウレベル「L」として説明を行うが、これは逆でも良い。
ドミナントは、ロウレベル「L」の期間が長くハイレベル「H」の期間が短くなるように規定されており、レセッシブは、ロウレベル「L」の期間が短くハイレベル「H」の期間が長い。詳細には、ドミナントのPWM信号のロウレベル「L」の期間は、レセッシブのPWM信号のロウレベル「L」の期間に比較して6%以上長くなるように規定されている。バスライン5においては、レセッシブとドミナントが衝突するとドミナントが優先するようになっている。このとき受信側の通信ノード(例えば2~4)は、サンプリングポイントSPを適切に設定することでドミナント/レセッシブを正確に受信できる。
このバスライン5では、レセッシブが許容ビット以上(本実施形態では11ビット以上)連続している期間をIFS(Inter Frame Space)と称し、IFSが検出されている状態がアイドル状態とされている。そして、この通信システムSyにおいては、バスライン5がアイドル状態となっているときに、各通信ノード1~4がデータを送信可能に規定されており、送信開始後に調停負けを検出した通信ノード(例えば3)は送信処理を停止し、調停勝ちした通信ノード(例えば2)だけが送信処理を継続する。すなわち、この通信システムSyは所謂CSMA/CA方式のアクセス制御を採用している。
また、複数の通信ノード1~4の間で送受信に用いるフレームは、送信許可するデータを指定するためのヘッダと、ヘッダにより指定されたデータを送信するための可変長のレスポンスとを備える。ヘッダはデータの識別子を備えており、この識別子の値に応じてバス調停の勝敗を決定する。他方、レスポンスは本来のデータを含むと共に、このデータ以外に、データのサイズを示すサイズ情報、エラーの有無をチェックするためのパリティ符号などを含んでいる。
マスタノード1は、他の通信ノード2~4に前述のPWM信号に基づく論理1L幅を有するレセッシブをバスライン5にクロックとして供給する。スレーブノード2~4はバスライン5を介して供給される前記クロックに同期した通信を実行する。
図3は、マスタノード1とスレーブノード2のブロック構成を概略的に示している。マスタノード1及びスレーブノード2~4は、ほとんど同一の構成を備えているため、同一部分には同一符号を付して説明を行う。またスレーブノード2~4は同一構成であるため、以下においては、スレーブノード2の構成だけ説明し、他のスレーブノード3~4の構成説明を省略する。
図3に示すように、マスタノード1及びスレーブノード2は、信号処理部11及びトランシーバ12を備える。トランシーバ12は、調停回路13、符号化回路14、復号化回路15からなるデジタル処理部16と、送信バッファ17と、受信バッファ18と、発振回路23と、タイミング制御回路24と、を備える。復号化回路15は、復号化部として機能するブロックである。
信号処理部11は、CPU19、非遷移的実体的記録媒体としてのメモリ20、及びI/O21を備えたマイクロコンピュータを主として構成され、シリアル通信を実現するUART(Universal Asynchronous Receiver Transmitter)による通信部22を備えている。メモリ20は、RAMなどの揮発性メモリ、及び、ROM、EEPROMなどの不揮発性メモリにより構成される。
発振回路23は、例えばCR発振回路などを用いてクロック信号を生成し、タイミング制御回路24にクロック信号を供給する。
タイミング制御回路24は、デジタル処理部16の動作に必要なタイミングを制御する。このタイミング制御回路24は、発振回路23が発生させたクロックを分周することで当該発振回路23の内部クロックに同期したタイミング信号を生成する回路であり、例えば複数のインバータをリング状に接続することで構成されたリングオシレータ(図示せず)を用いて構成される。このタイミング信号としては、通信データを表す各ビットの周波数(ボーレート)に比較して大幅に高い周波数の信号を生成する。マスタノード1のタイミング制御回路24は、通信部22によるビットレートと概ね同速度(±1%程度)に設定された内部クロックを供給する。
図4は、信号処理部11とトランシーバ12との間で送受信するフレームの構成を示している。この図4に示すように、信号処理部11は、データの開始を示すスタートビットStaと、データの終了を示すストップビットStoと、これらの間の8ビットのデータとで構成された合計10ビットのブロックデータを1単位として送受信する。この8ビットのデータのうち、先頭がLSB、末尾がMSBとなるように設定されている。前述のフレームを構成するヘッダは、一つのブロックデータにより構成され、8ビットのデータのうち7ビットが識別子として用いられると共に、残りの1ビットがパリティビットとして用いられる。またレスポンスは、1又は複数のブロックデータにより構成され、サイズ情報が送信最初のブロックデータに記録される。
信号処理部11は、NRZ符号による送信データTXDをトランシーバ12の符号化回路14に出力する。符号化回路14は、信号処理部11から供給される送信データTXDをPWM信号の送信データTXに符号化し、送信バッファ17を通じてバスライン5に出力する。
詳細に記述すると、符号化回路14は、マスタノード1とスレーブノード2とで異なる処理を行う。マスタノード1の符号化回路14は、信号処理部11から供給される送信データTXDが論理「1」となるときにはレセッシブとなるように、ロウレベル「L」の時間の短い(すなわちデューティ比の小さな)PWM信号を生成する。マスタノード1の符号化回路14は、送信データTXDが論理「0」であるときには、ドミナントとなるように、ロウレベル「L」の時間の長い(すなわちデューティ比の大きな)PWM信号を生成する。そして、符号化回路14は、送信データTXとして送信バッファ17を通じてバスライン5に出力する。
マスタノード1の符号化回路14は、信号処理部11から供給される送信データTXDがないときには、論理「1」に対応したレセッシブとなるように、ロウレベル「L」の時間の短い(すなわちデューティ比の小さな)PWM信号を送信データTXとしてバスライン5に出力する。すなわちマスタノード1は、送信すべきデータがないときにはレセッシブをバスライン5に出力する。
他方、スレーブノード2において、信号処理部11の通信部22は、その送信データTXDを論理「0」とする場合には、図5に示すように、1ビットの全期間中にロウレベル「L」を符号化回路14に出力する。また信号処理部11の通信部22は、その送信データTXDを論理「1」とする場合には、1ビットの全期間中にハイレベル「H」を符号化回路14に出力する。
スレーブノード2の符号化回路14は、信号処理部11から供給される送信データTXDが論理「1」であり、送信データTXDが1ビット期間中にハイレベル「H」となっているときにはバスライン5への出力をハイレベル「H」に維持する。これにより、バスライン5の信号レベルは、マスタノード1の出力に依存することになる。
逆に、スレーブノード2の符号化回路14は、信号処理部11から供給される送信データTXDが論理「0」であり、送信データTXDが1ビット期間中にロウレベル「L」となっていると、バスライン5の立下りエッジを検出したタイミングから送信データTXをロウレベル「L」とし、その後、ドミナントのロウレベル「L」の継続時間を計測し、この計測時間を経過したタイミングでハイレベル「H」に変化する信号を送信データTXとして出力する。
すると、マスタノード1がレセッシブを出力しているバスライン5に、スレーブノード2が送信データTXを重畳させると、当該送信データTXが論理「1」のときに、バスライン5にはレセッシブが出力されることになり、論理「0」のときには、バスライン5にドミナントが出力されることになる。
例えば図5に示すように、マスタノード1は、通常アイドル状態とされている間、クロックとしてレセッシブをバスライン5に出力し続ける。マスタノード1が、レセッシブを連続出力することでアイドル状態としている最中に、スレーブノード2がドミナントを出力することで、スレーブノード2がバスライン5にドミナントを出力できる。
また図3に示すように、マスタノード1及びスレーブノード2において、トランシーバ12の復号化回路15は、バスライン5から受信バッファ18を通じて取得したPWM信号の受信データRXを、NRZ符号による受信データRXDに復号化して信号処理部11の通信部22に入力させる。
このとき復号化回路15は、受信データRXの立下りタイミングを起点としてロウレベル「L」(他方の電圧レベル相当)の継続時間を計測し、このロウレベル「L」の継続時間をサンプリングポイントSPに対応した復号閾値Tthと比較し、サンプリングポイントSPの復号閾値Tthがロウレベル「L」の継続時間以下の場合には論理「1」(第1符号相当)と判定し、サンプリングポイントSPの復号閾値Tthがロウレベル「L」の継続時間より大きい場合には論理「0」(第2符号相当)と判定して復号化する。このサンプリングポイントSPは、復号閾値Tthに対応したサンプリングタイミングを示す。
そして復号化回路15は、この復号化結果を信号処理部11に出力する。なお調停回路13は、送信データTXDと受信データRXDとをビット単位で比較し、信号レベルが不一致となるときには符号化回路14への送信データTXDの供給を停止し、自通信ノード(例えば2)を受信モードとするように構成されている。信号処理部11は、他の通信ノード(例えば3)から得られた情報等に基づいて自通信ノード(例えば2)に割り当てられた各種処理を実行する。
図6は、復号化回路15の構成例を示している。復号化回路15は、第1記憶部としての第1メモリ25、マージン時間記憶部としての第2メモリ26、他方レベル継続時間更新部及び初期化部としてのロウ幅書込制御部27、加算器28、マージン時間算出部及びマージン時間更新部としてのマージン書込制御部29、設定部としての比較器30、第2計測部としてのビットタイマ31、第1計測部としてのレベルタイマ32、エッジ検出部33、比較器34、35と共に、ビット化け検出部としてのビット化け検出演算回路36、及び演算結果レジスタ37を備える。比較器35は初期化部として機能するブロックである。
第1メモリ25は、レセッシブのロウレベル「L」の継続時間(以下、論理1L幅と称す)を記憶するメモリであり、ロウ幅書込制御部27により書換制御される。論理「1」が復号化される度に、第1メモリ25には論理1L幅が逐次更新される。
第2メモリ26は、ドミナントにおけるロウレベル「L」の継続時間(以下、論理0L幅と称す)と、前記の論理1L幅との差に基づいて規定されるマージン時間TB×MJ(%)を記憶するメモリであり、マージン書込制御部29により書換制御される。マージンMJ(%)は、論理0L幅と論理1L幅との差に基づいて予め規定されている6%以下の所定値であり、誤サンプリングを防止するために設けられるマージン比率である。第2メモリ26には、マージン時間TB×MJ(%)が1ビット毎に逐次更新される。
加算器28は、第1メモリ25の記憶値REG_Lと第2メモリ26の記憶値REG_TBとを加算して復号閾値Tthを算出し、比較器30に出力する。エッジ検出部33は、受信データRXの立下りエッジ及び立上りエッジを検出し、レベルタイマ32に出力する。また、エッジ検出部33は受信データRXの検出された立下りエッジをビットタイマ31に出力する。本形態において、「立下りエッジ」は、受信データRXの1ビット周期毎に発生するため周期エッジPEと称する。「立上りエッジ」は、受信データRXのレセッシブ/ドミナントに応じてタイミング変化するためデータエッジDEと称する。
ビットタイマ31は、受信データRXのうち2つの連続する周期エッジPEの間の時間TBを計測し、この時間TBをマージン書込制御部29に出力し、マージン書込制御部29は、この時間TBにマージンMJ(%)を乗じて算出したマージン時間TB×MJ(%)を第2メモリ26に記憶させる。
他方、レベルタイマ32は、受信データRXの周期エッジPEから次のデータエッジDEまでの時間TLを計測し、この計測された時間TLを比較器30及び34並びにロウ幅書込制御部27に出力する。比較器30は、レベルタイマ32により計測された時間TLと加算器28の復号閾値Tthを入力した後、その次の周期エッジPEが到来するまでの所定のタイミングにて比較することで受信データRXDを出力する。
サンプリングポイントSPの復号閾値Tthは、前記のマージン時間TB×MJ(%)を周期エッジPEから次のデータエッジDEまでの時間TLに加算した時間TL+TB×MJ(%)に設定される。このとき、比較器30は、レベルタイマ32の計測値TLがサンプリングポイントSPの復号閾値Tth以下のときには論理「1」と判定して復号化し、サンプリングポイントSPの復号閾値Tthを超えるときには論理「0」と判定して復号化して受信データRXDを出力する。
ビット化け検出演算回路36は、第1メモリ25の記憶値REG_Lがビット化けを生じているか否かを検出するための演算処理を常時行い、この演算結果を演算結果レジスタ37に記憶させる。したがって、例えば第1メモリ25の記憶値REG_Lが更新される度に、ビット化け検出演算回路36の演算結果が演算結果レジスタ37に更新される。
ロウ幅書込制御部27は、論理1L幅を第1メモリ25に記憶、削除、また更新するよう構成されている。ロウ幅書込制御部27は、レベルタイマ32から計測値TLを入力する度に、図7に示す処理を実行する。この図7において、ロウ幅書込制御部27は、論理1L幅が第1メモリ25に記憶済みであるか否かを判定し(S11)、記憶されていなければ、カウンタCNTを0にしてクリアする(S12)。このカウンタCNTは、ロウ幅書込制御部27に内蔵されており、ドミナント(論理「0」)が連続した回数をカウントする。また論理1L幅が第1メモリ25に記憶されていなければ、レベルタイマ32から出力された計測値TLを論理1L幅として第1メモリ25に記憶させることで初期化し(S13)、書込制御を終了する。
またロウ幅書込制御部27は、S11において論理1L幅が第1メモリ25に記憶されていると判定した場合(S11:YES)、論理1L幅の値がビット化けを生じているか否かについて比較器35の判定結果を参照し(S14)、ビット化けを生じていれば、再度、S12、S13において、レベルタイマ32から供給された計測値TLを論理1L幅として第1メモリ25に記憶させる。これにより、第1メモリ25に記憶された前回の論理1L幅REG_Lを初期化できる。
ロウ幅書込制御部27は、論理1L幅が正しく記憶されていると判定すると、S14にてNOと判定する。この後、ロウ幅書込制御部27は、比較器30により出力される受信データRXDが論理「1」であるか否かを判定し(S15)、論理「1」であるときにはS16~S22の処理を実行する。
ロウ幅書込制御部27は、カウンタCNTをクリアし(S16)、比較器34が、第1メモリ25の記憶値REG_L(以下、必要に応じて前回の論理1L幅REG_Lと称す)と、今回の論理1L幅の計測値TLとを比較する(S17)。前回の論理1L幅REG_Lが今回の論理1L幅の計測値TLよりも大きいときには(S17でYES)、ロウ幅書込制御部27は、前回の論理1L幅REG_L-1LSBを計算し(S18)、この計算した論理1L幅を第1メモリ25の記憶値REG_Lとして更新して(S19)終了する。
またロウ幅書込制御部27は、S17にて比較した結果、NOと判定したときには、前回の論理1L幅REG_Lが、今回の論理1L幅の計測値TLと同じであるか否かを判定する(S20)。ロウ幅書込制御部27は、前回の論理1L幅REG_Lと計測値TLと同じと判定したときには(S20:YES)、レベルタイマ32の計測値TL(=前回の論理1L幅REG_L)を第1メモリ25の記憶値REG_Lに更新して(S21、S19)終了する。
さらに、ロウ幅書込制御部27は、S17、S20にて比較した結果、前回の論理1L幅REG_Lが、今回の論理1L幅の計測値TLよりも小さいときには(S20でNO)、ロウ幅書込制御部27は、前回の論理1L幅REG_L+1LSBを計算し(S22)、第1メモリ25の記憶値REG_Lとして更新して(S19)終了する。このS22においては、第1メモリ25の記憶値REG_Lを、レベルタイマ32の計測値TL(=前回の論理1L幅REG_L)と同じ値として更新しても良い。
またロウ幅書込制御部27は、S15において、比較器30により出力される受信データRXDが論理「0」であると判定したときには(S15:NO)、カウンタCNTをインクリメントし(S23)、カウンタCNTの値が予め設定された上限値(例えば10)未満であるか否かを判定する(S24)。この上限値は、論理「0」が10ビット以上連続することがないことから定められた値であり、カウンタCNTが上限値以上になっていれば第1メモリ25の記憶値REG_Lを削除して(S25)、終了する。
この後、ロウ幅書込制御部27が、この図7に記載の処理を多数回繰り返すことで、第1メモリ25に記憶される論理1L幅REG_Lが繰り返し更新されることになるが、このとき、論理1L幅REG_Lがたとえ変化したとしても±1LSBずつしか変化しないことになる。このため、チャタリングノイズの影響を受けたとしても、微小に変化したサンプリングポイントSPを用いて論理「0」/論理「1」を判定することになり、誤サンプリングする虞をなくすことができる。しかも、論理1L幅TLは、その前回の論理1L幅REG_Lと比較して±1LSB程度に相対的に学習できるようになり、誤サンプリングしない程度で学習できる。
<ビット化け検出演算回路36の処理内容>
以下では、ビット化け検出演算回路36が実行するビット化け検出処理の内容を図8を参照しながら説明する。ロウ幅書込制御部27は、エッジ検出部33が受信データRXの周期エッジPEを検出したことを条件として論理1L幅を第1メモリ25に更新する(図8のタイミングt0、t10、t20)。
ビット化け検出演算回路36は、第1メモリ25の2ビットデータを参照して1の個数を常時算出する(図8のタイミングt1、t11、t21)。演算結果レジスタ37は、ビット化け検出演算回路36による演算結果を周期エッジPEの発生タイミングの直後のタイミングで記憶する(図8のタイミングt1、t11)。
比較器35は、ビット化け検出演算回路36により演算された演算結果と、演算結果レジスタ37に記憶された演算結果とを比較、照合する。これらの演算結果が一致していれば、比較器35は、ビット化けを生じていない旨を示すデータをロウ幅書込制御部27に出力し、一致していなければ、比較器35はビット化けを生じた旨を示すデータをロウ幅書込制御部27に出力する。
このとき、第1メモリ25の記憶データが、図8のタイミングt12にて何らかの影響で変化した場合を考える。第1メモリ25の記憶データが変化すると、ビット化け検出演算回路36は、その変化した直後にパリティ演算処理する。しかし、この演算結果は、次の周期エッジPEの発生タイミングt20の直後に演算結果レジスタ37に格納されるため、タイミングt12、t13の時点では演算結果レジスタ37に格納されることはない。このため比較器35が、これらの演算結果を比較、照合しても当該演算結果は一致していないため、論理1L幅のビット化けを生じたことをロウ幅書込制御部27に出力する(図8のタイミングt13~参照)。これにより、ビット化け検出処理を確実に実行できる。
<技術的意義>
さらに、図9及び図10を参照して技術的意義を説明する。図9は、本実施形態の構成の効果を説明するための比較例の説明図である。サンプリングポイントSPは、前記のマージン時間TB×MJ(%)(=所定時間Ta)を周期エッジPEからデータエッジDEまでの時間TLに加算したタイミングに設定される。
このとき、期間T1に示すように、計測値TLが標準的に定められていれば、バスライン5の周期エッジPEから復号閾値Tth(=(レベルタイマ32の計測値TL)+(ビットタイマ31の計測値TB)×MJ(%))を経過したタイミングをサンプリングポイントSPとして、バスライン5の信号をサンプリングすることになる。この図9の期間T1中に、バスライン5の信号がサンプリングポイントSPにてサンプリングされるとハイレベル「H」となる。このため受信データRXDは、レセッシブとなる。
しかしながら、図9の期間T2中に示すように、バスライン5にチャタリングなどの外来ノイズを生じると、エッジ検出部33は、誤差Δに基づく立下り/立上りエッジを検出してしまうことになる。この期間T2中においては、前回の期間T1中に計測されたビットタイマ31の計測値TBにマージン比率MJ(%)を乗じたマージン時間TB×MJ(%)を算出するため、マージン時間TB×MJ(%)(=所定時間Ta)は通常通りの大きさとなる。期間T2中には、ビットタイマ31が誤差Δに基づく2つの周期エッジPEの間の時間TBを算出すると共に、レベルタイマ32が誤差Δに基づく周期エッジPEとデータエッジDEとの間隔TLを算出するため、この誤差Δの影響に応じて時間TBも間隔TLも短く算出されることになる。
このため、この誤差Δの影響に基づく短縮時間誤差を「G」とした場合、その後の期間T3におけるサンプリングポイントSPは、バスライン5の立下りタイミングから復号閾値Tth(={(レベルタイマ32の計測値TL)-G}+(ビットタイマ31の計測値TB)×MJ(%))に対応したサンプリングポイントSPとなる。このため、この短縮時間誤差Gが大きいと、サンプリングポイントSPが適切なタイミングとならず、本来は論理「1」(レセッシブ)であるにも関わらず、論理「0」(ドミナント)と判断されてしまうことになる。
これに対し、本実施形態によれば、図10の期間T11に示すように、バスライン5にチャタリングなどの外来ノイズを生じ、エッジ検出部33が、誤差Δに基づき立下り/立上りエッジを検出したとしても、図7に示すS16~S18の処理を行うことで、第1メモリ25における論理1L幅の記憶値REG_Lが1LSB減少するだけである。この論理1L幅の記憶値REG_Lが更新されれば、その後の期間T12において、加算器28が復号閾値Tthを更新することになる(図10の期間T12参照)。
図10の期間T12に示すように、サンプリングポイントSPは、バスライン5の信号の立下りタイミングから復号閾値Tth(=(レベルタイマ32の計測値TL)-1LSB+(ビットタイマ31の計測値TB)×MJ(%))を経過したサンプリングポイントSPとなる。このため、サンプリングポイントSPは、レベルタイマ32による前回の論理1L幅REG_L及び今回の計測値TLの大小に応じて適切に更新設定できる。これにより、外乱ノイズがバスライン5に入力されたとしても、復号化を誤る虞を低減できる。
本形態の構成においては、復号閾値Tthは±1LSBだけ変更されることになるが、このサンプリングポイントSPは、前回の期間T11におけるサンプリングポイントSPの時間と大きく異なることはない(図10の期間T12参照)。このため、サンプリングポイントSPが、マージン時間TB×MJ(%)を全て喪失する方向に直ぐに変化してしまう虞をなくすことができる。
<本実施形態のまとめ、効果>
以上説明したように、本実施形態によれば、ロウ幅書込制御部27は、レベルタイマ32により計測される前回の論理1L幅REG_Lと今回の計測値TLとの比較に基づいて、第1メモリ25に記憶される論理1L幅REG_Lを更新することにより、サンプリングポイントSPの復号閾値Tthを更新設定する。サンプリングポイントSPは、レベルタイマ32による前回の論理1L幅REG_L及び今回の計測値TLの大小に応じて適切に更新設定されるようになる。このため、外乱ノイズがバスライン5に入力されたとしても、復号化を誤る虞を低減できる。
またロウ幅書込制御部27は、論理1L幅REG_Lの更新処理を多数回繰り返すことで、第1メモリ25に記憶される論理1L幅REG_Lが徐々に更新されることになるが、このとき、論理1L幅REG_Lがたとえ変化したとしても±1LSBずつしか変化しない。このため、バスライン5に流れる信号がチャタリングノイズの影響を受けたとしても、わずかに更新されたサンプリングポイントSPにて論理「0」/論理「1」を判定することになり、誤ってサンプリングされる虞をなくすことができる。しかも、論理1L幅TLは、その前回の論理1L幅REG_Lと比較して±1LSBを限度として相対的に学習できるようになり、誤サンプリングしない程度に学習できる。
第1メモリ25の記憶値のビット化けを検出するビット化け検出演算回路36を備えているため、第1メモリ25に記憶された前回の論理1L幅REG_Lに誤りがあったとしても、誤りを検出できる。
またビット化けがビット化け検出演算回路36により検出されたときには、ロウ幅書込制御部27がバスライン5のロウレベル「L」の継続時間の計測値TLを第1メモリ25に初期化して記憶させるため、たとえ第1メモリ25に記憶された論理1L幅に誤りが生じたとしても、記憶される論理1L幅を初期化できる。
(第2実施形態)
図11から図12は、第2実施形態の追加説明図を示している。図11は、復号化回路15の別の構成例を復号化回路115として示している。この復号化回路115は、第1実施形態で説明した復号化回路15の構成要素の他に、比較器40を備える。
この比較器40は、ビットタイマ31の計測値TBと第2メモリ26に記憶されたマージン時間TB×MJ(%)との比較結果をマージン書込制御部29に出力するブロックである。マージン書込制御部29は、ビットタイマ31の計測値TB及び比較器40の比較結果に基づいて第2メモリ26にマージン時間TB×MJ(%)を書込制御する。その他の構成は、第1実施形態と同様であるため説明を省略する。以下、第2メモリ26に書込まれたマージン時間TB×MJ(%)を必要に応じて「前回のマージン時間REG_TB」と称する。
マージン書込制御部29は、ビットタイマ31から計測値TBを入力する度に図12に示される処理を実行する。この図12において、マージン書込制御部29は、第2メモリ26に前回のマージン時間REG_TBが記憶されているか否かを判定し(S21)、記憶されていなければ(S21:NO)、ビットタイマ31から入力された計測値TBにマージンMJ(%)を乗じ、このマージン時間TB×MJ(%)を第2メモリ26に記憶させることで初期化する(S22)。
マージン書込制御部29は、前回のマージン時間REG_TBが記憶されていると判定した場合、S21にてYESと判定する。この後、マージン書込制御部29は、今回の計測値TBにマージンMJ(%)を乗じることで、今回のマージン時間TB×MJ%を算出し、比較器40に出力する。比較器40は、第2メモリ26に記憶されている前回のマージン時間REG_TBと、今回のマージン時間TB×MJ(%)とを比較し(S23)、この比較結果をマージン書込制御部29に出力する。
前回のマージン時間REG_TBが、今回のマージン時間TB×MJ(%)よりも大きいときには(S23でYES)、マージン書込制御部29は、前回のマージン時間REG_TB-1LSBを算出し、第2メモリ26にマージン時間REG_TBを更新して(S24、S25)終了する。すなわち、マージン書込制御部29は、マージン時間REG_TBに1LSBに対応したクロック信号の時間だけ減算して第2メモリ26に書込制御する。
またマージン書込制御部29は、比較器40の比較結果を入力してS23でNOと判定したときには、前回のマージン時間REG_TBが今回のマージン時間TB×MJ(%)と同じであるか否かを判定する(S26)。これらの値が同じであるときには(S26でYES)、マージン書込制御部29は、今回のマージン時間TB×MJ(%)(=前回のマージン時間REG_TB)をマージン時間REG_TBとして第2メモリ26に更新して(S27、S25)終了する。
さらに、S23、S26にて比較した結果、前回のマージン時間REG_TBが、今回のマージン時間TB×MJ(%)よりも小さいときには(S23、S26で共にNO)、マージン書込制御部29は、前回のマージン時間REG_TB+1LSBを算出し、第2メモリ26にマージン時間REG_TBを更新して(S28、S25)終了する。すなわち、マージン書込制御部29は、マージン時間REG_TBに1LSBに対応したクロック信号の時間だけ加入して第2メモリ26に書込制御する。マージン書込制御部29は、このS28において、ビットタイマ31の計測値TBから導出されたマージン時間TB×MJ(%)(=前回のマージン時間REG_TB)と同じ値をマージン時間REG_TBとして第2メモリ26に更新しても良い。
なお、第1実施形態と同様に、第2メモリ26の記憶内容の第2のビット化け検出回路(図示せず)を新たに設け、この第2のビット化け検出回路が第2メモリ26に記憶されたマージン時間REG_TBのビット化けを検出するようにしても良い。この場合、第2のビット化け検出回路が第2メモリ26を参照し、ビット化けを生じていると判定したときには、マージン書込制御部29が新たに算出したマージン時間TB×MJ(%)を新たに第2メモリ26に記憶させると良い。このような図12に示す処理は繰り返される。
以上説明したように、本実施形態によれば、マージン書込制御部29は、第2メモリ26に記憶された前回のマージン時間REG_TBと、マージン書込制御部29により算出された今回のマージン時間TB×MJとを比較することに基づいて、マージン時間TB×MJ(%)を繰り返し更新するようにしている。このため、マージン時間TB×MJ(%)についても繰り返し更新できるようになり、マージン時間TB×MJ(%)を繰り返し学習できる。
(他の実施形態)
前述実施形態に限定されるものではなく、例えば以下に示す変形又は拡張が可能である。
前述実施形態では、パリティチェックによる誤り検出技術を用いて説明したが、その他CRC(Cyclic Redundancy Check)符号を用いて誤り検出することもできるし、ECC(Error Correction Code)符号などを用いて誤り訂正する技術を用いて誤り訂正することもできる。前述実施形態では、第1符号を論理「1」とし、第2符号を論理「0」とした形態を示したが、これらは逆であっても良い。
また前述実施形態においては、論理1L幅を用いて判定しているが、これに代えて論理「1」のハイ「H」の時間幅を用いて判定しても良い。すなわち、前述実施形態では、一方のハイレベル「H」から他方のロウレベル「L」に変化したタイミングから他方のロウレベル「L」の継続時間を計測し、この計測値とサンプリングポイントSPの復号閾値Tthとを比較して論理「1」/論理「0」を判定する形態を説明したが、これに代えて、一方のロウレベル「L」から他方のハイレベル「H」に変化したタイミングから他方のハイレベル「H」の継続時間を計測し、この計測値とサンプリングポイントSPの復号閾値Tthとを比較して論理「1」/論理「0」を判定する通信装置にも適用できる。
前述の第2実施形態においては、マージン時間TB×MJ(%)を学習する形態を示しているが、バスライン5のクロックの周期TBについても同様に学習対象として第2メモリ26などに繰り返し更新するようにしても良い。すなわち、マージン書込制御部29が、ビットタイマ31から計測値TBを入力してクロックの周期TBを計測し、第2メモリ26にバスライン5のクロックの周期TBを繰り返し更新処理する周期更新部として機能するように構成しても良い。この場合、周期TBを繰り返し更新できるようになる。
前述実施形態においては、ロウレベル「L」の継続時間を計測するため、クロックをアップカウンタを用いてもダウンカウンタを用いても良い。ダウンカウンタを用いるときには周期エッジPEを検出したときに前回の初期値を改めてセットし、ロウレベル「L」をダウンカウントするとよい。
前述した複数の実施形態の構成、機能を組み合わせても良い。前述実施形態の一部を、課題を解決できる限りにおいて省略した態様も実施形態と見做すことが可能である。また、特許請求の範囲に記載した文言によって特定される発明の本質を逸脱しない限度において考え得るあらゆる態様も実施形態と見做すことが可能である。
本開示は、前述した実施形態に準拠して記述したが、本開示は当該実施形態や構造に限定されるものではないと理解される。本開示は、様々な変形例や均等範囲内の変形をも包含する。加えて、様々な組み合わせや形態、さらには、それらに一要素、それ以上、あるいはそれ以下、を含む他の組み合わせや形態をも、本開示の範畴や思想範囲に入るものである。