(57)【特許請求の範囲】
【請求項１】
データパケットの完全性をデータパケットに存在する完全性値で検証するプロトコルを使ってデータパケットを伝送する方法であって、
データパケットを受信するステップと、
データパケット全体を受信する前に、データパケットの伝送が割込みされているという標示を受信するステップと、
割込みの標示に応答して、データパケットの完全性値を保存するステップと、
データパケットのパケット終了の標識を受信するステップと、
パケット終了の標識の受信に応答して、保存した完全性値をデータパケットの伝送に挿入するステップと、を含む方法。
【請求項２】
データパケットが所定の長さをもつ、請求項１の方法。
【請求項３】
受信したときにデータパケットの完全性値を生成するステップをさらに含む、請求項２の方法。
【請求項４】
受信したデータパケットを規定の伝送長さに合うようにフォーマットするステップをさらに含む、請求項３の方法。
【請求項５】
割込みの標示に応答して、データパケットの伝送に待ちサイクルを追加するステップをさらに含む、請求項４の方法。
【請求項６】
データパケットの伝送に使う伝送媒体が、受信するデータパケットのサイズよりも小さく、前記フォーマットするステップが、
データパケットの伝送を最初に伝送される第１部分と２番目に伝送される第２部分とに分割するステップを含む、請求項５の方法。
【請求項７】
データパケットの伝送の割込みが、宛先のクロックドメインとは異なるクロックドメインから伝送することによって起こる、請求項６の方法。
【請求項８】
データパケットの完全性をデータパケットに存在する完全性値で検証するプロトコルを使用してデータパケットを伝送する方法であって、
所定の長さのデータパケットを受信するステップと、
受信したときにデータパケットの完全性値を生成するステップと、
受信したデータパケットを規定の伝送長さに合うようにフォーマットするステップと、
データパケット全体を受信する前に、データパケットの伝送が割込みされているという標示を受信するステップと、
割込みの標示に応答して、データパケットの完全性値を保存するステップと、
割込みの標示に応答して、データパケットの伝送に待ちサイクルを追加するステップと
データパケットのパケット終了の標識を受信するステップと、
パケット終了の標識の受信に応答して、保存した完全性値をデータパケットの伝送に挿入するステップと、を含む方法。
【請求項９】
データパケットの伝送に使用する伝送媒体が、受信するデータパケットのサイズよりも小さく、前記フォーマットするステップが、
データパケットの伝送を最初に伝送される第１部分と２番目に伝送される第２部分とに分割するステップを含む、請求項８の方法。
【請求項１０】
前記データパケットの伝送を分割するステップが、
第２部分をシフトレジスタに格納するステップを含む、請求項９の方法。
【請求項１１】
データパケットの伝送の割込みが、宛先のクロックドメインとは異なるクロックドメインを伝送することにより起こる、請求項１０の方法。
【請求項１２】
データパケットを送信する装置であって、
所定の長さのデータパケットを受信する回路素子と、
受信したデータパケットを伝送する回路素子と、
受信したデータパケットの伝送がデータパケット全体を受信する前に割込みされている場合、割込みの標示を生成する標示回路素子と、
割込みの標示に応答して、データパケットの完全性値を格納する格納回路素子と、
パケット終了の標識に関しデータパケットの受信を監視し、パケット終了の通知を生成するモニタリング回路素子と、
パケット終了の通知の受信に応答して、保存した完全性値をデータパケットの伝送に挿入するフォーマット回路素子と、を含む装置。
【請求項１３】
データパケットの完全性をデータパケットに存在する完全性値で検証するプロトコルを使ってデータパケットを伝送する装置であって、
所定の長さのデータパケットを受信する手段と、
受信したときにデータパケットの完全性値を生成する手段と、
受信したデータパケットを規定の伝送長さに合うようにフォーマットする手段と、
データパケットの伝送がデータパケット全体を受信する前に割込みされたという標示を受信する手段と、
割込みの標示に応答して、データパケットの完全性値を保存する手段と、
割込みの標示に応答して、データパケットの伝送に待ちサイクルを追加する手段と、
データパケットのパケット終了の標識を受信する手段と、
パケット終了の標識の受信に応答して、保存した完全性値をデータパケットの伝送に挿入する手段と、を含む装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的に集積回路に関係し、より具体的には集積回路におけるデータの伝送に関係する。
【背景技術】
【０００２】
かつてシステムの様々なエレメント間のデータの高速通信は、比較的少数のアプリケーションに限られていた。しかし現在、高速通信はほとんどのアプリケーションに必要なものとなってきている。高速通信は一般に、（送信機により）送信し、宛先において（受信機で）再構成できるパケットにデータを分解することによってなされる。データパケットの完全性は、巡回冗長コード（ＣＲＣ：CyclicRedundancy Coding）や可変ＣＲＣ（ＶＣＲＣ：Variant CRC）などのデータエラー／補正技術を使って確保される。ＣＲＣおよびＶＣＲＣはデータパケットの一部であり、各伝送ごとに計算される。
【０００３】
代表的なベンダー設計ソリューションは、インフィニバンド（Ｒ）などの特定のプロトコルに従う顧客設計の２つの異なる部分間の高速データパケット通信を行う送信機／受信機パッケージを提供する。
【発明の開示】
【発明が解決しようとする課題】
【０００４】
パッケージソリューションと顧客設計で使う伝送媒体の容量は必ずしも同じではない。その結果、データパケットの伝送は、送信機が容量一杯になるなどの一定の状態や、異なるクロックドメイン（Clockdomain）でのデータパケットの伝送の結果として機能停止に陥ることがある。
【０００５】
送信機／受信機パッケージの現在の設計は、機能停止の解決に対するソリューションを個々の必要に合わせて作成する各顧客に頼っている。残念ながら、このために同じ問題に対して多数の異なるソリューションができる結果となり、その多くは互いに互換性がない。
【０００６】
そのため、送信機／受信機パッケージにおけるこれら伝送の機能停止を解決して、複数の異なる顧客インターフェースと矛盾がなくエラーを起こしにくいソリューションを提供する方法および装置を得ることは著しく有利であろう。
【課題を解決するための手段】
【０００７】
ある側面では、本発明はデータパケットの完全性（インテグリティ）をデータパケットに存在する完全性値（integrityvalue）で検証するプロトコルを使ってデータパケットを伝送する方法である。方法は、データパケット（データパケットは所定の長さをもつことができる）を受信するステップと、データパケットの伝送がデータパケット全体を受信する前に割込みされたという標示を受信するステップを含む。方法はまた、割込みの標示に応答して、データパケットの完全性値を保存するステップを含む。方法はさらに、データパケットのパケット終了の標識を受信するステップと、パケット終了の標識の受信に応答して、保存した完全性値をデータパケットの伝送に挿入するステップを含む。
【０００８】
方法は、受信したときにデータパケットの完全性値を生成するステップを含むことができる。方法はさらに、受信したデータパケットを規定の伝送長さに合うようにフォーマットするステップを含むことができる。さらに、方法は、割込みの標示に応答して、待ちサイクルをデータパケットの伝送に追加するステップを含むことができる。
【０００９】
データパケットを伝送するために使用する伝送媒体は、受信するデータパケットのサイズより小さくてもよい。その場合、フォーマットするステップは、データパケットの伝送を最初に伝送される第１部分と２番目に伝送される第２部分とに分割するステップを含む。
【００１０】
データパケットを宛先のクロックドメインとは異なるクロックドメインに伝送すると、データパケットの伝送の割込みを起こすことができる。
【発明を実施するための最良の形態】
【００１１】
本発明は、ＶＣＲＣデータの完全性をサポートするパケットベースのプロトコルを使用してデータを伝送する方法および装置である。データパケットの伝送中、クロックドメイン同士がクロスして、又は同様な他の理由のために休止が生じることがある。本発明は、待ちサイクルを伝送に追加し、休止が検出される時点でＶＣＲＣの計算値を保存することによってこれら休止を解決する。いったんデータパケット終了コードを受信してしまえば、保存されたＶＣＲＣ値はデータパケットに挿入されて、伝送される。
【００１２】
ここで図１を参照すると、集積回路に内蔵できる通信コア１００が、本発明の教唆に従いパケットベースのプロトコルを使ってデータをローカルソースからリモートソースに伝送する方法を実例説明するために示されている。本発明の好適な実施例では、パケットベースのプロトコルはインフィニバンド（Ｒ）アーキテクチャである。
【００１３】
通信コア１００はそれぞれ顧客インターフェース（１０２および１０６）とリンク／物理レイヤ（１０４および１０８）をもつローカル通信ソースとリモート通信ソースを含む。リンク／物理レイヤ１０８および１０４は次の同一エレメントを含む。すなわち、送信機（１０４Ａおよび１０８Ａ）、受信機（１０４Ｂおよび１０８Ｂ）、シリアライザ（１０４Ｃおよび１０８Ｃ）、デシリアライザ（１０４Ｄおよび１０８Ｄ）。リンク／物理レイヤ１０８に関する以下の説明はリンク／物理レイヤ１０４の同等なエレメントにも同様に適用できる。
【００１４】
顧客インターフェース１０６はリモートソースへのアクセスを提供するピン等を含む。本発明の好適な実施例では、顧客インターフェース１０６はデータ完全性のために巡回冗長コード（ＣＲＣ）を使ってパケットのデータを提供する。
【００１５】
受信機１０８Ａは送信機１０４Ｂからデータパケットを受信し、ＣＲＣを使ってそれを顧客インターフェース１０６に送信する。
【００１６】
送信機１０８Ｂは顧客インターフェース１０６からデータを受信し、ＣＲＣを使ってデータパケットをエンコードし、データ完全性のために可変巡回冗長コード（ＶＣＲＣ）を使ってそれをシリアライザ１０８Ｃに送信する。シリアライザ１０８Ｃは１、４、８、および１２バイトのその構成幅に応じ、またシングルデータレート（ＳＤＲ：SingleData Rate）又はダブルデータレート（ＤＤＲ：Double Data Rate）のいずれかの転送速度で、パケットデータを利用できるワイヤ／ケーブル１１２で直列化する。
【００１７】
デシリアライザ１０８Ｄはワイヤ／ケーブル１１０でＶＣＲＣフォーマットのデータパケットを受信し、データパケットをデコードして、それを受信機１０８Ａに提供する。
【００１８】
送信機１０８Ｂは、以下図２に関連して説明するローカルソースによるパケットデータの受信時に休止を解決しながら、データパケットを送信する。
【００１９】
ここで図２を参照すると、本発明の教唆に従う図１の送信機１０８Ｂを詳細に図示する回路図が示されている。送信機１０８Ｂはパイプラインステージ２０４と物理レーン／ＦＩＦＯ２０６を含む。
【００２０】
パケットベースのプロトコルでは、データは所定の長さ（例、１バイト）をもつパケットで受信される。本発明の好適な実施例では、顧客インターフェース１０６が伝送するデータパケットは図３に示すデータパケット３００を再構成できる。データパケット３００は、パケット開始（StartOf Packer）標識、ペイロード（数バイトを含むことができるデータ）、ＣＲＣ値、ＶＣＲＣ（２バイト）値、パケット終了（ＥＯＰ：End Of Packet）標識をもつ。
【００２１】
本発明の好適な実施例では、パイプラインステージ２０４が顧客インターフェース１０６から受信したデータパケットは、可変巡回冗長コード（ＶＣＲＣ）データの完全性を満たし、かつ物理レーン２０６の構成に従うようにフォーマットされる。ＶＣＲＣデータパケットは図４に示すＶＣＲＣデータパケット４００と同様であろう。
【００２２】
本発明の好適な実施例では、物理レーン２０６は、シングルデータレート（ＳＤＲ）又はダブルデータレート（ＤＤＲ）のいずれかの転送速度で、１、４、８、１２バイトのデータの各クロックサイクルの伝送をサポートするように動的に構成可能である。物理レーン２０６の構成幅、転送速度（すなわち、ＳＤＲ又はＤＤＲ）、および顧客インターフェース１０６が受信するデータパケットの長さによって、受信するデータパケットは１から３のクロックサイクルで完全に伝送されることになる。物理レーン２０６は、物理レーン２０６からのデータパケットの伝送中に発生する休止（例、容量が一杯になる又はクロックドメインのクロッシング）を検出できるクロックドメインクロッシング（ＣＤＣ：ClockDomain Crossing）検出器２０６Ａを含む。
【００２３】
顧客インターフェース１０６は１９２ビット単位（すなわち、６ワード）でデータパケットをフォーマットレジスタ２０８およびＶＣＲＣ生成器２１４に伝送する。
【００２４】
フォーマットレジスタ２０８は、受信したデータパケットを物理レーン２０６がサポートするデータ幅と一致する新たなデータパケットにフォーマットする役割を担う。データパケットの幅によって、フォーマットレジスタ２０８は受信したパケットの一部をバッファ２１６に格納できる。さらに、新たにフォーマットされたデータパケットをフォーマットレジスタ２０８又はバッファ２１６からマルチプレクサＭ４に送る。
【００２５】
パケットフォーマットステートマシン２１０は、マルチプレクサＭ１からＭ４にデータパケットを送る場所を、シフトレジスタ２２０にデータパケットの一部をマルチプレクサＭ３に送る時を指示する。物理レーン２０６の現在の構成とデータ転送速度が構成したデータパケットを１サイクルで転送を完了できるなら、パケットフォーマットステートマシン２１０はマルチプレクサＭ４に対してデータパケット全体をマルチプレクサＭ１に伝送するよう指示し、そうでなければ、パケットフォーマットステートマシン２１０はマルチプレクサＭ４に対してパケットデータを下部と上部に分割してから、それぞれマルチプレクサＭ１およびＭ２に伝送するよう指示する。
【００２６】
パケットフォーマットステートマシン２１０はマルチプレクサＭ１に、受信したあらゆるパケットデータをマルチプレクサＭ３に置くように指示する。パケットデータが下部と上部に分割されていたら、パケットフォーマットステートマシン２１０はマルチプレクサＭ２に、上部をシフトレジスタ２２０に転送するよう指示する。
【００２７】
パケットステートマシン２１０はマルチプレクサＭ３に、受信したデータパケットを物理レーン２０６に伝送するよう指示する。データパケットが複数の部分に分割されていたら、マルチプレクサＭ３がその転送を完了した後、パケットステートマシン２１０がシフトレジスタ２２０に対して、データパケットの残りの部分をマルチプレクサＭ３に転送するよう指示し、マルチプレクサＭ３に対してデータパケットのその部分を物理レーン２０６に転送するよう指示する。
【００２８】
ＶＣＲＣ生成器２１４は受信したデータパケットに関し周知かつ理解されている技術を使ってＶＣＲＣ値を生成する。生成されたＶＣＲＣ値はＶＣＲＣマルチプレクサ２１８に提供される。
【００２９】
ＶＣＲＣマルチプレクサ２１８は、ＶＣＲＣステートマシン２１２から保留信号を受信したときにＶＣＲＣ値を格納するラッチのセット（図示せず）を含む。ＶＣＲＣマルチプレクサ２１８は、データパケットの転送のステージ（現在のクロックサイクルと完了）とパケットデータが上部および下部に分割されているかどうかによってＶＣＲＣ値をマルチプレクサＭ２又はＭ１のいずれかに提供する。
【００３０】
パケットデータがマルチプレクサＭ１に完全に格納されている場合、ＶＣＲＣマルチプレクサ２１８はデータパケットに挿入するためにＶＣＲＣ値をマルチプレクサＭ１に転送する。データパケットが上部と下部に分割されている場合、ＶＣＲＣマルチプレクサ２１８はデータパケットに挿入するためにＶＣＲＣ値をマルチプレクサＭ２に転送する。
【００３１】
ここで図５を参照すると、本発明の教唆に従う図２のＦＩＦＯ２０６によるパケットデータの受信中に発生する休止（機能停止）の処理方法を図示するフローチャートが示されている。本発明の好適な実施例では、データパケットはＣＲＣパケットベースのプロトコルで顧客インターフェース１０６から受信される（ステップ５００）。
【００３２】
ＶＣＲＣステートマシン２１２はデータパケットの受信とＥＯＰ標識の制御信号を監視する（ステップ５０４）。ＥＯＰ標識を検出すると、ＶＣＲＣステートマシン２１２はデータパケットがマルチプレクサＭ１とＭ２に分割されているかどうかを判定する（ステップ５０６）。データパケットが分割されていたら、ＶＣＲＣステートマシン２１２はＶＣＲＣマルチプレクサ２１８に、ＶＣＲＣ値をマルチプレクサＭ２に伝送するよう指示し（ステップ５０８）、マルチプレクサＭ２によりＶＣＲＣ値をパケットデータに追加して、図２に関連して前述したデータパケットの伝送を進める（ステップ５２２）。
【００３３】
しかし、データパケットが分割されていなければ、ＶＣＲＣステートマシン２１２はＣＤＣ検出器２０６Ａを監視して、物理レーン２０６によるパケットデータの伝送時に休止（機能停止）が発生しているかどうかを判定する（ステップ５１０）。
【００３４】
休止が発生していたら、現在のデータパケットの伝送の処理に待ちサイクルを追加して、ＶＣＲＣステートマシン２１２がＶＣＲＣマルチプレクサ２１８に、保留信号を介して発生したＶＣＲＣ値を保留するよう命令する（ステップ５１２）。
【００３５】
図２に関連して上記説明したように１から３のクロックサイクルで起こるパケット終了後、ＶＣＲＣステートマシン２１２は、休止状態の結果として待ちサイクルが追加されたかどうかを判定する（ステップ５１４から５１６）。
【００３６】
待ちサイクルが追加されていれば、ＶＣＲＣステートマシン２１２はＶＣＲＣマルチプレクサ２１８に保留されたＶＣＲＣ値を使用するよう命令し、そうでなければマルチプレクサ２１８に生成したＶＣＲＣ値を使用するよう命令する（ステップ５１６から５２０）。その後、マルチプレクサ２１８は図２に関連して前述したようにＶＣＲＣ値をマルチプレクサＭ１又はＭ２のいずれかに伝送する。
【００３７】
以下の表１は、物理レーン２０６が１２バイト用に構成された場合、データパケットがどのように現れることがあるかの例を表し（Ｌ０からＬ１１は１バイトを直列で伝送する１レーンを表す）、各行は１クロックサイクルを表す。
【００３８】
【表１】
0004791339.tif 000002
【００３９】
行１は１クロックサイクルで送られる１２バイトのパケットを表す。行２および行３は、２クロックサイクルで送られる２４バイトのデータパケットを表す。行４は１クロックサイクルで送られる４バイトのデータパケットを表す。
【００４０】
以下の表２は、第１クロックサイクルで伝送中に休止が発生すること以外、上記表１で説明したのと同じデータパケットの伝送を表す。この場合、休止が終わった後、同じ１２バイトのデータパケットを第２クロックサイクルで送る。
【００４１】
【表２】
0004791339.tif 000003
【００４２】
このように、本発明の作用および構成は前述の説明から明らかになると思われる。図示、説明した方法およびシステムは好適なものとして特徴付けられているが、以下の請求項で定義される本発明の精神および範囲を逸脱することなく様々な変更または修正もしくはその両方を行えるであろうことは容易に明らかであろう。
【図面の簡単な説明】
【００４３】
添付の明細と合わせて、以下の図面を参照すれば、本発明をよりよく理解でき、当業者にはその利点がさらに明らかになるであろう。
【００４４】
【図１】集積回路に内蔵できる通信コアを示す図であり、本発明の教唆に従いデータをパケットベースのプロトコルを使ってローカルソースからリモートソースに伝送する方法を示す図である。
【図２】本発明の教唆に従う図１の送信機をより詳細に示す回路図である。
【図３】本発明の教唆に従う図２の顧客インターフェースが伝送できるデータパケットの図である。
【図４】本発明の教唆に従う図１の送信機のパイプラインステージが伝送できるデータパケットの図である。
【図５】本発明の教唆に従う図２のＦＩＦＯのパケットデータの受信中に発生する休止（機能停止）を処理する方法を図示するフローチャートである。
【図１】
0004791339.tif 000004
【図２】
0004791339.tif 000005
【図３】
0004791339.tif 000006
【図４】
0004791339.tif 000007
【図５】
0004791339.tif 000008