JP2020154789A - データ伝送装置およびデータ伝送方法 - Google Patents
データ伝送装置およびデータ伝送方法 Download PDFInfo
- Publication number
- JP2020154789A JP2020154789A JP2019053168A JP2019053168A JP2020154789A JP 2020154789 A JP2020154789 A JP 2020154789A JP 2019053168 A JP2019053168 A JP 2019053168A JP 2019053168 A JP2019053168 A JP 2019053168A JP 2020154789 A JP2020154789 A JP 2020154789A
- Authority
- JP
- Japan
- Prior art keywords
- lane
- circuit
- clock
- delay amount
- pclk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/08—Clock generators with changeable or programmable clock frequency
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
- H04L7/0016—Arrangements for synchronising receiver with transmitter correction of synchronization errors
- H04L7/0033—Correction by delay
- H04L7/0037—Delay of clock signal
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/31725—Timing aspects, e.g. clock distribution, skew, propagation delay
- G01R31/31726—Synchronization, e.g. of test, clock or strobe signals; Signals in different clock domains; Generation of Vernier signals; Comparison and adjustment of the signals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/10—Distribution of clock signals, e.g. skew
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/12—Synchronisation of different clock signals provided by a plurality of clock generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F1/00—Details not covered by groups G06F3/00 - G06F13/00 and G06F21/00
- G06F1/04—Generating or distributing clock signals or signals derived directly therefrom
- G06F1/14—Time supervision arrangements, e.g. real time clock
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4265—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus
- G06F13/4273—Bus transfer protocol, e.g. handshake; Synchronisation on a point to point bus using a clocked protocol
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Synchronisation In Digital Transmission Systems (AREA)
- Information Transfer Systems (AREA)
Abstract
【課題】複数のレーンでリンクを構成しレーン毎にデータを伝送する上でリンク毎の出力を高スペック化に対応させる。【解決手段】実施形態のデータ伝送装置は、複数のレーンに含まれる少なくとも第1レーン及び第2レーンが伝送単位としてのリンクを構成し、リンクに規定された伝送レートでデータ伝送可能であり、第1クロック生成回路、第2クロック生成回路、第1回路を備える。第1クロック生成回路は第1レーンにおいてデータ伝送の基準となる第1クロックを生成する。第1クロック生成回路は第2レーンにおいて第2クロックを生成する。第1回路は第1クロックの第1遅延量に関する情報と第2クロックの第2遅延量に関する情報とを互いに通知し合うことによって一方のクロックの遅延量と他方のクロックの遅延量とが合うように遅延量のシフト量を決定する。【選択図】図1
Description
本発明の実施形態は、例えばPCI Express(登録商標)等のインターフェース規格に基づきデータ伝送を行うデータ伝送装置およびデータ伝送方法に関する。
PCI Expressの規格に準拠したデータ伝送では、接続されるデバイスの構成や用途に応じて、リンクを構成するレーン数が可変する“Bifurcation”と呼ばれる機能のニーズが高まっている。
Bifurcationの機能を有するデータ伝送装置では、各レーンが異なるデータレート(伝送レート)で通信することを可能とするため、各レーンに、独立したクロック分周回路が設けられる。
レーン毎に独立したクロック分周回路を設ける場合、それぞれのクロック分周回路が出力する分周クロックについて、受信側の回路におけるレーン間のクロックのスキュー(タイミング差)、いわゆるレーン間スキューが発生する。
複数のレーンを有する受信側の回路において、各レーンで分周クロックを用いてデータをラッチする際に、レーン間スキューによってデータのラッチタイミングがレーン毎に異なる。このため、レーン間でラッチタイミングの差が大きくなると、データ伝送性能に影響が及ぶ恐れがある。
データレートが高速化するにつれて要求スペックが厳しくなることが予測されるため、レーン間のクロックスキューの影響をなくすことが望まれる。
本発明が解決しようとする課題は、複数レーンで構成されるリンクにおいて好適にデータ伝送することができるデータ伝送装置およびデータ伝送方法を提供することにある。
実施形態のデータ伝送装置は、データ伝送路として複数のレーンを備え、前記複数のレーンに含まれる少なくとも第1レーン及び第2レーンが伝送単位としてのリンクを構成し、前記リンクに規定された伝送レートでデータ伝送可能なデータ伝送装置であり、第1クロック生成回路、第2クロック生成回路、第1回路、第2回路を備える。第1クロック生成回路は第1レーンにおいてデータ伝送の基準となる第1クロックを生成する。第2クロック生成回路は第2レーンにおいてデータ伝送の基準となる第2クロックを生成する。第1回路は第1クロックの第1遅延量に関する情報と第2クロックの第2遅延量に関する情報とを互いに通知し合うことによって、第1クロックおよび第2クロックのうちのいずれか一方のクロックの遅延量と他方のクロックの遅延量とが合うように遅延量のシフト量を決定する。第2回路は第1回路により決定されたシフト量を基に、第1遅延量または第2遅延量をシフトさせる。
以下、図面を参照して、実施形態を詳細に説明する。以下に示す図面は例示であり、実施形態は、これらの構成に限定されない。
図1は一つの実施形態のデータ伝送装置の概略的な構成を示す図である。
実施形態のデータ伝送装置は、例えばPCI Expressなどの規格に準拠して、データを送信する送信回路及びデータを受信する受信回路を備えるインターフェース装置である。本実施形態では、主に送信回路の構成及び動作について説明する。
図1は一つの実施形態のデータ伝送装置の概略的な構成を示す図である。
実施形態のデータ伝送装置は、例えばPCI Expressなどの規格に準拠して、データを送信する送信回路及びデータを受信する受信回路を備えるインターフェース装置である。本実施形態では、主に送信回路の構成及び動作について説明する。
図1に示すように、実施形態のデータ伝送装置の送信回路は、第1レーンとしてのLane_TX0、第2レーンとしてのLane_TX1、第3レーンとしてのLane_TX2、および第4レーンとしてのLane_TX3を含む4つのLaneを有する。Laneは、複数の信号線を含んで構成されるデータ伝送路である。
実施形態のデータ伝送装置は、Bifurcation機能をサポートし、複数のLaneのうち所定数のLaneで1つのLinkを構成し、Link毎に各Laneを通じてパラレルデータをシリアルデータに変換して出力することが可能である。1つのLinkを構成するLane数は可変であり、例えば、4つのLaneを有するデータ伝送装置について、4Lane×1Linkの構成を、2Lane×2Linkの構成として利用することが可能である。
実施形態のデータ伝送装置は、データ伝送路として複数の(具体的には4つの)Lane_TX0〜Lane_TX3を備えている。これら複数のLane_TX0〜Lane_TX3のうち一以上のLaneが伝送単位としてのLinkを構成し、Link毎に規定された伝送レートでデータ伝送可能である。例えば複数のLane_TX0〜Lane_TX3のうち2つのLane(Lane_TX0及びLane_TX1)が伝送単位としてのリンクを構成し、リンクに規定された伝送レートでデータ伝送可能である。
なお、本実施形態では、4つのLaneで1つのLinkを構成する例を説明するが、Lane数やLink数はこの例に限定されるものではなく、例えば8Laneを備えたデータ伝送装置において、4Lane×2Link、8Lane×1Link、2Lane×4Link、又は1Lane×4Linkの構成にするなど、さまざまな組み合わせに変更が可能である。
データ伝送装置は、第1回路群1と第2回路群2とで構成される。第1回路群1は、コンピュータにおいて各種パラメータを基に自動的に回路設計が行われる回路部分である。第2回路群2は、実物の回路要素を組み込んで実現される回路部分である。第1回路群1は、Lane毎に分周回路11a〜11dを有する。
第1クロック生成回路としての分周回路11aは、デバイダおよびセレクタなどを含むClock分周回路12aとラッチ回路13a、14aを有する。Clock分周回路12aは、源クロックであるPCLK_sourceを分周したPCLK_TX0を出力する。ラッチ回路13aは、同期信号SYNCをPCLK_TX0でラッチした信号SYNC_TX0を出力する。ラッチ回路14aは、データ0〜データ31までの32ビット分のデータDATA [31:0]_TX0をそれぞれPCLK_TX0でラッチした32ビットのパラレルデータDATA_TX0を出力する。
なお、この例では、パラレルデータのビット数を32としたが、本発明はビット数に限定されるものではなく、例えば16ビットや64ビットなど、さまざまなビット数で利用可能である。
なお、この例では、パラレルデータのビット数を32としたが、本発明はビット数に限定されるものではなく、例えば16ビットや64ビットなど、さまざまなビット数で利用可能である。
すなわち、分周回路11aは、Lane_TX0に設けられており、PCLK_sourceを分周して第1クロックであるPCLK_TX0を生成し、生成したPCLK_TX0を、SYNC_TX0、DATA_TX0と共に、Lane_TX0に対応し、第2回路群2に設けられるパラレルシリアル変換回路22aに出力する。
第1クロック生成回路としての分周回路11bは、デバイダおよびセレクタなどのClock分周回路12bとラッチ回路13b、14bを有する。Clock分周回路12bは、PCLK_sourceを分周したPCLK_TX1を出力する。ラッチ回路13bは同期信号SYNCをPCLK_TX1でラッチした信号SYNC_TX1を出力する。ラッチ回路14bは、DATA [31:0]_TX1をそれぞれPCLK_TX1でラッチした32ビットのパラレルデータDATA_TX1を出力する。
なお、分周回路11aと同様に、パラレルデータはさまざまなビット数で利用可能である。
なお、分周回路11aと同様に、パラレルデータはさまざまなビット数で利用可能である。
すなわち、分周回路11bは、Lane_TX1に設けられており、分岐入力されたPCLK_sourceを分周して第2クロックであるPCLK_TX1を生成し、生成したPCLK_TX1を、SYNC_TX1、DATA_TX1と共に、Lane_TX1に対応し、第2回路群2に設けられるパラレルシリアル変換回路22bに出力する。なお、他の分周回路11c、11dも同様の構成であり、個々の説明は省略する。
第2回路群2は、各Laneへ分岐して供給される源クロックとしてのPCLK_sourceを生成する基準クロック生成回路(COM)21、Lane毎に設けられたパラレルシリアル変換回路22a〜22dを有する。以下に詳細に説明するように、各パラレルシリアル変換回路22a〜22dが協働することにより、4つのLane_TX0〜Lane_TX3間に生じるクロックスキューの差を低減する。
以下では、レーン間クロックスキューを以下のように定義する。レーン間クロックスキューとは、ある基準時刻(例えば、各Lane共通のCOM21からPCLK sourceが出力されたタイミング)からLane毎に分岐して受信側の第2回路群2で受信されるまでの各PCLK_TXnのdelay量(図7を参照)の差分(差異)とする。これ以降、レーン間クロックスキューを単にスキューと称することもある。
各パラレルシリアル変換回路22a〜22dは、Lane_TX0〜Lane_TX3それぞれに設けられた回路の中の一つの回路であり、PCLK_TXnのシフト量を決定する第1回路としてのシフト計算回路(Shift Calc)23a〜23d、PCLK_TXnとDATA_TXnをシフトする第2回路としてのデータシフト回路(Data Shift)24a〜24d、パラレルシリアル変換回路としてのパラレルインシリアルアウト回路(PISO)25a〜25dを有する。なお、PISOとは、Parallel-In,Serial-Outの略称である。TXnのnは0から始まる整数であり、この例は4Lane構成のため0〜3までの数字である。
すなわち、Shift Calc23a〜23d、Data Shift24a〜24d、PISO25a〜25dは、Lane_TX0〜Lane_TX3毎にそれぞれ1つずつ設けられている。例えばLane_TX0は、第1シフト計算回路であるShift Calc23a、第1データシフト回路であるData Shift24a、第1変換回路であるPISO25aを有する。他のLane_TX1〜Lane_TX3も同様である。
COM21は、PLL回路及び分周回路を有しており、源クロックとなるPCLK_sourceを生成し、生成したPCLK_sourceを第1回路群1の各分周回路11a〜11dに分岐して供給する。
(パラレルシリアル変換回路22a(Lane_TX0:第1レーン)について)
この例の回路構成では、Lane_TX0(第1レーン)は、図1において左側にLaneが接続されていないLaneであるため、その左側にLaneが接続されているLane_TX1(第2レーン)乃至Lane_TX3(第4レーン)の動作が主たる動作となる。このため、詳細は下記Lane_TX1(第2レーン)のパラレルシリアル変換回路22bの説明で詳述する。Lane_TX0(第1レーン)が、その左側にLaneが接続されていないことは、例えば、Shift Calc23aに対して左側のLaneから入力される信号を所定レベル(例えばグランドレベル)とすることで実現され得る。なお、図1において、右側のLaneから左側のLaneに情報が伝達される場合は、Lane_TX0(第1レーン)内の各構成は、他のLaneの各構成と同様の動作を行う。
この例の回路構成では、Lane_TX0(第1レーン)は、図1において左側にLaneが接続されていないLaneであるため、その左側にLaneが接続されているLane_TX1(第2レーン)乃至Lane_TX3(第4レーン)の動作が主たる動作となる。このため、詳細は下記Lane_TX1(第2レーン)のパラレルシリアル変換回路22bの説明で詳述する。Lane_TX0(第1レーン)が、その左側にLaneが接続されていないことは、例えば、Shift Calc23aに対して左側のLaneから入力される信号を所定レベル(例えばグランドレベル)とすることで実現され得る。なお、図1において、右側のLaneから左側のLaneに情報が伝達される場合は、Lane_TX0(第1レーン)内の各構成は、他のLaneの各構成と同様の動作を行う。
Lane_TX0のShift Calc23aは、分周回路11aから入力されるPCLK_TX0のdelay量を算出し、図1において右側に隣接するLane_TX1(第2レーン)へ通知する。
なお、Lane_TX0のShift Calc23aと、隣接するLane_TX1のShift Calc23bとはディジーチェーン接続されており、Lane間で情報の受け渡し(delay量や隣接Lane間スキュー値の伝達、最大スキュー値のフィードバック、など)が行われる。本実施形態では、他のLane_TX2のShift Calc23c及びLane_TX3のShift Calc23dも同様にディジーチェーン接続されており、4Lane間で情報の受け渡しが行われる。ディジーチェーン接続されるLane間での情報の受け渡しの向きは、上流と下流とが定義される。隣接Lane間のスキュー値の伝達は上流から下流へ行われる。その後、最大スキュー値のフィードバックが、下流から上流へ戻される。
本実施形態のデータ伝送装置では、後述するようにセレクタ31(図2参照)によりLane_TX0〜Lane_TX3のうちいずれか一つのLaneがマスタLaneとして設定される。本実施形態では、Lane_TX0がマスタLane、Lane_TX1,Lane_TX2,Lane_TX3がスレーブLane、特にLane_TX3がスレーブエンドLaneに設定される例として説明する。このため、各Laneの回路の構成は同じであるが、その動作は異なる。
例えばマスタLaneとして設定されたLane_TX0のShift Calc23aは、各Lane_TX0〜Lane_TX3により算出される隣接するLane間のPCLKのクロックスキューに基づいて、PCLK_TX0〜TX3のうち、位相が最も遅れるLane(例えばLane_TX2など)のPCLKの遅れ量(最遅ドリフト位置)を取得する回路として機能する。この機能を実現する詳細な回路構成については、図2を用いて説明する。
Data Shift24aは、第1データシフト回路の一例である。Data Shift24aは、Shift Calc23aにより取得された、最遅ドリフト位置に合わせるようにPCLK_TX0のパルスの出力タイミングを遅延させる(補正する)とともに、補正したPCLK_TX0のパルスの出力タイミングで、分周回路11aから入力されるパラレルデータDATA_TX0をロードするようにパラレルデータDATA_TX0それぞれのシフト量を決定する。パルスをクロックビットともいう。
PISO25aは、パラレルデータ読込回路(PISO_LOAD)26a、データ変換回路(PISO_n_to_4)27a、分周回路28a、P to S変換回路(PISO_4_to_1)29a、出力回路30aを含む。PISO_LOAD26aは、分周回路11aから入力されるパラレルデータを読み込む。PISO_n_to_4 27aは、PISO_LOAD26aにより読み込まれたnビット(ここでは32ビット)のパラレルデータを保持し4ビットのパラレルデータを出力する。
分周回路28aは、COM21のPLL回路から入力されるHSCLKを1/4分周して1/4分周clock(QSCLK)を生成する。PISO_4_to_1 29aは、PISO_n_to_4 27aから入力される4ビットのパラレルデータを、QSCLKを用いて1ビットのシリアルデータに変換する。出力回路30aは、PISO_4_to_1 29aにより変換されたシリアルデータに基づく差動データTX0_P/Nを出力する。
PISO_LOAD26aは、PCLK_TX0の立ち上がりエッジ(Riseエッジ)に基づいてPISO_Load信号を生成しPISO_n_to_4 27aに出力する。PISO_n_to_4 27aは、シフトレジスタを有する。なお、この例では、32ビットのパラレルデータをPISO_n_to_4 27aで一旦4ビットのパラレルデータにした後、PISO_4_to_1 29aで1ビットのシリアルデータに変換したが、32ビットのパラレルデータを1ビットのシリアルデータに一度に変換してもよい。
すなわち、PISO25aは、Data Shift24aによりシフトされたタイミングで、分周回路11aから入力される32ビットのパラレルデータDATA_TX0をロードし、ロードしたパラレルデータDATA_TX0を1ビットのシリアルデータに変換し、変換したシリアルデータに基づく差動データTX0_P/N出力する。
(パラレルシリアル変換回路22b(Lane_TX1:第2レーン)について)
例えばLane_TX0とLane_TX1との2laneについて、Shift Calc23bは、PCLK_TX0のdelay量を含むクロックスキューに関する情報とPCLK_TX1のdelay量を含むクロックスキューに関する情報とを互いに通知し合うことによって、PCLK_TX0およびPCLK_TX1のうちのいずれか一方のクロック(PCLK)のdelay量と他方のクロックのdelay量とが合うようにクロックのシフト量を決定する。クロックスキューに関する情報とは、図8に示す計測手順で得られるdelay量の値や、差分値、最大差分値などの数値を含む。
例えばLane_TX0とLane_TX1との2laneについて、Shift Calc23bは、PCLK_TX0のdelay量を含むクロックスキューに関する情報とPCLK_TX1のdelay量を含むクロックスキューに関する情報とを互いに通知し合うことによって、PCLK_TX0およびPCLK_TX1のうちのいずれか一方のクロック(PCLK)のdelay量と他方のクロックのdelay量とが合うようにクロックのシフト量を決定する。クロックスキューに関する情報とは、図8に示す計測手順で得られるdelay量の値や、差分値、最大差分値などの数値を含む。
具体的には、Shift Calc23bは、Lane_TX0から通知されたPCLK_TX0のdelay量と自Lane_TX1のPCLK_TX1のdelay量を基に、Lane_TX0,Lane_TX1のうち位相が遅れている方のPCLKのパルスのRiseエッジ(クロックビットの立ち上がり位置またはドリフト位置)を検出し、検出したRiseエッジに合わせたPCLKのシフト量を決定する。具体的にはPCLKのパルスのRiseエッジのタイミングが遅れている一方のPCLKの位相に合うように、他方のPCLKをシフト(ドリフト)するシフト量(ドリフト量)を決定する。
換言すると、Lane_TX1において、Shift Calc23bは、分周回路11bから入力されるPCLK_TX1のdelay量を算出し、算出したPCLK_TX1のdelay量と、隣接するLane_TX0(第1レーン)から得られるPCLK_TX0のdelay量との差を算出する。Shift Calc23bは、算出したdelay量の差に基づいて、Lane_TX0,Lane_TX1のうち位相が遅れている方のPCLK(パルス)のドリフト位置を検出し、検出したドリフト位置に合わせたPCLKのシフト量を決定する。
Data Shift24bは、Lane_TX0のData Shift24aと同様に構成される第2データシフト回路の一例である。Data Shift24bは、Shift Calc23bにより取得された最遅ドリフト位置に合わせるようにPCLK_TX1のパルスの出力タイミングを遅延させる(補正する)とともに、補正したPCLK_TX1のパルスの出力タイミングで、分周回路11bから入力されるパラレルデータDATA_TX1をロードするようにパラレルデータDATA_TX1それぞれのシフト量を決定する。
PISO25bは、Lane_TX0のPISO25aと同様の構成(PISO_LOAD26b、PISO_n_to_4 27b、分周回路28b、PISO_4_to_1 29b)を有する第2変換回路である。PISO25bは、Data Shift24bによりシフトされたタイミングで、分周回路11bから入力される32ビットのパラレルデータDATA_TX1をロードし、ロードしたパラレルデータDATA_TX1を1ビットのシリアルデータに変換し、変換したシリアルデータに基づく差動データTX1_P/Nを出力する。なお、Lane_TX2(第3レーン)、Lane_TX3(第4レーン)についても同様の回路構成であるため、個々の説明は省略する。
ここで、図2を参照してShift Calc23a〜23dの詳細な回路構成を説明する。なお、この例では、Shift Calc23aがマスタLane(特定のLane)であり、Shift Calc23b〜23dがスレーブLaneであるため、代表的に、スレーブLaneの1つであるShift Calc23bについて説明する。
図2に示すように、Shift Calc23bは、PCLK_TX1(第2Clock)をラッチし、PCLK_TX1のdelay量を計測する第1計測回路としてのPCLKラッチ回路(PCLK Latch)32b、PCLK_TX1のdelay量と隣接する一方(左隣)のLane_TX0のdelay量との差を計測する第2計測回路としての対隣接Lane間スキュー計測回路(Calc Skew_A)33b、PCLK_TX1のdelay量とマスタLaneのdelay量との差を計測する第3計測回路としての対マスタLane間スキュー計測回路(Calc Skew_M)34b、同じLink内でdelay量が最大の値を計測する選択回路としての最大delay量計測回路(Calc Max)35b、delay量が最大の値に基づいて個々のLaneのデータシフト量を計算する第4計測回路としてのシフト量計算回路(Calc Shift)36b、セレクタ31b、37bなどを有する。
PCLK Latch32bは、SYNC_TX1がHIの期間に、PCLK_TX1をラッチする。PCLK Latch32bは、PCLK_TX1を所定のタイミングでラッチし、PCLK_TX1をラッチした時点からの該Lane_TX1のPCLK_TX1のdelay量を計測する。PCLK Latch32bは、計測した結果(delay量)を出力する。
Calc Skew_A33bは、PCLK Latch32bにより計測されたLane_TX1のPCLK_TX1のdelay量とLane_TX1の左側に隣接するLane_TX0から得られるPCLK_TX0のdelay量との差に対応する値(隣接Lane間差分値)を求める。
具体的には、Calc Skew_A33bは、PCLK_TX1及びSYNC_TX1を受け、PCLK_TX1よりも十分に高速なクロック信号であるHSCLKを用いて、隣接するLane_TX0のPCLK_TX0のdelay量と、自Lane(Lane_TX1)のPCLK_TX1のdelay量との差を計算して、隣接Lane間差分値として算出する。例えばPCLK_TX1が500MHzとすると、HSCLKはそれよりも十分高速な16GHzなどである。
Calc Skew_M34bは、算出された隣接Lane間差分値と、マスタLaneとして設定されているLane_TX0から得られる隣接Lane間差分値とに基づいて、マスタLaneとの間のdelay量の差に対応する値(マスタLane間差分値)を求める。
具体的には、Calc Skew_M34bは、Lane_TX0〜Lane_TX3のうち、マスタLaneとして設定されているLane(この例ではLane_TX0)の隣接Lane間差分値に自Lane(Lane_TX1)の隣接Lane間差分値を加算したマスタLane 間差分値を算出する。
Calc Max35bは、算出されたこのLane_TX1のマスタLane間差分値と隣接するLane_TX0から得られるマスタLane 間差分値のうち大きい値を選択してディジーチェーン接続された他の下流のLane_TX2,Lane_TX3へ渡し、Lane_TX2, Lane_TX3から戻されてきた最大値を記憶する。つまりCalc Max35bは、各Lane_TX0〜Lane_TX3で計測されたマスタLane間差分値のうち、最大差分値のLane(つまり、マスタLaneに対して最もタイミングが遅延するLane)の差分値を得る。
Calc Shift36bは、記憶した最大差分値からLane_TX1(自Lane)のマスタLane間差分値を引き算してLane_TX1(自Lane)のPCLK_TX1のdelay量のシフト量(最もタイミングが遅延するLaneに合わせるためにPCLK_TX1を何パルス分遅らせるかを示すシフト値)を求める。つまりこのCalc Shift36bは、最大差分値に対して自LaneのPCLK_TX1の出力タイミングをシフトさせるシフト量(シフト値)を計算する。
セレクタ31b、37bは、delay量をシフトさせる対象のLaneの範囲を設定する設定回路として機能する。
セレクタ31bは、Lane_TX1(自Lane)がマスタLaneかスレーブLaneかを設定するための選択回路であり、制御端子、左隣に隣接するLane_TX0のShift Calc23aに接続された複数の入力端子、および複数の出力端子を有する。セレクタ31bは、制御端子に入力された入力値(MASTER_TX1=“1”か“0”)に応じて自身のLaneのレーン設定をマスタLaneかスレーブLaneのいずれかに切り替える。
セレクタ31bは、Lane_TX1(自Lane)がマスタLaneかスレーブLaneかを設定するための選択回路であり、制御端子、左隣に隣接するLane_TX0のShift Calc23aに接続された複数の入力端子、および複数の出力端子を有する。セレクタ31bは、制御端子に入力された入力値(MASTER_TX1=“1”か“0”)に応じて自身のLaneのレーン設定をマスタLaneかスレーブLaneのいずれかに切り替える。
例えばセレクタ31bは、制御端子にマスタ設定の入力値(MASTER_TX1=“1”)が入力されると、Lane_TX1(自Lane)をマスタLaneとして機能させるため、内部のスイッチを「1」の側に切り替え、複数の出力端子を介して、所定値をLane_TX1(自Lane)のCalc Skew_A33b、Calc Skew_M34bおよびCalc Max35bそれぞれに提供する。
また、セレクタ31bは、制御端子にスレーブ設定の入力値(MASTER_TX1=“0”)が入力されると、Lane_TX1(自Lane)をスレーブLaneとして機能させるため、内部のスイッチを「0」の側に切り替え、第2入力端子に接続された左隣に隣接するLane_TX0のShift Calc23aからのクロックスキューに関する情報(delay量、差分値、最大差分値など)を、複数の出力端子を介して、Calc Skew_A33b、Calc Skew_M34bおよびCalc Max35bに提供する。
セレクタ37bは、Lane_TX1(自Lane)が終端のスレーブLaneであるか否かを設定するための選択回路であり、制御端子、第1入力端子、第2入力端子、及び出力端子を有する。
セレクタ37bは、制御端子に入力された入力値(SLAVE_END_TX1=“1”か“0”)に応じて自身のLaneのLane設定をスレーブLaneか、スレーブエンドLaneのいずれかに切り替える。
セレクタ37bは、制御端子に入力された入力値(SLAVE_END_TX1=“1”か“0”)に応じて自身のLaneのLane設定をスレーブLaneか、スレーブエンドLaneのいずれかに切り替える。
例えばセレクタ37bは、制御端子にスレーブエンドLane設定の入力値(SLAVE_END_TX1=“1”)が入力されると、Lane_TX1(自Lane)をスレーブエンドLaneとして機能させるため、入力値「1」に対応する第1入力端子に切り替える。これにより、セレクタ37bは、第1入力端子に接続されたCalc Max35bからのマスタLane間差分値の最大値を、Calc Shift36bに提供すると共に、左隣に隣接するLane_TX0に出力端子を介して提供する。
また、セレクタ37bは、制御端子にスレーブエンドLane設定でない入力値(SLAVE_END_TX1= “0”)が入力されると、入力値「0」に対応する第2入力端子に切り替える。これにより、スレーブエンドに達したマスタLane 間差分値の最大値が下流のLaneから戻されて下流のLaneに通知されるようになる。
なお、図2は、Lane_TX0がマスタLane、Lane_TX3がスレーブエンドLaneである例である。従って、Lane_TX0では、セレクタ31aは“1”、セレクタ37bは“0”、にそれぞれ設定され、Lane_TX1とLane_TX2では、セレクタ31b,31cは“0”、セレクタ37bは“0”、にそれぞれ設定され、Lane_TX3では、セレクタ31dは“0”、セレクタ37bは“1”、にそれぞれ設定されている。
セレクタ31とセレクタ37によって、複数のLaneのうちマスタLaneに設定されたLane_TX0と、スレーブエンドLaneに設定されたLane_TX3との間でPCLK_TX1〜PCLK_TX3をシフトさせる範囲を設定できる。この例では、4本の全てのLaneがクロックのシフト対象とされる。
続いて、図3を参照して、Calc Skew_A33a〜33dの回路構成を概略的に説明する。図3は、一例としてLane_TX0,Lane_TX1に備えられるCalc Skew_A33a,33bの構成を示す図である。Calc Skew_A33bは、隣接Lane_TX0のPCLKと自Lane_TX1のPCLKとのスキュー量(何パルス分ドリフトしているか)とその時間方向(マイナス(早い)、プラス(遅い))を判定する。
以下、Lane_TX0(第1レーン)とLane_TX1(第2レーン)のCalc Skew_A33a,33bの動作について説明する。なお、動作を説明するにあたり、2つのレーンのうち1つのレーン、主にLane_TX1でのクロックの遅れ/進みの判定動作を説明するため、ここではLane_TX0の側のカウンタ回路、判定回路などは明示しない。
例えば図3に示すように、Lane_TX0のCalc Skew_A33aは、複数のラッチ回路41、42を有する。ラッチ回路41は、HSCLKに基づいてSYNC_TX0によりリセットする。ラッチ回路42は、ラッチ回路41がSYNC_TX0によりリセットしたことに応じて、HSCLKに基づいてPCLK_TX0をラッチする。
Lane_TX1のCalc Skew_A33bは、複数のラッチ回路43、44と、複数のカウンタ回路45、46と、判定回路47とを有する。ラッチ回路43は、HSCLKに基づいてSYNC_TX1によりリセットする。ラッチ回路44は、ラッチ回路43がSYNC_TX1によりリセットしたことに応じて、HSCLKに基づいてPCLK_TX1をラッチする。
カウンタ回路45(Count0)は、start端子、stop端子を有する。start端子はLane_TX0のラッチ回路42の出力に接続されている。stop端子はLane_TX1のラッチ回路44の出力に接続されている。
カウンタ回路45(Count0)は、Lane_TX0(隣接する他のLane)からstart端子にPCLK_TX0が入力されるタイミングでカウントを開始し、Lane_TX1(自Lane)のPCLK_TX1がstop端子に入力されるタイミングでカウントを終了して、その間のクロックHSCLKのサイクル数(パルス数)をカウントする。
カウンタ回路45(Count0)は、Lane_TX0(隣接する他のLane)に対してLane_TX1(自Lane)のPCLK_TX1が遅いことを計数するカウンタである。カウンタ回路45(Count0)は、カウンタしたパルス数(カウント値)を判定回路47に出力する。判定回路47は、このカウンタの値を選択する場合はカウント値に符号「+」を付与して出力する。
カウンタ回路46(Count1)は、start端子、stop端子を有する。start端子はLane_TX1のラッチ回路44の出力に接続されている。stop端子はLane_TX0のラッチ回路42の出力に接続されている。カウンタ回路46(Count1)は、Lane_TX1(自Lane)のPCLK_TX1がstart端子に入力されるタイミングでカウントを開始し、Lane_TX0(隣接する他のLane)からstop端子にPCLK_TX0が入力されるタイミングでカウントを終了して、その間のクロックHSCLKのサイクル数(パルス数)をカウントする。
カウンタ回路46(Count1)は、Lane_TX0(隣接する他のLane)に対してLane_TX1(自Lane)のPCLK_TX1が早いことを計数するカウンタである。カウンタ回路46(Count1)は、カウンタしたパルス数(カウント値)を判定回路47に出力する。判定回路47は、このカウンタの値を選択する場合はカウント値に符号「−」を付与して出力する。
判定回路47は、Lane_TX1(自Lane)のPCLK_TX1がHIになったことに応じて、リセット解除後のカウンタ回路45、46からのカウント値の大小関係から、いずれかからのカウント値を選択してPCLK_skewとして出力する。
Lane_TX1において、Calc Skew_A33bは、PCLKをHSCLK(PCLKに対して十分に高速なClock)でラッチし、ラッチしたPCLKのRiseエッジ位置から隣接する他のLane_TX0に対するPCLK Skewを算出する。
ここで、図4、図5を参照して具体的な動作例を説明する。例えばLane_TX0のPCLK_TX0に対してLane_TX1のPCLK_TX1の方が遅い場合、図4に示すように、Lane_TX0では、SYNC_TX0がHIになった後の始めのPCLKのRiseエッジ直後の位置61でHSCLKによってPCLK_TX0がラッチされ、ラッチされた信号がカウンタ回路45(Count0)のstart端子に入力される。これにより、カウンタ回路45(Count0)によるパルス数(HSCLKのRiseエッジ数のカウント)が開始される。
また、Lane_TX1でも、SYNC_TX1がHIになった後の始めのPCLKのRiseエッジ直後の位置62でHSCLKによってPCLK_TX1がラッチされ、ラッチされた信号がカウンタ回路45(Count0)のstop端子とカウンタ回路46(Count1)のstart端子に入力される。
これにより、カウンタ回路45(Count0)によるパルス数(HSCLKのRiseエッジ数のカウント)が終了するとともに、カウンタ回路46(Count1)によるパルス数(HSCLKのRiseエッジ数のカウント)が開始される。
このとき、カウンタ回路45(Count0)のカウント開始からカウンタ回路46(Count1)のカウント開始までで遅延63が発生する。カウンタ回路45(Count0)では、カウント結果として、遅延63に対応するカウント値「3」が得られる。
Lane_TX0では、SYNC_TX0がHIになった後の2回目のPCLKのRiseエッジ直後の位置64でHSCLKによってPCLK_TX0がラッチされ、ラッチされた信号がカウンタ回路46(Count1)のstop端子に入力される。
これにより、カウンタ回路46(Count1)によるパルス数(HSCLKのRiseエッジ数のカウント)が終了する。この結果、カウンタ回路46(Count1)では、カウント結果としてカウント値「7」が得られる。
判定回路47は、カウンタ回路45(Count0)とカウンタ回路46(Count1)のカウント値を常に比較し、両カウンタ回路45,46のうち、リセット解除後のカウント値が大きい方のカウンタ回路のカウント値を最終カウント値として選定する。
例えば、判定回路47が動作を開始後、カウンタ回路45(Count0)が先にカウントを開始して終了した場合、カウンタ回路45(Count0)のカウント値は「3」、カウンタ回路46(Count1)のカウントは「0」、のため、Count0 > Count1である。この場合、PCLK_TX1の方が遅いという結果となるため、判定回路47は、このカウンタ回路45(Count0)を選択した符号「+」とカウンタ回路45(Count0)の値である「3」とをPCLK_skewとして出力する。
一方、Lane_TX0のPCLK_TX0に対してLane_TX1のPCLK_TX1の方が早い場合、図5に示すように、Lane_TX1では、SYNC_TX1がHIになった後の始めのPCLKのRiseエッジ直後の位置66でHSCLKによってPCLK_TX1がラッチされ、ラッチされた信号がカウンタ回路46(Count1)のstart端子に入力される。これにより、カウンタ回路46(Count1)によるパルス数(HSCLKのRiseエッジ数のカウント)が開始される。
また、Lane_TX0でも、SYNC_TX0がHIになった後の始めのPCLKのRiseエッジ直後の位置67でHSCLKによってPCLK_TX0がラッチされ、ラッチされた信号がカウンタ回路46(Count1)のstop端子とカウンタ回路45(Count0)のstart端子に入力される。これにより、カウンタ回路46(Count1)によるパルス数(HSCLKのRiseエッジ数のカウント)が終了するとともに、カウンタ回路45(Count0)によるパルス数(HSCLKのRiseエッジ数のカウント)が開始される。
このとき、カウンタ回路46(Count1)のカウント開始からカウンタ回路45(Count0)のカウント開始までで遅延68が発生する。カウンタ回路46(Count1)では、カウント結果として、遅延68に対応するカウント値「3」が得られる。
Lane_TX1では、SYNC_TX1がHIになった後の2回目のPCLKのRiseエッジ直後の位置69でHSCLKによってPCLK_TX0がラッチされ、ラッチされた信号がカウンタ回路46(Count1)のstop端子に入力される。これにより、カウンタ回路46(Count1)によるパルス数(HSCLKのRiseエッジ数のカウント)が終了する。この結果、カウンタ回路46(Count1)では、カウント結果としてカウント値「7」が得られる。
判定回路47は、カウンタ回路45(Count0)とカウンタ回路46(Count1)のカウント値を常に比較し、両カウンタ回路45,46のカウント値のうち、リセット解除後のカウント値が大きい方のカウンタ回路のカウント値を最終カウント値として選定する。なお、リセット解除のタイミングは、両カウンタ回路45,46のうち遅い側の回路がカウントを始めるタイミングである。
例えば、判定回路47が動作を開始後、カウンタ回路46(Count1)が先にカウントを開始して終了した場合、カウンタ回路46(Count1)のカウント値は「3」、カウンタ回路45(Count0)のカウント値は「0」のため、Count0 < Count1である。この場合、PCLK_TX1の方が早いという結果となるため、判定回路47は、このカウンタ回路46(Count1)を選択した符号「‐」とカウンタ回路46(Count1)の値である「3」をPCLK_skewとして出力する。
次に、図6を参照して上記Data Shift24a〜24dの回路構成を説明する。なお、これら回路は、すべて同じ構成のため、Data Shift24aについて説明する。
図6に示すように、Data Shift24aは、PCLK_TX0をHSCLKでラッチする複数のシフトレジスタ51と、各シフトレジスタ51から出力されるクロック信号を、Shift Calc23aから入力されるシフト量の値に応じて選択して出力するセレクタ52と、入力されるDATA_TX0及びSYNC_TX0をラッチする複数のシフトレジスタ53と、各シフトレジスタ53から出力されるデータDATA_TX0及びSYNC_TX0を、Shift Calc23aから入力されるシフト量の値に応じて選択して出力するセレクタ54とを有する。
すなわち、Data Shift24aは、Shift Calc23aにより算出されたシフト量に基づき、それぞれがHSCLKに同期してシフトした、PCLK_TX0、DATA_ TX0、SYNC_TX0を出力する。
以下、図1、図7乃至図9を参照して実施形態に係るデータ伝送装置の動作を説明する。
図1に示したように、実施形態に係るデータ伝送装置では、COM21から出力されるPCLK_sourceは、各Laneの分周回路11a〜11dに分岐して供給される。分周回路11aでは、入力されたPCLK_sourceからPCLK_TX0が生成されてパラレルシリアル変換回路22aへ出力される。この他、分周回路11aからは、SYNC_TX0、DATA_TX0がパラレルシリアル変換回路22aへ出力される。
図1に示したように、実施形態に係るデータ伝送装置では、COM21から出力されるPCLK_sourceは、各Laneの分周回路11a〜11dに分岐して供給される。分周回路11aでは、入力されたPCLK_sourceからPCLK_TX0が生成されてパラレルシリアル変換回路22aへ出力される。この他、分周回路11aからは、SYNC_TX0、DATA_TX0がパラレルシリアル変換回路22aへ出力される。
同様に、分周回路11bでは、分岐して入力されたPCLK_sourceからPCLK_TX1が生成されてパラレルシリアル変換回路22bへ出力される。この他、分周回路11bからは、SYNC_TX1、DATA_TX1がパラレルシリアル変換回路22bへ出力される。他の分周回路11c、11dについても同様である。
ここでは、パラレルシリアル変換回路22a〜22dの端子設定により、予めパラレルシリアル変換回路22aがマスタLane、パラレルシリアル変換回路22b〜22dがスレーブLane、そのうちパラレルシリアル変換回路22dがスレーブエンドLaneに設定されているものとする。
また、パラレルシリアル変換回路22a〜22dに入力されるPCLK_TX0〜PCLK_TX3間には、図7に示すようなクロックスキューが発生していたものとする。
すなわち、図7に示すように、リセット後、高速なHSCLKに対してPCLK_TX0が10HSCLK(10パルス分)遅く、PCLK_TX1が8HSCLK(8パルス分)遅く、PCLK_TX2が13HSCLK(13パルス分)遅く、PCLK_TX3が11HSCLK(11パルス分)遅く、Lane間クロックスキューが発生したものとする。なお、HSCLK1パルス分をHSCLKサイクル数ともいう。
この場合、各PCLK_TX0〜PCLK_TX3がShift Calc23a〜23dに入力されると、図8に示すように、Lane_TX0では、PCLK Latch32aが、PCLK_TX0のdelay量として+10を計測する。Lane_TX1では、PCLK Latch32bが、PCLK_TX1のdelay量として+8を計測する。Lane_TX2では、PCLK Latch32cが、PCLK_TX2のdelay量として+13を計測する。Lane_TX3では、PCLK Latch32dが、PCLK_TX3のdelay量として+11を計測する。
次に、各Laneでは、Calc skew_A33a〜33dにより、左隣のレーンとの隣接Lane間差分値が計測される。なお、Lane_TX0は、マスタLaneに設定されているため、隣接Lane間差分値、マスタLane間差分値、及び最大差分値は何れも「0」が設定され、Lane間スキューは計測されない。
Lane_TX1では、Calc skew_A33bが、Lane_TX0から得られる隣接Lane間差分値「+10」と自身のLane_TX1で計測された隣接Lane間差分値「+8」との差を算出する。この場合、「+8」−「+10」=「−2」となり、この値が、Lane_TX1の隣接Lane間差分値とされる。他のレーンについても同様に、Lane_TX2の隣接Lane間差分値は「+5」、Lane_TX3の隣接Lane間差分値は「−2」とされる。
次に、Lane_TX1では、Calc skew_M34bが、マスタLaneであるLane_TX0のCalc skew_M34aと接続された信号線(図2の回路参照)を通じて得られる隣接Lane間差分値「0」と自身のLane_TX1で算出した隣接Lane間差分値「−2」とを加算してマスタLane間差分値を算出する。
この場合、マスタLane間差分値は、「0」+「−2」=「−2」となる。他のレーンについても同様に、Lane_TX2のマスタLane間差分値は「+3」、Lane_TX3のマスタLane間差分値は「+1」とされる。
次に、Lane_TX1では、Calc Max35bが、Lane_TX0から得られる最大差分値「0」と自身のLane_TX1で算出したマスタLane間差分値「−2」とを比較して大きい方の値を最大差分値とする。この場合、「0」と「−2」を比較した結果、大きい方の値が「0」となり、この値がLane_TX0とLane_TX1のLane間での最大差分値とされる。
他のLaneについても同様に最大差分値が計算され、Lane_TX2では、Lane_TX1とLane_TX2のLane間における最大差分値が「+3」、Lane_TX3では、Lane_TX2とLane_TX3のLane間における最大差分値は「+3」とされ、この最大差分値「+3」がスレーブエンドレーンであるLane_TX3から各Lane_TX2〜Lane_TX1〜Lane_TX0に順に戻され(通知され)、各Laneで記憶される。
最後に、Lane_TX1では、Calc Shift36bが、記憶した最大差分値「+3」から、自身のマスタLane間差分値を引き算してPCLK_TX1のシフト値(自Laneのdelay量の値から何パルス分遅らせるか)を算出する。
この場合、「+3」から「−2」を引いた結果(互いの差をとった結果)、「+5」となり、この値がPCLK_TX1のシフト値とされる。他のレーンについても同様に、Lane_TX2におけるPCLK_TX2のシフト値は「0」、Lane_TX3におけるPCLK_TX3のシフト値は「+2」とされる。また、ここでは、マスタLaneであるLane_TX0についてもシフト値は計算されて、「+3」から「0」を引いた結果、PCLK_TX0のシフト値は「+3」となる。
このようにして各Laneの各Shift Calc23a〜23dから、それぞれのシフト値が、各Data Shift24a〜24dに出力されるので、各LaneのData Shift24a〜24dは、それぞれのPCLK_TX0〜PCLK_TX3を、それぞれのシフト値に応じてシフトさせる(最遅のPCLK_TX2に合すように遅らせる)。
具体的には、図9に示すように、Data Shift24aは、自Lane_TX0のdelay量のタイミング(破線矢印の終端位置)から3パルス分(+3)遅延させてPCLK_TX0をラッチする。Data Shift24bは、自Lane_TX1のdelay量のタイミングから5パルス分(+5)遅延させてPCLK_TX1をラッチする。Data Shift24cは、自Lane_TX2のdelay量が+13で最も遅いため、次にPCLK_TX2のパルスが立ち上がるタイミングでラッチする。Data Shift24dは、自Lane_TX3のdelay量のタイミングから2パルス分(+2)遅延させてPCLK_TX3をラッチする。
図10を参照してこの実施形態のデータ伝送装置における効果を説明する。
例えば、図7に例示したように、Lane_TX1のdelay量(PCLK_TX1のSkew)が「+8」、最遅のLane_TX2のdelay量(PCLK_TX2のskew)が「+13」である。
例えば、図7に例示したように、Lane_TX1のdelay量(PCLK_TX1のSkew)が「+8」、最遅のLane_TX2のdelay量(PCLK_TX2のskew)が「+13」である。
この場合、図10に示すように、Lane_TX1において、タイミング70でPCLK_TX1をHSCLKでラッチすると、PCLK_hsclk_latchとなる。これに対して本実施形態では、Data Shift24bが、Shift Calc23bから入力されるシフト値「+5」に応じてPCLK_TX1をHSCLK5パルス分シフトさせてラッチするので、タイミング71でPCLK_TX1がラッチされたPCLK_shiftが得られ、このPCLK_shiftとSYNC_TX1、DATA_shift_TX1がPISO_LOAD26bに入力される。
PISO_LOAD26bは、タイミング72でPISO_Load信号をPISO_n_to_4 27bへ出力し、PISO_n_to_4 27bからは、タイミング73でDATA_shift_TX1が4ビットのパラレルデータに変換されて、順にPISO_4_to_1 29bへ出力される。PISO_4_to_1 29bでは、入力された4ビットのパラレルデータOUT_32_to_4 [3:0]が1ビットのシリアルデータに変換されて出力回路30bから、タイミング74で順次出力されるようになる。
一方、Lane_TX2では、Lane_TX1でPCLK_TX1がシフトされた分(5パルス分の間隔75)と同じだけ遅延したタイミング76で、PCLK_TX2がHSCLKでラッチされて、PCLK_hsclk_latchが得られる。このPCLK_hsclk_latchは、Lane_TX1のPCLK_shiftと同じタイミングで遷移する信号となる。Lane_TX2のPCLK_TX2は、Lane_TX0 〜Lane_TX3の中で最も遅いPLCKであるためシフトされず、このPCLK_TX2そのものがPCLK_shiftとしてPISO_LOAD26cへ出力される。
PISO_LOAD26cは、タイミング78でPISO_Load信号をPISO_n_to_4 27cへ出力し、PISO_n_to_4 27cからは、タイミング79でDATA_shift_TX2が4ビットのパラレルデータに変換されて、順にPISO_4_to_1 29cへ出力される。PISO_4_to_1 29cでは、入力された4ビットのパラレルデータOUT_32_to_4 [3:0]が1ビットのシリアルデータに変換されて出力回路30cから、タイミング80で順次出力されるようになる。
この結果、Lane_TX2におけるタイミング80とLane_TX1におけるタイミング74とでは、1パルス分に満たないわずかな時間差81が生じる。しかし、これはanalog skewであり、回路の構造上、必ず発生するものであるため、Lane間のSkewとしては充分に許容範囲である。
以上説明したように、この実施形態のデータ伝送装置によれば、複数のLane_TX0〜Lane_TX3でLinkを構成しLane毎にPCLKを用いてデータを伝送する上で、Lane毎に設けた分周回路11a〜11dから出力されるPCLK_TX0〜PCLK_TX3(パラレルデータ用Clock)に生じるLane間Skewの影響をなくしてSkew低減を図ることができる。これにより、例えばLink毎に異なるData Rateで通信を行うBifurcation機能を利用したデータ伝送におけるLink毎の出力を高SPEC化に対応させることができる。
(他の実施形態)
上記実施形態では、PCLK_TX1よりも十分に高速なHSCLKを用いたが、HSCLKが高速すぎて、タイミング設計が困難な場合が考えられる。このような場合、図11に示すように、HSCLKのエッジ毎に同期して90度ずつ位相を変えた、例えばそれぞれがHSCLKの1/4の周波数(4倍の周期)の複数の分周クロックPCLK_1/4〜PCLK_4/4(多相Clock)(異なる位相の多相Clock)を用いることで、HSCLKと同じ分解能でSkewを調整することができる。なお、ここに示した4相の多相Clockは一例であり、この例以外であってもよく、本発明は相数に限定されるものではない。
上記実施形態では、PCLK_TX1よりも十分に高速なHSCLKを用いたが、HSCLKが高速すぎて、タイミング設計が困難な場合が考えられる。このような場合、図11に示すように、HSCLKのエッジ毎に同期して90度ずつ位相を変えた、例えばそれぞれがHSCLKの1/4の周波数(4倍の周期)の複数の分周クロックPCLK_1/4〜PCLK_4/4(多相Clock)(異なる位相の多相Clock)を用いることで、HSCLKと同じ分解能でSkewを調整することができる。なお、ここに示した4相の多相Clockは一例であり、この例以外であってもよく、本発明は相数に限定されるものではない。
上記実施形態では、各Laneにシフト計算回路(Shift Calc)を配置したが、最小構成として、2Lane構成の場合、シフト計算回路(Shift Calc)は、2Laneのうち少なくとも一つのLaneに配置されていればよい。また、データシフト回路(Data Shift)は、シフト対象のLaneに配置されていればよい。
また、上記実施形態では、4つのレーンの1つ目のレーンをマスタLaneとし、最後のレーンをスレーブエンドレーンとしたが、さらにレーン数やLink数が多い場合、ディジーチェーン接続される複数のレーンの中でclock Shiftを行う対象Laneを限定し、その対象Laneの範囲でマスタ/スレーブエンドの設定を行うことで、BifurcationやAggregationなどのさまざまなLane構成に対応することが可能になる。
上記実施形態では、複数のLaneすべてをシフト対象としたが、このうち一部のLaneだけをシフト対象としてもよい。この場合、シフト対象とされた複数のLaneの中の1つのLaneをマスタLaneに設定しマスタLaneからディジーチェーン接続された終端のLaneをスレーブエンドLaneに設定し、マスタLaneからスレーブエンドLaneまでの間で分周クロックをシフトすればよい。
上記実施形態では、PCI Expressのインターフェース装置について説明したが、これ以外に、例えばアクセラレーテッド グラフィックス ポート(AGP)やSATA、M.2など、パラレルデータをシリアルデータに変換する際に、複数のLaneを有しLane毎に異なる分周クロックを利用する装置であれば、本発明を適用できることはいうまでもない。
本発明の実施形態を説明したが、この実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。この新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。上記実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1…第1回路群、2…第2回路群、11a〜11d…分周回路、22a〜22d…パラレルシリアル変換回路、23a〜23d…シフト計算回路(Shift Calc)、24a〜24d…データシフト回路(Data Shift)、25a〜25d…パラレルインシリアルアウト回路(PISO)、13a、13b、14a、14b…ラッチ回路、21…基準クロック生成回路(COM)、26a〜26c…パラレルデータ読込回路(SIPO_LOAD)、27a〜27d…データ変換回路(PISO_n_to_4)、28a〜28d…分周回路、29a〜29d…P to S変換回路(PISO_4_to_1)、30a〜30d…出力回路、31a〜31d…セレクタ、32a〜32d…ラッチ回路、33a〜33d…対隣接Lane間スキュー計測回路(Calc Skew_A)、34a〜34d…対マスタLane間スキュー計測回路(Calc Skew_M)、35a〜35d…最大delay量計測回路(Calc Max)、36a〜36d…シフト量計算回路(Calc Shift)、37a〜37d…セレクタ、41〜44…ラッチ回路、45、46…カウンタ回路、47…判定回路、51、52…シフトレジスタ、52、54…セレクタ、61、62、64、66、67、69…Riseエッジ位置、63、68…遅延、70〜74、76〜80…タイミング、75…間隔、81…時間差(analog skew)。
Claims (6)
- データ伝送路として複数のレーンを備え、前記複数のレーンに含まれる少なくとも第1レーン及び第2レーンが伝送単位としてのリンクを構成し、前記リンクに規定された伝送レートでデータ伝送可能なデータ伝送装置であって、
前記第1レーンにおいてデータ伝送の基準となる第1クロックを生成する第1クロック生成回路と、
前記第2レーンにおいてデータ伝送の基準となる第2クロックを生成する第2クロック生成回路と、
前記第1クロックの第1遅延量に関する情報と前記第2クロックの第2遅延量に関する情報とを互いに通知し合うことによって、前記第1クロックおよび前記第2クロックのうちのいずれか一方のクロックの遅延量と他方のクロックの遅延量とが合うように遅延量のシフト量を決定する第1回路と、
前記第1回路により決定されたシフト量を基に、前記第1遅延量または前記第2遅延量をシフトさせる第2回路と
を具備するデータ伝送装置。 - 前記第1回路は、
前記第1遅延量と前記第2遅延量のうち、タイミングが遅い方の遅延量に合わせるように前記遅延量のシフト量を決定する請求項1記載のデータ伝送装置。 - 前記第1回路は、
レーンに入力されるクロックを規定のタイミングでラッチし、ラッチした時点からの該レーンの遅延量を計測する第1計測回路と、
前記第1計測回路により計測された遅延量とこのレーンに隣接する他のレーンから得られる遅延量との差を計算して隣接レーン間のクロックスキューの差分値を求める第2計測回路と、
前記第2計測回路により求められる差分値とマスタレーンとして設定されているレーンの差分値とを加算してマスタレーンとの間の差分値を求める第3計測回路と、
このレーンの前記差分値と他のレーンから得られる差分値のうち大きい値を選択して他のレーンへ渡し、前記他のレーンから戻されてきた最大差分値を記憶する選択回路と、
前記最大差分値から前記第2計測回路により求められた前記差分値を引き算してこのレーンの遅延量のシフト量を求める第4計測回路と
を具備する請求項1または2いずれか1項に記載のデータ伝送装置。 - 前記第2回路によりシフトされたクロックのタイミングで読み込んだパラレルデータをシリアルデータに変換する変換回路をさらに具備する請求項1乃至3いずれか1項に記載のデータ伝送装置。
- 前記遅延量をシフトさせる対象のレーンの範囲を設定する設定回路を具備する請求項1乃至4いずれか1項に記載のデータ伝送装置。
- データ伝送路として複数のレーンを備え、前記複数のレーンに含まれる少なくとも第1レーン及び第2レーンが伝送単位としてのリンクを構成し、前記リンクに規定された伝送レートでデータ伝送可能なデータ伝送装置におけるデータ伝送方法であって、
前記第1レーンにおいてデータ伝送の基準となる第1クロックを生成し、
前記第2レーンにおいてデータ伝送の基準となる第2クロックを生成し、
前記第1レーンの第1遅延量に関する情報と前記第2レーンの第2遅延量に関する情報とを互いに通知し合うことによって前記第1クロックおよび前記第2クロックのうちのいずれか一方のクロックの遅延量と他方のクロックの遅延量とが合うように遅延量のシフト量を決定し、
決定したシフト量を基に、前記第1遅延量または前記第2遅延量をシフトさせる
データ伝送方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019053168A JP2020154789A (ja) | 2019-03-20 | 2019-03-20 | データ伝送装置およびデータ伝送方法 |
US16/553,753 US11275400B2 (en) | 2019-03-20 | 2019-08-28 | Data transmission apparatus and data transmission method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2019053168A JP2020154789A (ja) | 2019-03-20 | 2019-03-20 | データ伝送装置およびデータ伝送方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2020154789A true JP2020154789A (ja) | 2020-09-24 |
Family
ID=72514303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2019053168A Pending JP2020154789A (ja) | 2019-03-20 | 2019-03-20 | データ伝送装置およびデータ伝送方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11275400B2 (ja) |
JP (1) | JP2020154789A (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11314277B1 (en) * | 2019-08-05 | 2022-04-26 | Xilinx, Inc. | Serial lane-to-lane skew reduction |
US10924096B1 (en) * | 2020-03-03 | 2021-02-16 | Xilinx, Inc. | Circuit and method for dynamic clock skew compensation |
US11115176B1 (en) * | 2020-03-04 | 2021-09-07 | Qualcomm Incorporated | System and method for adjusting clock-data timing in a multi-lane data communication link |
US11520729B2 (en) * | 2021-05-04 | 2022-12-06 | Qualcomm Incorporated | I2C bus architecture using shared clock and dedicated data lines |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI249681B (en) * | 2003-07-02 | 2006-02-21 | Via Tech Inc | Circuit and method for aligning data transmitting timing of a plurality of lanes |
JP2005244479A (ja) | 2004-02-25 | 2005-09-08 | Fujitsu Ltd | 伝送装置 |
US7466723B2 (en) * | 2004-06-29 | 2008-12-16 | Intel Corporation | Various methods and apparatuses for lane to lane deskewing |
US20090276559A1 (en) * | 2008-05-02 | 2009-11-05 | International Business Machines Corporation | Arrangements for Operating In-Line Memory Module Configurations |
US8930742B2 (en) * | 2008-12-16 | 2015-01-06 | Hewlett-Packard Development Company, L.P. | Clock signals for dynamic reconfiguration of communication link bundles |
JP5577932B2 (ja) | 2010-08-09 | 2014-08-27 | ソニー株式会社 | 送信回路および通信システム |
US8565271B2 (en) * | 2011-04-01 | 2013-10-22 | Opnext Subsystems, Inc. | Multiplexer lane alignment for high-speed data systems |
JP2013152548A (ja) | 2012-01-24 | 2013-08-08 | Renesas Electronics Corp | 同期処理テスト装置、送信回路及びデータ送信方法 |
US10498570B2 (en) * | 2013-10-02 | 2019-12-03 | Inphi Corporation | Data communication systems with forward error correction |
US20170046298A1 (en) * | 2015-08-11 | 2017-02-16 | Mediatek Inc. | Asynchronous first-in first-out buffer apparatus with active rate control and dynamic rate compensation and associated network device using the same |
US9548858B1 (en) * | 2016-01-18 | 2017-01-17 | Inphi Corporation | Skew management for PAM communication systems |
US10445265B2 (en) * | 2017-10-20 | 2019-10-15 | Cisco Technology, Inc. | Method and apparatus for deskewing decentralized data streams |
US10333571B1 (en) * | 2018-07-06 | 2019-06-25 | Novatek Microelectronics Corp. | Signal receiving apparatus with deskew circuit |
US11265096B2 (en) * | 2019-05-13 | 2022-03-01 | Intel Corporation | High accuracy time stamping for multi-lane ports |
-
2019
- 2019-03-20 JP JP2019053168A patent/JP2020154789A/ja active Pending
- 2019-08-28 US US16/553,753 patent/US11275400B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
US11275400B2 (en) | 2022-03-15 |
US20200301466A1 (en) | 2020-09-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2020154789A (ja) | データ伝送装置およびデータ伝送方法 | |
US6963220B2 (en) | Methods and circuitry for implementing first-in first-out structure | |
US8422619B2 (en) | Clock frequency divider circuit, clock distribution circuit, clock frequency division method, and clock distribution method | |
CN107251473B (zh) | 串行化装置 | |
CN104049672A (zh) | 使用可选择同步器跨异步边界数据同步以最小化延迟 | |
KR101541175B1 (ko) | 지연선 기반 시간-디지털 변환기 | |
KR100817270B1 (ko) | 인터페이스 장치 및 데이터 동기화 방법 | |
US9484902B2 (en) | Delay circuit | |
US9071258B1 (en) | Parallel-serial converter circuit | |
KR101006843B1 (ko) | 출력신호를 안정적으로 생성하는 동기화 회로 | |
KR100728906B1 (ko) | 듀티 싸이클 보정장치 | |
CN114679158B (zh) | 周期信号发生装置、信号处理系统及其周期信号发生方法 | |
JPH02168308A (ja) | クロック信号供給装置 | |
JP2013036960A (ja) | 遅延スキャンテスト方法、半導体装置及び半導体装置の設計方法 | |
KR101251764B1 (ko) | 그레이 코드 카운터 | |
KR100667546B1 (ko) | 직렬 데이터 링크의 테스트 장치 및 방법 | |
JP6721340B2 (ja) | 半導体集積回路 | |
KR101354530B1 (ko) | 가변 분주기 및 가변 분주 방법 | |
GB2398193A (en) | Digital delay line | |
KR20110060349A (ko) | 데이터 동기화 방법, 데이터 동기화 회로, 및 이를 포함하는 데이터 동기화 장치 | |
WO2012049355A1 (en) | Apparatus for synchronizing and providing a glitch-free clock | |
WO2014080469A1 (ja) | データ処理装置及びプログラム | |
KR20040024346A (ko) | 플립플롭의 최대 동작주파수 측정회로 |