(57)【要約】  装置は複数のチャネル（２５０）を含み、チャネルの各々は、非同期バッファ（２１０）と、待ち時間判定ブロック（２１１）と、タップ選択回路（２２０）と、可変遅延（２０２）とを含む。待ち時間ロケータ（２１２）はチャネルの中から最長待ち時間を同定するように構成され、最長待ち時間（２１９）をチャネルの各々のタップ選択回路（２２０）に与えるように結合される。チャネル（２５０）の各々毎に、待ち時間判定ブロック（２１１）は非同期バッファの待ち時間値（２１８）を算出するように非同期バッファ（２１０）に結合され、タップ選択回路（２２０）は待ち時間値（２１８）および最長待ち時間（２１９）を受信するように結合され、タップ選択回路（２２０）は可変遅延（２０２）に結合され、タップ選択回路（２２０）は、待ち時間値および最長待ち時間に応答して可変遅延（２０２）のタップのうち１つのタップを選択するように構成される。
2015536073.tif 000002
【特許請求の範囲】
【請求項１】
装置であって、
複数のチャネルを備え、
前記複数のチャネルの各々は、非同期バッファと、待ち時間判定ブロックと、タップ選択回路と、可変遅延とを含み、さらに
前記複数のチャネルの各々の前記待ち時間判定ブロックおよび前記タップ選択回路に結合される待ち時間ロケータを備え、
前記待ち時間ロケータは、前記複数のチャネルの中から最長待ち時間を同定するように構成され、前記複数のチャネルの各々の前記タップ選択回路に前記最長待ち時間を与えるように結合され、
前記複数のチャネルの各々毎に、
前記待ち時間判定ブロックは前記非同期バッファの待ち時間値を判定するように前記非同期バッファに結合され、
前記タップ選択回路は前記待ち時間値および前記最長待ち時間を受信するように結合され、
前記タップ選択回路は前記可変遅延に結合され、
前記タップ選択回路は、前記待ち時間値および前記最長待ち時間に応答して前記可変遅延のタップのうち１つのタップを選択するように構成される、装置。
【請求項２】
前記タップ選択回路は、前記複数のチャネルのうち１つのチャネルの前記非同期バッファを通した遅延がクロックサイクルの予め定められた部分未満だけ前記最長待ち時間と異なるか否かを判定するように構成される、請求項１に記載の装置。
【請求項３】
前記チャネルは通信チャネルである、請求項１または２に記載の装置。
【請求項４】
前記チャネルは一群のデータのためのものである、請求項２または３に記載の装置。
【請求項５】
前記チャネルの非同期バッファは入力側の第１のクロック信号および出力側の第２のクロック信号によってクロック制御され、
前記第１のクロック信号は前記第２のクロック信号よりも高速である、請求項２〜４のいずれかに記載の装置。
【請求項６】
前記複数のチャネルの各々の前記非同期バッファは入力側の第１の共通クロック信号および出力側の第２の共通クロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項７】
前記複数のチャネルの各々の前記非同期バッファは入力側の第１の別個のクロック信号および出力側の別個のクロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項８】
前記複数のチャネルの各々の前記非同期バッファは、入力側の共通クロック信号および出力側の別個のクロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項９】
前記複数のチャネルの各々の前記非同期バッファは、入力側の別個のクロック信号および出力側の共通クロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項１０】
前記タップ選択回路は、
前記待ち時間値および前記最長待ち時間を受信して前記待ち時間値から前記最長待ち時間の値を減算して差を定めるように結合される減算器と、
前記差が予め定められた値未満であるか否かを判断するように構成される比較器回路とを備える、請求項１〜９のいずれかに記載の装置。
【請求項１１】
前記予め定められた値はクロックサイクルの部分である、請求項１０に記載の装置。
【請求項１２】
前記タップ選択回路は、
前記待ち時間値および前記最長待ち時間を受信して前記最長待ち時間の値を前記待ち時間値に加算して和を定めるように結合される加算器と、
前記和が予め定められた値未満であるか否かを判断するように構成される比較器回路とを備える、請求項１〜１１のいずれかに記載の装置。
【請求項１３】
前記可変遅延は、選択された前記タップに応答して遅延させるべき書込データを受信するように結合される、請求項１〜１２のいずれかに記載の装置。
【請求項１４】
前記可変遅延は、選択された前記タップに応答して遅延させるべき読出データを受信するように結合される、請求項１〜１２のいずれかに記載の装置。
【請求項１５】
請求項１〜１４のいずれかに記載の前記装置を備える集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
発明は集積回路デバイス（ＩＣ）に関する。より特定的には、発明は、ＩＣ中の非同期バッファを用いたクロック領域境界交差（clock domain boundary crossing）に関する。
【背景技術】
【０００２】
背景
たとえば１００Ｇｂｐｓイーサネット（登録商標）リンクなどの高速リンクは広いデータ経路を有することがある。これらのデータ経路はＩＣの内部にあることがある。従来、これらのデータ経路は、複数のセグメント、すなわちデータレーン、に分けられることがある。データ経路のそのようなパージング（parsing）は設計上の選択であってもよい、および／または仕様に対する準拠であってもよい。たとえば、ＩＥＥＥ８０２．３ｂａ−２０１０標準は、１００Ｇｂｐｓイーサネット（登録商標）が２０本の論理レーンを有すると特定する。このまたは他のプロトコルの理由により、そのような複数のレーンはＩＣ内の別個の物理的経路を取ることがあり、そのようなレーンの２つ以上がたとえば入出力（Ｉ／Ｏ）インターフェイスで組合せられることがある。たとえば、複数の直列トランシーバおよび複数のクロック領域を有するＩＣについては、そのような複数のレーンがそのようなクロック領域の１つ以上と交差することがある。設計は、すべてのレーンを整列させた状態に保つ、すなわちデータ経路上のすべてのデータが均等な遅延に遭遇する、ように試みることがあるが、クロック領域境界と交差するように先入れ先出しバッファ（ＦＩＦＯ）を用いることは本来的に、各々のレーン毎にいくらかの遅延不確実さを、およびしたがってレーン毎の待ち時間ばらつきを加えてしまう。
【０００３】
現在の高速設計における待ち時間ばらつきの低減は適切な動作および／または仕様準拠に関連することがある。いくらかのばらつきは不可避かもしれないが、クロック領域境界にわたる待ち時間ばらつきの低減を与えることが依然として望ましくかつ有用であろう。
【発明の概要】
【課題を解決するための手段】
【０００４】
要約
複数のチャネルを備える装置が記載される。複数のチャネルの各々は、非同期バッファと、待ち時間判定ブロックと、タップ選択回路と、可変遅延とを含む。複数のチャネルの各々の待ち時間判定ブロックおよびタップ選択回路に待ち時間ロケータ（locator）が結合される。待ち時間ロケータは、複数のチャネルの中から最長待ち時間を同定するように構成され、複数のチャネルの各々のタップ選択回路に最長待ち時間を与えるように結合される。複数のチャネルの各々毎に、待ち時間判定ブロックは非同期バッファの待ち時間値を判定するように非同期バッファに結合され、タップ選択回路は待ち時間値および最長待ち時間を受信するように結合され、タップ選択回路は可変遅延に結合され、タップ選択回路は待ち時間値および最長待ち時間に応答して可変遅延のタップのうち１つのタップを選択するように構成される。
【０００５】
装置において、以下のうちより多くの１つが当てはまり得る。タップ選択回路は、複数のチャネルのうちの１つのチャネルの非同期バッファを通した遅延がクロックサイクルの予め定められた部分未満だけ最長待ち時間と異なるか否かを判断するように構成されてもよく、チャネルは通信チャネルであってもよく、チャネルは一群のデータのためのものであってもよく、チャネルの非同期バッファは、入力側の第１のクロック信号および出力側の第２のクロック信号によってクロック制御されてもよく、第１のクロック信号は第２のクロック信号よりも高速である。
【０００６】
加えてまたはこれに代えて、複数のチャネルの各々の非同期バッファは入力側の第１の共通クロック信号および出力側の第２の共通クロック信号によってクロック制御されてもよく、複数のチャネルの各々の非同期バッファは入力側の第１の別個のクロック信号および出力側の別個のクロック信号によってクロック制御されてもよく、複数のチャネルの各々の非同期バッファは入力側の共通クロック信号および出力側の別個のクロック信号によってクロック制御されてもよく、または複数のチャネルの各々の非同期バッファは入力側の別個のクロック信号および出力側の共通クロック信号によってクロック制御されてもよい。
【０００７】
加えてまたはこれに代えて、以下のうち１つ以上が当てはまり得る。タップ選択回路は、待ち時間値および最長待ち時間を受信して待ち時間値から最長待ち時間値を減算して差を定めるように結合される減算器と、差が予め定められた値よりも小さいか否かを判断するように構成される比較器回路とを備えてもよく、予め定められた値はクロックサイクルの部分であってもよく、タップ選択回路は、待ち時間値および最長待ち時間を受信して最長待ち時間値を待ち時間値に加算して和を定めるように結合される加算器と、和が予め定められた値よりも小さいか否かを判断するように構成される比較器回路とを備えてもよい。
【０００８】
加えてまたはこれに代えて、可変遅延は選択されたタップに応答して遅延させるべき書込データを受信するように結合されてもよく、または可変遅延は選択されたタップに応答して遅延させるべき読出データを受信するように結合されてもよい。
【０００９】
上述の装置を備える集積回路も記載される。
集積回路を備える装置も記載される。集積回路は、非同期境界の入力側の少なくとも１つの第１のクロック領域と、非同期境界の出力側の少なくとも１つの第２のクロック領域とを有する非同期境界を有する。非同期境界は複数のチャネルを有し、その各々が非同期バッファと、待ち時間判定ブロックと、タップ選択回路と、可変遅延とを含む。非同期境界は書込データインターフェイスと読出データインターフェイスとを有する。非同期境界は、読出ポインタと書込ポインタとの間の差を定めて複数のチャネルの各々毎に待ち時間値を与えるように構成される。非同期境界は、非同期境界の複数のチャネルの待ち時間値および最長待ち時間値に応答して非同期バッファを通して遅延を調整するように構成される。
【００１０】
添付の図面は、たとえば回路、集積回路、またはシステムなどの例示的な装置を示す。しかしながら、添付の図面は示される例を限定するようにとらえられるべきではなく、説明および理解のみのためのものである。
【図面の簡単な説明】
【００１１】
【図１】例示的なカラムナフィールドプログラマブルゲートアレイ（ＦＰＧＡ）アーキテクチャを描く簡略化されたブロック図である。
【図２−１】クロック領域境界交差を描くブロック図である。
【図２−２】クロック領域境界交差を描くブロック図である。
【図２−３】クロック領域境界交差を描くブロック図である。
【図２−４】クロック領域境界交差を描くブロック図である。
【図３】例示的なＩＣダイを描くブロック図である。
【図４−１】例示的なデータタイミングを描く信号図である。
【図４−２】例示的なデータタイミングを描く信号図である。
【図５−１】データタイミングに対応する非同期境界の例示的な部分を描くブロック図である。
【図５−２】データタイミングに対応する非同期境界の例示的な部分を描くブロック図である。
【発明を実施するための形態】
【００１２】
詳細な説明
以下の説明では、具体的な例のより徹底的な説明を与えるために数多くの具体的な詳細を述べる。しかしながら、以下に与えるすべての具体的な詳細なしに１つ以上の実施形態を実践してもよいことが当業者には明らかであるべきである。他の事例では、例をわかりにくくしないように、周知の特徴を詳細には説明していない。図示の容易のため、同じ項目を参照するのに異なる図で同じ番号標識を用いている。しかしながら、代替的な実施形態では項目が異なることがある。
【００１３】
いくつかの図で例示として描かれる例示的な装置を説明する前に、さらなる理解のために一般的な序説を述べる。
【００１４】
一群のデータ中の異なるデータ経路間での遅延の不確実さの元は、非同期境界である。従来、非同期境界は複数の先入れ先出しバッファ（ＦＩＦＯ）を含み、データは書込クロックと同期してそのようなＦＩＦＯに送込まれ（clocked into）、読出クロックと同期してそのようなＦＩＦＯから送出される（clocked out of）。このように、そのようなデータは２つの異なるクロック領域と交差し、そのようなデータは、同じまたは異なる周波数で、同期してそのようなＦＩＦＯに送込まれたりＦＩＦＯから送出されたりすることがある。従来、入力データ幅が出力データ幅と異なる場合、読出および書込クロックに異なる周波数が用いられる。並列データのレーン当たりにＦＩＦＯが用いられる場合、レーン毎のばらつきが生じることがある。一群のレーンの異なるＦＩＦＯに共通の書込クロックおよび別個の読出クロックが用いられると仮定すると、そのようなＦＩＦＯ間の遅延の差を伝えるクロックスキューおよび／またはポインタが１つ以上の読出位置のレーン毎のばらつきを招くことがある。しかしながら、そのような書込クロックが読出クロックよりも５倍高速であれば、１つの読出位置は５つの書込位置と均等であろう。
【００１５】
上記一般的理解を念頭に置いて、さまざまな例示的なクロック領域境界交差を以下に全般的に記載する。そのようなクロック領域境界交差は片方または両者ともが送信または受信方向にあり得る。各々の段またはチャネルは、たとえば非同期ＦＩＦＯなどの非同期バッファを有してもよい。チャネルまたはレーンはデータの群のためのものであってもよく、そのような群のデータ幅は一群のチャネルの入力側および出力側で同じであってもまたは異なっても（非対称であっても）よい。群の各ＦＩＦＯの待ち時間が測定され、そのような待ち時間のうちの最長待ち時間と比較されてもよい。この待ち時間情報を用いて、より早期に到達するデータに対する遅延調整が行なわれて、そのような群のすべてのデータをより近接して整列させてもよい。
【００１６】
上述の例のうち１つ以上は特定の種類のＩＣを用いて例示されるので、そのようなＩＣの詳細な説明を以下に与える。しかしながら、１つ以上のクロック領域境界交差を有する他の種類のＩＣが本明細書中に記載の技術の１つ以上から恩恵を受けることがあることを理解すべきである。
【００１７】
プログラマブル論理デバイス（ＰＬＤ）は、特定の論理機能を果たすようにプログラミング可能な周知の種類の集積回路である。一種のＰＬＤであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）は典型的にプログラマブルタイルのアレイを含む。これらのプログラマブルタイルは、たとえば、入出力ブロック（ＩＯＢ）、コンフィギュラブル論理ブロック（ＣＬＢ）、専用ランダムアクセスメモリブロック（ＢＲＡＭ）、乗算器、デジタル信号処理ブロック（ＤＳＰ）、プロセッサ、クロックマネージャ、遅延ロックループ（ＤＬＬ）などを含むことができる。本明細書中で用いるように、「含む」および「含んでいる」は、限定なく含んでいることを意味する。
【００１８】
各々のプログラマブルタイルは典型的に、プログラマブル相互接続とプログラマブル論理との両方を含む。プログラマブル相互接続は典型的に、プログラマブル相互接続点（ＰＩＰ）によって相互接続される異なる長さの多数の相互接続線を含む。プログラマブル論理は、たとえば、関数発生器、レジスタ、算術論理などを含むことができるプログラマブル素子を用いてユーザ設計の論理を実現する。
【００１９】
プログラマブル相互接続およびプログラマブル論理は典型的に、プログラマブル素子をどのように構成するかを規定する内部コンフィギュレーションメモリセルの中にコンフィギュレーションデータのストリームをロードすることによってプログラミングされる。コンフィギュレーションデータは、メモリから（たとえば外部ＰＲＯＭから）読出される、または外部デバイスによってＦＰＧＡに書込まれることができる。そうして、個別のメモリセルの集合的な状態がＦＰＧＡの機能を決める。
【００２０】
別の種類のＰＬＤが複合プログラマブル論理デバイスまたはＣＰＬＤである。ＣＰＬＤは相互接続スイッチマトリックスによってともに入／出力（Ｉ／Ｏ）リソースに接続される２つ以上の「機能ブロック」を含む。ＣＰＬＤの各々の機能ブロックは、プログラマブル論理アレイ（ＰＬＡ）およびプログラマブルアレイ論理（ＰＡＬ）デバイスで用いられるものと同様の２レベルＡＮＤ／ＯＲ構造を含む。ＣＰＬＤでは、コンフィギュレーションデータは典型的に不揮発性メモリの中にオンチップで格納される。あるＣＰＬＤでは、コンフィギュレーションデータは不揮発性メモリの中にオンチップで格納され、次に初期コンフィギュレーション（プログラミング）シーケンスの一部として揮発性メモリにダウンロードされる。
【００２１】
これらのプログラマブル論理デバイス（ＰＬＤ）のすべてについて、デバイスの機能性は、その目的のためにデバイスに与えられるデータビットによって制御される。データビットは、揮発性メモリ（たとえばＦＰＧＡおよびいくつかのＣＰＬＤ中のもののようなスタティックメモリセル）、不揮発性メモリ（たとえばいくつかのＣＰＬＤ中のもののようなフラッシュメモリ）、または任意の他の種類のメモリセル中に格納され得る。
【００２２】
他のＰＬＤは、デバイス上のさまざまな素子をプログラミング可能に相互接続する金属層などの処理層を適用することによってプログラミングされる。これらのＰＬＤは、マスクプログラマブルデバイスとして公知である。ＰＬＤは、たとえばヒューズまたはアンチヒューズ技術を用いて他のやり方で実現されることも可能である。「ＰＬＤ」および「プログラマブル論理デバイス」という用語は、これらの例示的なデバイスを含むがそれらに限定されず、部分的にしかプログラミング可能でないデバイスも包含する。たとえば、一種のＰＬＤは、ハードコードされたトランジスタ論理と、ハードコードされたトランジスタ論理をプログラミング可能に相互接続するプログラマブルスイッチファブリックとの組合せを含む。
【００２３】
以上注記したように、高度ＦＰＧＡは、アレイ中にいくつかの異なる種類のプログラマブル論理ブロックを含むことができる。たとえば、図１は、マルチギガビットトランシーバ（ＭＧＴ）１０１、コンフィギュラブル論理ブロック（ＣＬＢ）１０２、ランダムアクセスメモリブロック（ＢＲＡＭ）１０３、入／出力ブロック（ＩＯＢ）１０４、コンフィギュレーションおよびクロッキング論理（ＣＯＮＦＩＧ／ＣＬＯＣＫＳ）１０５、デジタル信号処理ブロック（ＤＳＰ）１０６、特化された入／出力ブロック（Ｉ／Ｏ）１０７（たとえばコンフィギュレーションポートおよびクロックポート）、およびデジタルクロックマネージャ、アナログ−デジタルコンバータ、システム監視論理などの他のプログラマブル論理１０８を含む多数の異なるプログラマブルタイルを含むＦＰＧＡアーキテクチャ１００を図示する。いくつかのＦＰＧＡは、専用プロセッサブロック（ＰＲＯＣ）１１０も含む。
【００２４】
いくつかのＦＰＧＡでは、各々のプログラマブルタイルは、各々の隣接するタイルにおいて対応の相互接続素子へのまたはそれからの規格化接続を有するプログラマブル相互接続素子（ＩＮＴ）１１１を含む。したがって、プログラマブル相互接続素子は、ともに、図示されるＦＰＧＡのためのプログラマブル相互接続構造を実現する。プログラマブル相互接続素子１１１は、図１の一番上に含まれる例に示されるように、同じタイル内にプログラマブル論理素子へのおよびそれからの接続も含む。
【００２５】
たとえば、ＣＬＢ１０２は、ユーザ論理プラス単一のプログラマブル相互接続素子１１１を実現するようにプログラミングされ得るコンフィギュラブル論理素子（ＣＬＥ）１１２を含むことができる。ＢＲＡＭ１０３は、１つ以上のプログラマブル相互接続素子に加えて、ＢＲＡＭ論理素子（ＢＲＬ）１１３を含むことができる。典型的に、タイルに含まれる相互接続素子の数はタイルの高さに依存する。描かれる実施形態では、ＢＲＡＭタイルは５つのＣＬＢと同じ高さを有するが、他の数（たとえば４）も用いることもできる。ＤＳＰタイル１０６は、適切な数のプログラマブル相互接続素子に加えて、ＤＳＰ論理素子（ＤＳＰＬ）１１４を含むことができる。ＩＯＢ１０４は、プログラマブル相互接続素子１１１の１つのインスタンスに加えて、たとえば、入／出力論理素子（ＩＯＬ）１１５の２つのインスタンスを含むことができる。当業者には明らかなように、たとえば、Ｉ／Ｏ論理素子１１５に接続される実際のＩ／Ｏパッドは典型的に、入出力論理素子１１５の区域に閉じ込められるわけではない。
【００２６】
描かれる例では、（図１に示される）ダイの中心近くの水平方向の区域がコンフィギュレーション、クロック、および他の制御論理のために用いられる。この水平方向の区域または列から延在する鉛直方向列１０９は、ＦＰＧＡの幅にわたってクロックおよびコンフィギュレーション信号を分配するのに用いられる。
【００２７】
図１に図示されるアーキテクチャを利用するいくつかのＦＰＧＡは、ＦＰＧＡの大きな部分を構成する規則的なカラムナ構造を中断させる付加的な論理ブロックを含む。付加的な論理ブロックは、プログラマブルブロックおよび／または専用論理であり得る。たとえば、プロセッサブロック１１０は、ＣＬＢおよびＢＲＡＭのいくつかの列にわたる。
【００２８】
図１は例示的なＦＰＧＡアーキテクチャのみを図示することが意図されることに留意されたい。行中の論理ブロックの数、行の相対的な幅、行の数および順序、行に含まれる論理ブロックの種類、論理ブロックの相対的な大きさ、ならびに図１の一番上に含まれる相互接続／論理実現例は、純粋に例示的である。たとえば、実際のＦＰＧＡでは、ユーザ論理の効率的な実現を容易にするために、ＣＬＢが現われる場所にはどこにでも、１つよりも多くのＣＬＢの隣接する行が典型的に含まれるが、隣接するＣＬＢ行の数はＦＰＧＡの全体サイズによって異なる。
【００２９】
図２−１〜図２−４は、それぞれの例示的なクロック領域境界交差２００を描くブロック図である。明瞭性の目的のため、各々のクロック領域境界交差２００は非同期境界であると仮定する。しかしながら、他の装置では、書込クロック信号および読出クロック信号は、チャネルＦＩＦＯの中にまたはチャネルＦＩＦＯからデータを同期して送込んだり送出したりするのに同じ周波数を有してもよく、そのような読出クロック信号および書込クロック信号は、同じ信号ではなく、互いに対して位相がずれていてもよい。しかしながら、そのような装置では、多くて１サイクルの位相差が存在してもよい。
【００３０】
高速通信リンクからのデータを、たとえば図１のＦＰＧＡ１００などのＩＣ内部の複数の並列経路に分けてもよい。各々のそのようなデータ経路は、以下に付加的に詳細に記載するようにわずかに異なる待ち時間と遭遇してもよい。通信チャネルの例を用いる場合であっても、ネットワーク形成に関連していてもしていなくても、チャネルまたはレーンを介して送られるデータの任意の群を用いてもよいことを理解すべきである。
【００３１】
各々の非同期境界２００は複数のチャネル２５０−１〜２５０−Ｎを含み、Ｎは１よりも大きな正の整数である（チャネル２５０）。チャネル２５０−１〜２５０−Ｎはそれぞれ非同期バッファ２１０−１〜２１０−Ｎ（非同期バッファ２１０）と、待ち時間判定ブロック２１１−１〜２１１−Ｎ（待ち時間判定ブロック２１１）と、タップ選択回路２２０−１〜２２０−Ｎ（タップ選択回路２２０）と、可変遅延２０２−１〜２０２−Ｎ（可変遅延２０２）とを含む。換言すると、チャネル２５０の各々は非同期バッファ２１０と、待ち時間判定ブロック２１１と、タップ選択回路２２０と、可変遅延２０２とを含む。
【００３２】
Ｎ個の非同期バッファ２１０が存在しても、一群のデータは、そのような非同期バッファの入力側および出力側に関して異なり得るまたは非対称であり得る。たとえば、入力側では、Ｎ個のチャネル２５０は、各々３２ビットの５つのデータ群のためのものであってもよく、したがってＮは１６０に等しいであろう。例を続けると、出力側では、Ｎ個のチャネル２５０は、１６０ビットの単一のデータ群のためのものであってもよい。これは非対称非同期境界２００の単なる一例であり、データ群のこれらおよび他のサイズを他の装置で用いてもよい。一般的に、読出クロックは書込クロックよりも低速である。というのも、一般的にデータは、ＦＩＦＯの中に、そのようなデータがＦＩＦＯから読出されるよりも少ない数のデータ群で書込まれるからである。しかしながら、他の装置では、データは、そのようなデータがＦＩＦＯから読出されるよりも低速の周波数で書込まれてもよい。
【００３３】
待ち時間ロケータ２１２がチャネル２５０の各々に結合される。より特定的には、待ち時間ロケータ２１２はチャネル２５０の各々の待ち時間判定ブロック２１１およびタップ選択回路２２０に結合される。
【００３４】
非同期バッファ２１０は非同期先入れ先出しメモリであってもよい。非同期バッファは、プログラマブルリソースの専用メモリブロックまたはコンフィギュラブルメモリであってもよい。一般的に、非同期バッファとは、入力データ側が入力クロック信号によってクロック制御され、出力データ側が出力クロック信号によってクロック制御され、そのような入力クロック信号と出力クロック信号とが関連していない場合を意味する。しかしながら、限定ではなく明瞭性の目的のため、非同期バッファは、入力側および出力側の一方または両方が別個の入力クロックまたは出力クロックをそれぞれ受信し、そのようなクロックのエッジがすべて、以下に付加的に詳細に記載するように、共通のリセット信号に整列されるわけではなく、そのような入力クロックと出力クロックとが関連していないと仮定する。クロックは、別のクロックと、両方のクロックが同じクロック源から発していれば関連しているかもしれず、そのためエッジの関連付けが予め定められてもよい。さらに、非同期バッファは、ある側が入力クロック信号によってクロック制御され、出力データ側がそのような入力クロック信号とは独立した出力クロック信号によってクロック制御され、そのような入力クロック信号と出力クロック信号とが明確に異なる周波数のものであってもよい。このように、たとえば、データは書込クロック信号と同期して非同期バッファ２１０に書込まれてもよく、読出クロック信号と同期してそのような非同期バッファ２１０から読出されてもよく、そのような書込クロック信号と読出クロック信号とは明確に異なる周波数の異なるクロック領域の中にある。これは、非同期バッファ２１０の入力および出力側に関して非対称のデータの群を扱うことであり得る。
【００３５】
可変遅延２０２はシフトレジスタであってもよい。待ち時間判定ブロック２１１は、非同期バッファ２１０の両側の、読出ポインタまたは読出アドレスおよび書込ポインタまたは書込アドレスなどの２つのポインタの到着の間の時間差を定めるように構成されてもよい。これらのポインタはＦＩＦＯの動作を通じて継続してもよいことを理解すべきである。用いてもよい待ち時間判定ブロック２１１の例が米国特許第７，５９４，０４８号に記載され、すべての目的のためにその全体が本明細書中に引用により援用される。米国特許第７，５９４，０４８号では、書込ポインタと読出ポインタとの間の差を連続して測定しかつ平均するのに、クロック信号２１３および２１４に対して調和関係にないクロック信号（図示せず）が用いられる。そのような測定に用いられるそのようなクロック信号（図示せず）は、クロック信号２１３および２１４の片方または両方よりも高速であってもよく、ならびにしたがってクロック信号２１３および２１４の片方または両方のクロックサイクルのごく一部内で正確な高精度のＦＩＦＯ容量測定が定められてもよい。累積平均を用いる装置については、時間とともに待ち時間値がより洗練され得る、すなわちより正確になり得る。このように、実際の待ち時間が相対的に静的であり得るとしても、経時的なそのような待ち時間の測定が洗練され得る。それに沿って、より正確な待ち時間を用いる初期データ整列の後に行なわれるデータ整列の結果、さらなる調整が行なわれ得る。しかしながら、初期調整が十分であるか否かに係わらず、非同期境界２００は自己監視する（self-monitoring）。それに沿って、初期データ整列の後にクロックスキューまたはデータスキューが導入されれば、非同期境界２００は、ユーザ入力がなくても、そのようなクロックスキューおよび／またはデータスキューが発生したと判断してもよく、それについて自動調整してもよい。
【００３６】
タップ選択回路２２０は、待ち時間判定ブロック２１１によって定められるまたは測定される遅延を比較するように構成されてもよい。そのような遅延は、以下に付加的に詳細に記載するように、非同期バッファ２１０の入力クロック信号または出力クロック信号のいずれかのクロックサイクルの部分であってもよい。待ち時間ロケータ２１２は、チャネル２５０の待ち時間判定ブロック２１１によって判定される待ち時間の中から最長待ち時間を同定するように構成されてもよく、チャネル２５０の各々のタップ選択回路２２０に最長待ち時間を与えるように結合される。
【００３７】
チャネル２５０−１については、待ち時間判定ブロック２１１−１が非同期バッファ２１０−１に結合されて待ち時間値を判定してそのような非同期バッファ２１０−１についての待ち時間値信号（待ち時間値）２１８−１を与える。タップ選択回路２２０−１はそのような待ち時間値２１８−１を受信するように結合される。タップ選択回路２２０−１は、待ち時間ロケータ２１２から最長待ち時間値信号（最長待ち時間）２１９を受信するようにさらに結合される。たとえば、ポインタ２１６−１〜２１６−Ｎの書込ポインタとポインタ２１７−１〜２１７−Ｎの対応の読出ポインタとの間の測定された最大差を有する非同期バッファ２１０−１〜２１０−Ｎのうちの非同期ＦＩＦＯを待ち時間ロケータ２１２によって同定してもよい。対応の待ち時間判定ブロック２１１−１〜２１１−Ｎからのそのような待ち時間値２１８−１〜２１８−Ｎは、それぞれタップ選択回路２２０−１〜２２０−Ｎに、およびまとめて待ち時間ロケータ２１２に与えられてもよい。
【００３８】
待ち時間ロケータ２１２は、たとえば比較器のツリーまたは比較アルゴリズムの実現例であってもよい。しかしながら、他の装置では、待ち時間ロケータ２１２に他の回路構造を用いてもよい。待ち時間ロケータ２１２は、待ち時間検出ブロック２１１の遅延を一致させるようになど少量の遅延を導入するように、全体的に組合せ的であってもまたはそれ以外の態様で構成されてもよい。
【００３９】
本明細書中に記載のように、より十分なデータ整列の目的のため、データは、非同期バッファ２１０の書込側または読出側で遅延されてもよい。しかしながら、限定ではなく例示による明瞭性の目的のため、この例については、他の装置では遅延されるデータ２０５が読出データであり得るとしても、データ２０５が書込データでありデータ２２５が読出データであると仮定する。もっとも、データ２０５および２２５の矢印の方向は図示として描かれるものとは反対にされるであろう。
【００４０】
すべてのチャネル２５０、またはより特定的にはタップ選択回路２２０は、データ経路上の元の書込データ信号２０５−１〜２０５−Ｎ（Ｎは１よりも大きな正の整数である）（元の書込データ２０５）の１つ以上に遅延を加えるかまたは遅延を増大させるか否かを決めるために、それらのＦＩＦＯの容量、すなわちたとえば待ち時間値２１８および待ち時間ロケータ２１２からの最長待ち時間値２１９、を比較するまたはそれ以外の態様で用いることがある。別の装置では、元の読出データ２２５−１〜２２５−Ｎ（Ｎは１よりも大きな正の整数）が対応の可変遅延２０２−１〜２０２−Ｎに入力されてもよい。
【００４１】
タップ選択回路２２０−１は、待ち時間判定ブロック２１１−１からの待ち時間値２１８−１および待ち時間ロケータ２１２からの最長待ち時間値２１９に応答して可変遅延２０２−１のタップのうちの１つのタップを選択するように構成される。そのような加えられた遅延は、可変遅延２０２−１のタップのうち異なるタップまたは任意のタップを選択することによって生じてもよく、そのような選択は、そのような選択のために可変遅延２０２−１に結合されるタップ選択回路２２０−１によって行なわれる。各々のタップは遅延の１クロックサイクルであってもよい。例示的な回路では、初期タップ、すなわちゼロ番目のタップが、１クロックサイクル遅延を有するデフォルトとして選択されてもよい。このように、一群のデータについて、非同期バッファのうち最長遅延を有する非同期バッファまたは複数の非同期バッファをゼロ番目のタップの選択と関連付けてもよい。
【００４２】
チャネル２５０−１についての上記説明をチャネル２５０−２〜２５０−Ｎの各々について繰返し得る。このように、各々のタップ選択回路２２０−１、２２０−２、…、２２０−Ｎは、対応の可変遅延２０２−１、２０２−２、…、２０２−Ｎに結合されてもよく、各々のそのようなタップ選択回路２２０−１、２２０−２、…、２２０−Ｎは、チャネル毎に任意のタップ選択について、対応の待ち時間値２１８−１、２１８−２、…、２１８−Ｎおよび最長待ち時間値２１９を受信する。しかしながら、限定ではなく明瞭性の目的のため、チャネル２５０−２〜２５０−Ｎの各々毎の上記説明は繰返さない。
【００４３】
図２−１のブロック図で、チャネル２５０−１〜２５０−Ｎの各々は、対応の別個の書込クロック信号２１４−１〜２１４−Ｎと、対応の別個の読出クロック信号２１３−１〜２１３−Ｎとを有する。たとえば、元の書込データ２０５−１は、別個の書込クロック信号（書込クロック）２１４−１に応答して可変遅延２０２−１の中に同期して送込まれてもよく、可変遅延２０２−１からの出力は遅延された書込データ２１５−１として与えられてもよい。遅延された書込データ２１５−１は別個の書込クロック２１４−１に応答して非同期ＦＩＦＯバッファ２１０−１の中に同期して送込まれてもよい。さらに、限定ではなく明瞭性の目的のため、読出データ２２５−１は、別個の読出クロック信号（読出クロック）２１３−１に応答して非同期ＦＩＦＯバッファ２１０−１から同期して送出されてもよい。限定ではなく例示による明瞭性の目的のため、書込クロック信号２１４−１〜２１４−Ｎは、ＭＧＴのＮ個のクロックデータ再生（ＣＤＲ）回路から発してもよく、そのようなＣＤＲ回路の間にはいくらかスキューが存在する。このように、そのような再生されたクロック信号を用いて送達されるデータはスキューされていることがあり、そのため、そのようなデータは本明細書中に記載のようにデスキュー（deskew）されてもよい。それに沿って、他のデータよりも早期に到達するデータは、データの群の中のすべてのデータをより近接して整列させるために減速されてもよい。
【００４４】
図２−２のブロック図では、チャネル２５０−１〜２５０−Ｎの各々は、対応する別個の書込クロック２１４−１〜２１４−Ｎと共通読出クロック２１３とを有する。たとえば、元の書込データ２０５−１は、別個の書込クロック２１４−１に応答して可変遅延２０２−１の中に同期して送込まれてもよく、可変遅延２０２−１からの出力は遅延された書込データ２１５−１として与えられてもよい。遅延された書込データ２１５−１は、別個の書込クロック２１４−１に応答して非同期ＦＩＦＯバッファ２１０−１の中に同期して送込まれてもよい。さらに、限定ではなく明瞭性の目的のため、読出データ２２５−１は、共通読出クロック２１３に応答して非同期ＦＩＦＯバッファ２１０−１から同期して送出されてもよく、そのような読出クロック２１３は非同期バッファ２１０−１〜２１０−Ｎの各々の出力または読出側をクロック制御するように用いられてもよい。
【００４５】
図２−３のブロック図では、チャネル２５０−１〜２５０−Ｎの各々は、対応の別個の読出クロック２１３−１〜２１３−Ｎと共通書込クロック２１４とを有する。たとえば、元の書込データ２０５−１は、共通書込クロック２１４に応答して可変遅延２０２−１の中に同期して送込まれてもよく、可変遅延２０２−１からの出力は遅延された書込データ２１５−１として与えられてもよい。遅延された書込データ２１５−１は、共通書込クロック２１４に応答して非同期ＦＩＦＯバッファ２１０−１の中に同期して送込まれてもよい。書込クロック２１４は非同期バッファ２１０−１〜２１０−Ｎの各々の入力または書込側をクロック制御するように用いられてもよい。さらに、限定ではなく明瞭性の目的のため、読出データ２２５−１は、別個の読出クロック２１３−１に応答して非同期ＦＩＦＯバッファ２１０−１から同期して送出されてもよい。
【００４６】
図２−４のブロック図では、チャネル２５０−１〜２５０−Ｎの各々は、共通読出クロック２１３と共通書込クロック２１４とを有する。たとえば、元の書込データ２０５−１は、共通書込クロック２１４に応答して可変遅延２０２−１の中に同期して送込まれてもよく、可変遅延２０２−１からの出力は遅延された書込データ２１５−１として与えられてもよい。遅延した書込データ２１５−１は、共通書込クロック２１４に応答して非同期ＦＩＦＯバッファ２１０−１の中に同期して送込まれてもよい。書込クロック２１４は、非同期バッファ２１０−１〜２１０−Ｎの各々の入力または書込側をクロック制御するように用いられてもよい。さらに、限定ではなく明瞭性の目的のため、読出データ２２５−１は、共通読出クロック２１３に応答して非同期ＦＩＦＯバッファ２１０−１から同期して送出されてもよく、そのような読出クロック２１３は、非同期バッファ２１０−１〜２１０−Ｎの各々の出力または読出側をクロック制御するように用いられてもよい。
【００４７】
第１のチャネルの書込アドレス信号が第２のチャネルの書込アドレス信号よりも早い書込クロックの１／２クロックサイクル未満であるとし、非同期バッファのためのそのような書込クロックがそのような非同期バッファのための読出クロックよりも速いとする。そのような例では、そのような第１のチャネルの書込クロック信号の１クロックサイクルだけ対応の書込データを遅延させることは、そのような第１および第２のチャネルの非同期バッファに書込まれるデータの整列に対して逆効果であろう。それに沿うと、各々のタップ選択回路２２０は、複数のチャネルのうちのチャネル２５０の非同期バッファ２２０を通した遅延がクロックサイクルの予め定められた部分未満だけ最長待ち時間と異なるか否かを判断するように構成されてもよい。
【００４８】
それに沿うと、たとえばタップ選択回路２２０−１などのタップ選択回路２２０は、たとえば待ち時間値２１８−１などの関連の待ち時間値および最長待ち時間値２１９を受信して、たとえば待ち時間値２１８−１から最長待ち時間値２１９を減算するなどして差を定めるように結合される減算器２０３を含んでもよい。この差は、そのようなタップ選択回路２２０の減算器２０３から比較器回路２０４に出力されてもよい。比較器回路２０４は、差の出力が予め定められた値未満であるか否かを判断するように構成されてもよい。例では、−１／２クロックサイクル遅延を用いてもよく、負の符号はデータが早いことを示す。しかしながら、他の装置では、クロックサイクルの別の部分、すなわち読出または書込クロックを用いてもよい。さらに、より高速のまたはより低速のクロックサイクルの部分を用いてもよい。一般的に、タップの増分が最長待ち時間を有する非同期バッファのデータに対するデータ整列を向上させる場合、しきい値を設定してもよい。比較器回路２０４の出力は、たとえばタップ選択回路２２０−１などのタップ選択回路のタップ選択器２０１に与えられてもよい。
【００４９】
加えてまたはこれに代えて、たとえばタップ選択回路２２０−１などのタップ選択回路２２０は、たとえば待ち時間値２１８−１などの関連の待ち時間値および最長待ち時間値２１９を受信して、最長待ち時間値２１９を待ち時間値２１８−１に加算するなどして和を定めるように結合される加算器２０３を含んでもよい。この和は、そのようなタップ選択回路２２０の加算器２０３から比較器回路２０４に出力されてもよい。装置において、比較器回路２０４は、加算器２０３から出力される和に応答してどのタップを選択するかを決めるように構成されるルックアップテーブルを含んでもよい。別の装置では、負の数字がたとえば１のまたは２の補数によって表わされる場合に、加算器２０３を用いてもよい。比較器回路２０４の出力は、たとえばタップ選択回路２２０−１などのタップ選択回路のタップ選択器２０１に与えられてもよい。
【００５０】
タップ選択器２０１は、関連の可変遅延２０２のタップ選択を変更するように構成されてもよい。たとえば、タップ選択器２０１は、タップ選択のために比較器２０４から制御信号を受信するように結合されてもよい。タップ選択回路２２０とタップ選択器２０１との両者ともが、可変遅延２０２のタップのうち１つのタップのタップ選択を制御するように結合されかつ構成されてもよい。
【００５１】
一般的に、初期起動またはリセットの後、非同期ＦＩＦＯバッファ２１０同士の間での待ち時間は静的であり得る。これは、書込および読出が、書込イネーブル信号と読出イネーブル信号との両者ともが活性であるまたはアサートされている（たとえば論理ハイに保持される）ある期間にわたってなど、連続的に行なわれる形態をとる。このように、初期動作の後、データは、書込および読出イネーブル信号の継続したアサートのそのような期間の間、整列され得る、ならびに一般的には整列されたままにされ得る。しかしながら、非同期境界２００は自己監視するため、データ整列の後の任意の変更がその後のデータ再整列の原因となることがある。このように、書込および読出イネーブル信号がその後ディアサートされかつ再アサートされれば、非同期境界２００は実質的に自動的に自身をリセットし得る。
【００５２】
図３は、例示的なＩＣダイ３００を描くブロック図である。ＩＣダイ３００は入出力インターフェイス３２０を含んでもよい。入出力インターフェイス３２０は、複数のＭＧＴ、ＩＯＢ、または他の種類の入出力インターフェイスブロック３１１を含んでもよい。インターフェイスブロック３１１は複数の通信リンク３１０−１〜３１０−Ｐに結合されてもよく、Ｐは１よりも大きな正の整数である（通信リンク３１０）。通信リンク３１０の各々は複数のチャネル３１２を含んでもよく、一群の通信リンク３１０は一群のデータ３５０のためのものであってもよい。上記例を続けて、各々の通信リンク３１０は、３２ビット幅、すなわち３２個のチャネルまたはレーン３１２、であってもよく、非同期境界２００に入力される通信リンク３１０のうち５つがまとめられて非同期境界２００からの１６０ビット幅の出力を与えてもよい。この例示的なブロック図でのチャネル３１２は通信チャネルであるが、他の種類のデータチャネルを用いてもよい。
【００５３】
入出力インターフェイス３２０は非同期境界２００−１に結合されてもよい。ＩＣダイ３００中に非同期境界２００−１〜２００−Ｍが存在してもよく、Ｍは１よりも大きな正の整数である（非同期境界２００）。各々の非同期境界２００はその入力側の少なくとも１つの書込クロック領域とその出力側の少なくとも１つの読出クロック領域とを有する。このように、各々の非同期境界２００は、書込データインターフェイス３２１と読出データインターフェイス３２２とを有する。各々の非同期境界２００は複数のチャネル３１２を有し、各々は、本明細書中に先に記載したようなものであり得る非同期バッファと、待ち時間判定ブロックと、タップ選択回路と、可変遅延とを含む。
【００５４】
本明細書中に先に記載したように、各々の非同期境界２００は、読出ポインタと書込ポインタとの間の差を定めてチャネル３１２の各々毎に待ち時間値を与えるように構成される。さらに、本明細書中に先に記載したように、各々の非同期境界２００は、非同期境界２００の一群のチャネル３１２のそのような非同期バッファの関連の待ち時間値および最長待ち時間値に応答して、１つ以上の非同期バッファを通して遅延を調整するように構成される。本明細書中に先に記載したように、タップ選択回路は、そのようなチャネルの関連の待ち時間値がクロックサイクルの予め定められた部分未満（または実現例に依存してそれよりも多く）だけそのような一群のチャネル３１２の最長待ち時間値と異なる場合に、チャネル３１２のうち１つのチャネルの非同期バッファを通して遅延を調整するように構成される。
【００５５】
ＩＣダイ３００は、プログラマブルリソースを用いてインスタンス化されるユーザの回路設計３０２を含んでもよく、そのようなプログラマブルリソースはたとえばＦＰＧＡであり得る。ユーザの設計は、本明細書中に記載のように１つ以上の非同期境界２００を有することによって恩恵を受けることがある。さらに、本明細書中に記載のような非同期インターフェイス２００−１がそのようなユーザの設計に結合されてもよい。
【００５６】
図３では、ＩＣダイ３００に流入するデータが描かれる。しかしながら、データは同様に、１つ以上の非同期境界２００を通ってＩＣダイ３００から流出してもよい。
【００５７】
クロック領域交差が複数存在し得るので、データおよび／またはクロックがスキューされ得るインスタンスが複数存在することがあり、そのようなスキューは複数のクロック領域交差について累加的であることがある。このように、複数の非同期境界２００を有することにより、そのようなスキューを低減してもよく、そのような累積を回避してもよい。さらに、非同期境界２００は自己監視するので、そのような複数のクロック領域交差の間のいずれのばらつきも調整され得る。
【００５８】
図４−１および図４−２は、それぞれの例示的なデータタイミング４１０および４２０を描く信号図である。図５−１および図５−２は、データタイミング４１０および４２０に対応する非同期境界２００の例示的な部分を描くブロック図である。
【００５９】
図５−１を参照して、入力クロック信号２１４−１、すなわち「書込クロック１」が非同期バッファ２１０−１に入力され、書込クロック信号２１４−２、すなわち「書込クロック２」が非同期バッファ２１０−２に入力され、書込クロック信号２１４−３、すなわち「書込クロック３」が非同期バッファ２１０−３に入力される。出力クロック信号２１３、すなわち「読出クロック」が非同期バッファ２１０−１〜２１０−３の各々に入力される。非同期バッファ２１０−１〜２１０−３の各々毎に、各々の読出場所毎に２つの書込場所が存在する。
【００６０】
図５−１の非同期バッファ２００についての図４−１を参照して、別個の読出および書込クロック領域同期が想定される。読出クロック信号２１３は書込クロック信号２１４−１〜２１４−３の各々のより低速の周波数、すなわち２分の１周波数で動作し、書込クロック信号２１４−１〜２１４−３のほぼ各々がすべて同じ周波数にある。
【００６１】
時刻４０２に、リセット信号４０１が論理ハイから論理ローに遷移し、こうしてＦＩＦＯ非同期バッファ２１０−１〜２１０−３をリセット状態から解放する。ＦＩＦＯ非同期バッファ２１０−１〜２１０−３の各々はトリガされた先端または立上がりエッジである。
【００６２】
ＦＩＦＯ非同期バッファ２１０−１については、書込アドレス１信号および書込データ１信号のそれぞれアドレスａ０およびデータｄ０におけるクロック制御を開始するのに、リセット状態を離脱した後の書込クロック信号２１４−１の第１の立上がりエッジ４０３を用いる。この例では、データの遅延の調整は書込または入力側にある。というのも、書込クロック信号２１４−１が読出クロック信号２１３よりも高速であるからである。換言すると、より高速の信号は遅延調整のより細かな粒度を可能にする。というのも、シフトレジスタ遅延の各々の遅延要素は、この例では、書込クロック信号の１クロックサイクルであるからである。しかしながら、他の装置では、遅延調整の時間間隔がより大きくなることを犠牲にして出力データを遅延させるという点で、書込クロック信号または読出クロック信号のいずれであってもより低速の方のクロック信号が調整がなされ得る側であってもよい。
【００６３】
この例では、書込データ１の書込データｄ０が非同期バッファ２１０−１〜２１０−３のうち非同期バッファ２１０−１に書込まれるべきすべての３つの書込チャネル１〜３の最近のデータであるので、チャネル１と関連付けられるデータを遅延させるのにタップ調整は行なわれない。すなわち、書込データ１を遅延させるまたはさらに遅延させるのにタップは選択されない。換言すると、アドレスａ０が書込アドレス信号１上のアドレスａ１に遷移する時刻４０８から、アドレスａ０は、時間量４０６だけより早く書込アドレス信号２上のアドレスａ１に遷移する。同様に、アドレスａ０は、アドレスａ０が書込アドレス信号１上のアドレスａ１に遷移する時刻４０８から時間量４０７だけより早く書込アドレス信号３上のアドレスａ１に遷移する。この例では、書込データ１上のデータｄ０が非同期バッファ２１０−１に書込まれる前におよび書込データ２上のデータｄ０が非同期バッファ２１０−２に書込まれる前に、遅延がまったく加えられずに書込データ３上のｄ０などの最も早いデータが非同期バッファ２１０−３に書込まれる。
【００６４】
ＦＩＦＯ非同期バッファ２１０−２については、それぞれ書込データ２信号および書込アドレス２信号のアドレスａ０にあるデータｄ０におけるクロック制御を開始するのに、リセット状態を離脱した後の書込クロック信号２１４−２の第１の立上がりエッジ４０４を用いる。再びこの例では、データの遅延の調整は書込または入力側にある。というのも、書込クロック信号２１４−２は読出クロック信号２１３よりも高速であるからである。ＦＩＦＯ非同期バッファ２１０−２は、図示するように描かれた整列状態でリセット状態から出るので、データをさらに遅延させるのにタップ調整は行なわれない。換言すると、書込データ２は、書込データ１よりも早い書込クロックのクロックサイクルの１／２未満である。このように、書込クロック信号２１４−２の１クロックサイクルだけ書込データ２を遅延させることは、非同期バッファ２１０−１〜２１０−３に書込まれるデータの整列の向上に関して逆効果であろう。
【００６５】
ＦＩＦＯ非同期バッファ２１０−３については、それぞれ書込データ３信号および書込アドレス３信号のアドレスａ０にあるデータｄ０におけるクロック制御を開始するのに、リセット状態を離脱した後の書込クロック信号２１４−３の第１の立上がりエッジ４０５を用いる。再びこの例では、データの遅延の調整は書込または入力側にある。というのも、書込クロック信号２１４−３は読出クロック信号２１３よりも高速であるからである。ＦＩＦＯ非同期バッファ２１０−３は、図示するように描かれる整列状態でリセット状態から出るので、データをさらに遅延させるのにタップ調整が行なわれる。換言すると、書込データ３は書込データ１よりも早い書込クロックのクロックサイクルの１／２よりも大きい。このように、書込クロック信号２１４−３の１クロックサイクルだけ書込データ３を遅延させることは、非同期バッファ２１０−１〜２１０−３に書込まれるデータの整列に関して有用であろう。
【００６６】
この加えられる遅延の影響を図示して描くため、遅延された書込データ３信号を図示して描く。書込データ３を遅延させた後、すなわち書込データ３（遅延）の後、データｄ０は、遅延が加えられなかったならば書込データ３のデータｄ１の場所にある。このように、遅延のタップを書込データ３に加えて書込データ３（遅延）を与えることにより、チャネル１〜３のすべてのｄ０およびその後のデータは、チャネル３上の書込データ３にさらなる遅延を追加しないよりも、より近接して整列され得る。
【００６７】
図５−２を参照して、入力クロック信号２１４、すなわち「書込クロック」が非同期バッファ２１０−１〜２１０−３に入力される。出力クロック信号２１３−１、すなわち「読出クロック１」が非同期バッファ２１０−１に入力され、出力クロック信号２１３−２、すなわち「読出クロック２」が非同期バッファ２１０−２に入力され、出力クロック信号２１３−３、すなわち「読出クロック３」が非同期バッファ２１０−３に入力される。非同期バッファ２１０−１〜２１０−３の各々毎に、各々の読出場所毎に２つの書込場所が存在する。
【００６８】
図５−２の非同期バッファ２００についての図４−２を参照して、別個の読出および書込クロック領域同期が想定される。読出クロック信号２１３−１〜２１３−３は一般的に同じ周波数で動作し、その各々は書込クロック信号２１４のより低速の周波数、すなわち２分の１周波数、で動作する。
【００６９】
時刻４０２に、リセット信号４０１は論理ハイから論理ローに遷移し、こうしてＦＩＦＯ非同期バッファ２１０−１〜２１０−３をリセット状態から解放する。ＦＩＦＯ非同期バッファ２１０−１〜２１０−３の各々は、トリガされた先端または立上がりエッジである。
【００７０】
ＦＩＦＯ非同期バッファ２１０−１については、読出アドレス１信号および読出データ１信号のそれぞれアドレスａ０およびデータｄ０においてクロック制御を開始するのに、リセット状態を離脱した後の読出クロック信号２１３−１の第１の立上がりエッジ４０３を用いる。この例では、データの遅延の調整は、書込クロック信号２１４が読出クロック２１３−１〜２１３−３の各々よりも高速であったとしても、読出または出力側にある。換言すると、より低速の信号を用いることは、遅延調整のより低程度の粒度を利用可能であることを意味する。というのも、シフトレジスタ遅延の各々の遅延要素は、この例では、より低速の読出クロック信号の１クロックサイクルであるからである。
【００７１】
この例では、読出データ１の読出データｄ０が、非同期バッファ２１０−１〜２１０−３のうちの非同期バッファ２１０−１から読出すべきすべての３つの読出チャネル１〜３のうちの最新のものであるので、チャネル１と関連付けられるデータを遅延させるのにタップ調整は行なわれない、すなわち読出データ１を遅延させるまたはさらに遅延させるのにタップは選択されない。換言すると、アドレスａ０は、アドレスａ０が読出アドレス信号１上のアドレスａ１に遷移する時刻４０８から時間量４０６だけより早く読出アドレス信号２上のアドレスａ１に遷移する。同様に、アドレスａ０は、アドレスａ０が読出アドレス信号１上のアドレスａ１に遷移する時刻４０８から時間量４０７だけより早く読出アドレス信号３上のアドレスａ１に遷移する。この例では、時間量４０７は時間量４０６よりも大きいので、最も早いデータが非同期バッファ２１０−３に書込まれる。
【００７２】
ＦＩＦＯ非同期バッファ２１０−２については、それぞれ読出データ２信号および読出アドレス２信号のアドレスａ０にあるデータｄ０におけるクロック制御を開始するのに、リセット状態を離脱した後の読出クロック信号２１３−２の第１の立上がりエッジ４０４を用いる。再びこの例では、データの遅延の調整は読出または出力側にある。ＦＩＦＯ非同期バッファ２１０−２は、図示されるように描かれる整列状態でリセット状態から出るので、データをさらに遅延させるのにタップ調整は行なわれない。換言すると、読出データ２は読出データ１より早い読出クロックのクロックサイクルの１／２未満である。このため、読出クロック信号２１３−２の１クロックサイクルだけ読出データ２を遅延させることは、非同期バッファ２１０−１〜２１０−３から読出されるデータの整列に対して逆効果であろう。
【００７３】
しかしながら、（書込側で遅延される）読出データ信号２によって一般的に示されるように、書込クロック信号２１４の１クロックサイクルだけ非同期バッファ２１０−２の書込側でデータを遅延させることが有利であろう。（書込側で遅延される）読出データ信号２で図示して描かれるように、データ出力または読出側上でのデータ整列は、より高速の入力または書込側上での遅延によって向上され得る。より一般的には、入力側であってもまたは出力側であってもより高速の側での遅延がよりきめ細かい整列を与え得る。
【００７４】
ＦＩＦＯ非同期バッファ２１０−３については、それぞれ読出データ３信号および読出アドレス３信号のアドレスａ０にあるデータｄ０におけるクロック制御を開始するのに、リセット状態を離脱した後の読出クロック信号２１３−３の第１の立上がりエッジ４０５を用いる。再びこの例では、データの遅延の調整は読出または出力側にある。ＦＩＦＯ非同期バッファ２１０−３は、図示されるように描かれる整列状態でリセット状態から出るので、データをさらに遅延させるのにタップ調整が行なわれる。換言すると、読出データ３は読出データ１よりも早い読出クロックのクロックサイクルの１／２よりも大きい。このように、読出クロック信号２１４−３の１クロックサイクルだけ読出データ３を遅延させることは、非同期バッファ２１０−１〜２１０−３に書込まれるデータの整列に対して有用であろう。
【００７５】
この加えられる遅延の影響を図示して描くため、遅延された読出データ３信号を図示して描く。読出データ３を遅延させて読出データ３（遅延）を与えた後、読出データ３（遅延）のデータｄ０は、遅延が加えられなかったならば読出データ３データｄ１が存在するであろう場所にある。このように、遅延のタップを読出データ３に加えて読出データ３（遅延）を与えることにより、チャネル１〜３のすべてのｄ０およびその後のデータは、チャネル３上の読出データ３にさらなる遅延を加えない場合よりもより近接して整列され得る。
【００７６】
より高速の書込側で遅延が加えられる別の例示的な装置では、書込遅延の２つのタップを用いてもよく、その場合、書込クロック信号は読出クロック信号の周波数の２倍である。当然ながら、より高速の側で用いられるタップの数は、読出−書込クロック領域の周波数の比率に依存して異なり得る。
【００７７】
さらに、アドレスは以前のように増分されるが、そのようなアドレスに書込まれるまたは読出されるデータは、そのようなデータが以前そうであったよりも実質的に「より早い」。なぜなら、データのみがさらに遅延されるからである。換言すると、本明細書中に記載のようなデータ整列のためにデータのみがさらに遅延され、そのような遅延されたデータにそれぞれ関連付けられるアドレスには対応の遅延が加えられない。実際、これは、アドレスに影響を及ぼさずに、書込アドレスと読出アドレスとの間に存在する測定差に基づいて遅延調整がどのように行なわれるかである。アドレスが遅延されれば、これは読出ポインタと書込ポインタとの間で測定値を変えるであろうし、これは調整における一種の振動を引起し得る。
【００７８】
以上は例示的な装置を説明するが、本発明の範囲から逸脱することなく１つ以上の局面に従う他のおよびさらなる装置が考案されてもよい。本発明の範囲は以下の請求項およびその均等物によって定められる。商標はそれらのそれぞれの所有者の財産である。
【図１】
2015536073.tif 000003
【図２−１】
2015536073.tif 000004
【図２−２】
2015536073.tif 000005
【図２−３】
2015536073.tif 000006
【図２−４】
2015536073.tif 000007
【図３】
2015536073.tif 000008
【図４−１】
2015536073.tif 000009
【図４−２】
2015536073.tif 000010
【図５−１】
2015536073.tif 000011
【図５−２】
2015536073.tif 000012
【手続補正書】
【提出日】平成26年12月4日(2014.12.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
装置であって、
複数のチャネルを備え、
前記複数のチャネルの各々は、非同期バッファと、待ち時間判定ブロックと、タップ選択回路と、可変遅延とを含み、さらに
前記複数のチャネルの各々の前記待ち時間判定ブロックおよび前記タップ選択回路に結合される待ち時間ロケータを備え、
前記待ち時間ロケータは、前記複数のチャネルの中から最長待ち時間を同定するように構成され、前記複数のチャネルの各々の前記タップ選択回路に前記最長待ち時間を与えるように結合され、
前記複数のチャネルの各々毎に、
前記待ち時間判定ブロックは、前記非同期バッファに結合され、かつ前記複数のチャネルの初期整列の間および後に前記非同期バッファの待ち時間値を連続的に判定するように構成され、
前記タップ選択回路は前記待ち時間値および前記最長待ち時間を受信するように結合され、
前記タップ選択回路は前記可変遅延に結合され、
前記タップ選択回路は、前記待ち時間値および前記最長待ち時間に応答して前記可変遅延のタップのうち１つのタップを選択するように構成され、
前記待ち時間判定ブロックは、待ち時間を連続的に測定しかつ平均して、時間とともに向上する精度を有する待ち時間値を発生するように構成され、
前記タップ選択回路は、前記初期整列の後の前記非同期バッファの前記待ち時間値および前記最長待ち時間の変化に応答して前記可変遅延のタップのうち１つのタップの前記選択を調整するように構成される、装置。
【請求項２】
前記タップ選択回路は、前記複数のチャネルのうち１つのチャネルの前記非同期バッファを通した遅延がクロックサイクルの予め定められた部分未満だけ前記最長待ち時間と異なるか否かを判定するように構成される、請求項１に記載の装置。
【請求項３】
前記チャネルは通信チャネルである、請求項１または２に記載の装置。
【請求項４】
前記チャネルは一群のデータのためのものである、請求項２または３に記載の装置。
【請求項５】
前記チャネルの非同期バッファは入力側の第１のクロック信号および出力側の第２のクロック信号によってクロック制御され、
前記第１のクロック信号は前記第２のクロック信号よりも高速である、請求項２〜４のいずれかに記載の装置。
【請求項６】
前記複数のチャネルの各々の前記非同期バッファは入力側の第１の共通クロック信号および出力側の第２の共通クロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項７】
前記複数のチャネルの各々の前記非同期バッファは入力側の第１の別個のクロック信号および出力側の別個のクロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項８】
前記複数のチャネルの各々の前記非同期バッファは、入力側の共通クロック信号および出力側の別個のクロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項９】
前記複数のチャネルの各々の前記非同期バッファは、入力側の別個のクロック信号および出力側の共通クロック信号によってクロック制御される、請求項２〜５のいずれかに記載の装置。
【請求項１０】
前記タップ選択回路は、
前記待ち時間値および前記最長待ち時間を受信して前記待ち時間値から前記最長待ち時間の値を減算して差を定めるように結合される減算器と、
前記差が予め定められた値未満であるか否かを判断するように構成される比較器回路と、
前記比較器回路から制御信号を受信し、かつ前記可変遅延のタップのうちの前記タップの前記選択を行なうように構成されるタップ選択器とを備える、請求項１〜９のいずれかに記載の装置。
【請求項１１】
前記予め定められた値はクロックサイクルの部分である、請求項１０に記載の装置。
【請求項１２】
前記タップ選択回路は、
前記待ち時間値および前記最長待ち時間を受信して前記最長待ち時間の値を前記待ち時間値に加算して和を定めるように結合される加算器と、
前記和が予め定められた値未満であるか否かを判断するように構成される比較器回路と、
前記比較器回路から制御信号を受信し、かつ前記可変遅延のタップのうちの前記タップの前記選択を行なうように構成されるタップ選択器とを備える、請求項１〜１１のいずれかに記載の装置。
【請求項１３】
前記可変遅延は、選択された前記タップに応答して遅延させるべきデータを受信するように結合され、
前記可変遅延は、遅延されたデータを前記非同期バッファに与える、請求項１〜１２のいずれかに記載の装置。
【請求項１４】
前記可変遅延は、選択された前記タップに応答して遅延させるべきデータを前記非同期バッファから受信するように結合される、請求項１〜１２のいずれかに記載の装置。
【請求項１５】
請求項１〜１４のいずれかに記載の前記装置を備える集積回路。
【国際調査報告】
2015536073.tif 000013
2015536073.tif 000014
2015536073.tif 000015