(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-29
(54)【発明の名称】複数の変換を使用するデータバス反転
(51)【国際特許分類】
H04L 25/02 20060101AFI20240822BHJP
H04L 25/49 20060101ALI20240822BHJP
【FI】
H04L25/02 J
H04L25/49
【審査請求】未請求
【予備審査請求】未請求
(21)【出願番号】P 2024510667
(86)(22)【出願日】2022-05-24
(85)【翻訳文提出日】2024-04-01
(86)【国際出願番号】 US2022030787
(87)【国際公開番号】W WO2023027791
(87)【国際公開日】2023-03-02
(32)【優先日】2021-08-25
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
(71)【出願人】
【識別番号】591025439
【氏名又は名称】ザイリンクス インコーポレイテッド
【氏名又は名称原語表記】XILINX INCORPORATED
(74)【代理人】
【識別番号】110002077
【氏名又は名称】園田・小林弁理士法人
(72)【発明者】
【氏名】スリニバサン, クリシュナン
(72)【発明者】
【氏名】アーマッド, サギール
【テーマコード(参考)】
5K029
【Fターム(参考)】
5K029AA20
5K029DD23
5K029GG03
5K029LL12
(57)【要約】
送信機回路は、反転回路と、第1の変換回路と、選択回路とを含む。反転回路は、第1のデータワードの複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成する。第1の変換回路は、第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって第2の変換されたデータワードを生成する。選択回路は、第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数に基づいて、第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択する。選択回路は更に、選択されたデータワードを出力する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
送信機回路であって、
第1のデータワードの複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成するように構成された反転回路と、
前記第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって、第2の変換されたデータワードを生成するように構成された第1の変換回路と、
選択回路であって、
前記第1のデータワードと前記第2のデータワードとの間の第1のビット反転数、前記第1の変換されたデータワードと前記第2のデータワードとの間の第2のビット反転数、及び前記第2の変換されたデータワードと前記第2のデータワードとの間の第3のビット反転数に基づいて、前記第1のデータワード、前記第1の変換されたデータワード、及び前記第2の変換されたデータワードのうちの1つを選択し、
前記選択されたデータワードを出力する、ように構成された、選択回路と、を備える、送信機回路。
【請求項2】
前記第1のデータワード及び前記第2のデータワードに対して第2の可逆演算を実行することによって、第3の変換されたデータワードを生成するように構成された第2の変換回路を更に備え、前記第2の可逆演算は前記第1の可逆演算とは異なる、請求項1に記載の送信機回路。
【請求項3】
前記第2の可逆演算は、ビット単位のXNOR演算である、請求項1又は2に記載の送信機回路。
【請求項4】
前記選択回路が、
前記第1のデータワードと前記第2のデータワードとの間の前記第1のビット反転数、前記第1の変換されたデータワードと前記第2のデータワードとの間の前記第2のビット反転数、及び前記第2の変換されたデータワードと前記第2のデータワードとの間の前記第3のビット反転数を決定するように更に構成されている、請求項1に記載の送信機回路。
【請求項5】
前記第1のデータワード、前記第1の変換されたデータワード、及び前記第2の変換されたデータワードのうちの前記1つを選択することは、
前記第1のビット反転数が前記第2のビット反転数及び前記第3のビット反転数よりも小さいことに基づいて、前記第1のデータワードを選択することと、
前記第2のビット反転数が前記第1のビット反転数及び前記第3のビット反転数よりも小さいことに基づいて、前記第1の変換されたデータワードを選択することと、
前記第3のビット反転数が前記第1のビット反転数及び前記第2のビット反転数よりも小さいことに基づいて、前記第2の変換されたデータワードを選択することと、を含む、請求項1に記載の送信機回路。
【請求項6】
前記第2のデータワードを記憶し、出力するように構成されたメモリを更に備える、請求項1に記載の送信機回路。
【請求項7】
電子デバイスであって、
送信機回路であって、
処理回路であって、
複数のビットを含む第1のデータワードを受信し、
前記第1のデータワードの前記複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成し、
前記第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって、第2の変換されたデータワードを生成する、ように構成された、処理回路と、
選択回路であって、
前記第1のデータワードと前記第2のデータワードとの間の第1のビット反転数、前記第1の変換されたデータワードと前記第2のデータワードとの間の第2のビット反転数、及び前記第2の変換されたデータワードと前記第2のデータワードとの間の第3のビット反転数に基づいて、前記第1のデータワード、前記第1の変換されたデータワード、及び前記第2の変換されたデータワードのうちの1つを選択するように構成された、選択回路と、を備え、前記送信機回路は前記選択されたデータワードを出力するように構成されている、送信機回路を備える、電子デバイス。
【請求項8】
前記処理回路は、
前記第1のデータワード及び前記第2のデータワードに対して第2の可逆演算を実行することによって、第3の変換されたデータワードを生成するように更に構成されており、前記第2の可逆演算は前記第1の可逆演算とは異なる、請求項7に記載の電子デバイス。
【請求項9】
前記第2の可逆演算がビット単位のXNOR演算である、請求項7又は8に記載の電子デバイス。
【請求項10】
前記選択回路は、
前記第1のデータワードと前記第2のデータワードとの間の前記第1のビット反転数、前記第1の変換されたデータワードと前記第2のデータワードとの間の前記第2のビット反転数、及び前記第2の変換されたデータワードと前記第2のデータワードとの間の前記第3のビット反転数を決定するように更に構成されている、請求項7に記載の電子デバイス。
【請求項11】
前記第1のデータワード、前記第1の変換されたデータワード、及び前記第2の変換されたデータワードのうちの前記1つを選択することは、
前記第1のビット反転数が前記第2のビット反転数及び前記第3のビット反転数よりも小さいことに基づいて、前記第1のデータワードを選択することと、
前記第2のビット反転数が前記第1のビット反転数及び前記第3のビット反転数よりも小さいことに基づいて、前記第1の変換されたデータワードを選択することと、
前記第3のビット反転数が前記第1のビット反転数及び前記第2のビット反転数よりも小さいことに基づいて、前記第2の変換されたデータワードを選択することと、を含む、請求項7に記載の電子デバイス。
【請求項12】
前記出力データワードを受信するように構成された受信機回路を更に備え、前記受信機回路は、
処理回路であって、
前記出力データワードの1ビット以上を反転することによって、第1の受信されたデータワードを生成し、
前記第1の可逆演算、前記出力データワード、及び前記第2のデータワードに基づいて第2の受信されたデータワードを生成する、ように構成された、処理回路を備える、請求項7に記載の電子デバイス。
【請求項13】
データワードを送信するための方法であって、前記方法は、
複数のビットを含む第1のデータワードを受信することと、
前記第1のデータワードの前記複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成することと、
前記第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって、第2の変換されたデータワードを生成することと、
前記第1のデータワードと前記第2のデータワードとの間の第1のビット反転数、前記第1の変換されたデータワードと前記第2のデータワードとの間の第2のビット反転数、及び前記第2の変換されたデータワードと前記第2のデータワードとの間の第3のビット反転数に基づいて、前記第1のデータワード、前記第1の変換されたデータワード、及び前記第2の変換されたデータワードのうちの1つを選択することと、
前記選択されたデータワードを出力することと、を含む、方法。
【請求項14】
前記第1のデータワード及び前記第2のデータワードに対して第2の可逆演算を実行することによって、第3の変換されたデータワードを生成することを更に含み、前記第2の可逆演算は前記第1の可逆演算とは異なる、請求項13に記載の方法。
【請求項15】
前記第2の可逆演算がビット単位のXNOR演算である、請求項13又は14に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
本開示の例は、概して、インタフェースシステムに関し、より詳細には、複数の変換を含むデータバス反転技法を採用するインタフェースシステムに関する。
【背景技術】
【0002】
インタフェースシステムは、集積回路(integrated circuit、IC)デバイス間又はICデバイス内で通信するために使用される。例えば、インタフェースシステムは、複数のICチップ間で通信するチップ間(chip-to-chip、C2C)インタフェースであってもよい。別の例では、インタフェースシステムは、ネットワークオンチップ(Network-on-Chip、NOC)である。インタフェースシステムのサイズは、対応するICチップ内の利用可能な空間に基づいて制限され、ICチップのサイズが減少するにつれて、インタフェースシステムのための利用可能な空間が減少し、インタフェースシステムのサイズを制限する。インタフェースシステムのサイズを制限することは、インタフェースシステムのチャネルを形成するトレース(例えば、ワイヤ)の数を制限する。したがって、より高い帯域幅に達するために、インタフェースシステムは、より高いデータレートで動作される。しかしながら、データレートが増加するにつれて、エラーの可能性が増加し、信号完全性を減少させる。
【0003】
より高いデータレートで動作するときに高い信号完全性を達成するために、ビットエラーレート(bit error rate、BER)はより低いレートで維持される。BERの一因は、現在のデータワードと以前に送信されたデータワードとの間で発生するビット反転数である。現在のデータワードと以前に送信されたデータワードとの間で生じるビット反転数を低減するために、現在のデータワードのビットが反転される(例えば、値の間でトグルされる)。いくつかの例では、データバス反転(Data Bus Inversion、DBI)などの技法が、送信されたデータワードと以前に送信されたデータワードとの間のビット反転数を低減するために使用される。DBI技法は、データワードを変換することと、前のデータワードと比較したデータワード及び変換されたデータワードのビット遷移の数に基づいて、データワード及び変換されたデータワードのうちの1つを送信することとを含む。
【0004】
DBI技法を採用する場合であっても、インタフェースシステムのサイズが減少し、及び/又はインタフェースシステムのデータレートが増加するにつれて、インタフェースシステムのBERは、現在のDBI技法の緩和能力を超えて増加し得る。したがって、インタフェースシステムのBERを更に低減し、ICチップ間で通信するときに発生するエラーを更に低減するために、データワード間のビット反転数を更に低減する必要がある。
【発明の概要】
【0005】
集積回路(IC)デバイス間のインタフェースシステムは、現在のデータワードと以前に送信されたデータワードとの間のビット反転数を制限して、インタフェースシステム内のエラー及びインタフェースシステムのビットエラーレートを軽減する。一例では、インタフェースは、とりわけ、チップ間(C2C)インタフェース又はネットワークオンチップ(NOC)である。現在のデータワードのビットと以前に送信されたデータワードのビットとの間のビット反転数を制限することは、1つ以上の可逆演算を現在及び以前に送信されたデータワードに適用することを含む。一例では、1つ以上の可逆演算は、とりわけ、ビット単位のXOR演算又はビット単位のXNOR演算を含む。可逆演算は、変換されたデータワードを生成するために、現在のデータワード及び前のデータワードに適用される。前のデータワードからの最小ビット反転数を有するデータワード(例えば、変換された又は変換されていないデータワード)が選択され、送信される。
【0006】
一例では、送信機回路は、反転回路と、第1の変換回路と、選択回路とを含む。反転回路は、第1のデータワードの複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成する。第1の変換回路は、第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって第2の変換されたデータワードを生成する。選択回路は、第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数に基づいて、第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択する。選択回路は更に、選択されたデータワードを出力する。
【0007】
一例では、電子デバイスは送信機回路を含む。送信機回路は、処理回路及び選択回路を含む。処理回路は、複数のビットを有する第1のデータワードを受信し、第1のデータワードの複数のビットのうちの1つ以上を反転することによって第1の変換されたデータワードを生成する。処理回路は更に、第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって、第2の変換データワードを生成する。選択回路は、第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数に基づいて、第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択する。送信機回路は、選択されたデータワードを出力する。
【0008】
一例では、データワードを送信する方法は、複数のビットを有する第1のデータワードを受信することと、第1のデータワードの複数のビットのうちの1つ以上を反転することによって第1の変換されたデータワードを生成することとを含む。本方法は、第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって第2の変換されたデータワードを生成することを更に含む。更に、本方法は、第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数に基づいて、第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択することを含む。更に、本方法は、選択されたデータワードを出力することを含む。
【0009】
これら及び他の態様は、以下の「発明を実施するための形態」を参照して理解され得る。
【図面の簡単な説明】
【0010】
上記の特徴が詳細に理解され得るように、上記で簡潔に要約されたより具体的な説明が、例示的な実装形態を参照することによって行われ得、それらの実装形態のうちのいくつかが添付の図面に示される。しかしながら、添付の図面は、典型的な例示の実装形態のみを示しており、したがって、その範囲を限定するものと見なされるべきではないことに留意されたい。
【
図1】一例による、例示的な電子デバイスを示すブロック図である。
【
図2】一例による、例示的なマルチチップシステムを示すブロック図である。
【
図3】一例による、例示的なプログラマブルデバイスを示すブロック図である。
【
図4】一例による、例示的なインタフェースシステムのブロック図である。
【
図5】一例による、データワードを送信するための方法のフローチャートを示す。
【0011】
理解を容易にするために、可能な場合には、図面に共通する同一の要素を示すために同一の参照番号が使用されている。一例の要素は、他の例に有益に組み込まれ得ることが企図される。
【発明を実施するための形態】
【0012】
インタフェースシステムは、集積回路(IC)デバイス間でデータワードを通信するために使用される。例示的なインタフェースは、チップ間(C2C)インタフェース及びネットワークオンチップ(NOC)インタフェースを含む。インタフェースシステムのエラーレートを低減するために、インタフェースシステムは、現在のデータワードと以前に送信されたデータワードとの間でトグルする(例えば、反転する)ビット数を低減する。一例では、変換されたデータワードが変換されていないデータワードよりもビット反転が少なくなり得るので、データワードを送信するときのビット反転数を低減するために、データワードは送信される前に反転される。一例では、現在のデータワードと前のデータワードとの間のビット反転数がデータワード中のビットの総数の50パーセント未満である場合、現在のデータワードは送信前に反転されない。現在のデータワードと前のデータとの間のビット反転数が、データワード中のビットの総数の50パーセントよりも大きい場合、現在のデータワードは、送信される前に反転される。
【0013】
しかしながら、場合によっては、上記の方法を適用しても、インタフェースシステムに利用可能な回路サイズの縮小及びより高いデータレートの使用により、インタフェースシステムのエラーレートが増加する。送信間のビット反転数を更に減少させるために、現在及び以前に送信されたデータワードに追加の演算が適用される。例えば、対応する変換されたデータワードを生成するために、1つ以上の可逆演算が現在及び前のデータワードに適用される。一例では、1つ以上の可逆演算は、とりわけ、ビット単位のXOR演算及びビット単位のXNOR演算を含む。送信用の変換されたデータワードを生成するために可逆演算を使用することは、低効率の場合に反転数を低減する。例えば、低効率の場合は、現在のデータワードと前のデータワードとの間の反転の総数が、データワード内のビットの総数の半分(例えば、50パーセントに近い)よりも1つ多いか又は1つ少ないときに存在し得る。そのような場合に反転の数を低減することは、対応するインタフェースシステムのエラーレートを更に低減する。
【0014】
様々な特徴が、図面を参照して以下に記載される。図面は縮尺どおりに描かれている場合もあるし、描かれていない場合もあり、同様の構造又は機能の要素は図面全体を通して同様の参照番号によって表されていることに留意されたい。図面は、特徴の説明を容易にすることのみを意図していることに留意されたい。それらは、特許請求の範囲に記載された発明の網羅的な説明として又は特許請求の範囲に記載された発明の範囲を限定するものとして意図されていない。加えて、図示された例は、示された全ての態様又は利点を有する必要はない。特定の例に関連して記載される態様又は利点は、必ずしもその例に限定されず、そのように図示されていなくても、又はそのように明示的に記載されていなくても、任意の他の例において実施され得る。
【0015】
図1は、1つ以上の例による例示的な電子デバイス100を示す。電子デバイス100は、メイン(アンカー)ICチップ110と、補助ICチップ120と、インタフェース130と、を含む。メインICチップ110は、1つ以上の補助ICチップ(チップレット)120に接続され、マルチチップシステムを形成する。メインICチップ110は、電源コントローラ及びメモリコントローラなどの回路ブロックを含む。補助ICチップ120は、とりわけ、ハードウェアアクセラレータ、人工知能(AI)エンジン、及び/又はトランシーバエンジンであり得る。補助ICチップ120をメインICチップ110と共に使用することにより、メインICチップ110の開発サイクルが補助ICチップ120から切り離される。更に、メインICチップ110を補助チップ120と共に使用することにより、異なるタイプの補助チップを異なる構成のメインチップと共に使用することが可能になる。
【0016】
インタフェース130は、メインICチップ110と補助ICチップ120との間でデータを通信する。インタフェース130は、メインICチップ110を補助ICチップ120に結合するチャネル132及び134を含む。インタフェース130は、マルチチップシステム内のC2Cインタフェースシステムである。
【0017】
メインICチップ110は、特定用途向けIC(Application Specific IC、ASIC)又はプログラマブルIC(例えば、フィールドプログラマブルゲートアレイ(Field Programmable Gate Array、FPGA))である。メインICチップ110は、送信機回路112と、受信機回路114と、インタフェース回路116と、を含む。送信機回路112、受信機回路114、及びインタフェース回路116は、メインICチップ110又は別のタイプのトランシーバ内にシリアライザ/デシリアライザ(serializer/deserializer、SerDes)デバイスを形成する。メインICチップ110は、パラレルインシリアルアウト(parallel-in-serial-out、PISO)回路、シリアルインパラレルアウト(serial-in-parallel-out、SIPO)回路、及び他の回路要素(例えば、とりわけ、エンコーダ回路及び/又はデコーダ回路)を更に含んでもよい。PISO回路は、チャネル132を通じインタフェース回路116を介した送信機回路112による送信のために、パラレル入力データをシリアル出力データに変換する。受信機回路114は、チャネル134を通じインタフェース回路116を介してデータワードを受信する。受信機回路114は、データワードを処理して受信信号を生成する。SIPO回路は、受信機回路114によって受信されたシリアル入力データをパラレル出力データに変換する。
【0018】
補助ICチップ120は、ASIC又はプログラマブルICである。補助ICチップ120は、送信機回路122と、受信機回路124と、インタフェース回路126と、を含む。送信機回路122、受信機回路124、及びインタフェース回路126は、SerDesデバイス又は別のタイプのトランシーバ回路を形成する。補助ICチップ120は更に、PISO回路、SIPO回路、及び他の回路要素(例えば、とりわけ、エンコーダ回路及び/又はデコーダ回路)を含み得る。PISO回路は、チャネル134を通じインタフェース回路126を介した送信機回路122による送信のために、パラレル入力データをシリアル出力データに変換する。受信機回路124は、チャネル132を通じインタフェース回路126を介してデータワードを受信する。受信機回路114は、データワードを処理して受信信号を生成する。SIPO回路は、受信機回路124によって受信されたシリアル入力データをパラレル出力データに変換する。
【0019】
チャネル132及び134は、インタフェース回路116とインタフェース回路126とを結合する1つ以上のパラレルトレース(ワイヤ)を含む。チャネル132及び134内のトレースの数は、インタフェース回路116及びインタフェース回路126の回路面積サイズに対応する。一例では、インタフェース回路116に利用可能な回路面積は、メインICチップ110の端部111に沿ったメインICチップ110の利用可能な回路面積に対応する。更に、インタフェース回路126に利用可能な回路面積は、補助ICチップ120の端部121に沿った補助ICチップ120の利用可能な回路面積に対応する。したがって、インタフェース回路116及びインタフェース回路126の回路面積は、メインICチップ及び補助ICチップ120内の利用可能な回路サイズに制限され、チャネル132及び134を形成するトレース(例えば、ワイヤ)の数が制限される。したがって、より高い帯域幅に達するために、インタフェース回路116及びインタフェース回路126は、より高いデータレートで動作される。しかしながら、より高いデータレートでの動作は、対応するビットエラーレート(BER)を増加させる。一例では、インタフェース回路116及びインタフェース回路126は、データワード当たり42個のトレースをサポートし、トレース当たり約8Gbpsで動作されて、約328Gbpsのデータレートを達成する。データレートは、データワード当たりのトレース数及びトレース当たりのデータレートに対応する。
【0020】
高いデータレートで動作するときに高い信号完全性を達成するために、ビットエラーレート(BER)が低減される。BERの一因は、データワードを転送するときにインタフェース回路116及びインタフェース回路126によって完了される、現在のデータワードと以前に送信されたデータワード(例えば、前のデータワード)との間のビット反転数である。インタフェース回路116及びインタフェース回路126によって完了される反転数が増加するにつれて、伝送におけるエラーの可能性が増加する。一例では、インタフェース回路116及びインタフェース回路126におけるビット反転を低減するために、データバス反転(DBI)技法(プロセス)が使用される。一例では、DBIを実行するとき、現在のデータワードのビットは、前のデータワードのビットと比較される。前のデータワードは、現在のデータワードの直前に送信されたデータワードである。別の言い方をすれば、現在のデータワードは前のデータワードに後続する。各データワードのビットは、データワード間の第1のビット遷移数を決定するために互いに比較される。ビット遷移は、現在のデータワードのビットの値が前のデータワードの対応するビットの値と異なるときに発生する。一例では、現在のデータワードは111010000であり、前のデータワードは000010000である。そのような例では、現在のデータワードの最初の3ビットは、前のデータワードの最初の3ビットと異なる。したがって、現在のデータワードと前のデータワードとの間で3ビットトグルする(例えば、3ビット反転が発生する)。別の例では、現在のデータワードのビットは010011111であり、前のデータワードのビットは000010000である。そのような例では、現在のデータワードの第2のビット及び最後の4ビットは、前のデータワードと異なり、合計で5ビットが、現在のデータワードと前のデータワードとの間で異なる。したがって、現在のデータワードと前のデータワードとの間で5ビットがトグルするか、又は5ビットが反転される。
【0021】
現在のワードと前のワードとの間でトグルするビット数が増加するにつれて、BERは増加する。一例では、現在のワード(current and word)と前のワードとの間でトグルするビット数を低減するために、現在のデータワードのビットが反転される。変換されたデータワードは、前のデータワードと比較されて、変換されたデータワードと前のデータワードとの間でトグルするビット数が、現在のデータワード(変換されていないデータワード)と前のデータワードとの間でトグルするビット数より大きいか小さいかが決定される。反転されたデータと前のデータワードとの間でトグルするビット数が、現在のデータと前のデータワードとの間でトグルするビット数よりも小さい場合、変換されたデータワードが送信される。
【0022】
上記の例に基づいて、010011111の現在のデータワードは、101100000の変換されたデータワードに反転される。前のデータワード000010000と比較すると、変換されたデータワードは4ビットだけ異なり、これは、前のデータワードと5ビットだけ異なる現在の(反転されていない)データワードのものよりも小さい。したがって、変換されたデータワードが選択されて送信される。一例では、ビットの半分より多くが現在のデータワードと前のデータワードとの間でトグルする(例えば、反転される)場合、現在のデータワードのビットは反転される。
【0023】
送信機回路112は、変換されたデータワードをインタフェース回路116及びチャネル132を介して補助ICチップ120のインタフェース回路126及び受信機回路124に送信する前に、現在のデータワードのビットを反転させる(例えば、トグルする)。更に、送信機回路112は、上述したように、現在のデータワードを反転されていない形式で送信するか、又は変換されたデータワードを送信するかを決定する。変換されたデータワード又は反転されていない現在のデータワードは、インタフェース回路126及びチャネル132を介して補助ICチップ120の受信機回路124によって受信される。受信機回路124はまた、チャネル132及びインタフェース回路126を介して指示信号を受信する。指示信号は、送信されたデータワードが反転されているか否かを示す。受信機回路124は、指示信号に基づいて、受信データワードを反転して処理するか、又は受信データワードを処理する。
【0024】
図2は、1つ以上の例による、マルチチップシステム200を示す。マルチチップシステム200は、ICチップ220~226に接続されたICチップ210を含む。ICチップ210は、
図1のメインICチップ110と同様に構成されている。更に、ICチップ220~226は、
図1の補助ICチップ120と同様に構成されている。
図2には4つのICチップ220~226が示されているが、他の例では、ICチップ220~226の数は4つより大きくても小さくてもよい。
【0025】
ICチップ210は、接続された各ICチップ220~226のための送信機回路、受信機回路、及びインタフェース回路のセットを含む。送信機回路、受信機回路、及びインタフェース回路は、
図1の送信回路112、受信回路114、及びインタフェース回路116と同様に構成されている。更に、ICチップ210は、1つ以上のチャネルを介して各ICチップ220~226に接続される。チャネルは、
図1のチャネル132及び134と同様に構成されている。
図2の例では、ICチップ210は、送信機回路、受信機回路、及びインタフェース回路の少なくとも4つのセットを含む。
【0026】
ICチップ222~226の各々は、ICチップ210との間でデータワードを送受信する。ICチップ222~226の各々は、
図1に関して上述した送信機回路122、受信機回路124、及びインタフェース回路126のものと同様の送信機回路、受信機回路、及びインタフェース回路を含む。
【0027】
図3は、本開示の態様が実行され得る例示的なプログラマブルデバイス300のブロック図を示す。
図3に示すプログラマブルデバイス300は、プログラマブルデバイスの例示としての一例であり、同様の又は異なる配置で、追加の又はより少ないブロック又はモジュールを有する他の実装形態が可能である。一例では、プログラマブルデバイス300は、単一のICチップ上に形成され得る。別の例では、プログラマブルデバイス300は、2つ以上のICチップにわたって分散され得る。更に、プログラマブルデバイス300は、互いに相互作用することが可能ないくつかのサブシステムを含むシステムオンチップ(System-on-a-Chip、SoC)であり得る。
【0028】
プログラマブルデバイス300は、例えば、プログラマブル論理(PL)310、ネットワークオンチップ(NoC)相互接続システム320、専用回路330、CCIX及びPCIeモジュール(CCIX and PCIe Module、CPM)340、接続ファブリック345、トランシーバ350、入力/出力(I/O)ブロック360、及びメモリコントローラ370などのいくつかのサブシステムを含むことができる。プログラマブルデバイス300は、
図3に示されていない他のサブシステム又は構成要素を含み得る。更に、簡略化のために示されていないが、プログラマブルデバイス300は、いくつかの周辺構成要素(1つ以上の高性能メモリデバイス395など)及び/又は他のデバイス若しくはチップ(別のプログラマブルデバイスなど)に結合され得る。
【0029】
PL310は、いくつかの異なるユーザ定義の機能又は動作を実行するようにプログラムされ得る回路を含む。PL310は、各々がプログラマブル相互接続回路及びプログラマブル論理回路を含むプログラマブル回路ブロック又はタイルのアレイを含み得る。プログラマブル回路ブロックは、構成可能論理ブロック(configurable logic block、CLB)、ランダムアクセスメモリブロック(random access memory block、BRAM)、デジタル信号処理ブロック(digital signal processing block、DSP)、クロックマネージャ、遅延ロックループ(delay lock loop、DLL)、及び/又はユーザ指定の回路設計を実施するようにプログラム又は構成され得る他の論理若しくは回路を含み得る(が、これらに限定されない)。加えて、又は代替として、PL310は、いくつかの入力/出力ブロック(input/output block、IOB)を含み得る。PL310は、プログラマブルファブリックにわたって分散され得るプログラマブルファブリックサブ領域(fabric sub-region、FSR)のアレイである。いくつかの例では、FSRは、プログラマブルファブリック内の繰り返し可能なタイルである。
【0030】
プログラマブル相互接続回路は、プログラマブル相互接続ポイント(programmable interconnect point、PIP)によって相互接続された様々な長さの多数の相互接続ワイヤを含み得る。相互接続ワイヤは、特定のプログラマブルタイル内のコンポーネント間、異なるプログラマブルタイル内のコンポーネント間、及びプログラマブルタイルのコンポーネントと他のサブシステム又はデバイスとの間の接続性を提供するように構成され得る。プログラマブル相互接続回路及びプログラマブル回路ブロックは、プログラマブル要素が対応するユーザ指定の回路設計をどのように実施するかを定義する構成データを構成レジスタにロードすることによってプログラム又は構成され得る。いくつかの態様では、いくつかのプログラマブル回路ブロックの各々内のプログラマブル相互接続回路は、プログラマブルデバイス300のためのブロックレベル及び/又はデバイスレベルの信号ルーティングリソースを提供するプログラマブル相互接続ファブリックの一部を形成し得る。
【0031】
各CLBは、ルックアップテーブル(LUT)、フリップフロップ、組合せ論理、及び/又は可変幅の入力信号に対して様々な論理機能(加算及び減算など)を実行するために構成データによって集合的にプログラムされ得るプログラマブル相互接続回路を含み得る。LUTは、任意の適切なサイズであってもよく、任意の適切な数の入力及び出力を含んでもよい。いくつかの態様では、各CLBは、32個のLUTと64個のフリップフロップとを含み得る。CLBの各々はまた、より広い論理機能を実行するために使用され得る算術桁上げ論理及びマルチプレクサを含み得る。PL310のリソースは、プログラマブルデバイス300内の列に配置された繰り返し可能なタイルであり、固定された高さ及び幅のいくつかの領域に分割され得る。
図3の例では、PL310は、プログラマブルデバイス300の異なる領域を占有するものとして示されている。他の例では、PL310は、プログラマブルファブリックの統合領域である。
【0032】
プログラマブルデバイス300の一部として製造され得るNoC相互接続システム320は、プログラマブルデバイス300の様々なリソース、サブシステム、回路、及び他の構成要素を選択的に相互接続し得る高速高帯域幅プログラマブル信号ルーティングネットワークを提供する。NoC相互接続システム320は、
図3に示されるように、プログラマブルデバイス300のプログラマブルファブリックにわたって(例えば、端部に向かって)水平方向及び垂直方向に延在し得る。加えて、又は代替として、NoC相互接続システム320は、プログラマブルファブリックにわたって1つ以上の対角方向に延在し得る。更に、
図3の例では単一の柱状部分を有するものとして示されているが、他の例では、NoC相互接続システム320は、プログラマブルファブリックの高さにわたって垂直に延在する複数の柱状部分を含んでもよい。したがって、例示的なNoC相互接続システム320の特定のレイアウト、形状、サイズ、向き、及び他の物理的特性は、本明細書で開示される様々な例の単なる例示である。
【0033】
NoC相互接続システム320は、データパケットプロトコル及びメモリマップされたアドレスを使用して、プログラマブルデバイス300の様々なリソース、サブシステム、回路、及び他の構成要素間の情報をパケット化データとしてルーティングする。データパケットは、ソースアドレスと、宛先アドレスと、データパケットをデータパケットの示された宛先にルーティングするためにNoC相互接続システム320によって使用され得るプロトコル情報とを含み得る。データパケットは、例えば、割り当てられた優先度、トラフィックタイプ、及び/又はフロー情報に基づいて、NoC相互接続システム320を介したデータパケットの送信が優先されることを可能にするサービス品質(Quality-of-Service、QoS)情報を含み得る。そのような例では、NoC相互接続システム320は、受信されたデータパケットの優先度レベル又はトラフィッククラスを決定することができ、送信のためにデータパケットをキューイングするときに、決定された優先度レベル又はトラフィッククラスを使用することができる優先度論理を含み得る。
【0034】
簡略化のために示されていないが、NoC相互接続システム320はまた、スケジューラ及びアービトレーション論理を含み得る。スケジューラは、NoC相互接続システム320の1つ以上の物理チャネル及び/又は仮想チャネルを使用して、送信元アドレスから宛先アドレスへのデータパケットの送信をスケジュールするために使用され得る。アービトレーション論理は、例えば、衝突及び他の競合関連レイテンシを最小限に抑えるために、NoC相互接続システム320へのアクセスをアービトレーションするために使用され得る。プログラマブルデバイス300が積層シリコン相互接続(stacked silicon interconnect、SSI)技術を使用して製造される例では、NoC相互接続システム320の列部分は、隣接するスーパー論理領域(super logic region、SLR)間の信号接続を提供して、例えば、構成データがマスタSLRとスレーブSLRとの間でルーティングされることを可能にすることができる。
【0035】
NoC相互接続システム320は、NoC相互接続システム320と、プログラマブルデバイス300の様々なリソース、サブシステム、回路、及び他のコンポーネントとの間の選択的な接続性を提供する複数のノード、ポート、又は他のインタフェース(簡略化のために図示せず)を含んでもよい。例えば、NoC相互接続システム320は、プログラマブルデバイス300の複数のサブシステムが、オンチップメモリ(OCM)リソース、処理リソース、及び/又はI/Oリソースへのアクセスを共有することを可能にし得る。大量のデータを要求し使用することができるプログラマブルデバイス300の様々なリソース、サブシステム、回路、及び他の構成要素を選択的に相互接続することによって、NoC相互接続システム320は、ローカル相互接続リソースに対する信号ルーティング負荷を軽減し、それによって、デバイス性能を向上させ、他のプログラマブルデバイスよりも大きな構成柔軟性を可能にすることができる。更に、デバイスレベル及びブロックレベルのプログラマブル相互接続よりも高いデータ送信レート及び低いエラーレートを有する高性能信号ルーティングネットワークを提供することによって、NoC相互接続システム320は、(他のプログラマブルデバイスと比較して)プログラマブルデバイス300の処理能力及びデータスループットを増加させ得る。一例では、NoC相互接続システム320は、
図1及び
図2に関して上記で説明したようなDBIプロセスを採用する。例えば、NoC相互接続システム320は、
図1及び
図2に関して上述したように、現在のデータワードを送信する前に、前のデータワードに基づいて現在のデータワードを反転させるか否かを決定する。
【0036】
専用回路330は、プロセッサ、シリアルトランシーバ、デジタル信号プロセッサ(digital signal processor、DSP)、アナログ-デジタル変換器(analog-to-digital converter、ADC)、デジタル-アナログ変換器(digital-to-analog converter、DAC)、デバイス管理リソース、デバイス監視リソース、デバイス試験管理リソース等を含む(が、これらに限定されない)任意の適切なハードワイヤード回路を含んでもよい。専用回路330は、処理システム(processing system、PS)及びプラットフォーム管理コントローラ(platform management controller、PMC)を含んでもよい。PSは、いくつかのプロセッサコアと、キャッシュメモリと、プログラマブルデバイス300のI/Oピンに直接結合するように構成可能な単方向及び/又は双方向インタフェースとを含み得る。いくつかの態様では、各プロセッサコアは、シーケンシャルデータ処理のために使用され得る中央処理ユニット(central processing unit、CPU)又はスカラープロセッサを含み得る。PMCは、外部メモリから提供される構成データ(構成ビットストリームなど)に基づいて、プログラマブルデバイス300をブート及び構成するために使用され得る。PMCはまた、PL310を構成し、プログラマブルデバイス300の様々な暗号化、認証、システム監視、及びデバッグの能力を制御するために使用され得る。
【0037】
CCIX及びPCIeモジュール(CPM)340は、プログラマブルデバイス300といくつかの周辺構成要素(外部デバイス又はチップなど)との間の接続性を提供するいくつかのインタフェースを含み得る。CPM340は、トランシーバ350を介して他のデバイス又はチップへの接続性を提供する、いくつかの周辺相互接続エクスプレス(peripheral interconnect express、PCIe)インタフェース及びアクセラレータ用キャッシュコヒーレント相互接続(cache coherent interconnect for accelerator、CCIX)インタフェースを含んでもよい。いくつかの態様では、PCIe及びCCIXインタフェースは、トランシーバ350の一部である。
【0038】
プログラマブル相互接続ファブリック(簡単にするために図示せず)は、対応する構成レジスタにロードされた構成データに基づいてプログラマブルファブリックの近くの領域中の回路及びサブシステムを選択的に相互接続することができるブロックレベル及び/又はデバイスレベルの信号ルーティングリソースを提供し得る。プログラマブル相互接続ファブリックは、複数のファブリックサブ領域(FSR)を含んでもよく、複数のファブリックサブ領域は、繰り返し可能なタイルを含み、プログラマブルデバイス300にわたって分散されてもよい。いくつかの態様では、FSRは、PL310の様々なプログラマブル論理回路(CLB、DSP、及びBRAMなど)に関連付けられたプログラマブル相互接続要素の部分を含んでもよい。
【0039】
トランシーバ350は、プログラマブルデバイス300に接続された1つ以上の他のデバイス又はチップ(簡略化のために図示せず)との信号接続を提供することができる。トランシーバ350は、例えば、ギガビットシリアルトランシーバなど、いくつかの異なるSERDESを含み得る。トランシーバ350は、
図3に示すように、プログラマブルデバイス300の右側及び左側に沿った様々な位置に配置されたいくつかの繰り返し可能なタイルを含む。他の例では、トランシーバ350は、プログラマブルデバイス300の他の適切な位置に配置され得る。
【0040】
I/Oブロック360は、デバイスのI/Oピン(簡略化のために図示せず)に結合され、プログラマブルデバイス300にI/O能力を提供することができる。例えば、I/Oブロック360は、1つ以上の他のデバイスからデータを受信してもよく、受信したデータをプログラマブルデバイス300内のいくつかの宛先にドライブしてもよい。I/Oブロック360はまた、プログラマブルデバイス300内のいくつかのソースからデータを受信し得、受信されたデータを、デバイスのI/Oピンを介して1つ以上の他のデバイスにドライブし得る。I/Oブロック360は、繰り返し可能なタイルを含む。プログラマブルデバイス300は、任意の適切な数のI/Oブロック360を含むことができ、したがって、
図3に示す例は単なる例示である。
【0041】
I/Oブロック360は、任意の数の適切なI/O回路又はデバイスを含み得る。I/Oブロック360は、超高性能I/O(extremely high-performance I/O、XPIO)回路、高密度I/O(high-density I/O、HDIO)回路、及び多重化I/O(multiplexed I/O、MIO)回路を含むことができる。XPIO回路は、メモリコントローラ370への高速、低レイテンシインタフェースを提供するなど、高性能通信のために最適化され得る。HDIO回路は、(XPIO回路と比較して)より低速でより高電圧のI/O能力をサポートする費用効果の高い解決策を提供することができる。MIO回路は、例えば、PL310、専用回路330、及びCPM340などの様々なサブシステムによってアクセスされ得る、汎用I/Oリソースを提供してもよい。
【0042】
I/Oブロック360の第1の行は、プログラマブルデバイス300の下端に沿って配置された繰り返し可能なタイルを含み、I/Oブロック360の第2の行は、プログラマブルデバイス300の上端に沿って配置された繰り返し可能なタイルを含む。いくつかの態様では、I/Oブロック360の繰り返し可能なタイルは、互いに異なり得る。例えば、いくつかのI/Oブロック360はXPIO回路であり、他のI/Oブロック360はHDIO回路であり、他のI/Oブロック360はMIO回路である。
【0043】
メモリコントローラ370は、プログラマブルデバイス300の内部及び/又は外部に提供される様々なメモリリソースへのアクセスを制御するために使用され得る。メモリコントローラ370は、ダブルデータレートv4(double data rate v4、DDR4)メモリコントローラ、ダブルデータレートv5(double data rate v5、DDR5)メモリコントローラ、高帯域幅メモリ(high bandwidth memory、HBM)コントローラ、及び/又は他の適切なメモリコントローラを含み得る。メモリコントローラ370の一部又は全部は、メモリアクセス効率を改善し得るトランザクション再順序付け能力を有するスケジューラを含み得る。
【0044】
メモリコントローラ370の第1の行は、プログラマブルデバイス300の下端に沿って配置された繰り返し可能なタイルを含み、メモリコントローラ370の第2の行は、プログラマブルデバイス300の上端に沿って配置された繰り返し可能なタイルを含む。いくつかの態様では、メモリコントローラ370の繰り返し可能なタイルは、互いに異なり得る。例えば、第1の数のメモリコントローラ370はDDR4メモリコントローラであり、第2の数のメモリコントローラ370はLPDDR4メモリコントローラであり、第3の数のメモリコントローラ370はHBMコントローラである。I/Oブロック360及びメモリコントローラ370の繰り返し可能なタイルは、例えば、
図3の例に示されるように、互いに対して交互に配置又は分散されてもよい。プログラマブルデバイス300は、任意の数のI/Oブロック360及びメモリコントローラ370を含むことができ、したがって、
図3に示されるI/Oブロック360及びメモリコントローラ370の数及び位置は、単なる例示である。
【0045】
簡略化のために
図3には示されていないが、プログラマブルデバイス300は、I/Oブロック360とPL310内に設けられたプログラマブル相互接続との間の接続性を提供する境界論理インタフェース(Boundary Logic Interface、BLI)を含んでもよい。いくつかの態様では、BLIは、大きく複雑な外部デバイス(HBMなど)が、プログラマブルデバイス300のプログラマブルファブリック内のはるかに小さいブロック(CLBなど)のように見えることを可能にし得る。BLIは、プログラマブルファブリックの上部及び下部境界又は端部に位置する行に配置され得る。このようにして、BLIは、列論理構造(CLB列又はDSP列など)とI/Oリソース(I/Oブロック360など)の行との間で信号をルーティングするために使用され得る。
【0046】
様々な例では、上記で説明したようにDBIプロセスを採用することは、送信されたデータワードのビットの50パーセント未満が、以前に送信されたデータワードに対して反転されることを保証する。しかしながら、高いデータレートを使用するインタフェースでは、依然としてエラーが発生する恐れがある。したがって、データワード間のビット反転数を更に低減することは、インタフェースのBERを低減し、インタフェースを介して通信するときに発生するエラーを更に低減する。
【0047】
図4は、1つ以上の例による、例示的なインタフェースシステム400を示す。インタフェースシステム400は、
図1のインタフェース130又は
図3のNoC相互接続システム320と同様に構成されてもよい。例えば、インタフェースシステム400は、
図1のインタフェース130のものと同様のICチップ間で通信するように実施される。他の例では、インタフェースシステム400は、
図3のNoC相互接続システム320の要素と同様のプログラマブルデバイスの要素間で通信するように実施される。
【0048】
インタフェースシステム400は、送信機回路410、インタフェース回路420、受信機回路430、インタフェース回路450、及びチャネル460を含む。送信機回路410は、インタフェース回路420、チャネル460、及びインタフェース回路450を介して受信機回路430と通信する。一例では、インタフェース回路420及び440は省略されてもよく、送信機回路410はチャネル460を介して受信機回路430と直接通信する。更に、送信機回路410及び/又は受信機回路430は、トランシーバ回路の一部である。
【0049】
送信機回路410、インタフェース回路420、インタフェース回路450、及び受信機回路430は、単一のICチップ又は複数のICチップの一部である。一例では、送信機回路410、インタフェース回路420、インタフェース回路450、及び受信機回路430は、プログラマブルデバイス、例えば、
図3のプログラマブルデバイス300の一部であってもよい。別の例では、送信機回路410及びインタフェース回路420は、第1のICチップ(例えば、
図1のメインICチップ110)の一部であり、インタフェース回路450及び受信機回路430は、第2のICチップ(例えば、
図1の補助ICチップ120)の一部である。
【0050】
送信機回路410は、処理回路411、選択回路418、及びメモリ419を含む。処理回路411は、データワード402を受信し、データワード402、変換されたデータワード422、並びに1つ以上の変換データワード424及び426を出力する。処理回路411は、データワード402の各ビットの値を反転することによって、変換されたデータワード422を生成する。更に、処理回路411は、データワード402及び前のデータワード428に対して対応する可逆変換演算を実行することによって、変換データワード424及び426を生成する。可逆変換演算は、とりわけ、ビット単位のXOR演算及びビット単位のXNOR演算を含む。前のデータワード428は、データワード402の前の期間中に送信されるデータワードである。別の実施形態では、前のデータワード428は、データワード402の直前に送信されるデータワードである。
【0051】
選択回路418は、処理回路411から、データワード402、変換されたデータワード422、変換データワード424、及び変換データワード426を受信する。選択回路418は、データワード402、変換されたデータワード422、変換データワード424、及び変換データワード426の各々のビットを、前のデータワード428のビットと比較する。選択回路418は、データワード402、変換されたデータワード422、変換データワード424、及び変換データワード426のうちのどれが、前のデータワード428のビットから値がトグルする(例えば、反転する)最小ビット数を有するかを決定する。選択回路418は、データワード402、変換されたデータワード422、変換データワード424、及び変換データワード426のうちの選択された1つを、データワード421としてインタフェース回路420に出力し、インタフェース回路は、チャネル460を介してデータワード421をデータワード423として出力する。
【0052】
選択回路418は、データワード402、422、424、及び426から出力すべきデータワードを選択し、データワード402、422、424、及び426のうちのどれが前のデータワード428を参照して最小ビット反転数に関連付けられるかを決定する、1つ以上のマルチプレクサ及びプロセッサを含む。
【0053】
処理回路411は、反転回路412、変換回路414、及び変換回路416を含む。一例では、変換回路414及び416のうちの1つが省略されるか、又は追加の1つ以上の変換回路が処理回路411内に含まれる。変換回路414及び416の一方が省略される実施形態では、対応する変換されたデータワード424及び426は省略され、選択回路418によって受信及び処理されない。
【0054】
反転回路412は、データワード402の各ビットの値を反転させる(例えば、トグルする)ことによって、変換されたデータワード422を生成する。例えば、反転回路412は、データワード402の各ビットを第1の値(例えば、0又は1)から第2の値(例えば、1又は0)に反転させる。一例では、反転回路412は、反転バッファ及び他の回路要素を含む。
【0055】
変換回路414は、データワード402及び前のデータワード428に対して可逆変換を実行する。可逆変換は、元の入力(例えば、データワード)を復元するために反転され得る出力を生成する変換である。一例では、変換回路414は、データワード402及び前のデータワード428に対してビット単位のXOR演算を実行する。ビット単位のXOR演算への入力は、データワード402のビット及び前のデータワード428のビットである。ビット単位のXOR演算は、データワード402の各ビットをデータワード428の対応するビットと比較して、変換データワード424のビットを決定する。例えば、データワード402のビットと前のデータワード428のビットとが異なる値(例えば、0と0又は1と1)を有するとき、変換データワード424のビットは1の値を有する。更に、データワード402のビットと前のデータワード428のビットとが同じ値(例えば、0又は1)を有するとき、変換データワード424のビットは0の値を有する。一例では、変換回路414は、XOR論理ゲート及び他の回路要素を含む。
【0056】
変換回路416は、データワード402及び前のデータワード428に対して可逆変換を実行する。変換回路416によって実行される可逆変換は、変換回路414の可逆変換とは異なる。一例では、変換回路416は、データワード402及び前のデータワード428に対してビット単位のXNOR演算を実行する。ビット単位のXNOR演算への入力は、データワード402のビット及び前のデータワード428のビットである。ビット単位のXNOR演算は、データワード402の各ビットをデータワード428の対応するビットと比較して、変換データワード426のビットを決定する。例えば、データワード402のビットと前のデータワード428のビットとが同じ値(例えば、0と0、又は1と1)を有するとき、変換データワード426のビットは1の値を有する。更に、データワード402のビットと前のデータワード428のビットとが異なる値(例えば、0又は1)を有するとき、変換データワード426のビットは0の値を有する。
【0057】
反転回路412、変換回路414、及び変換回路416のうちの少なくとも2つは、少なくとも部分的に重複する期間中に、対応する変換されたデータワード422、424、及び426を生成する。別の例では、変換回路414及び変換回路416は、重複しない期間中に、対応する変換されたデータワード422、424、及び426を生成する。
【0058】
メモリ419は、データワード423を記憶し、前のデータワード428を変換回路414及び変換回路416に出力する。前のデータワード428は、前の期間中に送信されたデータワードである。
【0059】
受信機回路430は、処理回路431と、選択回路432と、メモリ440とを含む。処理回路411は、データワード441を受信し、データワード441、444、446、及び448を出力する。
【0060】
処理回路411は、データワード441の各ビットの値を反転することによって、データワード444を生成する。更に、処理回路411は、データワード441及び前のデータワード442に対して対応する可逆変換演算を実行することによって、変換データワード446及び448を生成する。可逆変換演算は、とりわけ、ビット単位のXOR演算及びビット単位のXNOR演算を含む。データワード446を生成するために実行される可逆変換は、変換されたデータワード424を生成するために実行される可逆変換と同じである。データワード448を生成するために実行される可逆変換は、変換されたデータワード426を生成するために実行される可逆変換と同じである。
【0061】
選択回路432は、データワード441、444、446、及び448を受信し、データワード437として出力されるべきデータワード441、444、446、及び448のうちの1つを選択する。一例では、選択回路432は、データワード441、444、446、及び448を受信し、データワード423を出力するときに送信機回路410によって実行される動作に基づいて、データワード441、444、446、及び448のうちの1つを選択する。一例では、選択回路432は、データワード441、444、446、及び448のうちのどれを選択するかを示す制御信号435を受信する。制御信号435は、データワード423が変換されたかどうか、及びデータワードが送信される前にどの変換がデータワードに適用されたかを示す。例えば、制御信号435は、データワード423が変換されなかった(例えば、データワード423がデータワード402である)か、反転された(例えば、データワード423が変換されたデータワード422である)か、又は可逆変換で変換された(例えば、データワード423が変換されたデータワード424又は426である)かを示す。選択されたデータワード441、444、446又は448は、データワード437として出力される。
【0062】
選択回路432は、データワード441、444、446、及び448から出力すべきデータワードを選択する1つ以上のマルチプレクサを含む。
【0063】
処理回路431は、反転回路434、変換回路436、及び変換回路438を含む。一例では、変換回路436及び変換回路438のうちの1つが省略されるか、又は追加の1つ以上の変換回路が処理回路431内に含まれる。
【0064】
反転回路434は、データワード441の各ビットの値を反転させる(例えば、トグルする)ことによってデータワード444を生成する。例えば、反転回路434は、1の値を有するデータワード441の各ビットを0の値に反転し、0の値を有する各ビットを1の値に反転する。反転回路434は、反転バッファ及び他の回路要素を含む。
【0065】
変換回路436は、データワード441及び前のデータワード442に対して可逆変換を実行する。変換回路438によって実行される可逆変換は、変換回路416によって実行される可逆変換と同じである。一例では、変換回路414は、データワード441及び前のデータワード442に対してビット単位のXOR演算を実行する。ビット単位のXOR演算への入力は、データワード441のビット及び前のデータワード442のビットである。ビット単位のXOR演算は、データワード441の各ビットを前のデータワード442の対応するビットと比較して、変換データワード444のビットを決定する。例えば、データワード441のビットと前のデータワード442のビットとが異なる値(例えば、0と1)を有するとき、変換データワード444のビットは1の値を有する。更に、データワード441のビットと前のデータワード442のビットとが同じ値(例えば、0と0、又は1と1)を有するとき、変換データワード424のビットは0の値を有する。変換回路436は、XOR論理及び他の回路要素を含む。
【0066】
変換回路438は、データワード441及び前のデータワード442に対して可逆変換を実行する。変換回路438によって実行される可逆変換は、変換回路436の可逆変換とは異なる。変換回路438によって実行される可逆変換は、変換回路416によって実行される可逆変換と同じである。一例では、変換回路438は、データワード441及び前のデータワード442に対してビット単位のXNOR演算を実行する。ビット単位のXNOR演算への入力は、データワード441のビット及び前のデータワード442のビットである。ビット単位のXNOR演算は、データワード441の各ビットを前のデータワード442の対応するビットと比較して、変換データワード426のビットを決定する。例えば、データワード441のビットと前のデータワード442のビットとが同じ値(例えば、0と0、又は1と1)を有するとき、変換データワード448のビットは1の値を有する。更に、データワード441のビットと前のデータワード442のビットとが異なる値(例えば、0と1)を有するとき、変換データワード448のビットは0の値を有する。
【0067】
一例では、反転回路434、変換回路436、及び変換回路438の各々は、各受信データワードを処理して、対応するデータワード444、446、及び448を生成する。別の例では、反転回路434、変換回路436、及び変換回路438のうちの1つは、データワード441を処理して、データワード444、446、及び448のうちのそれぞれ1つを決定する。例えば、処理回路411に適用された変換技法に対応する反転回路434、変換回路436、及び変換回路438のうちの1つは、それぞれのデータワード444、446、及び448を生成するために使用される。更に、反転回路434、変換回路436、及び変換回路438のうちの少なくとも2つは、少なくとも部分的に重複する期間中にデータワード441を処理する。別の例では、反転回路434、変換回路436、及び変換回路438は、重複しない期間中にデータワード441を処理する。
【0068】
メモリ419は、データワード441を記憶し、前のデータワード442を変換回路414及び変換回路416に出力する。一例では、前のデータワード442は、データワード423が受信される前の期間中に受信されたデータワードである。前のデータワード442は、データワード423が受信される期間の直前の期間中に受信され得る。更に、前のデータワード442は前のデータワード428と同じである。
【0069】
反転されていないデータワード及び招待されたデータワード(invited data word)を使用するDBIプロセスと比較して、上記のDBIプロセスは、1つ以上の変換されたデータワードを更に使用する。変換されたデータワードの使用は、現在のデータワードと前のデータワードとの間でトグルされる(反転される)ビットの数を更に低減する。現在のデータワードのビットが111111111であり、前のデータワードのビットが000001111である例では、現在のデータワードの最初の5ビットは、前のデータワードの最初の5ビットと異なり、現在のデータワードと前のデータワードとの間でトグルされる合計5ビットに等しい。現在のデータワードを反転することにより、000000000のビットを有する反転データワードが生成される。変換されたデータワードを変換されたデータワードと比較することは、変換されたデータワードの4ビットが前のデータワードからトグルされていることを示す。反転データワードは、反転されていない現在のデータワードと比較して、トグルされるビットが1つ少ない。しかしながら、ビットごとのXNOR演算を現在のデータワード及び前のデータワードに適用することにより、ビット000001111を有する変換されたデータワードが生成され、これは前のデータワードのビットと同じである。したがって、変換されたデータワードを送信するとき、ビットはトグルされない。
【0070】
現在のデータワードのビットが000000000であり、前のデータワードのビットが000001111である別の例では、現在のデータワードの最後の4ビットは、前のデータワードの最後の4ビットと異なり、現在のデータワードと前のデータワードとの間でトグルされる合計4ビットに等しい。現在のデータワードを反転することにより、111111111のビットを有する反転データワードが生成される。反転データワードを前のデータワードと比較することは、反転データワードの5ビットが前のデータワードからトグルされていることを示す。反転データワードは、反転されていない現在のデータワードと比較して、トグルされるもう1つのビットを有する。しかしながら、ビットごとのXOR演算を現在のデータワード及び前のデータワードに適用することにより、ビット000001111を有する変換されたデータワードが生成され、これは前のデータワードのビットと同じである。したがって、変換されたデータワードを送信するとき、ビットはトグルされない。
【0071】
上記の例からわかるように、可逆変換演算(例えば、とりわけ、ビット単位のXOR演算及び/又はビット単位のXNOR演算)を含むDBIプロセスを採用することは、前のデータワードを参照してデータワードを送信するときにトグルするビットの数を減少させる。したがって、トグルするビット数が減少するにつれて、対応するインタフェースシステムを介して通信するときに発生するエラーが更に軽減される。
【0072】
図5は、1つ以上の例による、データワードを出力するための方法500のフローチャートを示す。方法500は、
図4を参照して説明される。ブロック502において、データワードは、送信機回路の処理回路によって受信される。一例では、データワード402は、処理回路411によって受信される。
【0073】
ブロック504において、第1のデータワードの複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードが生成される。例えば、データワード402のビットは、変換されたデータワード422を生成するために、反転回路412によって反転される。
【0074】
ブロック506において、第1のデータワード及び第2のデータに対して第1の可逆演算を実行することによって、第2の変換されたデータワードが生成される。第2のデータワードは、以前に送信されたデータワードである。第2のデータワードは、第1のデータワードの直前の期間に送信されたデータワードであってもよい。一例では、第1のデータワードが期間N中に送信されるべきである場合、第2のデータワードは期間N-1中に送信された。可逆変換は、ビット単位のXOR演算又はビット単位のXNOR演算である。一例では、データワード402のビット及び前のデータワード428のビットは、変換されたデータワード424を生成するために変換回路414によって変換される。変換回路414又は変換回路414は、データワード402及び前のデータワード428に対して可逆変換を実行して、変換されたデータワード424を生成する。一例では、変換回路414は、データワード402及び前のデータワード428に対してビット単位のXOR演算を実行して、変換されたデータワード424を生成する。別の例では、変換回路416は、データワード402及び前のデータワード428に対してビット単位のXNOR演算を実行して、変換されたデータワード426を生成する。
【0075】
ブロック508において、第1のデータワードと第2のデータワードとの間の第1のビット反転数が決定され、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数が決定され、第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数が決定される。選択回路418は、データワード402のビットの値を前のデータワード428の値と比較して、データワード402と前のデータワード428との間で値がトグル(例えば、ビット反転)するビット数を決定する。更に、選択回路418は、変換されたデータワード422のビットの値を前のデータワード428の値と比較して、変換されたデータワード422と前のデータワード428との間で値がトグル(例えば、ビット反転)するビット数を決定する。選択回路418は更に、変換されたデータワード424又は426のビットの値を前のデータワード428の値と比較して、変換されたデータワード424と前のデータワード428との間で値がトグル(例えば、ビット反転)するビット数を決定する。
【0076】
ブロック510において、第1の遷移数、第2の遷移数、及び第3の遷移数に基づいて、第1のデータワード、第1の変換されたデータワード、又は第2の変換されたデータワードが選択される。例えば、選択回路418は、ブロック508において決定された対応するビット反転数に基づいて、データワード402、変換されたデータワード422、及び変換されたデータワード424又は426のうちの1つを選択する。選択回路418は、ブロック508において決定されたデータワード402に対応するビット反転数が、ブロック508において決定された変換されたデータワード422及び変換されたデータワード424又は426に対応するビット反転数よりも小さいことに基づいて、データワード402を選択する。選択回路418は、ブロック508において決定された変換されたデータワード422に対応するビット反転数が、ブロック508において決定されたデータワード402及び変換されたデータワード424又は426に対応するビット反転数よりも小さいことに基づいて、変換されたデータワード422を選択する。更に、選択回路418は、ブロック508において決定された変換されたデータワード424又は426に対応するビット反転数が、ブロック508において決定されたデータワード402及び変換されたデータワード422に対応するビット反転数よりも小さいことに基づいて、変換されたデータワード424又は426を選択する。
【0077】
一例では、選択回路418は、どのデータワードが選択されたかを示す指示信号を出力する。指示信号は、追加又は代替として、変換プロセスがデータワードに適用されたかどうか、及びどの変換プロセスがデータワードに適用されたかを示すことができる。
【0078】
ブロック512において、選択されたデータワードが出力される。例えば、選択回路418は、データワード421をインタフェース回路420に出力し、インタフェース回路420は、チャネル460及びインタフェース回路450を介してデータワード423を受信機回路430に出力する。
【0079】
上記の開示で説明したように、現在のデータワードと以前に送信されたデータワードとの間のビット反転数を制限することは、送信プロセスにおけるエラーを軽減し、インタフェースのビットエラーレートを低減する。ビット反転数を低減するために、1つ以上の可逆演算が使用され、現在のデータワード及び以前に送信されたデータワードに適用される。1つ以上の可逆演算は、とりわけ、ビット単位のXOR演算及びビット単位のXNOR演算を含む。可逆演算は、変換されたデータワードを生成するために、現在のデータワード及び前のデータワードに適用される。前のデータワードからの最小ビット反転数を有するデータワード(例えば、変換されていないデータワード又は変換されたデータワード)が選択され、送信され、対応するインタフェースシステムのビットエラーレートを低減する。
【0080】
開示される技術のいくつかの非限定的な実施例は、以下のように表現され得る。
実施例1.送信機回路であって、
第1のデータワードの複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成するように構成された反転回路と、
第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって、第2の変換されたデータワードを生成するように構成された第1の変換回路と、
選択回路であって、
第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数に基づいて、第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択し、
選択されたデータワードを出力する、ように構成された、選択回路と、を備える、送信機回路。
【0081】
実施例2.第1のデータワード及び第2のデータワードに対して第2の可逆演算を実行することによって、第3の変換されたデータワードを生成するように構成された第2の変換回路を更に備え、第2の可逆演算は第1の可逆演算とは異なる、実施例1に記載の送信機回路。
【0082】
実施例3.第2の可逆演算は、ビット単位のXNOR演算である、実施例1又は2に記載の送信回路。
【0083】
実施例4.選択回路が、
第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数を決定するように更に構成されている、実施例1に記載の送信機回路。
【0084】
実施例5.第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択することは、
第1のビット反転数が第2のビット反転数及び第3のビット反転数よりも小さいことに基づいて、第1のデータワードを選択することと、
第2のビット反転数が第1のビット反転数及び第3のビット反転数よりも小さいことに基づいて、第1の変換されたデータワードを選択することと、
第3のビット反転数が第1のビット反転数及び第2のビット反転数よりも小さいことに基づいて、第2の変換されたデータワードを選択することと、を含む、実施例1に記載の送信機回路。
【0085】
実施例6.第2のデータワードを記憶し、出力するように構成されたメモリを更に備える、実施例1に記載の送信機回路。
【0086】
実施例7.電子デバイスであって、
送信機回路であって、
処理回路であって、
複数のビットを含む第1のデータワードを受信し、
第1のデータワードの複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成し、
第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって、第2の変換されたデータワードを生成する、ように構成された、処理回路と、
選択回路であって、
第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数に基づいて、第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択するように構成された、選択回路と、を備え、この送信機回路は選択されたデータワードを出力するように構成されている、送信機回路を備える、電子デバイス。
【0087】
実施例8.処理回路が、
第1のデータワード及び第2のデータワードに対して第2の可逆演算を実行することによって、第3の変換されたデータワードを生成するように更に構成されており、第2の可逆演算は第1の可逆演算とは異なる、実施例7に記載の電子デバイス。
【0088】
実施例9.第2の可逆演算は、ビット単位のXNOR演算である、実施例7又は8に記載の電子デバイス。
【0089】
実施例10.選択回路が、
第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数を決定するように更に構成されている、実施例7に記載の電子デバイス。
【0090】
実施例11.第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択することは、
第1のビット反転数が第2のビット反転数及び第3のビット反転数よりも小さいことに基づいて、第1のデータワードを選択することと、
第2のビット反転数が第1のビット反転数及び第3のビット反転数よりも小さいことに基づいて、第1の変換されたデータワードを選択することと、
第3のビット反転数が第1のビット反転数及び第2のビット反転数よりも小さいことに基づいて、第2の変換されたデータワードを選択することと、を含む、実施例7に記載の電子デバイス。
【0091】
実施例12.
出力データワードを受信するように構成された受信機回路を更に備え、受信機回路は、
処理回路であって、
出力データワードの1ビット以上を反転することによって、第1の受信されたデータワードを生成し、
第1の可逆演算、出力データワード、及び第2のデータワードに基づいて第2の受信されたデータワードを生成する、ように構成された、処理回路を備える、実施例7に記載の電子デバイス。
【0092】
実施例13.データワードを送信するための方法であって、方法は、
複数のビットを含む第1のデータワードを受信することと、
第1のデータワードの複数のビットのうちの1つ以上を反転することによって、第1の変換されたデータワードを生成することと、
第1のデータワード及び第2のデータワードに対して第1の可逆演算を実行することによって、第2の変換されたデータワードを生成することと、
第1のデータワードと第2のデータワードとの間の第1のビット反転数、第1の変換されたデータワードと第2のデータワードとの間の第2のビット反転数、及び第2の変換されたデータワードと第2のデータワードとの間の第3のビット反転数に基づいて、第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択することと、
選択されたデータワードを出力することと、を含む、方法。
【0093】
実施例14.
第1のデータワード及び第2のデータワードに対して第2の可逆演算を実行することによって、第3の変換されたデータワードを生成することを更に含み、第2の可逆演算は第1の可逆演算とは異なる、実施例13に記載の方法。
【0094】
実施例15.第2の可逆演算は、ビット単位のXNOR演算である、実施例13又は14に記載の方法。
【0095】
実施例16.第1のデータワード、第1の変換されたデータワード、及び第2の変換されたデータワードのうちの1つを選択することは、
第1のビット反転数が第2のビット反転数及び第3のビット反転数よりも小さいことに基づいて、第1のデータワードを選択することと、
第2のビット反転数が第1のビット反転数及び第3のビット反転数よりも小さいことに基づいて、第1の変換されたデータワードを選択することと、
第3のビット反転数が第1のビット反転数及び第2のビット反転数よりも小さいことに基づいて、第2の変換されたデータワードを選択することと、を含む、実施例13に記載の方法。
【0096】
実施例20.
出力データワードを受信することと、
出力データワードの1ビット以上を反転することによって、第1の受信されたデータワードを生成することと、
第1の可逆演算、出力データワード、及び第2のデータワードに基づいて第2の受信されたデータワードを生成することと、を更に含む、実施例13に記載の方法。
【0097】
上記は特定の例を対象とするが、他の例及び更なる例が、その基本的な範囲から逸脱することなく考案され得、その範囲は、以下の「特許請求の範囲」によって決定される。
【国際調査報告】