(57)【要約】集積回路上に構築され得る１つ以上の構成可能なトランシーバを提供する。トランシーバは、構成メモリセルをオンまたはオフにすることによって構成することのできるオプションを有するさまざまな構成要素を含む。集積回路はまたプログラム可能なファブリックを含み得る。トランシーバにおける他の構成要素は、プログラム可能なファブリックによって制御されるオプションを有し得る。集積回路はまた１つ以上のプロセッサコアを含み得る。プロセッサコアおよびトランシーバは、プログラム可能なファブリックを通る複数の信号経路によって接続され得る。
2005519518.tif 000002
【特許請求の範囲】
【請求項１】
集積回路であって、
複数の構成メモリセルと、
選択可能な値を有する構成要素を含む少なくとも１つのトランシーバとを含み、前記構成要素は前記複数の構成メモリセルによって構成される、集積回路。
【請求項２】
前記構成要素のうち１つは巡回冗長コード発生器または巡回冗長コード検証ブロックである、請求項１に記載の集積回路。
【請求項３】
前記構成要素のうち１つはシリアライザまたはデシリアライザである、請求項１に記載の集積回路。
【請求項４】
前記デシリアライザはさらに、構成可能なコンマ検出機能を含む、請求項３に記載の集積回路。
【請求項５】
前記構成要素のうち１つは同期の損失検出器である、請求項１に記載の集積回路。
【請求項６】
プログラム可能なファブリックと、
前記構成要素の前記値を制御するために前記プログラム可能なファブリックによって生成される少なくとも１つの信号とをさらに含む、請求項１に記載の集積回路。
【請求項７】
前記構成要素のうち１つがエンコーダであり、前記少なくとも１つの信号が前記エンコーダを制御する、請求項６に記載の集積回路。
【請求項８】
集積回路であって、
プログラム可能なファブリックと、
前記プログラム可能なファブリックによって囲まれるプロセッサコアと、
前記プログラム可能なファブリックの周辺に位置する複数の構成可能なトランシーバと、
前記構成可能なトランシーバおよび前記プロセッサコアのうち少なくとも１つを接続する複数の信号経路とを含み、前記信号経路の各々の少なくとも一部分は前記プログラム可能なファブリックを通る、集積回路。
【請求項９】
複数の構成メモリセルをさらに含み、前記メモリセルのうちいくつかは前記構成可能なトランシーバに関連付けられる、請求項８に記載の集積回路。
【請求項１０】
前記構成可能なトランシーバのうち少なくとも１つは巡回冗長コード発生器および巡回冗長コード検証ブロックを含む、請求項９に記載の集積回路。
【請求項１１】
前記構成可能なトランシーバのうち少なくとも１つはシリアライザおよびデシリアライザを含む、請求項９に記載の集積回路。
【請求項１２】
前記デシリアライザはさらに、構成可能なコンマ検出機能を含む、請求項１１に記載の集積回路。
【請求項１３】
前記構成可能なトランシーバのうち少なくとも１つは同期の損失検出器を含む、請求項９に記載の集積回路。
【請求項１４】
前記プログラム可能なファブリックは、前記構成可能なトランシーバのうち少なくとも
１つを制御するために少なくとも１つの信号を生成する、請求項８に記載の集積回路。
【請求項１５】
前記構成可能なトランシーバのうち少なくとも１つがエンコーダを含み、前記少なくとも１つの信号が前記エンコーダを制御する、請求項１４に記載の集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
発明の分野
この発明はデータ通信に関し、より特定的には、構成可能な高速トランシーバに関する。
【背景技術】
【０００２】
発明の背景
処理技術の向上の結果、現在、集積回路に何百万ものトランジスタを載せることが可能である。これにより、集積回路の処理パワーの量が増大する。しかしながら、集積回路との間でデータをやりとりするのに不十分な入出力（Ｉ／Ｏ）リソースがある場合、処理パワーは浪費される恐れがある。高速Ｉ／Ｏトランシーバは、Ｉ／Ｏリソースのデータ転送速度を上げることによりこの問題を軽減させる。性能を向上させるために、回路設計者は高速トランシーバを集積回路に組込み始めている。
【０００３】
トランジスタ数の増加による別の効果は、より多くの回路を集積回路に配置できることである。これは、集積回路を設計する複雑さおよびコストがまた増すことを意味する。結果として、多くの供給業者は同じ集積回路を異なる市場に販売できることを望む。さらに、ユーザはまた、複雑な集積回路について学びかつこれを用いるコストが高いために、同じ集積回路を用いて異なる応用例をサポートすることを望む。たとえば、同じ製品が、さまざまな通信プロトコル、たとえばギガビット・イーサネット（Gigabit Ethernet）（登録商標）、ＸＡＵＩ、インフィニバンド（InfiniBand）、ファイバ・チャネル（Fibre Channel）などをサポートすることが望ましい。したがって、異なる目的のために用いることのできる融通性のある高速トランシーバが必要とされる。
【発明の開示】
【課題を解決するための手段】
【０００４】
発明の概要
この発明は、プログラム可能なファブリックと、このプログラム可能なファブリックの周辺に位置する複数の構成可能なトランシーバとを含む集積回路である。集積回路は１つ以上のプロセッサコアを含み得る。プロセッサコアおよびトランシーバはプログラム可能なファブリックを通る複数の信号経路によって接続することができる。
【０００５】
集積回路は複数の構成メモリセルを含む。セルのうちいくつかはプログラム可能なファブリックに関連付けられ、他のセルは構成可能なトランシーバに関連付けられる。これらのセルをオンにするかまたはオフにすることにより、ユーザは自身の製品に有用な特徴を選択することができる。
【０００６】
上述のこの発明の概要は、開示されたこの発明の各実施例を説明することを意図するものではない。添付の図面および以下の詳細な説明はこの発明のさらなる具体的な実施例および局面を提供する。
【発明を実施するための最良の形態】
【０００７】
発明の詳細な説明
図１には、この発明の集積回路１００を示す概略図が示される。これは、プログラム可能なファブリック１０６の外側に位置決めされるトランシーバ１０２〜１０４などの複数のトランシーバを含む。一実施例では、プログラム可能なファブリック１０６はフィールド・プログラマブル・ゲートアレイ（ＦＰＧＡ）ファブリックを含む。１つ以上のプロセ
ッサコア、たとえばプロセッサコア１１０は、随意には、プログラム可能なファブリック１０６の内側に組込まれてもよい。プロセッサコア１１０は１つ以上のトランシーバに接続され得る。図１においては、ルーティングされた経路１１４〜１１５の対を用いて、トランシーバ１０２からインターフェイス層１１２を通りプロセッサコア１１０に達する接続を概略的に示す。プロセッサコア１１０は好ましくは高速でデータを処理するよう設計される。従って、トランシーバ１０２〜１０４は好ましくは高速トランシーバである。
【０００８】
プロセッサコア１１０は、マイクロプロセッサ、ネットワークプロセッサ、ビデオプロセッサなどのさまざまな信号処理装置のうちの１つであり得る。プログラム可能なファブリック１０６内に２つ以上のプロセッサコアを組込み得ることに留意されたい。
【０００９】
ユーザは、プログラム可能なファブリック１０６において複数の回路を構成し得る。これらの回路のうちいくつかはトランシーバ１０２〜１０４と通信し得る。たとえば、図１は、トランシーバ１０３と通信するプログラム可能なファブリック１０６における回路１１８を示す。
【００１０】
この発明では、（プログラム可能なファブリック１０６に加えて）トランシーバのうち少なくとも１つが構成可能である。図２は、プログラム可能な論理装置の構成を示すこの発明のシステム２００の概略図を示す。システム２００は、構成ビットストリームをＦＰＧＡ２０４に送出するのに用いることのできる（プログラム可能な読出専用メモリ２０２などの）不揮発性メモリを含む。ＦＰＧＡ２０４は参照番号２１０で示される複数の構成メモリセルを含み、これら構成メモリセルは、参照番号２１２で示される複数のバスを介してフレームレジスタ２０６に接続される。これらのバスによりフレームレジスタ２０６がメモリセル２１０の状態を設定することが可能となり、これによりＦＰＧＡ２０４が構成される。構成メモリセルのうちいくつかを用いてプログラム可能なファブリック１０６を構成し、他の構成メモリセルを用いてトランシーバを構成する。たとえば、ブロック２１６および２１８における構成メモリセルを用いて、図１におけるトランシーバ１０３および１０４などの２つの別個のトランシーバを構成する。典型的には、ブロックに関連付けられる多くの構成メモリセルがあることに留意されたい。
【００１１】
プログラム可能なファブリック１０６とトランシーバ１０２〜１０４との間の１つの違いは、プログラム可能なファブリックがユーザによる任意の論理機能の実現を意図したものであり（このため、プログラム可能なファブリックはほぼ任意の相互接続性を提供する必要がある）、トランシーバが特定の機能（高速の直列Ｉ／Ｏおよび関連する動作）を実現し、こうして、関連するメモリセルが動作の局面を変更するが回路の根本的な目的は変えないことである。プログラム可能なファブリックにおいては、メモリセルは、所望の如何なる論理設計をも実現するいずれかの所望の方法で論理ブロック関数および相互接続を規定する。トランシーバにおいては、いくつかのメモリセルは所与のサブコンポーネントの挙動を変更するが、そのサブコンポーネントの根本的な機能は変えない。トランシーバに関連付けられる他のメモリセルは、トランシーバのデータ経路においてサブコンポーネントを含むかまたは除外することによりルーティングを変更するが、全体的なデータの流れまたはデータ経路の目的、すなわち、集積回路内の並列デジタルデータを集積回路外の直列データ線との間でやりとりすること、は変えない。この設計の利点は、トランシーバにおける機能の多くがプログラム可能なファブリックにおいて実現された場合に可能であり得るよりもはるかに効率的（より速い動作速度、より狭い面積およびより少ないパワー）に実現されることであるが、これらは、広範囲にわたる高速Ｉ／Ｏの応用例に用いるのに十分な融通性を維持する。トランシーバのいくつかの部分は高度に特殊化されており、プログラム可能なファブリックまたは低速Ｉ／Ｏリソースを用いると実現されないだろう。
【００１２】
一実施例では、トランシーバの一部分は構成メモリセルを用いて構成され得、別の部分はプログラム可能なファブリックにおける構成された論理によって駆動され得る。当然、トランシーバは構成メモリセルによって完全に制御される可能性がある。
【００１３】
図３は、図１の集積回路１００において構築することのできる１つのトランシーバ１３０を示すブロック図である。トランシーバ１３０は、差動出力信号をサポートする出力ポート１３２と差動入力信号を受信する入力ポート１３４とを介して外部装置（図示せず）とインターフェイスする。トランシーバ１３０は、送信データ経路１３６、受信データ経路１３８、（信号線１４０として集合的に示される）複数のクロック信号、ＣＲＣ（巡回冗長コード）状態信号１４２および同期の損失信号１４４を介してプログラム可能なファブリック１０６とインターフェイスする。一実施例では、データ経路１３６および１３８の幅は、１バイト、２バイトまたは４バイトとなるよう独立して構成可能に選択され得る。これにより、クロック周波数が低い幅広のデータ経路対クロック周波数が高い幅狭のデータ経路の間でプログラム可能なファブリック１０６における工学上のトレードオフが可能となる。
【００１４】
トランシーバにおいて他の信号およびサブコンポーネントがあり得ることに留意されたい。最も重要な信号およびサブコンポーネントだけが図３に示される。
【００１５】
トランシーバ１３０の送信機側１５０を最初に説明する。データ経路１３６上のデジタルデータは、バイパス可能なＣＲＣ発生器１５２によって処理される。この発生器は一般に用いられる３２ビットＣＲＣを計算し、当該３２ビットＣＲＣを伝送されているデータパケットに挿入する。様々なプロトコルが様々な方法でデータを処理し、ＣＲＣ発生器１５２は適切なデータの組上でＣＲＣ計算を実行できるようにデータパケット境界を認識する必要がある。ＣＲＣ発生器１５２は以下の構成オプションを有し得る。
【００１６】
（ａ）  このＣＲＣ発生器の使用またはバイパス。
【００１７】
（ｂ）  リモート受信機におけるＣＲＣエラーの検出をテストするためにＣＲＣ計算を破壊する（corrupt）よう用いる値。
【００１８】
（ｃ）  たとえば、ファイバ・チャネル、ギガビット・イーサネット（登録商標）、インフィニバンドまたはユーザによって規定された規格をサポートする伝送規格の選択。
【００１９】
（ｄ）  ユーザによって規定された規格に対する、パケット開始およびパケット終了制御文字。
【００２０】
結果として得られるデータはバイパス可能なエンコーダ１５４に送出される。一実施例では、エンコーダ１５４は８Ｂ／１０Ｂエンコーダである。これは、ギガビット・イーサネット（登録商標）、ＸＡＵＩ、ファイバ・チャネルおよびインフィニバンドに対して用いられる同じ２５６個のデータ文字と１２個の制御文字とを用いる。これは、適用される１文字当り合計９ビットのＫ−文字信号とともに８ビットのデータを受取る。Ｋ−文字信号が「高い」場合、データは、８Ｂ／１０Ｂコードにおいて利用可能な１２個の予想されるＫ−文字のうちの１つに符号化されるだろう。Ｋ−文字入力が「低い」場合、上述の８ビットは規格のデータとして符号化されるだろう。Ｋ−文字入力が「高く」、かつユーザが予め割当てられた組合せのうちの１つ以外を適用する場合、エラー信号が生成される可能性がある。８Ｂ／１０Ｂエンコーダはユーザによって構成された実行中の不一致により初期設定され得る。
【００２１】
一実施例では、プログラム可能なファブリックはエンコーダ１５４に対する以下のオプ
ションを制御し得る。
【００２２】
（ａ）  このエンコーダの使用またはバイパス。
【００２３】
（ｂ）  実行中の不一致の維持を変更（これを用いて異常な、たとえば故意に誤っている、実行中の不一致を有するデータストリームを生成し得る）。
【００２４】
符号化されたデータは送信ＦＩＦＯバッファ１５６に送出される。このバッファは、線１４０上でプログラム可能なファブリック１０６によって生成されるクロック信号によって制御されるエンコーダ１５４と、送信クロック発生器１６０によって生成される基準クロックによって制御されるシリアライザ１５８との間に滑らかなインターフェイスをもたらす。これら２つのクロック信号は周波数ロックされるが、同じ位相をもたない可能性がある。この実施例では、基準クロックは優れたジッタ特性を有し、線１４０上のクロック信号は、プログラム可能なファブリック１０６における他のクロック信号に対してより良いクロックスキュー特性を有する。送信ＦＩＦＯバッファ１５６はこれら２つの周波数ロックされたクロック信号間の位相差を吸収する。一実施例では、ＦＩＦＯバッファ１５６は４の深度（depth）を有し、オーバフローおよびアンダーフロー状態を検出し得る。ＦＩＦＯバッファ１５６は、トランシーバ１３０において使用されるかまたはバイパスされるよう構成されてもよい。
【００２５】
ＦＩＦＯバッファ１５６におけるデータはシリアライザ１５８に送出され、このシリアライザ１５８が、直列リンクに亘る伝送のために並列デジタルデータを直列ビットストリームに多重化する。直列ビットストリームは、直列ビットストリームを出力ポート１３２における１対の差動直列出力接続へと駆動する送信バッファ１６２に送られる。シリアライザ１５８の構成オプションは、１基準クロック周期当り２０ビット（高速）または１０ビット（低速）のデータを送信することである。
【００２６】
受信機側１７０では、トランシーバ１３０は、受信機側１７０に対する基準クロック信号を生成する受信機クロック発生器１７６を含む。トランシーバ１３０は、差動入力ポート１３４から直列データを受取る受信バッファ１７２を含む。このデータはクロック−データ回復ブロック１７３に供給され、このクロック−データ回復ブロック１７３が（入力ポート１３４を介する）直列差動入力上の遷移を用いて、入ってくる直列データの周波数および位相を決定する。この情報を用いてデータを受取るタイミングをとる。このプロセスはクロックおよびデータ回復と称される。回復されたデータはデシリアライザ１７４に送出され、このデシリアライザ１７４が、受信された直列ビットストリームを並列デジタルデータに変換する。デシリアライザ１７４の構成オプションは、１クロック周期当り２０ビット（高速）または１０ビット（低速）のデータを受信することである。
【００２７】
デシリアライザ１７４はまたコンマ検出機能を実行する。（８Ｂ／１０Ｂ符号化などの）いくつかの復号アルゴリズムにおいては、「コンマ」は、バイト内で左寄せのみが起こることが保証される識別されたパターンである。たとえば、８Ｂ／１０Ｂ復号においては２つのコンマパターン、すなわち「プラス」コンマおよび「マイナス」コンマがある。コンマの検出は、受取られた直列ビットストリーム内でバイト整列を規定するのに役立つ。コンマ検出に対する構成オプションは以下のとおりであり得る。
【００２８】
（ａ）  代替的なコンマ定義。
【００２９】
（ｂ）  プラスコンマ上のみ、マイナスコンマ上のみ、両方の上で非同期「コンマ検出」フラグを立てるかまたはこれらの上では当該フラグを立てないオプション。
【００３０】
（ｃ）  半ワード境界上でのコンマ整列を強制するオプション。
【００３１】
（ｄ）  一実施例では、プログラム可能なファブリック１０６は、コンマ検出回路がプラスコンマ、マイナスコンマ、両方を認識するかまたはこれらを認識せずにバイト境界を再整列させるかどうか制御する信号を送り得る。
【００３２】
次いで、並列データがデコーダ１７８に渡される。デコーダ１７８は、対応するエンコーダによって以前に符号化されているデジタルデータを復号する。デコーダ１７８は以下の構成オプションを有し得る。
【００３３】
（ａ）  このデコーダの使用またはバイパス。
【００３４】
（ｂ）  プラスコンマ上のみ、マイナスコンマ上のみ、両方の上で同期「コンマ」フラグ（トランシーバ・プログラム可能なファブリックインターフェイスにおいて各受取られたバイトに付加される状態ビット）を立てるかまたはこれらの上では当該フラグを立てないオプション。さらに、有効なコンマに対してのみこのフラグを設定するオプション（いくつかの無効なコンマパターンも可能である）。
【００３５】
次いで、復号されたデータが弾性バッファ１８２に送られ、この弾性バッファ１８２がチャネルボンディングおよびクロック訂正コントローラ１８４に関連してチャネルボンディングおよびクロック訂正動作を実行する。弾性バッファ１８２は以下の構成オプションを有し得る。
【００３６】
（ａ）  弾性バッファの使用またはバイパス。
【００３７】
（ｂ）  クロック訂正の使用または禁止。
【００３８】
（ｃ）  バッファオーバフローまたはアンダーフローのフラグを立てるためのしきい値。
【００３９】
（ｄ）  弾性バッファの動作（クロック訂正およびチャネルボンディング）に関連するオプション、たとえば、チャネルボンディングモードの選択、選択可能なバイト値（８ビットまたは１０ビット）を整合させる選択可能な長さのチャネルボンディングシーケンスの選択可能な数の選択、およびクロック訂正シーケンスに対する類似の選択。
【００４０】
弾性バッファ１８２におけるデータは、データ経路１３８を介してプログラム可能なファブリックに送出される。データ幅は、１バイト、２バイトまたは４バイトとなるよう構成可能に選択することができる。
【００４１】
弾性バッファ１８２はＣＲＣ検証ブロック１８６に随意に接続され得る。このブロックは、受取られたデータパケットの終端に現れると予想される一般に用いられる３２ビットＣＲＣを検証する。信号が線１４２上でプログラム可能なファブリックに送出されて検証の結果を示し得る。ＣＲＣを実行するために、検証ブロック１８６は（上述のＣＲＣ生成ブロック１５２に類似の）データパケット境界を認識しなければならない。ＣＲＣ検証ブロック１８６は以下の構成オプションを有し得る。
【００４２】
（ａ）  このＣＲＣ検証ブロックの使用またはバイパス。
【００４３】
（ｂ）  たとえば、ファイバ・チャネル、ギガビット・イーサネット（登録商標）、インフィニバンドまたはユーザによって規定された規格をサポートする伝送規格の選択。
【００４４】
（ｃ）  ユーザによって規定された規格に対する、パケット開始およびパケット終了制御文字。
【００４５】
トランシーバ１３０は随意には同期の損失検出器１８８を含み得る。これはコンマ検出１７４、デコーダ１７８および弾性バッファ１８２の出力を解読して、入ってくるバイトストリームが同期しているかどうかの判断を下す。信号は線１４４上でプログラム可能なファブリックに送出され得る。同期の損失検出器１８８は以下の構成オプションを有し得る。
【００４６】
（ａ）  この検出器の使用またはバイパス。
【００４７】
（ｂ）  「同期の損失」状態を引き起こす無効な文字の数を設定するオプション。
【００４８】
（ｃ）  同期の損失を判断するために１つの無効な文字の影響を否定する有効な文字の数を設定するオプション。
【００４９】
同期の損失検出器１８８がバイパスされる場合、デコーダ１７８および弾性バッファ１８２の状態情報は、他の状態線を用いてプログラム可能なファブリックに送出される必要があるかもしれない。
【００５０】
再び図２を参照すると、この発明の構成可能なトランシーバ上の構成情報がＰＲＯＭ２０２に記憶され得る。ユーザは、異なる構成ビットストリームをＦＰＧＡ２０４に送出することにより異なるオプションを選択し得る。
【００５１】
この発明の当業者は、この明細書中における開示の結果として加えられ得るさまざまな変更および追加を認識するだろう。したがって、このようなすべての変更および追加はこの発明の範囲内であると考えられ、添付の特許請求の範囲およびその同等物によってのみ限定されるべきである。
【図面の簡単な説明】
【００５２】
【図１】この発明の集積回路を示す概略図である。
【図２】この発明のシステムを示す概略図である。
【図３】この発明のトランシーバ設計を示すブロック図である。
【図１】
2005519518.tif 000003
【図２】
2005519518.tif 000004
【図３】
2005519518.tif 000005
【国際調査報告】
2005519518.tif 000006
2005519518.tif 000007
2005519518.tif 000008