(57)【要約】  複数のトランスミッター（１９０）の起動に関する方法において、複数のトランスミッター（１９０）がそれぞれ対応するデータバッファ（１２１）を有していて、トランスミッター毎にシーケンスを起動する。シーケンスの実行に応答してデータバッファ（１２１）毎にレイテンシーが設定される。本シーケンスは、読出しクロック信号（１０６）（５０１）に基づいて読出しアドレス（１０８）を得るステップと、書込みクロック信号（１０５）（５０２）に基づいて書込みアドレス（１０９）を得るステップと、読出しアドレス（１０８）と書込みアドレス（１０９）（５０３）間の差を算定するステップと、この差（１１１）（５０４）に応じてフラグ信号（１１３）をアサートするステップと、読出しクロック信号（１０６）を調整して差（１１１）を変化させフラグ信号（１１３）に対する状態位置の変化を求め、データバッファ（１２１）（５０５）のうちの１つに対してレイテンシーを設定するステップとを含む。【選択図】図１
2017528838.tif 000002
【特許請求の範囲】
【請求項１】
複数のトランスミッターを起動するための方法であって、
対応するデータバッファを有する前記複数のトランスミッターのそれぞれに対してシーケンスを開始することと、
前記シーケンスの実行に応答して前記データバッファのそれぞれに対してレイテンシーを設定することと、
を含み、
前記シーケンスが、
読出しクロック信号に関連付けられた読出しアドレスを得ることと、
書込みクロック信号に関連付けられた書込みアドレスを得ることと、
前記読出しアドレスと前記書込みアドレス間の差を判定することと、
前記差に関連付けられたフラグ信号をアサートすることと、
前記読出しクロック信号を調整して前記差を変化させ前記フラグ信号に対する状態変化の位置を突きとめ、前記データバッファのうちのあるデータバッファに対して前記レイテンシーを設定することと、を含む、
方法。
【請求項２】
前記複数のトランスミッターのデータバッファのレイテンシーが少なくともほぼ同一の値に設定される、請求項１に記載の方法。
【請求項３】
前記複数のトランスミッターが複数のレーンに関連付けられ、
前記複数のレーンがシリアル化の準備がなされた前記複数のトランスミッター全体にわたって分配されたパラレルデータに対して最大のレーン間スキューを有する、
請求項２に記載の方法。
【請求項４】
前記データバッファのそれぞれが前記シーケンスの後に中間点に設定される、請求項２または３に記載の方法。
【請求項５】
前記データバッファがデータを記憶するためのレジスターを有する先入れ先出しバッファである、請求項４に記載の方法。
【請求項６】
前記データバッファがデータを記憶するためのメモリセルを有する先入れ先出しバッファである、請求項４または５に記載の方法。
【請求項７】
前記複数のトランスミッターが対応する複数のトランシーバーである、請求項４から６のいずれか一項に記載の方法。
【請求項８】
前記シーケンスが、前記フラグ信号の状態変化の位置をロケートするために、前記シーケンスのステップを繰り返すことをさらに含み、前記状態変化の位置が前記読出しクロック信号の読出し時間ドメインと前記書込みクロック信号の書込み時間ドメインとの間のドメインクロッシングに対するものであり、前記データバッファのうちの１つに対する前記レイテンシーが前記状態変化の位置に設定される、請求項１に記載の方法。
【請求項９】
前記データバッファに対応するフラグ信号のアサートの繰り返しが前記フラグ信号をトグルさせるためのものである、請求項８に記載の方法。
【請求項１０】
前記差が前記データバッファのうちの前記データバッファのバッファ深さの一部分以下である場合、前記フラグ信号が論理０としてアサートされ、
前記差が前記データバッファの前記深さの前記部分よりも大きい場合、前記フラグ信号が論理１としてアサートされる、
請求項８または９に記載の方法。
【請求項１１】
前記フラグ信号が論理１である場合、データバッファの充填レベルが２分の１よりも大きく、
前記フラグ信号が論理０である場合、データバッファの前記充填レベルが２分の１以下である、請求項１０に記載の方法。
【請求項１２】
前記シーケンスが前記複数のトランスミッターのスタートアップ時またはリセット時に開始され、
前記シーケンスに対してアサートされるフラグ信号が前記データバッファに対応し、前記シーケンスの最初のサイクルに対して論理０および論理１の両方を含む、
請求項１０または１１に記載の方法。
【請求項１３】
前記読出しアドレスを前記得ることが前記読出しアドレスを得るために前記データバッファのバッファ深さに関連付けられた除数で前記読出しクロック信号を分割することを含む、請求項８から１２のいずれか一項に記載の方法。
【請求項１４】
前記書込みアドレスを前記得ることが前記書込みアドレスを得るために前記データバッファの前記バッファ深さに関連付けられた前記除数で前記書込みクロック信号を分割することを含む、請求項１１に記載の方法。
【請求項１５】
前記差を算定することがグレイ符号化を含む、請求項８から１２のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
以下の記載は、集積回路装置（「ＩＣ」）に関する。特に、ＩＣにおける複数のトランスミッターのレーン間スキュー調整に関する。
【背景技術】
【０００２】
一般に、バッファバイパスモードは、シリアライザ−デシリアライザ（「ＳＥＲＤＥＳ」）などで使用されるトランスミッターの起動時やリセット時に使用される。このバッファバイパスモードは、例えばトランスミッターのバッファによって生じるスキューを回避するのに使用される。データを複数のレーンにわたってシリアル化する場合、複数のトランスミッターが、それぞれ、先入れ先出しバッファ（「ＦＩＦＯ」）などのバッファを並列使用することからレーン間にスキューが生じるからである。しかしながら、バッファバイパスモードには、ほかにも様々な限界があるが、回路のオーバーヘッドが著しく大きくなるという問題がある。
【０００３】
さらに、Ｈクロックツリーなどのクロックネットワーク、または他のクロックネットワークを使用して、複数のトランスミッターに対応するＦＩＦＯに書込みクロックを供給することができる。クロックネットワークは、温度依存性が高く、温度によって著しく変動する。このような変動を補償するのに、遅延アライナーを使用して、クロックネットワークに対して、書込みクロックを調整する。遅延アライナーは、複雑なアナログ回路である。そのため遅延アライナーの使用は、バッファバイパス動作モードの回路のオーバーヘッドを増大させる。さらに、書込みクロックと読出しクロック間の位相変動は、タイミングマージンを削ってしまい、集積回路がさらに高密度化、大規模化するにつれ、集積回路は、信号伝播遅延の変動の影響を大きく受けるようになる。すなわち、レーン間スキューによる影響を大きく受けるようになる。
【０００４】
したがって、上記限界の１つまたは複数を有することなく複数のトランスミッター間のスキュー均等化を行うことが望ましい。
【発明の概要】
【０００５】
方法は、複数のトランスミッターの起動に関する。この方法において、複数のトランスミッターはそれぞれデータバッファを備えていて、トランスミッター毎にシーケンスを起動する。シーケンスの実行に応答するデータバッファ毎にレイテンシー（遅延時間）が設定される。本シーケンスは、読出しクロック信号に基づいて読出しアドレスを得るステップと、書込みクロック信号に基づいて書込みアドレスを得るステップと、読出しアドレスと書込みアドレス間の差を算定するステップと、この差に応じてフラグ信号をアサートするステップと、読出しクロック信号を調整して差を変化させフラグ信号に対する状態変化の位置を求めて、複数のデータバッファのうちの１つに対してレイテンシーを設定するステップとを含む。
【０００６】
任意選択で、複数のトランスミッターのデータバッファのそれぞれは、レイテンシーに対して少なくともほぼ同一の値に設定されてもよい。
【０００７】
任意選択で、複数のトランスミッターは、複数のレーンに関連付けられてもよく、複数のレーンが、シリアル化の準備がなされた複数のトランスミッター全体にわたって分配されたパラレルデータに対して最大のレーン間スキューを有することがある。
【０００８】
任意選択で、データバッファのそれぞれは、シーケンスの後に中間点に設定されてもよい。
【０００９】
任意選択で、データバッファは、データを記憶するためのレジスターを有する先入れ先出しバッファであってもよい。
【００１０】
任意選択で、データバッファは、データを記憶するためのメモリセルを有する先入れ先出しバッファであってもよい。
【００１１】
任意選択で、複数のトランスミッターは、対応する複数のトランシーバーであってもよい。
【００１２】
別の方法は、複数のトランスミッターの起動に関する。その方法において、複数のトランスミッターはそれぞれ対応するデータバッファを備えていて、トランスミッター毎にシーケンスを起動する。シーケンスの実行に応答してデータバッファ毎にレイテンシーが設定される。本シーケンスは、読出しクロック信号に基づいて読出しアドレスを得るステップと、書込みクロック信号に基づいて書込みアドレスを得るステップと、読出しアドレスと書込みアドレス間の差を算定するステップと、この差に応じたフラグ信号をアサートするステップと、読出しクロック信号を調整して差を変化させるステップと、シーケンスの以上のステップを繰り返してフラグ信号の状態位置の変化を求めるステップとを含む。状態位置の変化は、読出しクロック信号の読出し時間ドメインと書込みクロック信号の書込み時間ドメインとの間のドメインクロッシングに対するものである。複数のデータバッファの１つに対してレイテンシーが状態位置の変化に設定される。
【００１３】
任意選択で、データバッファに対応するフラグ信号のアサートの繰り返しは、フラグ信号をトグルさせるためのものであってもよい。
【００１４】
任意選択で、差がデータバッファのうちの１つのバッファ深さの一部分以下である場合、フラグ信号を論理０でアサートし、差がデータバッファの深さの一部分よりも大きい場合、フラグ信号を論理１でアサートしてよい。
【００１５】
任意選択で、フラグ信号が論理１である場合、データバッファの充填レベルは、２分の１よりも大きくてもよく、フラグ信号が論理０である場合、データバッファの充填レベルは、２分の１以下であってもよい。
【００１６】
任意選択で、複数のトランスミッターのスタートアップ時またはリセット時にシーケンスが開始されてもよく、シーケンスに対してアサートされるフラグ信号は、データバッファに対応してもよく、シーケンスの最初のサイクルに対して論理０および論理１の両方を含んでもよい。
【００１７】
任意選択で、読出しアドレスを得ることは、読出しアドレスを得るためにデータバッファのバッファ深さに関する除数で読出しクロック信号を分割することを含んでもよい。
【００１８】
任意選択で、書込みアドレスを得ることは、書込みアドレスを得るためにデータバッファのバッファ深さに関する除数で書込みクロック信号を分割することを含んでもよい。
【００１９】
任意選択で、差を算定することは、グレイ符号化を含んでもよい。
【００２０】
任意選択で、本方法は、さらに、第１のフラグ信号の状態位置の第１の変化に応じて、データバッファの第１の先入れ先出しバッファに対して第１のレイテンシーを設定するステップと、第２のフラグ信号の状態位置の第２の変化に応じて、データバッファの第２の先入れ先出しバッファに対して第２のレイテンシーを設定するステップと、第１のデータをデータバッファの第１の先入れ先出しバッファで受信するステップと、第２のデータデータバッファの第２の先入れ先出しバッファで受信するステップとを含んでよい。許容されるレーン間スキューとして、第１の先入れ先出しバッファを通る第１のデータに係る第１のレイテンシーは、第２の先入れ先出しバッファを通る第２のデータに係る第２のレイテンシーに少なくとも十分に近くてよい。
【００２１】
集積回路デバイスは、複数のトランスミッターを有するものに関する。この集積回路デバイスにおいて、複数のトランスミッターの第１のトランスミッターは、第１のデータバッファと、第１のデータバッファに結合された第１の入力／出力制御ブロックを含む。複数のトランスミッターの第２のトランスミッターは、第２のデータバッファと、第２のデータバッファに結合された第２の入力／出力制御ブロックを含む。第１のデータバッファは第１の遅延を有し、第２のデータバッファは第２の遅延を有する。第１の入力／出力制御ブロックは、書込みクロック信号および第１の読出しクロック信号を受信するように結合されて、第１の書込みアドレスおよび第１の読出しアドレスをそれぞれ生成するように構成されている。第１の入力／出力制御ブロックは、第１の書込みアドレスと第１の読出しアドレス間の第１の差を算定し、第１の差に応じた第１のフラグ信号をアサートするように構成されている。第１の入力／出力制御ブロックは、第１のフラグ信号をフィードバックするように結合され、第１の読出しクロック信号を調整して、第１の差が調整されて、第１のフラグ信号に対する第１の状態変化の位置が第１のデータバッファの第１の位置に関連付けられた位置に達するようにする。第２の入力／出力制御ブロックは、書込みクロック信号および第２の読出しクロック信号を受信するように結合され、第２の書込みアドレスおよび第２の読出しアドレスをそれぞれ生成するように構成される。第２の入力／出力制御ブロックは、第２の書込みアドレスと第２の読出しアドレス間の第２の差を算定し、第２の差に応じたて第２のフラグ信号をアサートするように構成されている。第２の入力／出力制御ブロックは、第２のフラグ信号をフィードバックするように結合されて、第２の読出しクロック信号を調整して、第２の差が調整されて、第２のフラグ信号に対する第２の状態変化の位置が第２のデータバッファの第２の位置に関連付けられた位置に達するようにする。
【００２２】
任意選択で、第１のトランスミッターおよび第２のトランスミッターは、両方とも、パラレルデータを受信し、このパラレルデータを、シリアルデータに変換するために第１のレーンおよび第２のレーンにおいてそれぞれ提供するように結合されたシリアライザ−デシリアライザトランスミッターである。
【００２３】
任意選択で、第１の入力／出力制御ブロックおよび第２の入力／出力制御ブロックは、それぞれ第１の位相補間回路および第２の位相補間回路を含む。第１の位相補間回路は、第１の読出しクロック信号を調整するためのフィードバックとして第１のフラグ信号を受信するように結合されてもよく、第２の位相補間回路は、第２の読出しクロック信号を調整するためのフィードバックとして第２のフラグ信号を受信するように結合されてもよい。
【００２４】
任意選択で、第１の位置および第２の位置は、第１の位相補間回路の単位間隔の第１の点、および第２の位相補間回路の単位間隔の第２の点に対応する。第１の点は、第１の遅延に関連付けられていてもよい。第２の点は、第２の遅延に関連付けられていてもよい。第１の位相補間回路は、第１の読出しクロック信号の第１の読出し時間ドメインと書込みクロック信号の第１の書込みドメイン間の第１のドメインクロッシングをロケートするために、第１のフラグ信号に応答して調整可能であってもよい。第２の位相補間回路は、第２の読出しクロック信号の第２の読出し時間ドメインおよび書込みクロック信号の第２の書込みドメインをロケートするために、第２のフラグ信号に応答して調整可能であってもよい。第１の位相補間回路および第２の位相補間回路は、第１のドメインクロッシングおよび第２のドメインクロッシングにそれぞれ関連付けられた第１の遅延および第２の遅延を均等化するために調整可能であってもよい。
【００２５】
他の特徴は、以下の詳細な説明および特許請求の範囲を考察することにより認識されるであろう。
【００２６】
添付図面は、例示的な装置および／または方法を示す。しかしながら、添付図面は特許請求の範囲の範囲を限定すると解釈されるべきではなく、単に説明および理解のためのものである。
【図面の簡単な説明】
【００２７】
【図１】トランスミッターを有する例示的な集積回路デバイスを表すブロック図である。
【図２】図１の集積回路デバイスの例示的なトランスミッターを表すブロック図である。
【図３】図１の集積回路デバイスの例示的なトランスミッターを表すブロック図である。
【図４】図１のトランスミッターを起動するための例示的なレイテンシー調整のフローを表す流れ図である。
【図５】図４のレイテンシー調整のフローの動作に使用されてもよい例示的な設定シーケンスを表す流れ図である。
【図６】例示的なコラム状フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）アーキテクチャを表す簡略化されたブロック図である。
【発明を実施するための形態】
【００２８】
以下の記載では、本明細書に記載された具体例のより完全な記載を行うために数多くの具体的な詳細が述べられる。しかしながら、１つまたは複数の他の例および／またはこれらの例の変形形態が以下で与えられるいかなる具体的な詳細もなしに実行されてもよいことは当業者には明らかなはずである。他の事例では、よく知られている特徴は、本明細書の例の記載を不明瞭にしないように詳細には記載されていない。説明を容易にするために、同一のアイテムを指すために同一の数字ラベルが異なる図面において使用されるが、代替例においては、各アイテムは、異なってもよい。
【００２９】
いくつかの図において例示的に表される例を記載する前に、理解を深めるために全体的な紹介を行う。
【００３０】
データが複数のレーンにわたってシリアル化されることがあるとき、複数のトランスミッターは、先入れ先出しバッファ（「ＦＩＦＯ」）などの、それらトランスミッターのそれぞれのバッファを並列使用することによってレーン間スキューをもたらすことがある。以下でさらに詳細に記載するように、各トランスミッターの位相補間回路を用いて、そのような位相補間回路から提供される読出しクロック信号（「読出しクロック」）の位相を調整してトランスミッターのＦＩＦＯからデータを読み出すことができる。したがって、各読出しクロックは、伝播遅延において多少の差を被ることはあるが、トランスミッターの各ＦＩＦＯに提供される、共通に供給される書込みクロック信号（「書込みクロック」）、すなわち共通の書込みクロックから供給される書込みクロックに位相合わせされ得る。
【００３１】
従来、ＦＩＦＯは、データをシリアル化する前のトランスミッターデータ経路にある。一般に、ＦＰＧＡファブリックまたは他の回路からであってもよいデータは、入力クロック信号または書込みクロック信号のパルスエッジ（複数可）に応答してＦＩＦＯに入力または書込みされる。このデータは、Ｎビット幅を有することができ、ここでＮは１以上である。そのようなＦＩＦＯは、メモリおよび／または１組のレジスターであってもよい。ＦＩＦＯは、複数組の入力、すなわち複数のワードを記憶することができる場合がある。それらの趣旨に添って、ＦＩＦＯは、最大Ｍワードまで記憶するために、深さＭを有するとして記載されることがあり、そのようなＭワードのそれぞれがＮビット幅であってもよい。したがって、Ｎビット幅のワードの最大Ｍ個のインスタンスが、ＦＩＦＯに一度に記憶されることがある。
【００３２】
トランスミッターのＦＩＦＯは、少なくとも一部は、クロックネットワークを介して提供される入力クロック信号または書込みクロック信号の伝播遅延における差に関連付けられたスキューを吸収することによってデータをバッファするために使用することができる。複数のトランスミッターに入力クロック信号または書込みクロック信号を分配するためのクロックネットワークは、伝播遅延のために著しいＦＩＦＯ間スキューを有することがあり、この伝搬遅延が電圧および／または温度に敏感である場合がある。対照的に、出力クロック信号または読出しクロック信号は、トランスミッターまたは送レシーバー内部の位相補間回路もしくは他の回路から提供されることがあり、したがってそのように近接しているために著しいＦＩＦＯ間のスキューを有することがない。したがって、例えば、ＦＩＦＯの入力側または書込み側をクロック制御するために読出しクロック信号をクロックネットワーク上に駆動するための遅延アライナーと、そのようなＦＩＦＯの出力側または読出し側をクロック制御するためのトランスミッターの位相補間回路と、に提供される同一の基準クロックが実質的に異なる伝播遅延を有することがある。それらの趣旨に添って、ＦＩＦＯの深さは、従来は、最大の伝播遅延に適応することであり、すなわちＦＩＦＯは、従来、集積回路デバイスを起動またはリセットするための入力クロック信号または書込みクロック信号の伝播遅延に応じてサイズが調整されている。
【００３３】
さらに、トランスミッターのＦＩＦＯは、未知の状態でリセットまたは起動されることがある。例えば、トランスミッターのＦＩＦＯのリセットは、ＳＥＲＤＥＳに対するリセット手順における最後の動作である場合がある。トランスミッターのＦＩＦＯをリセットした後、そのようなＦＩＦＯは、「大雑把に」半満杯である場合がある。しかしながら、ＳＥＲＤＥＳトランスミッターの複数のＦＩＦＯにおいて送信されるデータは、全体に位相合わせされておらず、または「大雑把に」半満杯の状態によって少なくとも十分には位相合わせされていない。言いかえれば、チャネルは、３つの状態、すなわち、空よりもより満たされた状態、満杯よりもより空の状態、あるいは中間点の状態のいずれかにある場合があり、チャネル間のそのような変動は、一部の用途にとっては十分でない可能性がある。
【００３４】
過去には、読出しクロック信号と、共通に供給される書込みクロック信号との間の位相等化をＦＩＦＯの「バイパス」と共に使用してＳＥＲＤＥＳを形成した。「バッファバイパスモード」では、遅延アライナーと呼ばれることがある複雑なアナログ位相検出器回路を使用して位相合わせを維持した。各トランスミッターの遅延アライナーを使用して、各トランスミッターの位相補間回路によって、対応する読出しクロック信号が、共通に供給される書込みクロック信号と既知の位相関係となるようにし、各ＦＩＦＯを１ワードのみの深さで動作させた。しかしながら、動作中に、動作中のトランスミッターの位相補間回路の使用によって不要なジッタがもたらされるため、共通の書込みクロック信号の位相を調整して、書込みクロック信号を各読出しクロック信号と同位相に保持した。動作中に、書込みクロック信号は、クロックツリー、Ｈツリーと呼ばれることがあるクロックネットワーク、または他のタイプのクロックネットワークに伴う問題に起因して、読出しクロック信号に対して位相がずれることがある。例えば、クロックネットワークは、温度に敏感な場合があり、したがって、温度変化によって、異なるトランスミッターに提供される、共通に供給される書込みクロック信号の伝播遅延に差が生じることがある。やはり、それぞれのトランスミッターの遅延アライナーを使用して、そのような差を補償し、共通の書込みクロック信号から供給される対応するトランスミッター書込みクロック信号がそのようなトランスミッターの対応する読出しクロック信号と同相となるように調整した。したがって、レーン間スキューは、一度に１つのベクトルのみを記憶するように低減させたＦＩＦＯによってトランスミッター間のような位相合わせ窓の範囲内になることができる。しかしながら、クロックネットワークがより大きくなり、データバスがより広くなり、および／または位相合わせ窓がより狭くなるとともに、バッファバイパスモードの使用は、複雑なアナログ遅延アライナーを使用する際に含まれる相当なオーバーヘッドとは別に、問題がより大きくなった。
【００３５】
以下でさらに詳細に記載するように、ＳＥＲＤＥＳのトランスミッターデータバッファはすべて、ＰＩ粒度に従って、正確に半満杯に、「大雑把に」ではなく半満杯に設定されてもよい。そのような設定を使用して、ＳＥＲＤＥＳトランスミッターのすべてのデータバッファ間のレイテンシーを事実上等しくすることができ、その結果、レーン間スキューを実質的に低減させる。それらの趣旨に添って、データバッファの状態を示すためにフラグ信号が生成される。このフラグ信号は、そのようなデータバッファに提供される出力クロック信号の位相調整のためにフィードバックされる。この調整は、そのようなデータバッファにおける位置を見出すために、繰り返しインクリメントまたはディクリメントされてもよく、そのようなフラグ信号の状態が、例えば、論理１から論理０へ、またはその逆にトグルする。ＳＥＲＤＥＳトランスミッターのデータバッファはすべて、そのようなデータバッファ全体にわたってレイテンシーを等しくするために、そのような位置に同様に設定されてもよい。
【００３６】
上記の全体的な理解を心に留めて、複数のトランスミッターを有する集積回路デバイスに対する様々な構成について、以下で全体的に記載する。
【００３７】
図１は、複数のトランスミッター１９０を有する例示的な集積回路デバイス１００を表すブロック図である。本例では、２つのトランスミッター１９０−１および１９０−２のみが例示的に表されているが、他の事例では、３つ以上のトランスミッターが使用されてもよい。さらに、トランスミッター１９０は、対応するトランシーバーであってもよく、または別々のトランスミッターであってもよい。トランスミッター１９０−１および１９０−２は、レーン１９１−１および１９１−２に対応することができる。レーン１９１−１および１９１−２は、シリアル化の準備がなされたトランスミッター１９０−１および１９０−２全体にわたって分配されたパラレルデータに対して最大のレーン間スキューを有することがある。
【００３８】
トランスミッター１９０の第１のトランスミッター１９０−１は、第１のデータバッファ１２１−１、および第１のデータバッファ１２１−１に結合された第１の入力／出力制御ブロック１６１−１を含む。トランスミッター１９０の第２のトランスミッター１９０−２は、第２のデータバッファ１２１−２、および第２のデータバッファ１２１−２に結合された第２の入力／出力制御ブロック１６１−２を含む。
【００３９】
第１のデータバッファ１２１−１は、第１の遅延を有し、第２のデータバッファ１２１−２は、第２の遅延を有する。この第１および第２の遅延は、集積回路デバイス１００の起動時やリセット時の場合を非限定的に含んで、互いに異なっていてもよい。この趣旨から、入力データ１２０−１は、第１のデータバッファ１２１−１への入力をクロック制御する際に入力してよく、入力データ１２０−２は、第２のデータバッファ１２１−２への入力をクロック制御する際に入力してよい。出力データ１２２−１は、第１のデータバッファ１２１−１の出力をクロック制御するのに応じて出力してよく、出力データ１２２−２は、第２のデータバッファ１２１−２の主力をクロック制御するのに応じて出力してよい。
【００４０】
本例では、第１の入力データ１２０−１および第２の入力データ１２０−２は、境界１５０で示すように、集積回路プログラマブルファブリックからシリアライザ−デシリアライザ１８０へ供給される。具体的には、集積回路プログラマブルファブリックは、フィールドプログラマブルゲートアレイであってもよい。しかしながら、第１の入力データ１２０−１および第２の入力データ１２０−２は、任意の集積回路プログラマブルファブリックおよび／または特定用途リソースから、集積回路デバイス１００の２つ以上のトランスミッターから形成されたシリアライザ−デシリアライザ（「ＳＥＲＤＥＳ」）１８０へのデータであってもよく、またはさらには通過するデータであってもよい。
【００４１】
以上の趣旨に則して、第１の出力データ１２２−１および第２の出力データ１２２−２を、パラレル入力シリアル出力データコンバータ（「ＰＩＳＯ」）１９２へ入力し、ＰＩＳＯからシリアルデータ１９３を出力して得ることができる。データバッファ１２１−１および１２１−２それぞれの第１の遅延と第２の遅延間の差のために、第１の出力データ１２２−１と第２の出力データ１２２−２に関してレーン間スキューがあり得る。この差は、以下に記載するように、補償され得る。言いかえれば、第１のトランスミッター１９０−１と第２のトランスミッター１９０−２は、両方とも、パラレルデータを、入力データ１２０−１および１２０−２を介してＮビット幅のワードまたはワードの一部分として受信するように結合されたＳＥＲＤＥＳトランスミッター１８０であってもよい。ＰＩＳＯによってシリアルデータに変換するために、ＳＥＲＤＥＳトランスミッター１８０は、出力データ１２２−１に係る第１のレーンおよび出力データ１２２−２に係る第２のレーンにおいてそれぞれそのようなパラレルデータを提供するように結合されてもよい。
【００４２】
図２は、集積回路デバイス１００の例示的なトランスミッター１９０−１を表すブロック図であり、図３は、集積回路デバイス１００の例示的なトランスミッター１９０−２を表すブロック図である。図１〜図３を同時に参照して、集積回路デバイス１００についてさらに説明する。
【００４３】
トランスミッター１９０の書込みクロック信号１０５は、基準クロック信号１０１から共通に供給されてもよい。基準クロック信号１０１は、トランスミッター１９０の各位相補間回路１０２に供給されるとともに、集積回路デバイス１００のクロックネットワークに供給される。明瞭にするために、バッファ１０３でクロックネットワークを表しているがこれに限定されるわけではない。かくして、基準クロック信号１０１は、ローカルな書込みクロック信号１０５をそれぞれトランスミッター１９０に分配するためにバッファ１０３に入力され得る。それに応じて、ローカルな書込みクロック信号１０５は、異なる伝播遅延を有し、したがってすべてのローカルな書込みクロック信号１０５は、それらのそれぞれのトランスミッターの送信先に同時に到着するとは限らない。すなわち、そのようなローカルな書込みクロック信号１０５は、互いに位相がずれているばかりでなく、そのようなトランスミッター１９０の対応するローカルな読出しクロック信号１０６に対しても位相がずれ得る。さらに、異なるＳＥＲＤＥＳにおけるクロックツリーの不均衡は、入力／出力制御ブロック１６１のレジスターに不均衡な数を埋め込むことによって、例えば、ディバイダ１０７から出力される書込みアドレス１０９にオフセットアドレスを加えるか、差し引くなどをすることによって、名目上補償することができる。最後に、読出しクロック信号１０６は、対応するトランスミッター１９０に関してローカルに生成される。したがって、トランスミッター１９０間の読出しクロック信号１０６は、一般に、互いに位相がずれている。
【００４４】
第１の入力／出力制御ブロック１６１−１は、入力データ１２０−１を第１のデータバッファ１２１−１に書き込むまたはロードするなどの入力を制御するためのもの、および出力データ１２２−１を第１のデータバッファ１２１−１から読み出すまたはアンロードするなどの出力を制御するためのものであってもよい。同様に、第２の入力／出力制御ブロック１６１−２は、入力データ１２０−２を第２のデータバッファ１２１−２に書き込むまたはロードするなどの入力を制御するためのもの、および出力データ１２２−２を第２のデータバッファ１２１−２から読み出すまたはアンロードするなどの出力を制御するためのものであってもよい。
【００４５】
第１および第２のトランスミッター１９０が同一の構成を有することから、明瞭にするために、以下では、基本的に、トランスミッター１９０のうちの１つのみについて詳細に説明する。また、明瞭にするために、データバッファ１２１は先入れ先出しデータバッファ（「ＦＩＦＯ」）であるとするがこれに限定するわけではない。そのようなＦＩＦＯ１２１は、メモリセルおよび／またはレジスターの組で構成することができる。限定ではなく、明瞭にするために、書込みクロックおよび読出しクロックを使用して、ベクトルの組を生成できるものとする。すなわち、ＦＩＦＯ１２１は、明瞭にするためにシーケンシャルにアクセスされるメモリから形成されているものとする。
【００４６】
第１の入力／出力制御ブロック１６１−１は、ディバイダ１０７および１０４への書込みクロック信号１０５および第１の読出しクロック信号１０６をそれぞれ受信するように結合され、ディバイダ１０７および１０４に対する第１の書込みアドレス１０９および第１の読出しアドレス１０８をそれぞれ生成する。第１の入力／出力制御ブロック１６１−１は、第１の書込みアドレス１０９と第１の読出しアドレス１０８との間の第１の差１１１を算定するように構成されてもよい。第１の入力／出力制御ブロック１６１−１は、この第１の差１１１に応じて第１のフラグ信号１１３をアサートするように構成されてよい。第１の入力／出力制御ブロック１６１−１は、第１のフラグ信号１１３をフィードバックするように結合されて、第１の読出しクロック信号１０６を調整して、第１の差１１１が調整されて、第１のフラグ信号１１３に対する第１の状態変化の位置が第１のデータバッファ１２１−１のある位置に関連付けられた位置に達するようにする。
【００４７】
第２の入力／出力制御ブロック１６１−２は、書込みクロック信号１０５および第２の読出しクロック信号１０６を受信するように結合され、それらの信号に応じて、第２の書込みアドレス１０９と第２の読出しアドレス１０８をそれぞれ生成するように構成されてよい。第２の入力／出力制御ブロック１６１−２は、第２の書込みアドレス１０９と第２の読出しアドレス１０８との間の第２の差１１１を算定するように構成されてよい。第２の入力／出力制御ブロック１６１−２は、第２の差１１１に応じて第２のフラグ信号１１３をアサートするように構成されてよい。第２の入力／出力制御ブロック１６１−２は、第２のフラグ信号１１３をフィードバックするように結合されて、第２の読出しクロック信号１０６を調整して、第２の差１１１が調整されて、第２のフラグ信号１１３に対する第２の状態変化の位置が第２のデータバッファ１２１−２のある位置に関連付けられた位置に達するようにする。
【００４８】
第１の入力／出力制御ブロック１６１−１は、第１の位相補間回路（「ＰＩ」）１０２を含むことができる。同様に、第２の入力／出力制御ブロック１６１−２は、第２の位相補間回路１０２を含むことができる。
【００４９】
第１の位相補間回路１０２は、第１の読出しクロック信号１０６を調整するために、フィードバックとして、第１のフラグ信号１１３を受信するように結合されてもよい。より詳細には、通常は位相補間回路１０２に含まれているが、明瞭にするためにここでは例示的に別々に示されている第１のインクリメント／ディクリメント制御ブロック１１４は、調整信号１１５によって選択されるような第１の位置をインクリメントするべきか、ディクリメントするべきか、または維持するべきかどうかを判定するために第１のフラグ信号１１３を受信することができ、そのような第１の位置がそのような第１の位相補間回路１０２から出力されるそのような第１の読出しクロック信号１０６の遅延に関連付けられている。
【００５０】
同様に、第２の入力／出力制御ブロック１６１−２の第２の位相補間回路１０２は、第２の読出しクロック信号１０６を調整するために、フィードバックとして、第２のフラグ信号１１３を受信するように結合されてもよい。そのような第２の位相補間回路１０２の第２のインクリメント／ディクリメント制御ブロック１１４は、調整信号１１５によって選択されるような第２の位置をインクリメントするべきか、ディクリメントするべきか、または維持するべきかどうかを判定するために、そのような第２のフラグ信号１１３を受信することができ、そのような第２の位置がそのような第２の位相補間回路１０２から出力されるそのような第２の読出しクロック信号１０６の遅延に関連付けられている。
【００５１】
そのような第１の位置およびそのような第２の位置は、そのような第１の位相補間回路１０２の単位間隔（「ＵＩ」）の第１の位置または点、およびそのような第２の位相補間回路１０２の単位間隔の第２の位置または点に対応する。例えば、起動時に、そのような第１の点は、初めにＦＩＦＯ１２１−１の第１の遅延に関連付けられてもよく、そのような第１の遅延が調整可能であり、そのような第２の点は、初めにＦＩＦＯ１２１−２の第２の遅延に関連付けられてもよく、そのような第２の遅延が調整可能である。
【００５２】
第１の位相補間回路１０２は、第１のフラグ信号１１３に応答して、第１の読出しクロック信号１０６の第１の読出し時間ドメインと書込みクロック信号１０５の第１の書込みドメイン間の第１のドメインクロッシングを突きとめるように調整されてもよい。同様に、第２の位相補間回路１０２は、第２のフラグ信号１１３に応答して、第２の読出しクロック信号１０６の第２の読出し時間ドメインおよびそのような書込みクロック信号１０５の第２の書込みドメインを突きとめるように調整されてもよい。
【００５３】
ＦＩＦＯ１２１のみが、直接、データフローのデータ経路内部にあるため、それぞれのＦＩＦＯ１２１の深さＭ１２３は、トランスミッター１９０の起動時またはリセット時を含むが、これに限定することなく、結果としてそのようなＦＩＦＯ間で異なる遅延を生じることがあり、結果として２つ以上のＦＩＦＯ１２１間で異なるレイテンシーを生じることがある。本例では、それぞれのＦＩＦＯ１２１は、それぞれがＮビットのＭワードを保持することができ、ここでＭは２以上の整数である。
【００５４】
第１の位相補間回路１０２および第２の位相補間回路１０２は、そのような第１のドメインクロッシングおよびそのような第２のドメインクロッシングにそれぞれ関連付けられた、ＦＩＦＯ１２１−１に関連付けられた第１の遅延およびＦＩＦＯ１２１−２に関連付けられた第２の遅延を均等化するために調整されてもよい。したがって、ＦＩＦＯ１２１−１および１２１−２それぞれからの出力データ１２２−１および１２２−２は、事実上データの位相が合っている可能性がある。要するに、ＦＩＦＯ１２１は、それぞれの読出しクロック信号の位相を共通に供給される書込みクロック信号と合わせることなく、互いにデータの位相が合っている可能性がある。したがって、ローカルな読出しクロック信号へのローカルな書込みクロック信号の位相合わせを維持するためのトランスミッターの複雑なアナログ遅延アライナー回路の使用を回避することができる。さらに、入力／出力制御ブロック１６１の構成要素は、デジタル回路であってもよく、一部のトランスミッターにおけるこれらのデジタル回路の一部は、対応するＦＩＦＯのアンダフローおよび／またはオーバーフローの指標を提供するために一般に利用可能である場合がある。したがって、そのような構成要素に上記のようなフィードバックフラグ信号１１３を提供する作業をさせることによって、ＳＥＲＤＥＳのそれぞれのトランスミッターを独立に調整することができ、そのようなＳＥＲＤＥＳのそのようなトランスミッターはすべて、それぞれをそのように独立して調整した後に、少なくとも実質的に同一のデータレイテンシーを有することができ、すなわち、レーン間スキューが実質的に低減する。
【００５５】
上記の説明を心に留めて、図４は、複数のトランスミッター１９０を起動するための例示的なレイテンシー調整フロー４００を表す流れ図である。図４について、図１〜図４を同時に参照してさらに記載する。
【００５６】
４０１で、集積回路デバイス１００のトランスミッター１９０は、スタートアップまたはリセットシーケンスの一部として起動される。４０２で、トランスミッター１９０−１は、ＦＩＦＯ１２１のＦＩＦＯ１２１−１に対するレイテンシーを有するように設定または調整される。このレイテンシーは、トランスミッター１９０−１のフラグ信号１１３の状態変化の位置に関連付けられていてもよく、そのような調整は、トランスミッター１９０−１のＰＩ１０２をインクリメントまたはディクリメントするために、そのようなフラグ信号１１３のフィードバックに応答する反復調整であってもよい。
【００５７】
４０２での動作と並行して、４０３で、トランスミッター１９０−２は、ＦＩＦＯ１２１のＦＩＦＯ１２１−２に対するレイテンシーを有するように設定または調整される。このレイテンシーは、トランスミッター１９０−２のフラグ信号１１３の状態変化の位置に関連付けられていてもよく、そのような調整は、トランスミッター１９０−２のＰＩ１０２をインクリメントまたはディクリメントするために、そのようなフラグ信号１１３のフィードバックに応答する反復調整であってもよい。
【００５８】
４０４で、入力データ１２０−１がＦＩＦＯ１２１−１によって受信されてもよく、そのような入力データ１２０−１が出力データ１２２−１としてＦＩＦＯ１２１−１から出力されてもよい。４０４での動作と並行して、４０５で、入力データ１２０−２がＦＩＦＯ１２１−２によって受信されてもよく、そのような入力データ１２０−２が出力データ１２２−２としてＦＩＦＯ１２１−２から出力されてもよい。ＦＩＦＯ１２１−１および１２１−２が少なくともほぼ同一のレイテンシーを有するように調整することができるため、出力データ１２２−１および１２２−２に関するレーン間スキューは、そのようなパラレル出力データ１２２−１および１２２−２の４０６におけるシリアル化に対して、あったとしても、十分に小さい可能性がある。言いかえれば、ＦＩＦＯ１２１−１を通過する入力データ１２０−１のレイテンシーは、シリアル化のための許容可能なレーン間スキューに対して、ＦＩＦＯ１２１−２を通過する入力データ１２０−２のレイテンシーに少なくとも十分に近い。
【００５９】
要点をまとめると、トランスミッター１９０の起動またはリセットに対して、４０１で、ＦＩＦＯ１２１などの対応するデータバッファを有するそのようなトランスミッター１９０それぞれに対してシーケンスが開始されてもよい。そのようなシーケンスを使用して、例えば、動作４０２および４０３において、そのような開始されたシーケンスの実行に応答して、それぞれのそのようなデータバッファに対するレイテンシーを並列に設定することができる。その後、パラレルデータは、後続のシリアル化のためにそのようなデータバッファから入出力されてもよい。
【００６０】
図５は、図４の４０２および４０３での動作に使用することができる例示的な設定シーケンス５００を表す流れ図である。図５について、図２〜図５を同時に参照してさらに記載する。
【００６１】
５０１で、読出しクロック信号１０６に関連付けられた読出しアドレス１０８が得られてもよい。各読出しアドレス１０８は、例えば、入力／出力制御ブロック１６１−１などの入力／出力制御ブロックのディバイダ１０４へ読出しクロック信号１０６を入力することによって得られてもよい。限定することなく例を挙げて明瞭にするために、トランスミッター１９０−１の動作のみについて、シーケンス５００の設定に関連してさらに記載するが、ＳＥＲＤＥＳのなどのトランスミッター１９０のそれぞれが同様に設定されてもよいことを理解されたい。一般に、読出しクロック信号１０６がディバイダ１０４に提供されるのと同時に、そのような読出しクロック信号１０６は、例えば、ＦＩＦＯ１２１−１などのＦＩＦＯに提供され、そのようなＦＩＦＯから出力データ１２２−１を読み出すことができる。
【００６２】
５０１で読出しアドレスを得るのと同時に、書込みクロック信号１０５に関連付けられた書込みアドレス１０９が、５０２で得られてもよい。５０１および５０２での動作は、並列に行われてもよい。各書込みアドレス１０９は、入力／出力制御ブロック１６１−１のディバイダ１０７に書込みクロック信号１０５を入力することによって得られてもよい。一般に、書込みクロック信号１０５がディバイダ１０７に提供されるのと同時に、そのような書込みクロック信号１０５は、ＦＩＦＯ１２１−１に提供され、そのようなＦＩＦＯに入力データ１２０−１を書き込むことができる。
【００６３】
読出しアドレス１０８を得ることは、そのような読出しアドレス１０８を得るためにバッファ深さに関連付けられた除数で読出しクロック信号１０６を分割することを含んでもよい。同様に、書込みアドレス１０９を得ることは、読出しアドレスを得るために使用された同一の除数、すなわちそのような書込みアドレス１０９を得るためにそのようなバッファ深さに関連付けられた除数で書込みクロック信号１０５を分割することを含んでもよい。
【００６４】
ディバイダ１０４および１０７はそれぞれ、Ｍディバイダによって分割されるように構成されてもよく、ここでＭは、前述したようなＦＩＦＯ１２１−１の深さである。ディバイダ１０４および１０７は、プログラム可能であってもよく、それぞれのディバイダ１０４および１０７は、リセットの一部としてＭで分割するように前もって設定されてもよい。しかし、より一般には、リセットに対しては、書込みアドレス１０９と読出しアドレス１０８間のような最大の位相差は、読出しおよび書込みクロックが一般に同一の周波数を有するため、少なくとも読出しまたは書込みクロック信号いずれかのクロック周期の２分の１として、一般にディバイダ１０７と１０４間の差に前もって設定される。この差を使用して、確実に、ＦＩＦＯ１２１−１からの読出しがクロック信号１０５の伝播遅延のためにＦＩＦＯ１２１−１への対応する書込みの前に発生することがないようにすることができる。この場合のクロック周期は、ＰＩ１０２のＵＩのいくつもの倍数であってもよく、そのようなＰＩは、ＵＩの１／１６、１／３２、１／６４などの分解能を有することができる。したがって、書込みおよび読出しクロック信号の精密な位相合わせを得ることができる。
【００６５】
ディバイダ１０４および１０７からそれぞれ出力される各読出しアドレス１０８および各書込みアドレス１０９は、減算器１１０へ入力され、差１１１を判定することができる。それらの趣旨に添って、５０３で、互いに関連付けられていてもよい読出しアドレス１０８と書込みアドレス１０９間の差１１１が判定されてもよい。減算器１１０から出力されるそれぞれのそのような差１１１は、コンパレーター１１２に提供されてもよい。それぞれのそのような差１１１は、読出しクロック信号１０６と対応する書込みクロック信号１０５間の位相差を示すことができる。差１１１は、ドメインクロッシングを判定するために使用されてもよい。そのようなドメインクロッシングは、グレイ符号化を使用して識別されることがある。それに応じて、そのような書込みアドレス１０９および読出しアドレス１０８は、互いに位相がずれている場合がある２つの別個のクロック信号から生成されるため、減算器１１０は、２つのアドレス間の差を単に算定するよりも複雑である。言いかえれば、読出しおよび書込みアドレスは、周波数がラインレートよりもはるかに低いクロックで展開することがあるため、レイテンシー測定値は、粗くなる可能性がある。読出しおよび書込みアドレスは、未知の相対位相関係を有するクロックで展開することがあるため、差１１１は、アドレス値に対してグレイ符号化を使用して、読出しおよび書込みアドレスの両方を共通クロックに対して移動させることによって得られてもよい。したがって、差は、特定方向にドメインをクロスすることに関連付けられていてもよく、したがって、グレイ符号化は、グレイ符号化を使用するように結合された減算器１１０内にカウンタ（例えば、図示されない読出しアドレスカウンタおよび書込みアドレスカウンタ）を有することによってそのような差を生成する一例である。しかしながら、他のタイプの符号化が使用されてもよい。
【００６６】
コンパレーター１１２は、差１１１をチェックし、そのような差がトランスミッターのデータバッファのうちのあるデータバッファ、例えば、トランスミッター１９０−１の対応するＦＩＦＯ１２１−１の深さの一部分以下かどうかを判定する。本例では、差がＦＩＦＯ１２１−１の深さのそのような一部分以下である場合、フラグ信号１１３は、論理０としてアサートされる。しかしながら、そのような差１１１がＦＩＦＯ１２１−１の深さのそのような部分よりも大きい場合、フラグ信号１１３は、論理１としてアサートされる。この部分は、ＦＩＦＯのアンダフロー条件、オーバーフロー条件、半満杯条件、または他のなんらかの充填レベルであってもよい。
【００６７】
本例では、コンパレーター１１２は、符号化されるとして述べたそれぞれの差１１１をチェックし、そのような差がＭ／２、すなわちＦＩＦＯ１２１−１の深さの２分の１以下かどうかを判定する。コンパレーター１１２は、プログラム可能であってもよく、Ｍ／２に対して比較するように前もって設定されていてもよい。言いかえれば、コンパレーター１１２を使用して、差１１１がＦＩＦＯ１２１−１の中間点以下かどうか判定することができる。５０４で、コンパレーター１１２は、それぞれのそのような差１１１に関連付けられたフラグ信号１１３、すなわち差１１１がＦＩＦＯ１２１−１の中間点以下かどうかをアサートすることができる。本例では、フラグ信号１１３が論理１である場合、ＦＩＦＯ１２１−１の充填レベルは、２分の１よりも大きく、そのようなフラグ信号が論理０である場合、ＦＩＦＯ１２１−１の充填レベルは、２分の１以下である。
【００６８】
言いかえれば、それぞれの関連付けられたレーンから／そのレーン内で送信される一部のパラレルデータの位相は、ＰＩ１０２を使用することによって時間と共に前方にシフトされ、フラグ信号１１３がすべてのそのようなチャネルに対して論理０から論理１へ遷移するＰＩ１０２の点またはタップに達するまでＦＩＦＯ１２１−１が次第により空になるようにすることができ、それぞれの関連付けられたレーンから／そのレーン内で送信されるそのようなパラレルデータの他の位相は、ＰＩ１０２を使用することによって時間と共に後方にシフトされ、フラグ信号１１３がすべてのそのようなチャネルに対して論理１から論理０へ遷移するＰＩ１０２の点またはタップに達するまでＦＩＦＯ１２１−１が次第により満杯になるようにすることができる。これらの遷移位置の両方が使用されてもよいが、すべてのそのようなチャネル間のレイテンシーをさらに均等にするためには、論理０の遷移位置または論理１の遷移位置のいずれかが設定されてもよい。言いかえれば、フラグ信号１１３は、レイテンシーの均等化の後にすべてのチャネルに対して論理１または論理０のいずれかであってもよい。ＦＩＦＯ１２１のいかなる残りのレーン間スキューも、ＰＩ１０２の、例えば一部のＰＩのＵＩの１／６４といった分解能によって限度内にとどめることができる。
【００６９】
本例では、それぞれのデータバッファ、例えば、トランスミッター１９０のＦＩＦＯ１２１などは、スタートアップまたはリセットシーケンスの後に中間点に設定されるように調整されてもよい。しかしながら、中間点設定以外の、データバッファ内部の他の設定位置が使用されてもよい。さらに、データバッファは、互いに異なる位置に設定されてもよい。要するに、そのような設定値は、レーン間スキューを最小化する、さもなければ低減させるために、用途および／または集積回路デバイスに応じて調整されてもよい。
【００７０】
５０５で、フラグ信号１１３は、調整信号１１５を提供するためにインクリメント／ディクリメント制御ブロック１１４に提供されてもよい。調整信号１１５は、読出しクロック信号１０６を調整するためにＰＩ１０２に提供され、差１１１を変化させてフラグ信号１１３に対する状態変化の位置を突きとめ、データバッファのうちのあるデータバッファ、例えば、対応するトランスミッター１９０のＦＩＦＯ１２１のＦＩＦＯ１２１−１に対するレイテンシーを設定することができる。接続線５０６によって示されるように、動作５０１〜５０５が繰り返され、フラグ信号１１３の状態変化の位置を突きとめることができる。
【００７１】
５０７で判定されるとして全体的に示されるように、一旦ＰＩ１０２が状態変化の位置を示す調整信号１１５を受信すると、そのような状態変化の位置は、読出しクロック信号１０６の読出し時間ドメインと、そのような読出しクロック信号１０６に対応する書込みクロック信号１０５の書込み時間ドメインとの間のドメインクロッシングに対するものであってもよい。ＦＩＦＯ１２１−１に対するレイテンシーが事実上そのような状態変化の位置に設定されるため、ＰＩ１０２は、そのような現在の調整信号１１５を無視することができる。したがって、ＰＩ１０２は、５０８で設定シーケンス５００を事実上終了することができる。状態変化の位置がまだ見出されない場合は、ＰＩ１０２は、接続線５１０によって全体的に示されるように、設定シーケンス５００を継続することができる。一般に、一旦ＳＥＲＤＥＳトランスミッター１９０のデータバッファがすべて同一のレイテンシー、例えば、それぞれのＦＩＦＯ１２１の中間点に設定されると、そのようなレイテンシー調整は、トランスミッター１９０のスタートアップシーケンスまたはリセットの後に再調整される必要がなくてもよい。言いかえれば、トランスミッターＳＥＲＤＥＳの複数のチャネルのレイテンシーを等しくするために電圧および／または温度変動に対して一定のレイテンシーを課する回路を有するのではなく、本明細書に記載されるように調整されるＦＩＦＯのレイテンシーは、電圧および／または温度とともに単に変化し、少なくとも十分に、互いに等しい状態に留まる。言いかえれば、動作中に、温度および／または電源電圧の変化により、ＦＩＦＯのレイテンシーは、著しく変化する場合さえあるが、すべてのそのようなＦＩＦＯのレイテンシーは、全体的に互いに等しい状態に留まる。
【００７２】
各トランスミッター１９０のＰＩ１０２は、フラグ信号１１３が、５０７で判定されるような状態を論理１から論理０に、または論理０から論理１に切り替えるとすぐに停止する。論理状態のこの遷移は、調整フェーズの終了を示し、この遷移は、非常に高い精度ですべてのトランスミッター１９０に対するレイテンシーを等しくするために使用されてもよく、この精度は、対応するＰＩ１０２の分解能によってのみ制限され得る。したがって、設定シーケンス５００の実行が完了した後、そのようなシーケンスは、ＰＩ１０２を連続的に作動させないように終了してもよい。ＰＩを連続的に作動させることは、そのような連続的に作動するＰＩによってもたらされるジッタにより出力品質を低下させる。
【００７３】
対応するトランスミッター１９０のデータバッファ１２１の各データバッファは、少なくともほぼ同一のレイテンシー値に設定されてもよい。より詳細には、対応するトランスミッター１９０のデータバッファ１２１の各データバッファは、ＰＩ１０２の粒度に従って、同一のレイテンシー値を有するように設定されてもよい。
【００７４】
トランスミッター１９０の対応するＦＩＦＯ１２１のフラグ信号１１３を繰り返しアサートすることによって、事実上そのようなフラグ信号をトグルさせることができる。このように、ＰＩ１０２は、関連付けられたフラグ信号１１３がトグルする、すなわち遷移位置の「エッジ上に」あるように制御されてもよい。それらの趣旨に添って、データバッファに対応するシーケンスに対してアサートされるフラグ信号１１３は、スタートアップ時またはリセット時にそのようなシーケンスの最初のサイクルに対して論理０および論理１の両方を含むことができる。このことは、２つ以上の同一のトランスミッターが異なる充填レベルにあってもよいため、これらのトランスミッターは、異なるレイテンシーによってリセットから抜け出すことができることを意味する。トランスミッターでは、これは、外部のＦＩＦＯリセット信号と内部の読出しクロック信号１０６間の未知の位相関係によって引き起こされることがある。ＦＩＦＯ１２１がＮビット幅である場合、複数のトランスミッター１９０は、最大Ｎビットのレーン間スキューを示すことがある。Ｎが１６程度に等しい場合、従来のＳＥＲＤＥＳは、Ｎよりも大きなパラレル入力ビット幅を有する。しかしながら、ＸＡＵＩ、ＰＣＩ  Ｅｘｐｒｅｓｓ、およびＳＦＩ−５などのプロトコルは、１６よりもはるかに小さなレーン間スキュー仕様を有する。これらのプロトコルは、最小のレーン間スキューを有することを必要とする場合があるが、すべてのレーンに対して等しくなければならない場合があるレイテンシーは、動作中に変化することがある。
【００７５】
上記のように、遅延アライナーを使用せずに、データ転送動作中にＰＩをオフにしたまま、レーン間スキュー調整を行うことができる。さらに、入力／出力制御ブロックは、デジタル回路であり、上記のようなフラグ信号１１３をフィードバックすることは別として、そのような回路は、既存のトランスミッター中に存在してもよい。
【００７６】
ＰＩ１０２によって、送信されるデータの位相を、各ＳＥＲＤＥＳトランスミッターに対して別々にシフトさせることができる。任意選択で、高速送信ディバイダのビットスキップが使用されてもよいが、残りのレーン間スキューの低減においてより高精度を得るためにＰＩ１０２が使用されてもよい。しかし、実際のレイテンシー測定を行う必要はなく、むしろ指定されたＦＩＦＯ充填レベルによってトリガがかけられるフラグが使用されてもよい。そのようなフラグ生成は、レイテンシーを測定するために使用される回路よりもはるかに簡単な回路である。さらに、フラグ生成は、位相差に関して高分解能で行われ得る。用語「フラグ」が使用されたが、オーバーフロー／アンダフローレベル信号がそのようなフラグ信号に使用されてもよい。
【００７７】
上記の説明は、トランスミッターＳＥＲＤＥＳの動作に対してであった。しかしながら、参照モードにロックされ、同一の信号によって駆動される場合、上記の説明は、レシーバーに対して使用されてもよい。それらの趣旨に添って、レシーバーは、参照モードにロックされている場合に、トランスミッターがシリアルのループバック中にあるそのようなレシーバーに、等化されたレーン間トランスミッタースキューを提供し、入力データのインターリーブされたレシーバーオーバーサンプリングを行うことによって、等化され得る。
【００７８】
本明細書に記載された例の１つまたは複数は、ＦＰＧＡにおいて実施されてもよいため、そのようなＩＣについての詳細な説明を行う。しかしながら、他のタイプのＩＣが本明細書に記載された技術から恩恵を得ることができることを理解されたい。
【００７９】
プログラマブルロジックデバイス（「ＰＬＤ」）は、指定された論理機能を行うようにプログラムすることができるよく知られたタイプの集積回路である。ＰＬＤの一種である、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）は、典型的にはプログラム可能なタイルのアレイを含む。これらのプログラム可能なタイルは、例えば、入力／出力ブロック（「ＩＯＢ」）、設定可能な論理ブロック（「ＣＬＢ」）、専用のランダムアクセスメモリブロック（「ＢＲＡＭ」）、マルチプライヤ、デジタル信号処理ブロック（「ＤＳＰ」）、プロセッサ、クロックマネージャ、遅延ロックループ（「ＤＬＬ」）などを含むことができる。本明細書で使用されるように、「含む」および「含んでいる」は、限定することなく含むことを意味する。
【００８０】
それぞれのプログラム可能なタイルは、典型的にはプログラム可能な相互接続部およびプログラム可能なロジックの両方を含む。プログラム可能な相互接続部は、典型的にはプログラム可能な相互接続点（「ＰＩＰ」）によって相互に接続される様々な長さの多数の相互接続線を含む。プログラム可能なロジックは、例えば、関数発生装置、レジスター、算術論理などを含むことができるプログラム可能な素子を使用して、ユーザ設計のロジックを実施する。
【００８１】
プログラム可能な相互接続部およびプログラム可能なロジックは、典型的には、プログラム可能な素子がどのように構成されるかを規定するコンフィギュレーションデータのストリームを内部コンフィギュレーションメモリセルにロードすることによってプログラムされる。コンフィギュレーションデータは、メモリから（例えば、外部ＰＲＯＭから）読み込まれ、または外部装置によってＦＰＧＡに書き込まれてもよい。その場合、個別のメモリセルの集合状態が、ＦＰＧＡの機能を決定する。
【００８２】
別のタイプのＰＬＤは、複合プログラマブルロジックデバイス、すなわちＣＰＬＤである。ＣＰＬＤは、相互接続スイッチマトリックスによって一緒に、かつ入力／出力（「Ｉ／Ｏ」）リソースに接続された２つ以上の「機能ブロック」を含む。ＣＰＬＤの各機能ブロックは、プログラマブルロジックアレイ（「ＰＬＡ」）およびプログラマブルアレイロジック（「ＰＡＬ」）デバイスで使用されるものと同様の２レベルのＡＮＤ／ＯＲ構造を含む。ＣＰＬＤでは、コンフィギュレーションデータは、典型的には不揮発性メモリのチップ上に記憶される。一部のＣＰＬＤでは、コンフィギュレーションデータは、不揮発性メモリのチップ上に記憶され、次いで、初期コンフィギュレーション（プログラミング）シーケンスの一部として揮発性メモリにダウンロードされる。
【００８３】
これらのプログラマブルロジックデバイス（「ＰＬＤ」）のすべてに対して、デバイスの機能性は、その目的のためにデバイスに提供されるデータビットによって制御される。データビットは、揮発性メモリ（例えば、ＦＰＧＡおよび一部のＣＰＬＤ内にあるようなスタティックメモリセル）、不揮発性メモリ（例えば、一部のＣＰＬＤ内にあるようなＦＬＡＳＨメモリ）、または任意の他のタイプのメモリセルに記憶されてもよい。
【００８４】
他のＰＬＤは、デバイス上の様々な素子をプログラム可能に相互接続する金属層などの処理層を施すことによってプログラムされる。これらのＰＬＤは、マスクプログラマブルデバイスとして知られている。また、ＰＬＤは、他の方法で、例えば、ヒューズまたはアンチヒューズ技術を使用して実施されることがある。用語「ＰＬＤ」および「プログラマブルロジックデバイス」は、限定されることなくこれらの例示的なデバイスを含むばかりでなく、単に部分的にプログラム可能なデバイスも包含する。例えば、ＰＬＤの一種は、ハードコードされたトランジスターロジックと、ハードコードされたトランジスターロジックをプログラム可能に相互接続するプログラマブルスイッチファブリックとの組合せを含む。
【００８５】
上記のように、先進のＦＰＧＡは、アレイ内にいくつかの異なるタイプのプログラム可能な論理ブロックを含むことができる。例えば、図６は、マルチギガビット送レシーバー（「ＭＧＴ」）６０１、設定可能な論理ブロック（「ＣＬＢ」）６０２、ランダムアクセスメモリブロック（「ＢＲＡＭ」）６０３、入力／出力ブロック（「ＩＯＢ」）６０４、コンフィギュレーションおよびクロックロジック（「ＣＯＮＦＩＧ／ＣＬＯＣＫ」）６０５、デジタル信号処理ブロック（「ＤＳＰ」）６０６、特殊な入力／出力ブロック（「Ｉ／Ｏ」）６０７（例えば、コンフィギュレーションポートおよびクロックポート）、ならびにデジタルクロックマネージャ、アナログデジタル変換器、システムモニタリングロジックなどの他のプログラマブルロジック６０８を含む、多数の異なるプログラム可能なタイルを含むＦＰＧＡアーキテクチャ６００を示す。また、一部のＦＰＧＡは、専用プロセッサブロック（「ＰＲＯＣ」）６１０を含む。
【００８６】
一部のＦＰＧＡでは、それぞれのプログラム可能なタイルは、それぞれの隣接するタイルの対応する相互接続素子間に標準化された接続部を有するプログラム可能な相互接続素子（「ＩＮＴ」）６１１を含む。したがって、プログラム可能な相互接続素子を一緒に採用することによって、図示されるＦＰＧＡに対してプログラム可能な相互接続構造を実施する。図６の上部に含まれる例によって示されるように、プログラム可能な相互接続素子６１１は、同じタイル内部にプログラム可能な論理素子間の接続部も含む。
【００８７】
例えば、ＣＬＢ６０２は、ユーザロジックに加えて単一のプログラム可能な相互接続素子（「ＩＮＴ」）６１１を実装するようにプログラムすることができる設定可能な論理素子（「ＣＬＥ」）６１２を含むことができる。ＢＲＡＭ６０３は、１つまたは複数のプログラム可能な相互接続素子に加えてＢＲＡＭ論理素子（「ＢＲＬ」）６１３を含むことができる。典型的には、タイルに含まれる相互接続素子の数は、タイルの高さに依存する。描かれた実施形態では、ＢＲＡＭタイルは、５つのＣＬＢと同一の高さを有するが、他の数（例えば、４つ）も使用することができる。ＤＳＰタイル６０６は、適切な数のプログラム可能な相互接続素子に加えてＤＳＰ論理素子（「ＤＳＰＬ」）６１４を含むことができる。ＩＯＢ６０４は、例えば、プログラム可能な相互接続素子６１１の１つのインスタンスに加えて入力／出力論理素子（「ＩＯＬ」）６１５の２つのインスタンスを含むことができる。当業者には明らかなように、例えば、Ｉ／Ｏ論理素子６１５に接続された実際のＩ／Ｏパッドは、典型的には入力／出力論理素子６１５の領域に限定されない。
【００８８】
描かれた実施形態では、（図６に示される）ダイの中心に近い水平の領域は、コンフィギュレーション、クロック、および他の制御ロジックに使用される。この水平の領域またはカラムから延在する垂直のカラム６０９は、ＦＰＧＡの幅全体にわたってクロックおよびコンフィギュレーション信号を分配するために使用される。
【００８９】
図６に示されるアーキテクチャを利用する一部のＦＰＧＡは、ＦＰＧＡの大部分を構成する規則的なコラム構造を中断させる追加の論理ブロックを含む。追加の論理ブロックは、プログラム可能なブロックおよび／または専用ロジックであってもよい。例えば、プロセッサブロック６１０は、ＣＬＢおよびＢＲＡＭのいくつかのカラムにまたがる。
【００９０】
図６は、単に例示的なＦＰＧＡアーキテクチャを示すことが意図されていることに留意されたい。例えば、列の論理ブロックの数、列の相対的な幅、列の数および順番、列に含まれる論理ブロックのタイプ、論理ブロックの相対的なサイズ、および図６の上部に含まれる相互接続部／ロジックの実施態様は、純粋に例示的である。例えば、実際のＦＰＧＡでは、ユーザロジックの効率的な実装を容易にするために、ＣＬＢが現われるところにはどこでも、２つ以上の隣接するＣＬＢの列が典型的には含まれているが、隣接するＣＬＢの列の数は、ＦＰＧＡの全体的なサイズとともに変わる。
【００９１】
前述の事項は、例示的な装置および／または方法について記載しているが、本明細書に記載された１つまたは複数の態様による他のおよびさらなる例が、本明細書の範囲から逸脱せずに考案されてもよく、その範囲は、以下の特許請求の範囲およびその均等物によって決定される。ステップを列挙する請求項は、ステップのいかなる順番も意味しない。商標は、それぞれの所有者の財産である。
【図１】
2017528838.tif 000003
【図２】
2017528838.tif 000004
【図３】
2017528838.tif 000005
【図４】
2017528838.tif 000006
【図５】
2017528838.tif 000007
【図６】
2017528838.tif 000008
【手続補正書】
【提出日】平成28年10月13日(2016.10.13)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のトランスミッターを起動するための方法であって、
前記複数のトランスミッターはそれぞれ対応するデータバッファを有していて、トランスミッター毎にスタートアップまたはリセットシーケンスを起動するするステップと、
前記シーケンスの実行に応答して前記データバッファ毎にレイテンシーを設定するステップと、
を含み、
前記シーケンスが、
読出しクロック信号を分割することによって読出しアドレス値を得るステップと、
書込みクロック信号を分割することによって書込みアドレス値を得るステップと、
前記読出しアドレス値と前記書込みアドレス値を表す信号間の位相差を算定することと、
前記データバッファの深さの一部分と前記差との比較結果に応じてフラグ信号をアサートすることと、
前記フラグ信号に状態変化が発生するようになるまで、前記読出しクロック信号を調整することによって、データバッファに対してレイテンシーを設定することと、
を含む、方法。
【請求項２】
前記複数のトランスミッターのデータバッファのレイテンシーが少なくともほぼ同一の値に設定される、請求項１に記載の方法。
【請求項３】
前記複数のトランスミッターが複数のレーンに関連付けられ、
前記複数のレーンがシリアル化の準備がなされた前記複数のトランスミッター全体にわたって分配されたパラレルデータに対して最大のレーン間スキューを有する、
請求項２に記載の方法。
【請求項４】
前記データバッファのそれぞれが前記シーケンスの後に中間点に設定される、請求項２または３に記載の方法。
【請求項５】
前記データバッファがデータを記憶するためのレジスターを有する先入れ先出しバッファである、請求項４に記載の方法。
【請求項６】
前記データバッファがデータを記憶するためのメモリセルを有する先入れ先出しバッファである、請求項４または５に記載の方法。
【請求項７】
前記複数のトランスミッターが対応する複数のトランシーバーである、請求項４から６のいずれか一項に記載の方法。
【請求項８】
前記シーケンスが、前記フラグ信号の状態変化の位置をロケートするために、前記シーケンスのステップを繰り返すことをさらに含み、前記状態変化の位置が前記読出しクロック信号の読出し時間ドメインと前記書込みクロック信号の書込み時間ドメインとの間のドメインクロッシングに対するものであり、前記データバッファのうちの１つに対する前記レイテンシーが前記状態変化の位置に設定される、請求項１に記載の方法。
【請求項９】
前記データバッファに対応するフラグ信号のアサートの繰り返しが前記フラグ信号をトグルさせるためのものである、請求項８に記載の方法。
【請求項１０】
前記差が前記データバッファのうちの１つのバッファ深さの一部分以下である場合、前記フラグ信号を論理０でアサートし、
前記差が前記データバッファのうちの１つのバッファ深さの一部分よりも大きい場合、前記フラグ信号を論理１でアサートする、
請求項８または９に記載の方法。
【請求項１１】
前記フラグ信号が論理１である場合、データバッファの充填レベルが２分の１よりも大きく、
前記フラグ信号が論理０である場合、データバッファの充填レベルが２分の１以下である、請求項１０に記載の方法。
【請求項１２】
前記シーケンスに対してアサートされるフラグ信号がデータバッファに対応し、前記シーケンスの最初のサイクルに対して論理０および論理１の両方を含む、
請求項１０または１１に記載の方法。
【請求項１３】
前記読出しアドレス値を得るステップが、前記読出しアドレス値を得るために前記データバッファのバッファ深さに関する除数で前記読出しクロック信号を分割することを含む、請求項８から１２のいずれか一項に記載の方法。
【請求項１４】
前記書込みアドレス値を得るステップが前記書込みアドレス値を得るために前記データバッファの前記バッファ深さに関する除数で前記書込みクロック信号を分割することを含む、請求項１３に記載の方法。
【請求項１５】
前記差を算定することがグレイ符号化を含む、請求項８から１２のいずれか一項に記載の方法。
【国際調査報告】
2017528838.tif 000009
2017528838.tif 000010