(57)【特許請求の範囲】
【請求項１】
第１クロックにもとづいてパラレルデータをシリアルデータに変換する複数のデータ変換部と、
前記データ変換部のそれぞれに対応し、前記シリアルデータのデータ間スキューを除去する複数のデスキュー部と、
を備え、
前記デスキュー部は、
前記データ変換部にタイミング検出用データを出力し、前記データ変換部が出力するシリアル化された前記タイミング検出用データを、前記第１クロックの周波数より低く、かつ前記複数のデスキュー部に同位相で供給される第２クロックにもとづいてサンプリングし、サンプリングしたデータの遷移状態から前記シリアルデータの出力タイミングを調整する調整値を生成する生成部と、
前記データ変換部に出力するパラレルデータを前記調整値に応じてデータシフトする調整部と、
を備えることを特徴とする送信回路。
【請求項２】
前記複数のデスキュー部の各々に対応するとともに、各々の出力端子を電気的に短絡させた複数のクロックバッファを備えることを特徴とする請求項１記載の送信回路。
【請求項３】
前記生成部は、前記遷移状態から前記出力タイミングが特定タイミングか否かを判定し、前記出力タイミングが前記特定タイミングでない場合に前記調整値を更新し、前記出力タイミングが前記特定タイミングである場合に前記調整値を決定することを特徴とする請求項２記載の送信回路。
【請求項４】
前記タイミング検出用データは、所定ビット長の０または１が連続した第１データと、前記第１データを反転した第２データのうち、いずれか一方を上位に、他方を下位にして結合し、連続するデータを前記所定ビット長だけ抜き出したものであることを特徴とする請求項３記載の送信回路。
【請求項５】
前記調整部は、前記調整値に応じて前記タイミング検出用データを更新することを特徴とする請求項４記載の送信回路。
【請求項６】
前記第２クロックは、前記第１クロックを分周したクロックであることを特徴とする請求項１乃至請求項５のいずれか１項に記載の送信回路。
【請求項７】
第１クロックにもとづいてパラレルデータをシリアルデータに変換する複数のデータ変換部のそれぞれに対応し、前記シリアルデータのデータ間スキューを除去する複数のデスキュー部を備え、
前記デスキュー部は、
前記データ変換部にタイミング検出用データを出力し、前記データ変換部が出力するシリアル化された前記タイミング検出用データを、前記第１クロックの周波数より低く、かつ前記複数のデスキュー部に同位相で供給される第２クロックにもとづいてサンプリングし、サンプリングしたデータの遷移状態から前記シリアルデータの出力タイミングを調整する調整値を生成する生成部と、
前記データ変換部に出力するパラレルデータを前記調整値に応じてデータシフトする調整部と、
を備えることを特徴とするデスキュー回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信回路、およびデスキュー回路に関する。
【背景技術】
【０００２】
データ伝送は、高速化のニーズの強まりに伴い複数チャネル化が進行している。伝送されるデータは、送信側にてチャネル数に応じて分割された後、送信側から受信側に伝送されて受信側にて合成される。このとき各チャネル間において、出力するデータ間に時間差、いわゆるスキューが生じるため、受信側は、スキューを除去してデータを合成する。
【０００３】
一般的に、スキュー調整（スキュー除去）は、送信側によって定義されたスキュー範囲に応じて受信側によっておこなわれている。たとえば、コンシューマ系の規格であるPCI-expressは、送信端でのスキューを500ps + 2/4/6bitのように定義している。
【０００４】
また、送信端でのスキュー規格を満足するため、各送信チャネルに対して同位相クロックを供給する手法がある。各送信チャネルに供給されるクロックは、初段バッファの出力のショートにより位相が揃えられ、送信チャネル出力でのデータスキューを除去する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−４４０６１号公報
【特許文献２】特開２００３−２１８８４４号公報
【特許文献３】特開２００７−６０２１７号公報
【非特許文献】
【０００６】
【非特許文献１】Hirohito Higashi, et al., "5-6.4 Gbps 12 channel Transceiver with Pre-emphasis and Equalizer," Symposium on VLSI Circuits, June 2004, pp.130-133, June 2004.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
データ伝送のさらなる高速化は、より高速なクロックの供給を要求する。しかしながら、物理的に離れたノード同士のショートは、両端のバッファ間での位相差が高速化にしたがい大きくなり、HighとLowがショートするといった状況が生じる。そのため、高速なクロックを同位相で各送信チャネルに供給することは困難であり、従来、採用してきたクロック伝送方式が使えない状況になってきている。
【０００８】
本発明はこのような点に鑑みてなされたものであり、高速なクロックの供給下であっても、送信チャネル間のスキュー除去が可能な送信回路、およびデスキュー回路を提供することを目的とする。
【課題を解決するための手段】
【０００９】
発明の一観点によれば、以下に示すような、送信回路が提供される。送信回路は、複数のデータ変換部と、データ変換部のそれぞれに対応する複数のデスキュー部と、を備える。データ変換部は、第１クロックにもとづいてパラレルデータをシリアルデータに変換する。デスキュー部は、シリアルデータのデータ間スキューを除去する。
【００１０】
デスキュー部は、生成部と、調整部と、を備える。生成部は、データ変換部にタイミング検出用データを出力し、データ変換部が出力するシリアル化されたタイミング検出用データを、第１クロックの周波数より低く、かつ複数のデスキュー部に同位相で供給される第２クロックにもとづいてサンプリングし、サンプリングしたデータの遷移状態からシリアルデータの出力タイミングを調整する調整値を生成する。調整部は、データ変換部に出力するパラレルデータを調整値に応じてデータシフトする。
【００１１】
また、発明の一観点によれば、以下に示すような、デスキュー回路が提供される。デスキュー回路は、第１クロックにもとづいてパラレルデータをシリアルデータに変換する複数のデータ変換部のそれぞれに対応し、シリアルデータのデータ間スキューを除去する複数のデスキュー部を備える。
【００１２】
デスキュー部は、生成部と、調整部と、を備える。生成部は、データ変換部にタイミング検出用データを出力し、データ変換部が出力するシリアル化されたタイミング検出用データを、第１クロックの周波数より低く、かつ複数のデスキュー部に同位相で供給される第２クロックにもとづいてサンプリングし、サンプリングしたデータの遷移状態からシリアルデータの出力タイミングを調整する調整値を生成する。調整部は、データ変換部に出力するパラレルデータを調整値に応じてデータシフトする。
【発明の効果】
【００１３】
上記の送信回路、およびデスキュー回路は、高速なクロックの供給下であっても、送信チャネル間のスキュー除去を可能にする。
【図面の簡単な説明】
【００１４】
【図１】第１の実施形態の送信回路の一例を示す図である。
【図２】第２の実施形態の送信回路の一例を示す図である。
【図３】第２の実施形態のチャネル送信回路の一例を示す図である。
【図４】第２の実施形態の同位相クロック供給回路の一例を示す図である。
【図５】第２の実施形態のチャネルスキュー制御論理回路の一例を示す図である。
【図６】第２の実施形態のチャネルスキュー制御論理回路の動作例を示すタイミングチャートである。
【図７】第２の実施形態のチャネルデータシフト論理回路の一例を示す図である。
【図８】第２の実施形態のチャネル０データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。
【図９】第２の実施形態のチャネル０データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。
【図１０】第２の実施形態のチャネル０データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。
【図１１】第２の実施形態のチャネル１データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。
【図１２】第２の実施形態のチャネル１データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。
【図１３】第２の実施形態のチャネル１データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。
【図１４】第２の実施形態のデスキュー処理を示すフローチャートである。
【図１５】第２の実施形態のチャネル０データシフト論理回路およびチャネル１データシフト論理回路のデスキュー動作例を示すタイミングチャートである。
【図１６】第２の実施形態のチャネル０送信回路およびチャネル１送信回路が出力するシリアルデータの一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
［第１の実施形態］
まず、第１の実施形態の送信回路について図１を用いて説明する。図１は、第１の実施形態の送信回路の一例を示す図である。
【００１６】
送信回路１は、パラレルデータをシリアルデータに変換してデータ伝送をおこなう送信回路である。送信回路１は、データ変換部２と、データ変換部２に対応するデスキュー部３を１対にする送信チャネルを複数備える。なお、図１は、２つの送信チャネルを備える送信回路１を図示するが、３つ以上の送信チャネルを備えるものであってよい。
【００１７】
送信回路１は、第１クロックをデータ変換部２に供給し、第１クロックより周波数の低い第２クロックをデスキュー部３に供給する。たとえば、第２クロックは、第１クロックを分周して生成される。また、第２クロックは、電気的に短絡することで、複数のデスキュー部３に同位相で供給される。
【００１８】
データ変換部２は、第１クロックにもとづいてパラレルデータをシリアルデータに変換する。データ変換部２は、パラレルデータのデータ幅のデータストリームをシリアルデータとして１つのデータストリームに変換するＭＵＸ（MUltipleXer：マルチプレクサ）機能を有する。データ変換部２は、第１クロックを分周する分周回路を備えてＭＵＸ機能を実現するが、分周回路の初期状態は不定である。そのため、複数のデータ変換部２は、分周回路の段数に応じて、各送信チャネル内の分周クロックの位相が異なる。そのため、送信回路１は、各送信チャネル出力にてデータ間にスキューが発生する。
【００１９】
デスキュー部３は、第２クロックにもとづいてパラレルデータを入力し、対応するデータ変換部２に出力する。デスキュー部３は、対応するデータ変換部２に出力するパラレルデータをデータシフトして、データ変換部２が出力するシリアルデータのデータ間スキューを除去する。
【００２０】
デスキュー部３は、生成部４と調整部５を備える。生成部４は、データ変換部２にタイミング検出用データを出力する。生成部４は、データ変換部２が出力するシリアル化されたタイミング検出用データを第２クロックにもとづいてサンプリングする。生成部４は、サンプリングしたデータの遷移状態からシリアルデータの出力タイミングが特定タイミングか否かを判定する。生成部４は、シリアルデータの出力タイミングが特定タイミングの場合に、当該タイミングを特定する調整値を生成する。生成部４は、シリアルデータの出力タイミングが特定タイミングでない場合に、タイミング検出用データをデータシフトしてタイミング検出用データを更新する。なお、特定タイミングとは、調整値を決定できるタイミングである。
【００２１】
調整部５は、入力したパラレルデータを調整値に応じてデータシフトしてデータ変換部に出力する。
これにより、送信回路１は、すべての送信チャネル内が特定タイミングでシリアルデータを出力することとなり、各送信チャネル出力におけるデータ間スキューが除去される。このように、送信回路１は、高速なクロックの供給下であっても、送信チャネル間のスキュー除去を可能にする。
［第２の実施形態］
次に、より具体的な第２の実施形態の送信回路について図２、図３を用いて説明する。図２は、第２の実施形態の送信回路の一例を示す図である。図３は、第２の実施形態のチャネル送信回路の一例を示す図である。
【００２２】
送信回路１０は、４つの送信チャネルと、クロック生成回路１４と、同位相クロック供給回路１５と、制御回路１６を備える。各送信チャネルは、チャネル送信回路１１と、データシフト論理回路１２と、スキュー制御論理回路１３とを含んで構成される。なお、送信回路１０は、４つの送信チャネルを備える場合を例示するが、２つまたは３つ、あるいは５つ以上の送信チャネルを備えるものであってもよい。
【００２３】
チャネル送信回路１１は、送信チャネルごとに、チャネル０送信回路１１ａ、チャネル１送信回路１１ｂ、チャネル２送信回路１１ｃ、チャネル３送信回路１１ｄがある。データシフト論理回路１２は、送信チャネルごとに、チャネル０データシフト論理回路１２ａ、チャネル１データシフト論理回路１２ｂ、チャネル２データシフト論理回路１２ｃ、チャネル３データシフト論理回路１２ｄがある。スキュー制御論理回路１３は、送信チャネルごとに、チャネル０スキュー制御論理回路１３ａ、チャネル１スキュー制御論理回路１３ｂ、チャネル２スキュー制御論理回路１３ｃ、チャネル３スキュー制御論理回路１３ｄがある。
【００２４】
クロック生成回路１４は、所定のクロックを生成し、各回路に供給する。クロック生成回路１４は、たとえば、ＰＬＬ（Phase-Locked Loop：位相同期回路）である。クロック生成回路１４は、最高速のクロック（たとえば、１４ＧＨｚ）１９をチャネル送信回路１１に供給する。クロック生成回路１４は、クロック１９を分周したクロック（たとえば、１．７５ＧＨｚ）２０を同位相クロック供給回路１５に供給する。
【００２５】
同位相クロック供給回路１５は、クロック生成回路１４からクロック２０を入力する。同位相クロック供給回路１５は、入力したクロック２０を同位相にしたクロック２１をスキュー制御論理回路１３に供給する。
【００２６】
なお、チャネル送信回路１１は、クロック生成回路１４から供給されたクロック１９を分周したクロック２２を、送信チャネルごとにデータシフト論理回路１２、スキュー制御論理回路１３に供給する。これにより、データシフト論理回路１２、スキュー制御論理回路１３は、チャネル送信回路１１と同期した動作が可能になる。
【００２７】
制御回路１６は、データシフト論理回路１２、スキュー制御論理回路１３を制御する。制御回路１６は、制御信号によってデータシフト論理回路１２とスキュー制御論理回路１３の動作状態を、第１状態または第２状態に制御する。たとえば、制御回路１６は、起動後の所定時間だけデータシフト論理回路１２とスキュー制御論理回路１３の動作状態を第１状態とし、その後に第２状態に遷移させる。また、制御回路１６は、クロック２３を出力する。
【００２８】
第１状態は、シリアルデータの出力タイミングを調整する調整値を決定する制御状態である。第２状態は、決定した調整値に応じてシリアルデータを出力する制御状態である。シリアルデータの出力タイミングの調整は、データシフト論理回路１２が出力するパラレルデータをデータシフトすることによっておこなう。調整値は、パラレルデータのデータシフト量である。
【００２９】
チャネル送信回路１１は、データシフト論理回路１２が出力するパラレルデータをシリアルデータに変換する。チャネル送信回路１１は、バッファ１７とＭＵＸ１８を備える。ＭＵＸ１８は、１６ビットのパラレルデータを１６ビットのシリアルデータに変換する１６：１ＭＵＸ機能を備える。チャネル送信回路１１は、バッファ１７を介してシリアルデータを出力する。
【００３０】
データシフト論理回路１２は、スキュー制御論理回路１３から入力する１６ビットのパラレルデータ、またはデータシフト論理回路１２が生成するタイミング検出用データを、１６ビットのパラレルデータにしてチャネル送信回路１１に出力する。データシフト論理回路１２は、スキュー制御論理回路１３からシフトコード（調整値）を入力する。データシフト論理回路１２は、チャネル送信回路１１に出力するパラレルデータを、シフトコードにもとづいてデータシフトして出力する。
【００３１】
スキュー制御論理回路１３は、１６ビットのパラレルデータ（送信データ）を入力してデータシフト論理回路１２に出力する。スキュー制御論理回路１３は、チャネル送信回路１１からシリアルデータを入力する。スキュー制御論理回路１３は、シリアルデータにもとづいてシフトコードを決定する。スキュー制御論理回路１３は、決定したシフトコードを、データシフト論理回路１２に出力する。
【００３２】
次に、同位相クロック供給回路１５について図４を用いて説明する。図４は、第２の実施形態の同位相クロック供給回路の一例を示す図である。
同位相クロック供給回路１５は、クロック２０を入力して、クロック２１を出力する。同位相クロック供給回路１５は、伝送バッファ（クロックバッファ）２８と、送信チャネルごとの前段バッファ（クロックバッファ）２７と、後段バッファ（クロックバッファ）２５と、前段バッファ２７の出力を短絡させる短絡線２６を備える。
【００３３】
伝送バッファ２８は、チャネル０伝送バッファ２８ａ、チャネル１伝送バッファ２８ｂ、チャネル２伝送バッファ２８ｃ、チャネル３伝送バッファ２８ｄを含む。前段バッファ２７は、チャネル０前段バッファ２７ａ、チャネル１前段バッファ２７ｂ、チャネル２前段バッファ２７ｃ、チャネル３前段バッファ２７ｄを含む。後段バッファ２５は、チャネル０後段バッファ２５ａ、チャネル１後段バッファ２５ｂ、チャネル２後段バッファ２５ｃ、チャネル３後段バッファ２５ｄを含む。
【００３４】
伝送バッファ２８は、物理的に離れたチャネルに十分な大きさの振幅をもったクロックを供給するため、伝送経路におけるクロック振幅の減少を補う。チャネル０伝送バッファ２８ａは、チャネル０前段バッファ２７ａとチャネル１伝送バッファ２８ｂに信号を伝送する。チャネル１伝送バッファ２８ｂは、チャネル１前段バッファ２７ｂとチャネル２伝送バッファ２８ｃに信号を伝送する。チャネル２伝送バッファ２８ｃは、チャネル２前段バッファ２７ｃとチャネル３伝送バッファ２８ｄに信号を伝送する。チャネル３伝送バッファ２８ｄは、チャネル３前段バッファ２７ｄに信号を伝送する。これにより、同位相クロック供給回路１５は、クロック生成回路１４、各送信チャネルが物理的に離れていても、各送信チャネルに十分な大きさの振幅をもったクロックを供給することができる。
【００３５】
前段バッファ２７が出力するクロックは、チャネル０前段バッファ２７ａ、チャネル１前段バッファ２７ｂ、チャネル２前段バッファ２７ｃ、チャネル３前段バッファ２７ｄが相互に物理的に離れた位置に配置されることから、その距離に応じて入力位相が異なる。そこで、同位相クロック供給回路１５は、前段バッファ２７の出力を短絡させて出力位相を揃えている。これにより、同位相クロック供給回路１５は、クロック２１を同位相にして出力することができる。
【００３６】
なお、同位相クロック供給回路１５に入力されるクロック２０は、前段バッファ２７の出力を短絡しても、物理的距離のあるバッファ間での位相差がパルス幅に比較して十分に小さい。したがって、同位相クロック供給回路１５は、HighとLowのショートにより信号が不定になることなく、クロック２１を同位相に揃えることができる。
【００３７】
次に、スキュー制御論理回路１３の構成と動作について図５、図６を用いて説明する。図５は、第２の実施形態のチャネルスキュー制御論理回路の一例を示す図である。図６は、第２の実施形態のチャネルスキュー制御論理回路の動作例を示すタイミングチャートである。
【００３８】
スキュー制御論理回路１３は、データ転送部４３とスキュー制御部４４とを含んで構成される。データ転送部４３は、スキュー制御論理回路１３に入力されるパラレルデータを、データシフト論理回路１２に転送する。データ転送部４３は、ＦＩＦＯ（First In First Out バッファ）４２を有する。ＦＩＦＯ４２は、パラレルデータと同期したクロック２３で入力して、クロック２２で出力する。
【００３９】
スキュー制御部４４は、シフトコードの決定と、データシフト論理回路１２へのシフトコードの出力をおこなう。スキュー制御部４４は、ＦＦ（フリップフロップ）３０、３１、３３、３４、３９、ＣＭＰ（比較器）３２、３８、ＡＮＤゲート３５、ＯＲゲート３６、ＣＮＴ（カウンタ）３７、４１、ＳＥＬ（セレクタ）４０を有する。
【００４０】
スキュー制御部４４は、クロック２１に同期して動作する。ＦＦ３３は、制御信号を入力する。制御信号は、制御信号「１」がシフトコードを決定する制御状態（第１状態）であり、制御信号「０」がシフトコードに応じてシリアルデータを出力する制御状態（第２状態）である。
【００４１】
ＡＮＤゲート３５は、ＦＦ３３の出力の入力と、ＦＦ３４の出力の反転入力の論理積として信号Ｓ１を出力する。ＡＮＤゲート３５は、制御信号の「０」から「１」の変化を検出してパルス信号を出力する。ＡＮＤゲート３５が出力するパルス信号は、ＣＮＴ３７、４１のＲＳＴ（リセット）に入力されて、ＣＮＴ３７、４１をリセットする。言い換えれば、信号Ｓ１は、シフトコード決定の開始信号（信号Ｓ１）である。ＦＦ３３、ＦＦ３４、およびＡＮＤゲート３５は、シフトコード決定の開始トリガ検出部である。
【００４２】
ＣＮＴ３７（第１カウンタ）は、１ずつインクリメントして７までカウントアップする８進カウンタである。ＣＮＴ３７は、カウンタ値をＣＭＰ３８に出力する。ＣＭＰ３８は、定数「７」との比較をおこない、比較結果として信号Ｓ２を出力する。信号Ｓ２は、カウンタ値「７」の検出でパルス信号（カウンタリセット信号）を出力する。信号Ｓ２は、ＣＮＴ３７のＲＳＴに入力されて、ＣＮＴ３７をリセットする。
【００４３】
ＦＦ３０は、ＭＵＸ１８が出力するシリアル信号を入力する。ＦＦ３０は、入力されるシリアル信号を、クロック（同位相クロック）２１の周期でサンプリングする。データシフト論理回路１２は、第１状態においてタイミング検出用データをチャネル送信回路１１に出力する。したがって、ＭＵＸ１８は、シリアル化したタイミング検出用データを出力する。
【００４４】
タイミング検出用データは、１６ビット長の「０」と１６ビット長の「１」を繰り返すデータである。ＦＦ３０は、タイミング検出用データを、シリアルデータの１６ビット長の周期（クロック２１の周期）でサンプリングする。このように、スキュー制御論理回路１３は、ＦＦ３０がクロック２１（同位相クロック）でシリアルデータをサンプリングするため、各送信チャネルが同時にシリアルデータをサンプリングすることができる。
【００４５】
ＣＭＰ３２は、ＦＦ３０の出力と、ＦＦ３０の出力を一周期遅延させたＦＦ３１の出力を比較する。すなわち、ＣＭＰ３２は、連続してサンプリングしたタイミング検出用データが一致するか否かを判定する。ＣＭＰ３２は、判定結果を信号Ｓ３としてＦＦ３９に出力する。ＣＭＰ３２は、連続してサンプリングしたタイミング検出用データが一致した場合に「１」を出力する。なお、ＣＭＰ３２は、ＦＦ３３の出力をイネーブル入力として、第１状態において動作するようになっている。
【００４６】
ＦＦ３９は、ＲＳフリップフロップであり、信号Ｓ３をセット入力、信号Ｓ２をリセット入力とする。ＦＦ３９は、信号Ｓ４を出力とする。
ＳＥＬ４０は、信号Ｓ２、信号「０」、および信号Ｓ４を入力し、信号Ｓ５を出力する。ＳＥＬ４０は、信号Ｓ４が「０」の場合に信号Ｓ２を出力し、信号Ｓ４が「１」の場合に信号「０」を出力する。すなわち、信号Ｓ５は、ＣＮＴ３７のカウンタリセット毎に「１」に変化し、特定タイミング検出で「０」に固定される。
【００４７】
ＣＮＴ４１（第２カウンタ）は、１ずつインクリメントする１０進カウンタである。ＣＮＴ４１は、カウンタ値をシフトコードとしてデータシフト論理回路１２に出力する。なお、「４’ｄ０」は、４ビット幅の信号であり、その論理値が１０進表記（ｄｅｃ）で「０」であることを示す。
【００４８】
これにより、スキュー制御論理回路１３は、特定タイミング非検出時に信号Ｓ５の立ち下がりごとにＣＮＴ４１をカウントアップし、特定タイミング検出時には、ＣＮＴ４１を固定してシフトコードを生成する。なお、ＣＮＴ４１は、特定タイミング検出以降、シフトコードを記憶保持する記憶部として機能する。
【００４９】
たとえば、図６に示す特定タイミング非検出時動作において、スキュー制御論理回路１３は、ＣＮＴ４１（第２カウンタ）をＣＮＴ３７（第１カウンタ）のカウンタリセット毎に、「４’ｄ０」、「４’ｄ１」、「４’ｄ２」、・・・と更新する。また、図６に示す特定タイミング検出時動作において、スキュー制御論理回路１３は、ＣＮＴ４１（第２カウンタ）をＣＮＴ３７（第１カウンタ）のカウンタリセットにより「４’ｄ０」、「４’ｄ１」と更新したところで、「４’ｄ１」に固定される。
【００５０】
次に、データシフト論理回路１２の構成について図７を用いて説明する。図７は、第２の実施形態のチャネルデータシフト論理回路の一例を示す図である。
データシフト論理回路１２は、ＦＦ（フリップフロップ）５０、５１、５２、第１セレクタ５３、第２セレクタ５７、第１レジスタ５４、第２レジスタ５５、データ結合部５６を含んで構成される。
【００５１】
データシフト論理回路１２は、チャネル送信回路１１から供給されるクロック２２で動作する同期回路である。ＦＦ５０は、１６ビットのフリップフロップであり、「００００Ｈ」または「ＦＦＦＦＨ」を初期値にして、クロック入力毎に反転出力する。なお、表記「００００Ｈ」は、「１６’ｈ００００」を意味し、１６ビット幅の信号であり、その論理値が１６進表記（ｈｅｘ）で「０」であることを示す。
【００５２】
ＦＦ５１は、制御回路１６から制御信号を入力し、第１セレクタ５３に出力する。第１セレクタ５３は、スキュー制御論理回路１３のＦＩＦＯ４２が出力するパラレルデータと、ＦＦ５０が出力するパラレルデータを入力し、制御信号にもとづいていずれかを出力する。第１セレクタ５３は、制御信号「１」のとき、すなわち第１状態においてＦＦ５０から入力されたパラレルデータを出力し、制御信号「０」のとき、すなわち第２状態においてＦＩＦＯ４２から入力されたパラレルデータを出力する。
【００５３】
第１レジスタ５４は、第１セレクタ５３から入力されたパラレルデータを保持する。第１レジスタ５４は、保持したパラレルデータを、第２レジスタ５５およびデータ結合部５６に出力する。
【００５４】
第２レジスタ５５は、第１レジスタ５４から入力されたパラレルデータを保持する。第２レジスタ５５は、保持したパラレルデータをデータ結合部５６に出力する。なお、第１レジスタ５４および第２レジスタ５５は、１６ビットのフリップフロップで構成可能である。
【００５５】
データ結合部５６は、第１レジスタ５４および第２レジスタ５５から入力されたパラレルデータを結合する。これにより、データ結合部は、第１セレクタ５３が連続して出力した２つの１６ビットパラレルデータを結合した３２ビットパラレルデータを得る。すなわち、データ結合部５６は、第１セレクタ５３が時間的に先に生成した１６ビットパラレルデータを上位とした３２ビットパラレルデータを生成する。データ結合部５６は、３２ビットパラレルデータを第２セレクタ５７に出力する。
【００５６】
ＦＦ５２は、スキュー制御論理回路１３から４ビットパラレルデータをシフトコードとして入力する。ＦＦ５２は、シフトコードを第２セレクタ５７に出力する。
第２セレクタ５７は、データ結合部５６から３２ビットパラレルデータを入力し、ＦＦ５２からシフトコードを入力する。第２セレクタ５７は、シフトコードにもとづいて、３２ビットパラレルデータから１６ビットパラレルデータを切り出す。
【００５７】
第２セレクタ５７は、次のような切り出しルールによって１６ビットパラレルデータを切り出す。切り出しルールは、４ビットパラレルデータのシフトコードが「４’ｄＮ」（ただし、Ｎは、０から１５の整数）とした場合、３２ビットパラレルデータ［３１：０］から１６ビットパラレルデータ［３１−Ｎ：１６−Ｎ］の切り出しである。これによれば、第２セレクタ５７は、３２ビットパラレルデータ「００００ＦＦＦＦＨ」であれば、シフトコード「１」のときに、１６ビットパラレルデータ「０００１Ｈ」を切り出す。
【００５８】
このようにして、データシフト論理回路１２は、チャネル送信回路１１に１６ビットパラレルデータを出力する。データシフト論理回路１２が出力する１６ビットパラレルデータは、第１状態においてタイミング検出用データであり、第２状態において通信データである。
【００５９】
また、データシフト論理回路１２が出力する１６ビットパラレルデータは、シフトコードにもとづいてデータシフトされたデータである。この１ビット単位のデータシフトにより、チャネル送信回路１１は、シリアルデータの出力タイミングが変化する。すなわち、データシフト論理回路１２は、チャネル送信回路１１が出力するシリアルデータの出力タイミングを、クロック２２の１／１６クロック相当の精度で調整可能である。
【００６０】
次に、データシフト論理回路１２の第１状態の動作について図８から図１３を用いて説明する。図８から図１０は、第２の実施形態のチャネル０データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。図１１から図１３は、第２の実施形態のチャネル１データシフト論理回路のシフトコード決定過程の動作例を示すタイミングチャートである。なお、送信チャネル０、送信チャネル１について、動作例を説明するが、説明を簡単にするためにその他の送信チャネルの動作についても同様であるため例示を省略する。
【００６１】
チャネル０データシフト論理回路１２ａは、制御信号の立ち上がりにより第１状態の動作（シフトコード決定動作）を開始する（図８参照）。初期状態において、シフトコードは、「４’ｄ０」である。第１セレクタ５３は、ＦＦ５０からの入力であるタイミング検出用データを出力する。
【００６２】
第１レジスタ５４は、第１セレクタ５３からチャネルクロック（クロック２２）で１クロック遅れてタイミング検出用データを出力する。第２レジスタ５５は、第１セレクタ５３からチャネルクロックで２クロック遅れてタイミング検出用データを出力する。
【００６３】
データ結合部５６は、第１レジスタ５４の出力と第２レジスタ５５の出力を結合して、第２セレクタ５７に出力する。第２セレクタ５７は、シフトコード「４’ｄ０」に応じて、入力データ「ＦＦＦＦ００００Ｈ」から出力データ「ＦＦＦＦＨ」を切り出す。
【００６４】
第２セレクタ５７からの出力データ「ＦＦＦＦＨ」は、チャネル０送信回路１１ａに入力され、ＭＵＸから２４ＵＩ（Unit Interval：シリアルビットストリームの１ビット期間）遅延してシリアルデータとして出力される。チャネル０送信回路１１ａは、シフトコード「４’ｄ０」の間、１６ビットパラレルデータ「ＦＦＦＦＨ」、「００００Ｈ」を交互入力して、１６ＵＩ「１」、１６ＵＩ「０」を交互出力する。
【００６５】
チャネル０送信回路１１ａのＭＵＸが出力するシリアルビットストリームは、チャネル０スキュー制御論理回路１３ａによって、同位相クロック（クロック２１）の周期でサンプリングされる。これにより、チャネル０スキュー制御論理回路１３ａは、タイミングＴ１で「１」、タイミングＴ２で「０」をサンプリングする。同様にして、チャネル０スキュー制御論理回路１３ａは、シフトコード「４’ｄ０」の間、１６ＵＩ「１」、１６ＵＩ「０」の交互入力から「１」、「０」を交互にサンプリングすることとなる。
【００６６】
チャネル０スキュー制御論理回路１３ａがシリアルデータ入力から「１」、「０」を交互にサンプリングする間は、シフトコードは、ＣＮＴ４１のカウントアップにより更新される。シフトコード「４’ｄ０」は、タイミングＴ４でシフトコード「４’ｄ１」になる（図９参照）。これにより、第２セレクタ５７は、シフトコード「４’ｄ１」に応じて、入力データ「ＦＦＦＦ００００Ｈ」から出力データ「ＦＦＦＥＨ」を、入力データ「００００ＦＦＦＦＨ」から出力データ「０００１Ｈ」を切り出す。このデータシフトにより、ＭＵＸが出力するシリアルビットストリームは、連続するビットデータストリームを１ＵＩだけスキップすることとなる。すなわち、チャネル０送信回路１１ａは、シフトコード「４’ｄ０」からシフトコード「４’ｄ１」に変化したことで、１６ＵＩ「０」、１５ＵＩ「１」、１６ＵＩ「０」を出力する。
【００６７】
チャネル０スキュー制御論理回路１３ａは、タイミングＴ３で「０」、タイミングＴ４で「１」、タイミングＴ５で「０」、タイミングＴ６で「１」、タイミングＴ７で「０」をサンプリングする。チャネル０スキュー制御論理回路１３ａは、シフトコード「４’ｄ０」およびシフトコード「４’ｄ１」の間、「１」、「０」を交互にサンプリングするが、タイミングＴ６以降のタイミング検出用データに対するサンプリング位置は、１ＵＩだけ早くなる。
【００６８】
さらにシフトコードが更新され、シフトコード「４’ｄ９」になると、タイミング検出用データに対するサンプリング位置は、９ＵＩ早くなる（図１０参照）。これにより、チャネル０スキュー制御論理回路１３ａは、タイミングＴ８で「１」、タイミングＴ９で「０」、タイミングＴ１０で「１」、タイミングＴ１１で「０」、タイミングＴ１２で「０」、タイミングＴ１３で「１」をサンプリングする。チャネル０スキュー制御論理回路１３ａは、タイミングＴ１１およびタイミングＴ１２で連続して「０」をサンプリングしたことで、シフトコードの更新を停止する。
【００６９】
次に、チャネル１データシフト論理回路１２ｂは、制御信号の立ち上がりにより第１状態の動作（シフトコード決定動作）を開始する（図１１参照）。初期状態において、シフトコードは、「４’ｄ０」である。チャネル１送信回路１１ｂは、シフトコード「４’ｄ０」の間、１６ビットパラレルデータ「ＦＦＦＦＨ」、「００００Ｈ」を交互入力して、１６ＵＩ「１」、１６ＵＩ「０」を交互出力する。
【００７０】
なお、チャネル１データシフト論理回路１２ｂに供給されるチャネルクロック（クロック２２）は、同位相クロック（クロック２１）と異なり送信チャネル間で位相が必ずしも一致していない。そのため、チャネル０送信回路１１ａのＭＵＸが出力するシリアルビットストリームと、チャネル１送信回路１１ｂのＭＵＸが出力するシリアルビットストリームは、出力タイミングにずれを生じ得る。
【００７１】
チャネル１送信回路１１ｂのＭＵＸが出力するシリアルビットストリームは、チャネル１スキュー制御論理回路１３ｂによって、同位相クロックの周期でサンプリングされる。これにより、チャネル１スキュー制御論理回路１３ｂは、タイミングＴ１で「１」、タイミングＴ２で「０」をサンプリングする。同様にして、チャネル１スキュー制御論理回路１３ｂは、シフトコード「４’ｄ０」の間、１６ＵＩ「１」、１６ＵＩ「０」の交互入力から「１」、「０」を交互にサンプリングすることとなる。
【００７２】
チャネル１スキュー制御論理回路１３ｂがシリアルデータ入力から「１」、「０」を交互にサンプリングする間は、シフトコードは、ＣＮＴ４１のカウントアップにより更新される。シフトコード「４’ｄ０」は、タイミングＴ１４でシフトコード「４’ｄ１」になる（図１２参照）。これにより、第２セレクタ５７は、シフトコード「４’ｄ１」に応じて、入力データ「ＦＦＦＦ００００Ｈ」から出力データ「ＦＦＦＥＨ」を、入力データ「００００ＦＦＦＦＨ」から出力データ「０００１Ｈ」を切り出す。
【００７３】
チャネル１スキュー制御論理回路１３ｂは、タイミングＴ３で「０」、タイミングＴ４で「１」、タイミングＴ５で「０」、タイミングＴ６で「０」、タイミングＴ７で「１」をサンプリングする。送信チャネル１スキュー制御論理回路１３ｂは、タイミングＴ５およびタイミングＴ６で連続して「０」をサンプリングしたことで、シフトコードの更新を停止する。送信チャネル１は、送信チャネル０がシフトコードを更新する間も、シフトコードを「４’ｄ１」に固定する（図１３参照）。
【００７４】
次に、制御回路１６が実行するデスキュー処理について図１４を用いて説明する。図１４は、第２の実施形態のデスキュー処理を示すフローチャートである。デスキュー処理は、送信回路１０が起動する際に実行される。
【００７５】
［ステップＳ１１］制御回路１６（上位コアロジック）は、制御信号をセットする。これにより、データシフト論理回路１２およびスキュー制御論理回路１３は、制御信号「１」が入力され、シフトコード決定動作をおこなう第１状態となる。
【００７６】
［ステップＳ１２］制御回路１６は、タイマをセットする。タイマ値は、各送信チャネルがシフトコードを固定するのに十分な時間が設定される。たとえば、タイマ値は、シフトコードを決定するカウンタ（ＣＮＴ４１）が１周する程度の時間として、クロック２０で１５０クロック（＞１２８（＝１６×８））とする。
【００７７】
［ステップＳ１３］制御回路１６は、ステップＳ１２で設定したタイマのタイムアップを監視する。制御回路１６は、タイマがタイムアップするのを待ってステップＳ１４にすすむ。
【００７８】
［ステップＳ１４］制御回路１６は、制御信号をリセットする。これにより、データシフト論理回路１２およびスキュー制御論理回路１３は、制御信号「０」が入力され、シフトコード決定動作から通常状態となる第２状態に遷移する。
【００７９】
このように、送信回路１０は、制御回路１６が制御信号によって制御状態を管理する。
なお、制御回路１６は、タイマを用いて制御状態を管理したが、データシフト論理回路１２およびスキュー制御論理回路１３のシフトコード決定状態を監視して制御状態を管理するようにしてもよい。たとえば、制御回路１６は、すべての送信チャネルのＦＦ３９の出力（信号Ｓ４）を監視して制御状態を管理してもよい。また、送信回路１０は、制御回路１６によらず、データシフト論理回路１２およびスキュー制御論理回路１３が制御状態を決定するようにしてもよい。たとえば、データシフト論理回路１２およびスキュー制御論理回路１３は、それぞれ内部タイマを備え、第１状態で起動した後、内部タイマタイムアップ後に第２状態に遷移するようにしてもよい。
【００８０】
次に、データシフト論理回路１２の第２状態の動作について図１５、図１６を用いて説明する。図１５は、第２の実施形態のチャネル０データシフト論理回路およびチャネル１データシフト論理回路のデスキュー動作例を示すタイミングチャートである。図１６は、第２の実施形態のチャネル０送信回路およびチャネル１送信回路が出力するシリアルデータの一例を示す図である。なお、送信チャネル０、送信チャネル１について、動作例を説明するが、説明を簡単にするためにその他の送信チャネルの動作についても同様であるため例示を省略する。また、理解を容易にするために、送信回路１０は、送信チャネル０と送信チャネル１とで同一のデータを送信出力する場合を示す。
【００８１】
チャネル０データシフト論理回路１２ａおよびチャネル１データシフト論理回路１２ｂは、制御信号の立ち下がりにより第２状態の動作（通常動作）を開始する（図１５参照）。シフトコードは、第１状態において、送信チャネル０が「４’ｄ９」に固定され、送信チャネル１が「４’ｄ１」に固定されている。
【００８２】
チャネル０データシフト論理回路１２ａは、第１セレクタ５３から送信データ「０１２３Ｈ」、「４５６７Ｈ」、「８９ＡＢＨ」、「ＣＤＥＦＨ」、・・・をチャネルクロックに同期して順次出力する。チャネル１データシフト論理回路１２ｂも、第１セレクタ５３から送信データ「０１２３Ｈ」、「４５６７Ｈ」、「８９ＡＢＨ」、「ＣＤＥＦＨ」、・・・をチャネルクロックに同期して順次出力する。
【００８３】
チャネル０データシフト論理回路１２ａは、チャネルクロック周期ｔａにおいて、第２セレクタ５７が３２ビットパラレルデータ６０（「０１２３４５６７Ｈ」：図１６（Ａ）参照）を入力する。チャネル０データシフト論理回路１２ａは、チャネルクロック周期ｔａにおいて、シフトコード「４’ｄ９」にもとづいて１６ビットパラレルデータ６２（「４６８ＡＨ」：図１６（Ｂ）参照）を出力する。同様にして、チャネル０データシフト論理回路１２ａは、チャネルクロック周期ｔｂにおいて、第２セレクタ５７が３２ビットパラレルデータ６１（「４５６７８９ＡＢＨ」：図１６（Ａ）参照）を入力する。チャネル０データシフト論理回路１２ａは、チャネルクロック周期ｔｂにおいて、シフトコード「４’ｄ９」にもとづいて１６ビットパラレルデータ６３（「ＣＦ１３Ｈ」：図１６（Ｂ）参照）を出力する。
【００８４】
チャネル０データシフト論理回路１２ａが出力する１６ビットパラレルデータ６２、６３は、出力から２４ＵＩ遅延して、ＭＵＸ（チャネル０送信回路１１ａ）から出力される。
【００８５】
チャネル１データシフト論理回路１２ｂは、チャネルクロック周期ｔｃにおいて、第２セレクタ５７が３２ビットパラレルデータ６４（「０１２３４５６７Ｈ」：図１６（Ｃ）参照）を入力する。チャネル１データシフト論理回路１２ｂは、チャネルクロック周期ｔｃにおいて、シフトコード「４’ｄ１」にもとづいて１６ビットパラレルデータ６６（「０２４６Ｈ」：図１６（Ｄ）参照）を出力する。同様にして、チャネル１データシフト論理回路１２ｂは、チャネルクロック周期ｔｄにおいて、第２セレクタ５７が３２ビットパラレルデータ６５（「４５６７８９ＡＢＨ」：図１６（Ｃ）参照）を入力する。チャネル１データシフト論理回路１２ｂは、チャネルクロック周期ｔｄにおいて、シフトコード「４’ｄ１」にもとづいて１６ビットパラレルデータ６７（「８ＡＣＦＨ」：図１６（Ｄ）参照）を出力する。
【００８６】
チャネル１データシフト論理回路１２ｂが出力する１６ビットパラレルデータ６６、６７は、出力から２４ＵＩ遅延して、ＭＵＸ（チャネル１送信回路１１ｂ）からシリアルデータが出力される。
【００８７】
ＭＵＸ（チャネル１送信回路１１ｂ）からのシリアルデータ出力は、ＭＵＸ（チャネル０送信回路１１ａ）からのシリアルデータ出力よりも、それぞれのチャネルクロックの位相差から８ＵＩ遅延する。しかしながら、タイミングＴ１５において、ＭＵＸ（チャネル０送信回路１１ａ）は、Ｐ１位置からのシリアルデータを出力し、ＭＵＸ（チャネル１送信回路１１ｂ）Ｐ２位置からのシリアルデータを出力する。
【００８８】
このように、送信回路１０は、送信チャネル０と送信チャネル１との間でチャネル間デスキューをおこなうことができる。また、送信回路１０は、供給されるクロックが高速であっても、送信チャネル間のスキュー除去を可能にする。
【００８９】
以上、実施の形態にもとづき、本発明の送信回路、およびデスキュー回路の一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
なお、上述の実施の形態は、実施の形態の要旨を逸脱しない範囲内において種々の変更を加えることができる。
【００９０】
以上説明した実施の形態の主な技術的特徴は、以下の付記の通りである。
（付記１）  第１クロックにもとづいてパラレルデータをシリアルデータに変換する複数のデータ変換部と、
前記データ変換部のそれぞれに対応し、前記シリアルデータのデータ間スキューを除去する複数のデスキュー部と、
を備え、
前記デスキュー部は、
前記データ変換部にタイミング検出用データを出力し、前記データ変換部が出力するシリアル化された前記タイミング検出用データを、前記第１クロックの周波数より低く、かつ前記複数のデスキュー部に同位相で供給される第２クロックにもとづいてサンプリングし、サンプリングしたデータの遷移状態から前記シリアルデータの出力タイミングを調整する調整値を生成する生成部と、
前記データ変換部に出力するパラレルデータを前記調整値に応じてデータシフトする調整部と、
を備えることを特徴とする送信回路。
【００９１】
（付記２）  前記複数のデスキュー部の各々に対応するとともに、各々の出力端子を電気的に短絡させた複数のクロックバッファを備えることを特徴とする付記１記載の送信回路。
【００９２】
（付記３）  前記生成部は、前記遷移状態から前記出力タイミングが特定タイミングか否かを判定し、前記出力タイミングが前記特定タイミングでない場合に前記調整値を更新し、前記出力タイミングが前記特定タイミングである場合に前記調整値を決定することを特徴とする付記２記載の送信回路。
【００９３】
（付記４）  前記タイミング検出用データは、所定ビット長の０または１が連続した第１データと、前記第１データを反転した第２データのうち、いずれか一方を上位に、他方を下位にして結合し、連続するデータを前記所定ビット長だけ抜き出したものであることを特徴とする付記３記載の送信回路。
【００９４】
（付記５）  前記生成部は、前記調整値に応じて前記タイミング検出用データを更新することを特徴とする付記４記載の送信回路。
（付記６）  前記第２クロックは、前記第１クロックを分周したクロックであることを特徴とする付記１乃至付記５のいずれか１つに記載の送信回路。
【００９５】
（付記７）  前記所定ビット長は、前記データ変換部が入力する前記パラレルデータのデータ幅に等しいことを特徴とする付記１乃至付記５のいずれか１つに記載の送信回路。
（付記８）  前記第２クロックの立ち上がりタイミング、または立ち下がりタイミングでサンプリングすることを特徴とする付記１乃至付記５のいずれか１つに記載の送信回路。
【００９６】
（付記９）  第１クロックにもとづいてパラレルデータをシリアルデータに変換する複数のデータ変換部のそれぞれに対応し、前記シリアルデータのデータ間スキューを除去する複数のデスキュー部を備え、
前記デスキュー部は、
前記データ変換部にタイミング検出用データを出力し、前記データ変換部が出力するシリアル化された前記タイミング検出用データを、前記第１クロックの周波数より低く、かつ前記複数のデスキュー部に同位相で供給される第２クロックにもとづいてサンプリングし、サンプリングしたデータの遷移状態から前記シリアルデータの出力タイミングを調整する調整値を生成する生成部と、
前記データ変換部に出力するパラレルデータを前記調整値に応じてデータシフトする調整部と、
を備えることを特徴とするデスキュー回路。
【符号の説明】
【００９７】
１  送信回路
２  データ変換部
３  デスキュー部
４  生成部
５  調整部
【図１】
0005765088.tif 000002
【図２】
0005765088.tif 000003
【図３】
0005765088.tif 000004
【図４】
0005765088.tif 000005
【図５】
0005765088.tif 000006
【図６】
0005765088.tif 000007
【図７】
0005765088.tif 000008
【図８】
0005765088.tif 000009
【図９】
0005765088.tif 000010
【図１０】
0005765088.tif 000011
【図１１】
0005765088.tif 000012
【図１２】
0005765088.tif 000013
【図１３】
0005765088.tif 000014
【図１４】
0005765088.tif 000015
【図１５】
0005765088.tif 000016
【図１６】
0005765088.tif 000017