(57)【要約】【課題】受信したデータを簡単かつ精度良くタイミング調整できること。【解決手段】受信したデータを複数に分配し、分配した複数のデータのそれぞれに異なる遅延量を与える遅延素子１０３と、遅延素子１０３で遅延させた複数のデータを共通のクロックＣＬＫで打ち抜き、打ち抜かれたデータをそれぞれ出力する複数のＦＦ１０４と、複数のＦＦ１０４が出力するデータ信号に基づき、データ信号にビットスリップが生じたＦＦ１０４を特定し、特定したＦＦ１０４と異なる遅延量のＦＦ１０４が出力するデータを受信データの再生用として選択するビットスリップ検出／セレクタ部１１５と、を備える。【選択図】図１
2018006863.tif 000002
【特許請求の範囲】
【請求項１】
受信したデータ信号を複数に分配し、分配した複数の前記データ信号のそれぞれに異なる遅延量を与える遅延部と、
前記遅延部で遅延させた複数の前記データ信号を共通クロックで打ち抜き、打ち抜かれた前記データ信号をそれぞれ出力する複数のデータ保持部と、
複数の前記データ保持部が出力するデータ信号に基づき、当該データ信号にビットスリップが生じた前記データ保持部を特定し、特定した前記データ保持部と異なる遅延量の前記データ保持部が出力する前記データ信号を受信データの再生用として選択するビットスリップ検出部と、
を備えたことを特徴とする受信回路。
【請求項２】
前記ビットスリップ検出部は、
定期的、あるいは環境変化に基づき生成されたトリガーの入力毎に前記ビットスリップを検出することを特徴とする請求項１に記載の受信回路。
【請求項３】
前記ビットスリップ検出部は、
前記ビットスリップが生じた前記データ保持部に対し、遅延量が最も離れた前記データ保持部が出力するデータ信号を選択することを特徴とする請求項１または２に記載の受信回路。
【請求項４】
複数ビットの前記データ信号に対応して、前記遅延部と、前記データ保持部と、前記ビットスリップ検出部と、が前記複数ビットの数分、複数組設けられ、
複数の前記ビットスリップ検出部が出力する前記データ信号を用いて、前記複数ビット間における前記データ信号の位相ズレを検出するコードチェック部を備えたことを特徴とする請求項１〜３のいずれか一つに記載の受信回路。
【請求項５】
前記データ信号には、前記ビットスリップ検出の要求時にのみフレームに特定コードが含まれ、前記ビットスリップ検出の要求時には、受信するフレームパルスの間隔が通常時と異なり、
前記コードチェック部は、前記フレームのフレームパルスの間隔の変化に基づき、前記ビットスリップ検出の要求の有無を判断し、前記ビットスリップ検出の要求時には、前記フレームに含まれる前記特定コードに基づき、前記複数ビット間における前記データ信号の位相ズレを検出することを特徴とする請求項４に記載の受信回路。
【請求項６】
前記コードチェック部は、
前記特定コードのビット数に対応した個数を有し、それぞれが直列接続された複数の第２のデータ保持部と、
複数の前記第２のデータ保持部の出力に基づき、前記複数ビット間における前記データ信号の位相ズレを検出し、前記位相ズレに対応して前記第２のデータ保持部が出力する前記データ信号を選択出力するコードチェック部と、
を備えたことを特徴とする請求項４または５に記載の受信回路。
【請求項７】
前記特定コードは、対向する送信装置が前記データ信号に含ませて送信したものを受信することを特徴とする請求項５または６に記載の受信回路。
【請求項８】
自装置内の温度、動作回路の電圧の変動に基づき、前記特定コードの送信を要求するリクエストを前記送信装置に送信するリクエスト部を備えたことを特徴とする請求項５〜７のいずれか一つに記載の受信回路。
【請求項９】
前記共通クロックは、自装置内部、あるいは外部入力されたクロックであることを特徴とする請求項１〜８のいずれか一つに記載の受信回路。
【請求項１０】
請求項１〜９のいずれか一つに記載した受信回路と、
前記受信回路から出力されるデータ信号を再生するデータ再生部と、
を備えたことを特徴とする受信装置。
【請求項１１】
受信したデータ信号を複数に分配し、分配した複数の前記データ信号のそれぞれに異なる遅延量を与え、
遅延させた複数の前記データ信号を共通クロックで打ち抜き、打ち抜かれた複数の前記データ信号に基づき、複数の前記データ信号のうちビットスリップが生じた前記データ信号と異なる遅延量の前記データ信号を受信データの再生用として選択する、
ことを特徴とする受信方法。
【請求項１２】
さらに、入力された複数ビットの前記データ信号のビット間における前記データ信号の位相ズレを検出することを特徴とする請求項１１に記載の受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ信号を受信する受信回路、受信装置および受信方法に関する。
【背景技術】
【０００２】
複数バス等により高速な複数のデータ信号を受信する受信回路では、各データについてフリップフロップ（以降、ＦＦと表記する）等を使用してクロックで打ち抜いて、データ信号間の位相を合わせている。各ＦＦに対して一つの共通クロックで打ち抜く場合、クロックを各ＦＦ毎に分けて入力し、各クロックのタイミングを、受信するデータ信号に応じてずらすことで、データ信号の受信を安定させることができる。但し、データ信号の同期については、位相ズレがそのまま後段回路へ送られることになる。
【０００３】
後段回路に出力する各データ信号間の位相を合わせるためには、各データ信号に、それぞれ所定の時間遅延を与え、各データ信号を適宜遅延させている（例えば、下記特許文献１参照。）。また、クロック側を遅延させることでデータの取り込みタイミングを調整する技術がある（例えば、下記特許文献２参照。）。このほか、データ信号を複数の遅延量で遅延させ、セレクタで順次変更してデータ信号を正常に取り込む技術がある（例えば、下記特許文献３参照。）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−０６４４７５号公報
【特許文献２】特開平０５−３３６０９１号公報
【特許文献３】特開２００２−１８９６９８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかし、上記従来の技術では、複数の高速なデータ信号を受信する際に、データ信号間で位相が異なる場合、データ信号間の位相合わせを適切に行えない場合が生じる。
【０００６】
特許文献１の技術では、データ信号の取り込みを行い、データ誤りを検出した回数や頻度に応じて、追加する遅延量を決めて実際にデータ誤りを発生させている。このため、データの転送効率が悪化するとともに、データ誤りを許容しない通信には適用できない。
【０００７】
また、特許文献２の技術では、各データに対応するクロック側の遅延を変えた調整を行うため、クロックの波形を劣化させるとともに、クロックを複数生成しなければならない。例えば、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を用いる場合、クロックを多く必要とするにしたがい配線面積が増大し、新たにクロストーク等の対処を施す必要が生じる。また、ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）を用いる場合、クロック用の配線リソース（グローバル配線）数に制限（１６，３２等）がある。一つのチップに非常に多数のクロックが必要な現状において、さらに複数のクロックを使用することが困難である。なお、一般配線をクロック配線に使用する場合には、本来の使用方法と異なるため新たに様々な制限や問題が発生するおそれがある。また、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）を用いる場合、データのビット幅分の個数のＰＬＬが必要となり、個数に制限のあるＡＳＩＣやＦＰＧＡでは実現は難しい。
【０００８】
また、特許文献２の技術では、タイミング調整用のパターンを送信側から電源投入後等の最初のみ送出するため、運用中の電源変動や温度変動に対応できない。例えば、送信側の送出時の遅延量、途中の伝送路の遅延量、受信側の遅延量や取り込みセットアップタイミング等の変化に対応できず、最適な取り込みタイミングにズレが生じて、データエラーを起こすおそれがある。
【０００９】
また、特許文献３の技術では、データ信号をＦＦで取り込んでから遅延させ、また、ＰＬＬを用いるため、上記同様に回路リソースおよびクロック用のグローバル配線リソースを消費する。
【００１０】
一つの側面では、本発明は、受信したデータを簡単かつ精度良くタイミング調整できることを目的とする。
【課題を解決するための手段】
【００１１】
一つの案では、受信回路は、受信したデータ信号を複数に分配し、分配した複数の前記データ信号のそれぞれに異なる遅延量を与える遅延部と、前記遅延部で遅延させた複数の前記データ信号を共通クロックで打ち抜き、打ち抜かれた前記データ信号をそれぞれ出力する複数のデータ保持部と、複数の前記データ保持部が出力するデータ信号に基づき、当該データ信号にビットスリップが生じた前記データ保持部を特定し、特定した前記データ保持部と異なる遅延量の前記データ保持部が出力する前記データ信号を受信データの再生用として選択するビットスリップ検出部と、を備えたことを要件とする。
【発明の効果】
【００１２】
一つの実施形態によれば、受信したデータを簡単かつ精度良くタイミング調整できるという効果を奏する。
【図面の簡単な説明】
【００１３】
【図１】図１は、実施の形態の受信回路の構成例を示す回路図である。
【図２】図２は、実施の形態の受信回路の入力端子からみた遅延量を示す図表である。
【図３】図３は、実施の形態の受信回路による安定したＦＦでのデータ取り込みを説明するタイミングチャートである。
【図４】図４は、実施の形態のビットスリップ検出のタイミングを送信する送信回路の構成例を示す図である。
【図５】図５は、実施の形態のビットスリップ検出用のトリガーとして用いるタイミング調整用コードの内容例を示すタイミングチャートである。
【図６】図６は、実施の形態の受信回路の他の構成例を示す回路図である。
【図７】図７は、実施の形態の受信回路のコードチェック／補正部の内部構成例を示す回路図である。
【図８】図８は、実施の形態の受信回路のコードチェック／補正部の動作内容を説明するタイミングチャートである。
【図９】図９は、実施の形態の受信回路におけるビット間のデータの位相ズレを説明するタイミングチャートである。
【図１０】図１０は、実施の形態の受信回路のビット間のデータ位相のズレを補正する処理内容を示すフローチャートである。
【図１１】図１１は、実施の形態の送信回路の他の構成例を示す図である。
【図１２】図１２は、実施の形態の受信装置の構成例を示す図である。
【図１３】図１３は、実施の形態の送信回路の他の構成例を示す図である。
【発明を実施するための形態】
【００１４】
（実施の形態）
以下、本発明の実施の形態を説明する。実施の形態の受信回路は、対向デバイスからの入力データを分岐させて異なる遅延量を与えた複数のＦＦで受信し、各ＦＦの出力データを比較することでビットスリップしたＦＦを特定する。そして、ビットスリップしたＦＦに対し遅延量が離れた安定してデータ受信可能なＦＦのデータを選択する。選択したＦＦはビットスリップしたＦＦと異なる配線遅延を持つ。クロックは、対向する送信側デバイスからの入力、あるいは受信回路内で生成されたもの（但し周波数はほぼ同じ）をいずれでも用いることができる。
【００１５】
実施の形態では、データ側の遅延で入力タイミングを調整し、クロック側での調整を不要にする。これにより、クロックは単一のもので良く、複数用意する必要が無い。また、クロック位相調整用のＰＬＬが無くても実現できる。また、必要な回路はすべてユーザー回路（ＦＰＧＡ内の一般回路）で実現できる。
【００１６】
また、複数ビット（ｂｉｔ）幅のデータ（バス）の場合、各ｂｉｔの値が変化していない安定した値を選択するだけでは、ｂｉｔ間のクロック１周期単位でのスリップが生じる可能性がある。このため、実施の形態では、送信側と受信側とで取り決めたコードを所定のタイミングで送受信することにより、コードの特定ｂｉｔのスリップを検出し、スリップ分を他のｂｉｔより早める／あるいは遅らせることで解消する。
【００１７】
また、データのスリップする頻度を監視し、スリップの頻度に基づきコードを送受信する頻度を動的に変化させる。また、デバイスの温度や電圧の変動の大きさを監視し、これらの変動の大きさに基づきコードを送受信する頻度を動的に変化させる。
【００１８】
図１は、実施の形態の受信回路の構成例を示す回路図である。図１に示す受信回路１００は、説明の便宜上、入力されるデータ（ＤＡＴＡ）が１ビットの例を示している。入力されるクロック（ＣＬＫ）も、単一のクロックである。なお、受信回路１００はＰＬＬを含まない。
【００１９】
受信回路１００は、データ入力端子１０１と、クロック入力端子１０２と、複数の遅延部（遅延素子）１０３と、複数のデータ保持部（データ保持素子：ＦＦ）１０４と、受信部１０５と、を含む。この受信回路１００は、例えば、ＦＰＧＡを用いることができる。
【００２０】
受信回路１００は、受信装置１１０において、外部の伝送路からデータ信号（データ）が入力される箇所に配置される。受信装置１１０は、受信回路１００から出力されたデータを処理するデータ処理部（不図示）を含む。
【００２１】
データが入力されるデータ入力端子１０１に接続された内部の信号経路上には、複数の遅延素子１０３が縦列配置される。また、各遅延素子１０３の出力は、それぞれＦＦ１０４のデータ端子に入力される。
【００２２】
クロック入力端子１０２に接続された一つのグローバルラインは、各ＦＦ１０４のクロック端子と、受信部１０５のクロック端子に接続される。
【００２３】
図１の例では、遅延素子１０３とＦＦ１０４をそれぞれ８個設けた構成例であり、各ＦＦ１０４の出力端子は、受信部１０５に接続される。
【００２４】
受信部１０５は、ビットスリップ検出／セレクタ部１１５を含み、ビットスリップ検出／セレクタ部１１５には、各ＦＦ１０４の出力およびクロックが入力され、ビットスリップを検出する。受信部１０５には、トリガーが外部入力される。
【００２５】
図１には、不図示であるが、受信部１０５は、ビットスリップ検出／セレクタ部１１５の後段にコードチェック／補正部を含む。このコードチェック／補正部は、ビットスリップ検出／セレクタ部１１５が取り込んだデータに対するコードチェックとデータ補正を行う。受信部１０５が出力するデータは、図示しないデータ再生部により受信データが再生される。
【００２６】
図２は、実施の形態の受信回路の入力端子からみた遅延量を示す図表である。図１に示すデータ入力端子１０１から各ＦＦ１０４での遅延量の例を示す。各遅延素子１０３の遅延量がいずれも５００ｐｓ、クロック１サイクルが４０００ｐｓ（１ｂｉｔのデータの速度が２５０Ｍｂｐｓ）のときの各ＦＦ１０４に入力される遅延量を示している。
【００２７】
例えば、１段目のＦＦ１０４（ＦＦ１）は１個の遅延素子１０３の遅延量が５００ｐｓであり、ＦＦ１に入力される遅延量は５００ｐｓである。２段目のＦＦ１０４（ＦＦ２）は２個の遅延素子１０３を通過するため遅延量が１０００ｐｓであり、ＦＦ２に入力される遅延量は１０００ｐｓである。８段目のＦＦ１０４（ＦＦ８）は８個の遅延素子１０３を通過するため遅延量が４０００ｐｓであり、ＦＦ８に入力される遅延量は４０００ｐｓである。
【００２８】
そして、実施の形態の受信回路１００は、データ変化の無い安定したタイミングでデータを取り込む。すなわち、データの変化点を避けて、データの安定しているタイミングでデータを取り込む。そして、各ＦＦ１０４の出力データを受信部１０５（ビットスリップ検出／セレクタ部１１５）にて比較し、ビットスリップするＦＦ１０４の境目を検出し、その結果から、最も安定していると思われるＦＦ１０４をセレクタにより選択する。後述するが、入力データが複数ｂｉｔの場合、各ｂｉｔのデータを独立して処理する。
【００２９】
詳細は後述するが、この受信回路１００は、温度や電圧の変動に伴って遅延量の変動が起こった場合に、随時、変動による結果を基に最適なタイミングを探し出すことができる。これにより、入力されるデータが高速でスイートスポットが小さくても追従してタイミングを細かく調整できる。
【００３０】
図３は、実施の形態の受信回路による安定したＦＦでのデータ取り込みを説明するタイミングチャートである。横軸は時間を示す。図１の構成において、ビットスリップ検出／セレクタ部１１５は、下記［１］、［２］の処理を実行することで、ビットスリップの無い安定したＦＦを決定する。
【００３１】
［１］各ＦＦ１０４の出力を常時比較し、クロック１サイクル分スリップするＦＦ１０４を特定する。
［２］ビットスリップしたＦＦから離れた位置のＦＦ１０４をセレクトし、データを取り込む。例えば、ビットスリップしたＦＦからみて最も離れたＦＦ１０４のデータを取り込む。また、図３の例に示すように、総ＦＦ個数の半分手前（遅延量が少ない側）のＦＦ１０４のデータを取り込んでも良い。
【００３２】
図３には、各箇所でのタイミング（位相）を示す。（ａ）はクロック入力端子１０２に入力されるクロック、（ｂ）はグローバルライン上での遅延によるクロックである。（ｃ）はデータ入力端子１０１に入力されるデータである。（ｄ）〜（ｉ）はそれぞれ、ＦＦ１〜ＦＦ６に対する入力データと出力データである（ＦＦ７，ＦＦ８の記載は省略）。
【００３３】
図３には、ＦＦ４とＦＦ５との間でスリップが生じた例を示してある。（ｈ）ＦＦ５の入力データが（ｂ）グローバルライン上のクロックの変化点と同じであるため、ＦＦ５は、セットアップ／ホールド動作の際、入力データの取り込みが不定となる（ＦＦ５がデータを取り込む場合と取り込まない場合が生じる）。
【００３４】
そして、ビットスリップ検出／セレクタ部１１５は、［１］８個のＦＦ１〜ＦＦ８の出力を常時比較し、クロック１サイクル分スリップしたＦＦ５を特定する。この際、ビットスリップ検出／セレクタ部１１５は、ＦＦ４，ＦＦ５の出力は取り込まない。
【００３５】
この後、ビットスリップ検出／セレクタ部１１５は、［２］ビットスリップしたＦＦから離れた位置のＦＦ１０４をセレクトする。例えば、ビットスリップしたＦＦ５から総ＦＦ個数（８個）の半分の個数である４個手前のＦＦ１をセレクトし、ＦＦ１のデータを取り込む。このＦＦ１は、ビットスリップの無い安定してデータを取り込んだＦＦ１０４である。
【００３６】
例えば、ビットスリップ検出／セレクタ部１１５は、定期的に入力されるトリガー（図１参照）毎に上記［１］［２］の処理を実行することにより、各ＦＦ１０４でのビットスリップを常時監視することができる。トリガーは、後述するが、送信装置から入力される構成とすることもできる。
【００３７】
図４は、実施の形態のビットスリップ検出のタイミングを送信する送信回路の構成例を示す図である。この送信回路４００は、受信回路１００が受信する上記データを伝送路に送信する。
【００３８】
送信回路４００は、送信装置４１０において、データを出力する箇所に配置される。送信装置４１０は、送信回路４００に対し送信するデータを処理するデータ処理部（不図示）を含む。この送信回路４００は、例えば、ＦＰＧＡを用いることができる。
【００３９】
送信回路４００は、主信号生成部４０１と、送信部４０２と、データ出力端子４０３と、トリガー生成部４０４と、コード挿入タイミング検出部４０５と、タイミング調整用コード生成部４０６と、を含む。
【００４０】
主信号生成部４０１は、送信装置４１０内から出力され、送信するデータを生成する。送信部４０２は、データをバス幅に対応した複数ビット（図１の例では１ビット）の送信データとしてデータ出力端子４０３から送信する。
【００４１】
トリガー生成部４０４は、受信装置１１０側の受信部１０５（ビットスリップ検出／セレクタ部１１５）におけるビットスリップ検出用のトリガーを生成する。コード挿入タイミング検出部４０５は、主信号生成部４０１が生成した主信号（送信データ）に基づき、ビットスリップ検出のトリガーを出力するタイミングを決定する。
【００４２】
タイミング調整用コード生成部４０６は、ビットスリップ検出のトリガーとして、特定のタイミング調整用コードを生成する。送信部４０２は、送信データにタイミング調整用コードを含ませて送信する。タイミング調整用コードは、複数ｂｉｔの組み合わせからなる（詳細は後述する）。
【００４３】
そして、送信回路４００は、特定のタイミング調整用コードを特定のタイミングで送信し、受信回路１００では、そのタイミング調整用コードを受信した際に、ビットスリップを検出し、補正する。例えば、送信装置４１０と受信装置１１０間において、フレームパルスを利用しているインタフェースでは、フレームの余剰スロットを利用してタイミング調整用コードを送受信することができる。
【００４４】
タイミング調整用コードの送信タイミングは、例えば、送信装置４１０のリセット時等である。送信装置４１０のリセット時や、送信装置４１０が起動された場合等には、送信装置４１０側、および受信装置１１０側が共に調整モードとなる。この際、送信装置４１０（送信回路４００）は、タイミング調整用コードを送信する。
【００４５】
このほか、ｂｉｔ間のクロック１周期単位でのスリップが生じる可能性もあるため、送信装置４１０側と受信装置１１０側とで取り決めたタイミング調整用コードを所定のタイミングで送受信しても良い。これにより、受信装置１１０（受信回路１００）側でタイミング調整用コードの特定ｂｉｔのスリップを検出し、スリップ分を他のｂｉｔより早める／遅らせる位相調整が行えるようになる。
【００４６】
さらには、受信装置１１０（受信回路１００）側でデータのスリップする頻度を監視し、送信装置４１０（送信回路４００）が送信するタイミング調整用コードの出力頻度を動的に変化させることもできる。例えば、送信装置４１０や受信装置１１０で検出した温度や電圧の変動の大きさに基づき、タイミング調整用コードの出力頻度を動的に変化させることもできる。
【００４７】
これにより、送信装置４１０や受信装置１１０の電源変動や温度変動によって、送信装置４１０側のデータ送出時の遅延量、途中の伝送路の遅延量、受信装置１１０側の遅延量や取り込みセットアップタイミング等の変化に対応できるようになる。すなわち、温度や電圧の変動に伴って遅延量の変動が起こっても、随時、変動による結果を基に最適なタイミングを探し出す。これにより、入力されるデータが高速でスイートスポットが小さくても追従してタイミングを細かく調整できる。そして、最適な取り込みタイミングでデータを取り込むことができ、受信したデータのデータエラーを防ぐことができる。
【００４８】
図５は、実施の形態のビットスリップ検出用のトリガーとして用いるタイミング調整用コードの内容例を示すタイミングチャートである。横軸は時間を示す。
【００４９】
図５の（ａ）は、送信回路４００による通常のデータ送信時の内容を示す。例えば、送信回路４００は、２０４８ｂｉｔの周期でフレームパルスを送信する。
【００５０】
図５の（ｂ）は、送信回路４００によるタイミング調整用コード送信時の内容を示す。送信回路４００は、タイミング調整用コードの送信時には、このタイミング調整用コード５００の送信期間（ｃｏｄｅ期間）Ｔ１だけフレームパルスの送信タイミングをずらす（２０４８ｂｉｔ＋α（ｃｏｄｅ期間））。
【００５１】
受信回路１００は、通常時のフレームパルスの出力時期ｔ１と、タイミング調整用コードの送信時のフレームパルスの出力時期ｔ２とに基づき、これら時期ｔ２−ｔ１の期間がタイミング調整用コード５００の送信期間（ｃｏｄｅ期間）Ｔ１と判断できる。そして、送信期間（ｃｏｄｅ期間）Ｔ１でタイミング調整用コード５００を抽出しタイミング調整に用いる。
【００５２】
すなわち、受信回路１００は、毎フレームパルスから数えて２０４８ｂｉｔ（２０４８クロック）の間は、主信号データとして扱う。そして、２０４９ｂｉｔ以降でフレームパルスが無い場合は、タイミング調整用コード５００が有効な期間と判断し、タイミング調整を行う。
【００５３】
タイミング調整用コード５００の内容（コード例）は、送信装置４１０と受信装置１１０との間であらかじめ取り決めた特定のコードであれば良く、例えば、’１１１’’０００’’０００’０００’’１１１’とする。この例では、送信装置４１０（送信回路４００）と受信装置１１０（受信回路１００）間のシリアル通信を示し、タイミング調整用コード５００のデータ幅は３ｂｉｔである。
【００５４】
上記のタイミング調整用コード５００は、送信回路４００のタイミング調整用コード生成部４０６が生成し、送信部４０２が送信データに含ませて送信する。このため、送信装置４１０と受信装置１１０との間のデータ用の伝送路を介してタイミング調整用コード５００を送受信することができ、他の伝送路等を用いる必要が無い。
【００５５】
図６は、実施の形態の受信回路の他の構成例を示す回路図である。上述した説明（図１）では、便宜上、受信するデータ幅を１ビットとしたが、図６には、データ幅が複数ビットである例を示している。
【００５６】
図６の例では、受信するデータが１６ビットのバス幅を有している（ｂｉｔ０〜ｂｉｔ１５）。対応して、データ入力端子１０１は、バス幅に対応して１６個設けられる。また、受信回路１００の内部においても、図１に示した８個の遅延素子１０３と８個のＦＦ１０４からなる各ビット回路６０１が、１６組設けられる。
【００５７】
また、受信部１０５は、各ｂｉｔに対応して１６個のビットスリップ検出／セレクタ部１１５が設けられ、それぞれ１ｂｉｔ中でのビットスリップを検出する。各ビットスリップ検出／セレクタ部１１５の後段には、コードチェック／補正部６０２が設けられ、複数ｂｉｔで構成されるコードのチェック、およびコードのズレがある場合の補正を行う。
【００５８】
ビットスリップ検出／セレクタ部１１５は、各ｂｉｔのビットスリップ検出と安定したデータの選択を各ビットで独立して行う。
【００５９】
図７は、実施の形態の受信回路のコードチェック／補正部の内部構成例を示す回路図である。図６に示したコードチェック／補正部６０２の回路構成例を示す。コードチェック／補正部６０２は、入力される１６ビットのデータの各ｂｉｔ毎に複数個の第２のデータ保持部（ＦＦ）７０１（図７の例では、３個のＦＦ１〜ＦＦ３）を直列接続してなる。入力されるクロックは、各ＦＦ７０１にクロック出力される。
【００６０】
１ビット（ＤＡＴＡ［０］）当たりの構成例を説明すると、１段目のＦＦ１の（データ）出力は、コードチェック／セレクタ部７０２に出力すると共に、２段目のＦＦ２に出力する。２段目のＦＦ２の（データ）出力は、コードチェック／セレクタ部７０２に出力すると共に、３段目のＦＦ３に出力する。３段目のＦＦ３の（データ）出力は、コードチェック／セレクタ部７０２に出力する。
【００６１】
なお、データの遅延特性は穏やかに変化し、クロックの１サイクルで温度や電圧が急激に変わることは無い。このため、上記のように、常時微調整（例えば、選択するＦＦ±１個変更）を行っていれば、データを取りこぼすことは無い。
【００６２】
図８は、実施の形態の受信回路のコードチェック／補正部の動作内容を説明するタイミングチャートである。横軸は時間を示す。縦軸には各部のデータの出力タイミングを示す。図８の（ａ）は送信回路４００の最終段ＦＦ（ＦＦ８）、（ｂ）は送信回路のデータ出力端子４０３、（ｃ）は受信回路１００のデータ入力端子１０１、（ｄ）はビットスリップ検出／セレクタ部１１５の出力、のタイミングをそれぞれ示す。
【００６３】
送信回路４００は、上述したように、タイミング調整用コード５００として、データ幅が３ｂｉｔ（ＦＦ７０１の個数に対応）、コード送信期間は５クロック期間（５回コードを送れる期間）を有している（図５参照）。
【００６４】
ビットスリップ検出／セレクタ部１１５の出力について、ビット間のズレとしては、時間的に前側へのズレ１ｂｉｔ、あるいは後ろ側へのズレ１ｂｉｔが生じる可能性がある。
【００６５】
図９は、実施の形態の受信回路におけるビット間のデータの位相ズレを説明するタイミングチャートである。横軸は時間を示す。図示のように、（ｄ）ＤＡＴＡ［１４］について、データ入力端子１０１へ入力されるデータに遅延が加わった後、ＦＦ１０４（ＦＦ１）がデータの安定期にクロック（グローバルライン）で取り込む。この際、図示のように、ＦＦ１では、データ取り込みタイミングに他のｂｉｔと１サイクル分ズレが生じることがある。
【００６６】
図８に戻り、ビット間のデータ取り込みのタイミングのズレに対応する構成を説明する。コードチェック／セレクタ部７０２は、フレームパルスから特定の期間後付近で（１ｂｉｔ前後にズレが生じている可能性があるため）、各ｂｉｔの変遷が  ’１’  ’０’  ’０’  ’０’  ’１’の区間を見つける。そして、他のｂｉｔとのコード（本コード例では３ｂｉｔ）を生成し、’０００’のタイミング前後で’０’のｂｉｔに混じって’１’があれば、その’１’があるｂｉｔはズレを生じていると判断する。
【００６７】
例えば、コードチェック／セレクタ部７０２は、（ｅ１）に示すように、’０００’のタイミングの前側で’０’ｂｉｔに混じって’１’があれば、そのｂｉｔは他のｂｉｔより１クロック分後側にズレが生じていると判断する。また、コードチェック／セレクタ部７０２は、（ｅ２）に示すように、’０００’のタイミングの後側で’０’ｂｉｔに混じって’１’があれば、そのｂｉｔは他のｂｉｔより１クロック分前側にズレが生じていると判断する。
【００６８】
そして、コードチェック／セレクタ部７０２は、通常時は図７のＦＦ２の信号を使用し、前側へズレが生じていた場合（ｅ２）は、ＦＦ３を使用するように回路内のセレクタを切り替える。また、後側へズレが生じていた場合（ｅ１）は、ＦＦ１を使用するように回路内のセレクタを切り替える。
【００６９】
このようにして、送信回路４００から送信される特定のタイミング調整用コードを用いて、ｂｉｔ間のコード内容のズレを検出することで、複数ビット（１６ビット）間のデータの位相を補正できる。
【００７０】
図１０は、実施の形態の受信回路のビット間のデータ位相のズレを補正する処理内容を示すフローチャートである。図１０に示す処理は、受信回路１００が行う処理の流れを示したものである。この処理は、例えばＡＳＩＣやＦＰＧＡで実現できる。また、必要な処理手順をプログラム化してメモリに記憶しておき、プロセッサがプログラムを実行することにより、コードチェック／補正部６０２の機能を実現することもできる。
【００７１】
はじめに、ビットスリップ検出／セレクタ部１１５は、入力されるデータＤＡＴＡ（例えばＤＡＴＡ［０］）のｂｉｔ毎に各遅延素子１０３での遅延量を加えた複数データをＦＦ１０４（ＦＦ１〜ＦＦ８）で取り込む（ステップＳ１００１ａ）。次に、ビットスリップ検出／セレクタ部１１５は、複数ＦＦ１０４（ＦＦ１〜ＦＦ８）間でのｂｉｔスリップの検出の有無を判断する（ステップＳ１００２ａ）。
【００７２】
ステップＳ１００２ａにおいて、ビットスリップ検出／セレクタ部１１５は、ビットスリップの検出時には（ステップＳ１００２ａ：Ｙｅｓ）、ステップＳ１００３ａに移行する。ビットスリップを検出しなければ（ステップＳ１００２ａ：Ｎｏ）、ステップＳ１００４に移行する。
【００７３】
ステップＳ１００３ａでは、ビットスリップ検出／セレクタ部１１５は、タイミング的にスリップ付近でない（離れた）ＦＦ１０４からのデータを取り込むよう、セレクタを変更する（ステップＳ１００３ａ）。
【００７４】
ステップＳ１００１ａ〜ステップＳ１００３ａは、ある一つのｂｉｔについての処理である。図６に示したように、入力される複数ｂｉｔに対応して、ステップＳ１００１ａ〜ステップＳ１００３ａと同様の処理は、各ｂｉｔでも個別にｂｉｔ幅分同時並行して行う（ステップＳ１００１ｎ〜１００３ｎ）。
【００７５】
ステップＳ１００４では、コードチェック／補正部６０２により、複数ｂｉｔで構成されるタイミング調整用コード５００のチェックを行い（ステップＳ１００４）、コードズレの検出の有無を判断する（ステップＳ１００５、図８参照）。
【００７６】
コードチェック／補正部６０２が複数ｂｉｔ間のコードのズレを検出したときには（ステップＳ１００５：Ｙｅｓ）、コードチェック／セレクタ部７０２によりズレのあるｂｉｔのセレクタを変更し、ズレを打ち消す処理を行う（ステップＳ１００６）。コードチェック／補正部６０２が複数ｂｉｔ間のコードのズレを検出しなければ（ステップＳ１００５：Ｎｏ）、ステップＳ１００６の処理は行わない。
【００７７】
図１１は、実施の形態の送信回路の他の構成例を示す図である。図４の構成の変形例を示し、同一の構成には同一の符号を付してある。送信回路４００は、上述したタイミング調整用コード５００を送信するタイミングを外部入力に基づき行っても良い。
【００７８】
図１１に示す例では、送信回路４００にリクエスト入力端子１１０１を設け、このリクエスト入力端子１１０１を介して入力されたコード送信リクエストをタイミング調整用コード生成部４０６に出力する。これにより、タイミング調整用コード生成部４０６は、コード送信リクエストを受信したタイミングでタイミング調整用コード５００を送信部４０２を介して受信回路１００（受信装置１１０）に送信することができる。
【００７９】
図１２は、実施の形態の受信装置の構成例を示す図である。受信装置１１０は、上述した受信回路１００の他に、図１１で説明したコード送信リクエストを送信するコード送信部１２００を含んでも良い。
【００８０】
コード送信部１２００は、温度センサ１２０１と、温度監視部１２０２と、電圧センサ１２０３と、電圧監視部１２０４と、記憶部１２０５と、コード送信リクエスト部１２０６と、リクエスト出力端子１２０７と、を含む。温度監視部１２０２、電圧監視部１２０４、記憶部１２０５、コード送信リクエスト部１２０６は、例えば、ＦＰＧＡを用いることができる。
【００８１】
温度センサ１２０１は、受信装置１１０内部の温度の変化を検出する。温度監視部１２０２は、温度センサ１２０１が検出した温度を監視し、所定の温度（例えば温度範囲）毎に対応した周期等でリクエストのトリガーをコード送信リクエスト部１２０６に出力する。
【００８２】
電圧センサ１２０３は、受信装置１１０内の各部の電圧の変化を検出する。電圧監視部１２０４は、電圧センサ１２０３が検出した電圧を監視し、所定の電圧（例えば各部の電圧範囲）毎に対応した周期等でリクエストのトリガーをコード送信リクエスト部１２０６に出力する。
【００８３】
記憶部１２０５には、例えば、ビットスリップ頻度情報が更新可能に記憶される。この記憶部１２０５には、例えば、受信部１０５（ビットスリップ検出／セレクタ部１１５）がビットスリップを検出した都度、スリップ検出のトリガーが入力される。記憶部１２０５は、トリガー入力毎にこのスリップ検出の頻度を時刻とともに記憶保持する。そして、記憶部１２０５は、記憶されたスリップ検出の頻度が高い時刻にリクエストのトリガーをコード送信リクエスト部１２０６に出力する。
【００８４】
また、記憶部１２０５は、時刻と共に、温度監視部１２０２の温度や、電圧監視部１２０４の電圧の変化の状態に基づき、スリップ検出の発生を予測してトリガーをコード送信リクエスト部１２０６に出力する機能を有しても良い。この予測は、過去の頻度を含めて行ってもよい。
【００８５】
コード送信リクエスト部１２０６は、温度監視部１２０２、電圧監視部１２０４、あるいは記憶部１２０５のいずれかからトリガーが出力されると、コード送信リクエストをリクエスト出力端子１２０７から出力する。このコード送信リクエストは、図１１に記載の送信回路４００に送信される。
【００８６】
図１２の構成によれば、受信装置１１０の温度や電圧に変動が生じたときや、変動が起きつつある（例えば変動が大きい）とき、送信回路４００にコード送信リクエストを通知する。これにより、コード送信リクエストを受信した送信回路４００は、タイミング調整用コードの送信頻度を高めて送信し、変動が落ち着いたときはタイミング調整用コードの送信頻度を下げることができ、タイミング調整用コードの送信を動的に変更できるようになる。
【００８７】
図１３は、実施の形態の送信回路の他の構成例を示す図である。図１１に示した送信回路４００のより詳細な構成例を示す。図１３に示すように、送信部４０２は、タイミング調整用コード生成部４０６と、フレームパルス生成部１３０１と、出力部１３０２と、を含んでも良い。
【００８８】
フレームパルス生成部１３０１は、通常時とタイミング調整用コード送出時とで異なるビット数の送信データのフレームパルスを生成する（図５参照）。出力部１３０２は、データをデータ出力端子４０３ａから出力し、フレームパルスをフレームパルス出力端子４０３ｂから出力する。
【００８９】
送信装置４１０内に供給されるクロックは、主信号生成部４０１、送信部４０２に供給される他に、クロック端子１３０３から受信装置１１０（受信回路１００のクロック入力端子１０２）に伝送路を介して伝送しても良い。
【００９０】
以上説明した実施の形態によれば、対向デバイスからの入力データを分岐して異なる遅延量を与えた複数のＦＦで受信し、各ＦＦの出力データを比較することでビットスリップしたＦＦを特定する。そして、ビットスリップしたＦＦから遅延量が離れ、安定してデータ受信可能なＦＦのデータを選択する。クロックは、対向する送信回路からの入力、あるいは受信回路内で生成されたいずれを用いてもよい。
【００９１】
そして、実施の形態では、データ側の遅延で入力タイミングを調整するため、クロック側での調整を不要にできる。これにより、クロックは単一のもので良く、複数用意する必要が無い。また、クロック位相調整用のＰＬＬが無くても実現できる。また、必要な回路はすべてユーザー回路（ＦＰＧＡ内の一般回路）で実現できる。
【００９２】
また、複数ビット（ｂｉｔ）幅のデータ（バス）の場合、各ｂｉｔの値が変化していない安定した値を選択するだけでは、ｂｉｔ間のクロック１周期単位でのスリップに対応できる。実施の形態では、送信側と受信側とで取り決めたタイミング調整用コードを所定のタイミングで送受信することにより、タイミング調整用コードの特定ｂｉｔのスリップを検出し、スリップ分を他のｂｉｔより早める／あるいは遅らせることで解消できる。
【００９３】
また、データのスリップする頻度を監視し、スリップの頻度に基づきタイミング調整用コードを送受信する頻度を動的に変化させることができる。また、デバイスの温度や電圧の変動の大きさを監視し、これらの変動の大きさに基づきタイミング調整用コードを送受信する頻度を動的に変化させることができる。これにより、受信装置さらには送信装置における環境変化等に対応でき、受信回路がデータを常に安定して取り込むことができるようになる。
【００９４】
そして、以上の実施の形態によれば、高速なデータを受信する受信回路において、設計者等が外部データの受信タイミングの規格値を算出する作業や、受信回路の配置配線時の受信タイミング調整を行う作業を容易に行うことができるようになる。また、受信回路にＰＬＬを用いず、複数のクロックのリソースを浪費することなしに設計できる。また、高速なサンプリングクロックを使用する為の高速なデバイスを用意する必要がなく低消費電力化が可能となる。
【００９５】
また、受信回路の運用時は、常時、最適なデータの受信タイミングを探し出す自動調整を行うため、高速なインタフェースであっても安定したデータ受信が行えるようになる。また、受信データに対して故意にエラーを発生させることなしに、受信データのタイミングのズレを検出することができるようになる。さらに、複数ｂｉｔ幅を持つデータ（バス）に対してもｂｉｔ間のズレを検出でき、高速なインタフェースの実現を推進する。また、複数ｂｉｔ幅を持つデータ（バス）に対しても、クロック１系統のみで受信データのズレを検出できる。また、タイミング調整用コードの送信頻度を環境変化等に応じて動的に変更することで、環境変化等に影響されることなく本来のデータレートを維持してデータを受信できるようになる。
【００９６】
なお、本実施の形態で説明したタイミング調整にかかる方法は、あらかじめ用意された制御プログラムを対象となる機器（受信回路および送信回路）のコンピュータ（プロセッサ等）で実行することにより実現することもできる。本制御プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、制御プログラムは、インターネット等のネットワークを介して配布しても良い。
【００９７】
上述した実施の形態に関し、さらに以下の付記を開示する。
【００９８】
（付記１）受信したデータ信号を複数に分配し、分配した複数の前記データ信号のそれぞれに異なる遅延量を与える遅延部と、
前記遅延部で遅延させた複数の前記データ信号を共通クロックで打ち抜き、打ち抜かれたデータ信号をそれぞれ出力する複数のデータ保持部と、
複数の前記データ保持部が出力するデータ信号に基づき、当該データ信号にビットスリップが生じた前記データ保持部を特定し、特定した前記データ保持部と異なる遅延量の前記データ保持部が出力する前記データ信号を受信データの再生用として選択するビットスリップ検出部と、
を備えたことを特徴とする受信回路。
【００９９】
（付記２）前記ビットスリップ検出部は、
定期的、あるいは環境変化に基づき生成されたトリガーの入力毎に前記ビットスリップを検出することを特徴とする付記１に記載の受信回路。
【０１００】
（付記３）前記ビットスリップ検出部は、
前記ビットスリップが生じた前記データ保持部に対し、遅延量が最も離れた前記データ保持部が出力するデータ信号を選択することを特徴とする付記１または２に記載の受信回路。
【０１０１】
（付記４）複数ビットの前記データ信号に対応して、前記遅延部と、前記データ保持部と、前記ビットスリップ検出部と、が前記複数ビットの数分、複数組設けられ、
複数の前記ビットスリップ検出部が出力する前記データ信号を用いて、前記複数ビット間における前記データ信号の位相ズレを検出するコードチェック部を備えたことを特徴とする付記１〜３のいずれか一つに記載の受信回路。
【０１０２】
（付記５）前記データ信号には、前記ビットスリップ検出の要求時にのみフレームに特定コードが含まれ、前記ビットスリップ検出の要求時には、受信するフレームパルスの間隔が通常時と異なり、
前記コードチェック部は、前記フレームのフレームパルスの間隔の変化に基づき、前記ビットスリップ検出の要求の有無を判断し、前記ビットスリップ検出の要求時には、前記フレームに含まれる前記特定コードに基づき、前記複数ビット間における前記データ信号の位相ズレを検出することを特徴とする付記４に記載の受信回路。
【０１０３】
（付記６）前記コードチェック部は、
前記特定コードのビット数に対応した個数を有し、それぞれが直列接続された複数の第２のデータ保持部と、
複数の前記第２のデータ保持部の出力に基づき、前記複数ビット間における前記データ信号の位相ズレを検出し、前記位相ズレに対応して前記第２のデータ保持部が出力する前記データ信号を選択出力するコードチェック部と、
を備えたことを特徴とする付記４または５に記載の受信回路。
【０１０４】
（付記７）前記特定コードは、対向する送信装置が前記データ信号に含ませて送信したものを受信することを特徴とする付記５または６に記載の受信回路。
【０１０５】
（付記８）自装置内の温度、動作回路の電圧の変動に基づき、前記特定コードの送信を要求するリクエストを前記送信装置に送信するリクエスト部を備えたことを特徴とする付記５〜７のいずれか一つに記載の受信回路。
【０１０６】
（付記９）前記共通クロックは、自装置内部、あるいは外部入力されたクロックであることを特徴とする付記１〜８のいずれか一つに記載の受信回路。
【０１０７】
（付記１０）付記１〜９のいずれか一つに記載した受信回路と、
前記受信回路から出力されるデータ信号を再生するデータ再生部と、
を備えたことを特徴とする受信装置。
【０１０８】
（付記１１）受信したデータ信号を複数に分配し、分配した複数の前記データ信号のそれぞれに異なる遅延量を与え、
遅延させた複数の前記データ信号を共通クロックで打ち抜き、打ち抜かれた複数の前記データ信号に基づき、複数の前記データ信号のうちビットスリップが生じた前記データ信号と異なる遅延量の前記データ信号を受信データの再生用として選択する、
ことを特徴とする受信方法。
【０１０９】
（付記１２）定期的、あるいは環境変化に基づき生成されたトリガーの入力毎に前記ビットスリップを検出することを特徴とする付記１１に記載の受信方法。
【０１１０】
（付記１３）さらに、入力された複数ビットの前記データ信号のビット間における前記データ信号の位相ズレを検出することを特徴とする付記１１に記載の受信方法。
【符号の説明】
【０１１１】
１００  受信回路
１０１  データ入力端子
１０２  クロック入力端子
１０３  遅延素子
１０４  ＦＦ
１０５  受信部
１１０  受信装置
１１５  ビットスリップ検出／セレクタ部
４００  送信回路
４０１  主信号生成部
４０２  送信部
４０３  データ出力端子
４０４  トリガー生成部
４０５  コード挿入タイミング検出部
４０６  タイミング調整用コード生成部
４１０  送信装置
５００  タイミング調整用コード
６０２  コードチェック／補正部
７０２  コードチェック／セレクタ部
１１０１  リクエスト入力端子
１２００  コード送信部
１２０１  温度センサ
１２０２  温度監視部
１２０３  電圧センサ
１２０４  電圧監視部
１２０５  記憶部
１２０６  コード送信リクエスト部
１２０７  リクエスト出力端子
【図１】
2018006863.tif 000003
【図２】
2018006863.tif 000004
【図３】
2018006863.tif 000005
【図４】
2018006863.tif 000006
【図５】
2018006863.tif 000007
【図６】
2018006863.tif 000008
【図７】
2018006863.tif 000009
【図８】
2018006863.tif 000010
【図９】
2018006863.tif 000011
【図１０】
2018006863.tif 000012
【図１１】
2018006863.tif 000013
【図１２】
2018006863.tif 000014
【図１３】
2018006863.tif 000015