(57)【特許請求の範囲】
【請求項１】
デジタル信号処理（「ＤＳＰ」）回路ブロックであって、
第１のＮビット乗算回路および第２のＮビット乗算回路と、
（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の乗算回路の出力をシフトする第１のシフタ回路と、
該第１のシフタ回路と該第２の乗算回路の出力とを加法的に組み合わせる第１の圧縮回路と、
該第１の圧縮回路の出力を該ＤＳＰ回路ブロック以外の第１のＤＳＰ回路ブロックおよび第２のＤＳＰ回路ブロックに選択的にルーティングする回路であって、該第１のＤＳＰ回路ブロックおよび該第２のＤＳＰ回路ブロックのそれぞれは、該ＤＳＰ回路ブロックと同一の構造を有し、該第１のＤＳＰ回路ブロックは、該ＤＳＰ回路ブロックの第１の側に配置され、該第２のＤＳＰ回路ブロックは、該ＤＳＰ回路ブロックの該第１の側とは反対側である第２の側に配置される、選択的にルーティングする回路と、
（１）ゼロビット位置、（２）より上位の演算の有効に向かうＮビット位置、（３）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の圧縮回路の出力をシフトする第２のシフタ回路と、
該第２のシフタ回路の出力と、該第１のＤＳＰ回路ブロックに含まれる第１の圧縮回路から受信される任意の出力とを加法的に組み合わせる、または、該第２のシフタ回路の出力と、該第２のＤＳＰ回路ブロックに含まれる第１の圧縮回路から受信される任意の出力とを加法的に組み合わせる第２の圧縮回路と
を備える、回路ブロック。
【請求項２】
前記選択的にルーティングする回路は、前記第１の圧縮回路の前記出力の複数のサブセットのうちのいずれか１つをルーティングするために選択するように制御可能である、請求項１に記載のＤＳＰ回路ブロック。
【請求項３】
前記選択可能なサブセットは、（１）前記第１の圧縮回路の最大有効出力ビット位置を含むサブセットと、（２）該第１の圧縮回路の最小有効出力ビット位置を含むサブセットとを含む、請求項２に記載のＤＳＰ回路ブロック。
【請求項４】
前記第２の圧縮回路は、
該第２の圧縮回路のオーバーフロー出力信号を前記第１のＤＳＰ回路ブロックに印加するオーバーフロー出力回路と、
前記第２のＤＳＰ回路ブロックから、該第２のＤＳＰ回路ブロックに含まれる第２の圧縮回路のオーバーフロー出力信号を選択的に受信するオーバーフロー入力回路と
を備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項５】
前記第２の圧縮回路の出力と、前記第２のＤＳＰ回路ブロックから受信される任意のさらなる出力とを加法的に組み合わせる第３の圧縮回路と、
さらなる出力として、該第３の圧縮回路の出力を前記第１のＤＳＰ回路ブロックに選択的にルーティングするさらなるルーティング回路と
をさらに備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項６】
前記第３の圧縮回路は、
該第３の圧縮回路のオーバーフロー出力信号を前記第１のＤＳＰ回路ブロックに印加するオーバーフロー出力回路と、
前記第２のＤＳＰ回路ブロックから、該第２のＤＳＰ回路ブロックに含まれる第３の圧縮回路のオーバーフロー出力信号を選択的に受信するオーバーフロー入力回路と
を備える、請求項５に記載のＤＳＰ回路ブロック。
【請求項７】
前記さらなるルーティング回路は、前記さらなる出力を生成するために、前記第３の圧縮回路の前記出力に作用する桁上げ伝播加算器（「ＣＰＡ」）回路を備える、請求項５に記載のＤＳＰ回路ブロック。
【請求項８】
前記ＣＰＡ回路は、
該ＣＰＡ回路の桁上げ出力信号を前記第１のＤＳＰ回路ブロックに印加する桁上げ出力回路と、
前記第２のＤＳＰ回路ブロックから、該第２のＤＳＰ回路ブロックに含まれるＣＰＡ回路の桁上げ出力信号を選択的に受信する桁上げ入力回路と
を備える、請求項７に記載のＤＳＰ回路ブロック。
【請求項９】
前記第１の乗算回路および前記第２の乗算回路のそれぞれは、Ｎビットの被乗数にＮビットの乗数を乗じることができる、請求項１に記載のＤＳＰ回路ブロック。
【請求項１０】
Ｎは、１８に等しい、請求項９に記載のＤＳＰ回路ブロック。
【請求項１１】
前記第１のＤＳＰ回路ブロックが、（１）前記ＤＳＰ回路ブロックに直接隣接する別のＤＳＰ回路ブロック、（２）該ＤＳＰ回路ブロックに直接隣接しないさらに別のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にする冗長回路をさらに備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項１２】
前記さらに別のＤＳＰ回路ブロックは、前記別のＤＳＰ回路ブロックに直接隣接する、請求項１１に記載のＤＳＰ回路ブロック。
【請求項１３】
前記第２のＤＳＰ回路ブロックが、（１）前記ＤＳＰ回路ブロックに直接隣接するなおも別のＤＳＰ回路ブロック、（２）該ＤＳＰ回路ブロックに直接隣接しないなおもさらなる他のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするさらなる冗長回路をさらに備える、請求項１１に記載のＤＳＰ回路ブロック。
【請求項１４】
前記なおもさらなる他のＤＳＰ回路ブロックは、前記なおも別のＤＳＰ回路ブロックに直接隣接する、請求項１３に記載のＤＳＰ回路ブロック。
【請求項１５】
前記第１のシフタ回路は、代替として、全てゼロであるデータを出力することができる、請求項１に記載のＤＳＰ回路ブロック。
【請求項１６】
前記第２のシフタ回路は、代替として、全てゼロであるデータを出力することができる、請求項１に記載のＤＳＰ回路ブロック。
【請求項１７】
前記選択的にルーティングする回路は、代替として、全てゼロであるデータを出力することができる、請求項１に記載のＤＳＰ回路ブロック。
【請求項１８】
前記さらなるルーティング回路は、代替として、全てゼロであるデータを出力することができる、請求項５に記載のＤＳＰ回路ブロック。
【発明の詳細な説明】
【技術分野】
【０００１】
（発明の分野）
本発明は、デジタル信号処理（「ＤＳＰ」）回路に関し、より具体的には、より複雑なおよび／またはより数学的な精度または演算精度の高いＤＳＰ演算を行うために、任意に連動することができ、および、このように連動する必要があるときに回路欠陥によってＤＳＰブロックが使用不可能になる場合がある可能性に対応することができる、ＤＳＰ回路モジュールまたはブロックのアレイに関する。
【背景技術】
【０００２】
種々の状況において、ＤＳＰ回路のブロックまたはモジュールの複数の事例において製作される集積回路が要求される場合がある。そのような集積回路の例には、プログラム可能論理回路（「ＰＬＤ」）またはフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）がある。そのようなデバイスは、比較的一般的なプログラム可能論理など、複数列の種々の種類の回路を有する場合がある。また、そのような各列は、ＤＳＰ回路（すなわち、特定のＤＳＰ機能またはＤＳＰ機能の特定のセットを実施するように、少なくともある程度まで配線で接続される回路）のブロックを含んでもよい。そのような状態では、列の中の他の回路の（列）境界内に嵌合するように、ＤＳＰブロックの大きさを合わせて作ることが望ましい場合があり得る。これは、ＤＳＰブロックが単独では小さすぎて、集積回路が行うのが望ましい場合がある、いくつかのＤＳＰ機能を行うことができないことを意味する場合がある。そのような場合には、２つ以上のＤＳＰブロックで、より大きなＤＳＰ機能を効率的に行うことができるように、種々の手段で複数のＤＳＰブロックの随意の「つなぎ合わせ（ｓｔｉｔｃｈｉｎｇ  ｔｏｇｅｔｈｅｒ）」を促進することが望ましいであろう。しかしながら、対抗する懸念として、つなぎ合わせる必要があるＤＳＰブロックと関連付けられる回路のいずれの部分も使用できない場合（例えば、集積回路の製造欠陥のため）、それらのＤＳＰブロックをつなぎ合わせることが、さらにより困難または不可能になり得る場合がある。これによって、一部に欠陥がある集積回路が全く使用できない機会が、非常に増加する場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明のある可能な側面に従い、所望の場合に、より大きな（例えば、より複雑なおよび／またはより演算上正確な）ＤＳＰ演算を行うために、より簡単に連動することができるＤＳＰ回路ブロックを提供する。例えば、そのようなＤＳＰブロックは、各ブロックのいずれかの側にある他のＤＳＰブロックへ、信号を任意にまたは選択的にルーティングするルーティング回路を含んでもよい。
【０００４】
本発明の他の可能な側面に従い、ＤＳＰブロック間のルーティング回路はまた、アウトバウンド信号が、２つの他のＤＳＰブロックのうちのいずれかから、各ＤＳＰブロックの片側へ行くことを可能にし、インバウンド信号が、２つのＤＳＰブロックのうちのいずれかから、各ＤＳＰブロックの片側に来ることを可能にする、冗長能力を含んでもよい。別のＤＳＰブロックにつなげるのが望ましい、あるＤＳＰブロックが使用できない場合（例えば、回路の欠陥のため）、この冗長能力により、欠陥のあるＤＳＰブロックを効果的に飛ばすことによって、ＤＳＰブロックのつなぎ合わせを行うことができる。
例えば、本願発明は以下の項目を提供する。
（項目１）
デジタル信号処理（「ＤＳＰ」）回路ブロックであって、
第１および第２のＮビット乗算回路と、
（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の乗算回路の出力をシフトする第１のシフタ回路と、
該第１のシフタ回路と該第２の乗算回路の出力とを加法的に組み合わせる第１の圧縮回路と、
該ＤＳＰ回路ブロックのそれぞれの反対側にある第１および第２の他のＤＳＰ回路ブロックに、該第１の圧縮回路の出力を選択的にルーティングする回路と、
（１）ゼロビット位置、（２）より上位の演算の有効に向かうＮビット位置、および（３）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の圧縮回路の出力をシフトする第２のシフタ回路と、
該第１および第２の他のＤＳＰ回路ブロックのうちのいずれかにおいて、該第２のシフタ回路の出力と、該第１の圧縮回路から受信される任意の出力とを加法的に組み合わせる第２の圧縮回路と
を備える、回路ブロック。
（項目２）
前記ルーティング回路は、前記第１の圧縮回路の前記出力の複数のサブセットのうちのいずれか１つをルーティングするために選択するように制御可能である、項目１に記載のＤＳＰ回路ブロック。
（項目３）
前記選択可能なサブセットは、（１）前記第１の圧縮回路の最大有効出力ビット位置を含むサブセットと、（２）該第１の圧縮回路の最小有効出力ビット位置を含むサブセットとを含む、項目２に記載のＤＳＰ回路ブロック。
（項目４）
前記第２の圧縮回路は、
該第２の圧縮回路のオーバーフロー出力信号を、前記第１の他のＤＳＰ回路ブロックに印加するオーバーフロー出力回路と、
前記第２の他のＤＳＰ回路ブロックにおいて該第２の圧縮回路のオーバーフロー出力信号を選択的に受信するオーバーフロー入力回路と
を備える、項目１に記載のＤＳＰ回路ブロック。
（項目５）
前記第２の圧縮回路の出力と、前記第２の他のＤＳＰ回路ブロックから受信される任意のさらなる出力とを加法的に組み合わせる第３の圧縮回路と、
さらなる出力として、前記第１の他のＤＳＰ回路ブロックに該第３の圧縮回路の出力を選択的にルーティングするさらなるルーティング回路と
をさらに備える、項目１に記載のＤＳＰ回路ブロック。
（項目６）
前記第３の圧縮回路は、
該第３の圧縮回路のオーバーフロー出力信号を、前記第１の他のＤＳＰ回路ブロックに印加するオーバーフロー出力回路と、
前記第２の他のＤＳＰ回路ブロックにおいて該第３の圧縮回路のオーバーフロー出力信号を選択的に受信するオーバーフロー入力回路と
を備える、項目５に記載のＤＳＰ回路ブロック。
（項目７）
前記さらなるルーティング回路は、前記さらなる出力を生成するために、前記第３の圧縮回路の前記出力に作用する桁上げ伝播加算器（「ＣＰＡ」）回路を備える、項目５に記載のＤＳＰ回路ブロック。
（項目８）
前記ＣＰＡ回路は、
該ＣＰＡ回路の桁上げ出力信号を、前記第１の他のＤＳＰ回路ブロックに印加する桁上げ出力回路と、
前記第２の他のＤＳＰ回路ブロックにおいて該ＣＰＡ回路の桁上げ出力信号を選択的に受信する桁上げ入力回路と
を備える、項目７に記載のＤＳＰ回路ブロック。
（項目９）
前記第１および第２の乗算回路の各々は、Ｎビットの被乗数にＮビットの乗数を乗じることができる、項目１に記載のＤＳＰ回路ブロック。
（項目１０）
Ｎは、１８に等しい、項目９に記載のＤＳＰ回路ブロック。
（項目１１）
前記第１の他のＤＳＰ回路ブロックが、（１）前記ＤＳＰ回路ブロックに直接隣接する別のＤＳＰ回路ブロック、および（２）該ＤＳＰ回路ブロックに直接隣接しないさらに別のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にする冗長回路をさらに備える、項目１に記載のＤＳＰ回路ブロック。
（項目１２）
前記さらに別のＤＳＰ回路ブロックは、前記別のＤＳＰ回路ブロックに直接隣接する、項目１１に記載のＤＳＰ回路ブロック。
（項目１３）
前記第２の他のＤＳＰ回路ブロックが、（１）前記ＤＳＰ回路ブロックに直接隣接するなおも別のＤＳＰ回路ブロック、および（２）該ＤＳＰ回路ブロックに直接隣接しないなおもさらなる他のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするさらなる冗長回路をさらに備える、項目１１に記載のＤＳＰ回路ブロック。
（項目１４）
前記なおもさらなる他のＤＳＰ回路ブロックは、前記なおも別のＤＳＰ回路ブロックに直接隣接する、項目１３に記載のＤＳＰ回路ブロック。
（項目１５）
前記第１のシフタ回路は、代替として、全てゼロであるデータを出力することができる、項目１に記載のＤＳＰ回路ブロック。
（項目１６）
前記第２のシフタ回路は、代替として、全てゼロであるデータを出力することができる、項目１に記載のＤＳＰ回路ブロック。
（項目１７）
前記選択的にルーティングする回路は、代替として、全てゼロであるデータを出力することができる、項目１に記載のＤＳＰ回路ブロック。
（項目１８）
前記さらなるルーティング回路は、代替として、全てゼロであるデータを出力することができる、項目５に記載のＤＳＰ回路ブロック。
【０００５】
その本質および種々の利点である、本発明のさらなる特徴は、添付の図面および続く詳細な説明から、より明らかとなるであろう。
【図面の簡単な説明】
【０００６】
【図１】図１は、本発明に従う、代表的な回路の例示的実施形態の、単純化した概略ブロック図である。
【図２】図２は、本発明に従い、図１タイプの回路で使用することができる、回路の例示的実施形態の単純化した概略ブロック図である。
【図３】図３は、本発明に従う、図１に示すタイプの回路の代表的な部分の例示的実施形態の、より詳細であるがなおも単純化した概略ブロック図である。
【図４】図４は、その回路についての議論のいくつかの側面を容易にするために、時計回りに９０°回転した図３の回路を示す。
【図５】図５は、本発明に従い、特定のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図６】図６は、本発明に従い、図５の演算を行うための、ＤＳＰ回路の例示的実施形態を示す、単純化された概略ブロック図である。
【図７】図７は、本発明に従う、別のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図８】図８は、本発明に従い、図７の演算を行うための、ＤＳＰ回路の例示的実施形態を示す、単純化した概略ブロック図である。
【図９】図９は、本発明に従う、さらに別のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図１０】図１０は、本発明に従い、図９の演算を行うための、ＤＳＰ回路の例示的実施形態を示す、単純化した概略ブロック図である。
【発明を実施するための形態】
【０００７】
本発明に従う、集積回路（「ＩＣ」または「デバイス」）１０の例示的実施形態の代表的な部分が、図１に示されている。図１に示す回路は、一部の代表的な回路の列Ｒ４〜Ｒ９の代表的な部分を含む。これらの列のうちのいずれもが、概して、列ＲＮと称され得る。
【０００８】
各列ＲＮは、デジタル信号処理またはＤＳＰ回路１００のブロックを含む。各列ＲＮはまた、他の回路２０の領域から、その列のＤＳＰブロックの左右までを含む。その他の回路２０は、列の間だけでなく、その列のＤＳＰブロックからその列のＤＳＰブロックへ、ならびにその列の論理および他の回路からその列の論理および他の回路へ、ならびにその列の論理と他の回路との間で信号を伝えるための、論理回路および相互接続導体のような構成要素を含んでもよい。この回路のいくつかまたは全ての種々の側面は、例えば、一般的なデバイス１０を、いくつかの異なる形で使用することができるように、プログラム可能であってもよい。例えば、ＤＳＰブロック１００の回路は、通常、あるＤＳＰ機能を行うように、ある程度まで配線で接続されるが、その回路もまた、行われるＤＳＰ演算のある側面が、各ユーザの特定の必要性および要件に合致するよう、デバイスの異なるユーザによって変更することができるように、ある程度までプログラム可能であってもよい。そのようなプログラミングは、集積回路上のメモリセルにおける制御データの記憶、集積回路上のヒューズ断、集積回路のマスクプリグラミング、あるいは任意の他のプログラミング方法または技術の結果であってもよい。
【０００９】
デバイス１０は、列が冗長となるように構成されてもよい。これは、例えば、各列ＲＮが、全ての他の列と同一、または実質的に同一であることを意味する。加えて、デバイス１０は、任意の列ＲＮに欠陥がある場合、その列のすぐ上方または下方の列が、効果的に欠陥のある列の代わりをすることができるように、構成されてもよい。加えて、効果的に欠陥のある列の代わりをしている列の上方または下方の全ての他の列は、効果的に他の隣接する列に取って代わる。このように、ある欠陥の回路を伴って不注意に製作される多くのデバイス１０をなおも使用することができ、それによって、製造過程の生産量は著しく増加する。図１は、ＤＳＰブロック領域１００においてこの冗長性を達成するための、代表的な回路を示している。追加の冗長回路が、各列ＲＮの他の部分に提供されるが、図表を過度に複雑にすることを避けるために（また、列のそれらの他の部分は、本発明の主要な焦点ではないので）、図１には示していない。ＤＳＰブロック冗長回路については、次のいくつかの段落で一般論として記載する。
【００１０】
本発明に従い、ＤＳＰブロック１００は、隣接する１つのＤＳＰブロックまたは複数のＤＳＰブロックへある信号を送信すること、および／または隣接する１つのＤＳＰブロックもしくは複数のＤＳＰブロックからある信号を受信することによって、その機能性を拡張することができる。これらは、隣接するＤＳＰブロック１００間の比較的直接的な接続である。これらのＤＳＰブロック間接続は、回路２０の一部を形成する相互接続資源など、デバイス１０の他のより一般的な相互接続資源には依存しない。むしろ、これらのＤＳＰブロック間信号が、その列における１つ以上の欠陥のために非稼働となっている列を、効果的に「飛び越える」ことができるように、これから記載する冗長回路が採用される可能性がある場合にのみ、これらのＤＳＰブロック間接続は、１つのＤＳＰブロック１００から別の隣接するＤＳＰブロック１００へ直接進む。
【００１１】
代表的な列Ｒ７を例に取ると、（本発明に従い）列Ｒ７のＤＳＰブロック１００から別のＤＳＰブロックに進む必要がある信号は、列Ｒ７のＤＳＰブロックのノードＡから発生してもよい。この信号は、そのＤＳＰブロックのマルチプレクサ回路（「ｍｕｘ」）１１０の１つの選択可能な入力端子、およびまた列Ｒ７上方の列Ｒ６の中のＤＳＰブロック１００の類似のｍｕｘ１１０の１つの選択可能な入力端子に印加される。列Ｒ７のｍｕｘ１１０の出力信号は、列Ｒ６のＤＳＰブロック１００の中の宛先に向かう。列Ｒ６のｍｕｘ１１０の出力は、列Ｒ５のＤＳＰブロック１００の中の宛先に向かう。列Ｒ６に欠陥がなく、そのため使用中である場合、列Ｒ７のｍｕｘ１１０は、列Ｒ６への適用のためにノードＡからの信号を選択するように制御される。しかし、列Ｒ６に欠陥があり、そのためデバイス１０の回路から効果的に切り離されている場合、列Ｒ６のｍｕｘ１１０は、列Ｒ５への適用のためにノードＡからの信号を選択するように制御される。この例は、任意の列のＤＳＰブロック１００からの信号を、すぐ上方の列のＤＳＰブロック１００に、または源となる列の２列上方のＤＳＰブロック１００に印加するために、冗長ｍｕｘ１１０をどのように使用することができるかを示している。
【００１２】
冗長ｍｕｘ１２０は、同様に、任意のＤＳＰブロック１００から、すぐ下方のＤＳＰブロック１００または２列下方のＤＳＰブロック１００のいずれかに信号をルーティングするために使用することができる。例えば、列Ｒ５のＤＳＰブロック１００の中のノードＢから発生する信号は、列Ｒ６および列Ｒ７の各々のｍｕｘ１２０の１つの選択可能な入力に印加される。列Ｒ６が使用中の場合、列Ｒ６のｍｕｘ１２０は、ノードＢからの信号を列Ｒ６の中の宛先へ印加するように制御される。一方で、列Ｒ６が使用中でない場合、列Ｒ７のｍｕｘ１２０は、ノードＢからの信号を列Ｒ７の中の宛先へ印加するように制御される。
【００１３】
図２は、代表的な冗長ｍｕｘ１１０または１２０を制御し得る方法に関する例示的実施形態を示している。ｍｕｘ１１０／１２０は、その選択制御入力信号Ｋの論理状態に基づいて、その出力信号Ｊになるように、その主要なまたは選択可能な入力ＨまたはＩのいずれかを選択することができる。例えば、Ｋがゼロである場合、ＪはＨであってもよく、Ｋが１の場合、ＪはＩであってもよい。Ｋは、デバイス１０上のヒューズ（Ｆ）１３０、デバイス上のメモリセル（Ｍ）１３０、またはデバイス上の任意の他のプログラム可能な特徴１３０に由来してもよい。そのようなヒューズ、メモリセルなど１３０は、（該当する場合）列ＲＮのどこに欠陥があるか、それにより、デバイスを通常通り使用するために、デバイス１０から効果的に切り離されなくてはならないことが決定された後に、そのような各要素１３０に対して適切な状態にプログラムすることが可能であってもよい。
【００１４】
図１に関連して留意すべきことは、各列の幅Ｗ（隣接する列の間）は、（１）その列のＤＳＰブロック１００、および（２）その列の他の回路２０に対してほぼ同じであることである。現在のような、各列が他の列と実質的に同一であり、かつ任意の列も、（欠陥がある場合には）完全に非稼働となり、途切れなく別の列によって取って代わられてもよい状況では、これによって、デバイス１０上の領域の効率的な使用が促進される。したがって、列が非稼働となり、別の列によって取って代わられるとき、好ましくは、元の列の全機能は、代わりの列に自動的に再び割り当てられる。デバイスのユーザは、どの列が使用されているか、およびどの列が使用されていないかを心配する必要はなく、知る必要さえもない。
【００１５】
各ＤＳＰブロック１００の高さを、列の他の回路２０の高さと同じにすることの起こり得る結果には、各ＤＳＰブロックのサイズまたは機能的能力を、そのＤＳＰブロックを含む列の隣接する他の回路２０のサイズおよび能力と釣り合わせる傾向がある。例えば、ＤＳＰブロック１００は、そのＤＳＰブロックを含む列の隣接する回路２０から、一定数の入力信号を取得することができてもよい。これによって、ＤＳＰブロックが行うことができるＤＳＰ演算（例えば、乗算）の数および／またはサイズが制限されてもよい。しかしながら、デバイス１０の一部のユーザは、１つのそのような限定されたＤＳＰブロックで行うことができるよりも大きな乗算を行うことを望む場合がある。そのため、本発明は、例えば、大きな乗算および／または他のＤＳＰ演算のいくつかの部分または側面を、別の隣接するＤＳＰブロック１００で行うことができるようにすることによって、１つのＤＳＰブロック１００の乗算および他の能力の拡張を提供する。本発明に従って、これは、概して図１の１１０および１２０に示すように、冗長回路を介して隣接するＤＳＰブロック間に、実質的に直接信号を送信することによってなされる。実質的に直接的なＤＳＰブロック間接続は、このように、代わりに他の回路２０のより一般的な相互接続資源を使用する試みに起因する場合がある、遅延および起こり得る他の資源の枯渇を避けるために使用される。１１０および１２０のような冗長性は、列が非稼働にならなくてはならない場合に、１つのＤＳＰブロック１００から別のブロックへ行く必要がある信号が、非稼働となっている列の、機能していないＤＳＰブロック１００を迂回することができるように、これらのＤＳＰブロック間の相互接続において使用される。
【００１６】
図３は、本発明に従う、ＤＳＰブロック１００の例示的実施形態を示している。ＤＳＰブロック１００の種々の要素は、以下において早期に識別されるであろう。これらの要素をどのように使用することができるかに関するより多くの詳細は、後で提供されるであろう。図３は、図１に示すのと同じ配向にある、代表的なＤＳＰブロック１００を示している。しかしながら、ＤＳＰブロックの種々の構成要素によって行われる算術演算を説明し、いつこの配向になるかについて議論するのは困難であり得るので、図３の実体は、図４においては異なる配向で正確に再生成される。具体的には、図４は、図３に対して時計回りに９０°回転している。したがって、図４の「左」などは、図３の「底部」、「下」、「下方」などと同じであり、図４の「右」などは、図３の「最上部」、「上」、「上方」などと同じである。図１および３によって、上記の隣接するＤＳＰブロック１００間の実質的な直接接続が、デバイス１０において列から列へ進むことが明確になる。図４のような図は、９０°回転した代表的なＤＳＰブロック１００を図示しているが、この種の図によって、右または左に移動する信号が、回路の別の列ではなく、むしろ回路の別の縦列へと進んでいることが示されるにもかかわらず、図４のような図に関する以下の議論で、１つの「列」から別の「列」へ進む、そのようなＤＳＰブロック間信号になおも言及することになる。
【００１７】
これから図３または図４のいずれかに示すような、代表的なＤＳＰブロック１００の基本構造に移ると、ブロック１００は、２つの１８掛ける１８（「１８ｘ１８」）の乗算回路２００ａおよび２００ｂを含む。乗算器２００の各々は、２つの１８ビットのデータワード（考慮中のＤＳＰブロック１００を含む列の他の回路２０からの電気データ信号によって表される）を共に乗じ、冗長形式（例えば、１つの３６ビットの和ベクトルおよび１つの３６ビットの桁上げベクトル（乗算器は、通常の積の最終値を生成するための、最終桁上げ伝播加算器（「ＣＰＡ」）を含まないため））で、２つの積のベクトル（再び電気信号によって表される）を生成することができる。制御可能なシフタ回路２０２は、乗算器２００ａによって出力される和および桁上げ信号ベクトルを、（１）１８ビット位置から左（数値または演算の有効の増加）、または（２）全くなし（すなわち、左へのシフトはなく、そのため数値または演算の有効の変化もなし）のいずれかにシフトするように、制御可能である。要素２０２に対する別の可能な出力条件は、全てゼロであるデータ信号を出力することであってもよい。図２の場合のように、１３０のような１つ以上のヒューズまたはメモリセルは、上記した通り、乗算器２００ａの出力を左へシフトするべきかどうか（または、第３の可能性として、上記の通り、０のデータを出力）について、要素２０２を制御するようにプログラムされてもよい。別の可能な代替として、要素２０２は、実行する機能に対してマスクプログラミング可能であってもよい。本明細書中の全ての場合において、「シフト」は、通常、そうでなければ次の下流回路要素へそれらの信号を伝える（シフトされない場合）ために使用されるであろう導線のセットとは異なる、次の下流回路要素に進む導線のセットへ、信号をルーティングすることを意味する。ビット信号の「演算の有効」、「ビット位置」、「位」などは、通常、信号はいくつかの導線のうちのどれに存在するのかの結果である。
【００１８】
代表的なＤＳＰブロック１００における次の要素は、４から２への（「４−２」）圧縮回路２１０である。圧縮器２１０は、シフタ２０２および乗算器２００ｂから受信する、２つの和および桁上げ信号ベクトル（すなわち、そのような４つの信号ベクトルの合計）を組み合わせて、そのような２つの信号ベクトルにすることができる。シフタ２０２からのベクトルは、１８ビット位置分、数値の有効が増加する場合があるため、圧縮器２１０の「幅」は、５７ビットにまで増加する必要がある。故に、圧縮器２１０は、５７ビット位置（すなわち、［５７：１］）を有するように示されている。
【００１９】
圧縮器２１０によって出力される和および桁上げベクトル（５７ビットもの数を含み得る各ベクトル）は、ｍｕｘ２２０ａおよび２２０ｂ、ならびにまた制御可能なシフタ回路２３０にも印加される。ｍｕｘ回路２２０ａは、図４に見られる通り、左に隣接するＤＳＰブロックへの適用のために、圧縮器２１０によって出力される５７ビットの信号ベクトルの種々の３８ビットのサブセットのうちのいずれか１つを選択することができる。（本議論中、全てのそのような３８ビットのデータ値またはサブセットの中のビットは、連続する数字上有効がある。例えば、５７ビット源からの比較的低位のビットであってもよいか、またはその源から比較的高位のビットであってもよい。しかし、いずれの場合でも、全て連続ビットの有効を有する。そのようなサブセットを選択することは、通常、いくつかのグループの導線のうちのどの１つが、選択されたサブセットにおける信号の源として選択されるかの結果である。）同様に、ｍｕｘ回路２２０ｂは、図４に見られる通り、右に隣接するＤＳＰブロックへの適用のために、圧縮器２１０によって出力される５７ビットのベクトルの種々の３８ビットのサブセットのうちのいずれか１つを選択することができる。また、ｍｕｘ２２０ａおよび２２０ｂは、所望の場合には、全てゼロであるデータを出力する能力を有することもできる。これは、本明細書中に示し記載する、ｍｕｘ（例えば、２２０、２３２、２４２、２４８など）のいずれか、および制御可能なシフタ（例えば、２０２、２３０など）のいずれかが有してもよい能力である。いくつかのｍｕｘ（例えば、２４２、２５２、および２６２）は、明示するこの能力（例えば、これらのｍｕｘへの選択可能な入力の１セットの接地２４４）を伴い図示されている。この回路は、それを含んでもよい全ての他の要素（例えば、２０２、２２０、２３０、２３２、２４８など）の図示のためには繰り返されず（図表を過度に複雑にすることを避けるため）、またはこの能力は、これらの他の要素の全てに関する議論においてもはっきりとは言及されないが、これらの一般的な種類の全要素が、この能力を有してもよいことは理解されるであろう。
【００２０】
制御可能なシフタ２３０は、それに印加されるビットを１８ビット左へ（それによって、それらのビットの数値の有効が増加する）、または１８ビット右へ（それによって、それらのビットの数値の有効が減少する）シフトすることができる。第３の代替として、シフタ２３０は、それに印加されるデータへのシフトを適用しなくてもよい。要素２２０および２３０の全ては、それらの種々の可能な機能のどれを行うべきかを選択するように、図２の１３０のような、プログラム可能なヒューズまたはメモリ回路要素によって制御されてもよい（またはマスクプログラミング可能であってもよい）。
【００２１】
図３および４に示す代表的なＤＳＰブロック１００から出るためには、ｍｕｘ２２０ｂの出力は、冗長ｍｕｘ１１０ａおよび１１０ｂ（より一般的にまたは一般的には、図１および２に示す冗長ｍｕｘ１１０の特定のインスタンスである）によって選択されなくてはならないことに留意すること。ｍｕｘ１１０ａおよび１１０ｂへの代替入力は、図３では一部のみ点線で示し、図４には全く示していない（図３および４を過度に複雑にすることを避けるため）。しかし、これらの点線の入力は、ＤＳＰブロック１００のｍｕｘ２２０ｂから、図３のＤＳＰブロックの下方（または図４のＤＳＰブロックの左）へ来ることは、図１から明らかであろう。
【００２２】
ｍｕｘ２３２は、冗長ｍｕｘ１２０ａおよび１２０ｂから、３８ビットの和および桁上げベクトルを受信する。また一方、冗長ｍｕｘ１２０ａおよび１２０ｂは、より一般的にまたは一般的に、図１の１２０に示す冗長ｍｕｘのタイプの特定のインスタンスである。ｍｕｘ１２０ａおよび１２０ｂへの実線の入力は、ＤＳＰブロック１００のｍｕｘ２２０ａから、図３のＤＳＰブロックのすぐ上方（または、図４のＤＳＰブロックのすぐ右）へ来ている。ｍｕｘ１２０ａおよび１２０ｂへの代替の点線の入力（図３および４を過度に複雑にすることを避けるために、図３では一部のみを示し、図４には全く示していない）は、ＤＳＰブロック１００のｍｕｘ２２０ａから、図３のＤＳＰブロックの上方に２つ（または、図４のＤＳＰブロックの右に２つ）来ている。また、ｍｕｘ２３２は、３８ビットの和および桁上げ信号ベクトルを、ＤＳＰブロック１００の冗長ｍｕｘ１１０ａおよび１１０ｂから、図３のＤＳＰブロックのすぐ下方（または、図４のＤＳＰブロックのすぐ左）へ来るリード線から受信する。ｍｕｘ２３２は、ｍｕｘ１２０ａおよび１２０ｂからのベクトル、またはｍｕｘ２３２が受信する他のベクトルのいずれかを選択することができる。ｍｕｘ２３２の制御は、ｍｕｘ２２０のような、他の種々の要素の制御と類似し得る。
【００２３】
図３および４に示す代表的なＤＳＰブロック１００の中の次の要素は、４−２圧縮回路２４０である。サイズが異なるものの、圧縮器２４０は圧縮器２１０に類似し得る。言い換えると、圧縮器２４０は、受信する４つの３８ビットの和および桁上げ信号ベクトルを、２つのさらに３８ビットの和および桁上げ信号ベクトルに組み合わせることができる。より大きな乗算が行われている場合には、圧縮器２４０は、別の隣接するＤＳＰブロック１００で、類似する圧縮器２４０と鎖のように連動して作動する必要がある場合がある。したがって、圧縮器２４０は加えて、ｍｕｘ２４２から、より低位の（すなわち、数値の有効がより低い）信号ビットを受信することができる。実際のより低位の源から中での連鎖（ｃｈａｉｎｉｎｇ−ｉｎ）がない場合、ｍｕｘ２４２は、接地電位２４４の源から、これらのより低位ビットを選択することができる。代替として、そのような中での連鎖がある場合には、ｍｕｘ２４２は冗長ｍｕｘ１２０ｃからそれらの出力を手に入れる。ｍｕｘ１２０ｃは、１２０ａおよび１２０ｂのような、ｍｕｘの別のインスタンスである。ｍｕｘ１２０ｃへの実線の入力は、ＤＳＰブロック１００の圧縮器２４０から、図３のブロックのすぐ上方（または、図４のブロックのすぐ右）への２つの出力である。ｍｕｘ１２０ｃへの点線の入力（図の過度の複雑性避けるために、図３には一部のみ示し、図４からは完全に省略）は、ＤＳＰブロック１００の圧縮器２４０から、図３のブロックの上方に２つ（または、図４のブロックの右に２つ）の２つの出力である。圧縮器２４０の底部（図３）または左（図４）から落ちてくる２つの出力は、圧縮器２４０によって行う演算に起因する、最大有効の、最高位の、またはオーバーフロー出力信号のビットである。また一方、より大きな乗算が行われている場合、これらのオーバーフロービットは、ｍｕｘ１２０ｃおよび２４２を介して、隣接するＤＳＰブロックの圧縮器２４０の最低位の入力に連鎖することができる。ＤＳＰブロックの連鎖がない場合、ｍｕｘ２３２は、０のデータ信号を出力するように制御することができる。
【００２４】
圧縮器２４０によって出力される、３８ビットの和および桁上げベクトルは、３から２（「３−２」）の圧縮回路２５０に印加される。また、隣接するＤＳＰブロック１００によって出力される最終積も、冗長ｍｕｘ１２０ｄおよび１２０ｅ、ならびにｍｕｘ２４８を介して、３−２圧縮器２５０に印加することができる。また一方、このＤＳＰブロック間ルーティングの特徴は、あるより複雑なＤＳＰ演算を行うべきときに、使用することができる。ｍｕｘ１２０ｄおよび１２０ｅの配置および使用は、１２０ａおよび１２０ｂなどのその他のｍｕｘの配置および使用に類似する。したがって、ｍｕｘ１２０ｄおよび１２０ｅへの実線の入力は、ＤＳＰブロック１００の桁上げ伝播加算器（ＣＰＡ）回路２６０の主要な出力から、図３および４に示すブロックの上方（図３）または右（図４）へ来ている。冗長ｍｕｘ１２０ｄおよび１２０ｅへの代替の点線の入力（再び、図３にのみ一部のみを示す）は、ＤＳＰブロック１００のＣＰＡ２６０の主要な出力から、図３および４のブロックの上方に２つ（図３）、または右に２つ（図４）来ている。（ＤＳＰブロックの連鎖がない場合、ｍｕｘ２４８は、０のデータ信号を出力するように制御される。）３−２圧縮器２５０は、最終桁上げ伝播加算器（「ＣＰＡ」）２６０に印加される、さらなる和および桁上げ信号ベクトルを生成するように、圧縮器２４０からの和および桁上げ信号ベクトルを、ｍｕｘ２４８によって出力されるデータと組み合わせることができる。代表的なＤＳＰブロック１００が、３８ビットより大きな算術演算に関与する場合、より低位の信号ビットを、隣接するＤＳＰブロック１００から、圧縮器２５０の場合にはｍｕｘ１２０ｇおよび２６２をｍｕｘ１２０ｆおよび２５２を介して、ならびにＣＰＡ２６０の場合にはｍｕｘ１２０ｇおよび２６２を介して、圧縮器２５０およびＣＰＡ２６０に印加することができる。同様に、より長い算術演算のために、複数の要素２５０および複数の要素２６０を連鎖させる必要がある場合には、より高位の信号ビットは、要素２５０および２６０から、隣接するＤＳＰブロック１００の要素１２０ｆ／２５２／２５０および１２０ｇ／２６２／２６０へ出力することができる。要素１２０ｆ、２５２、および２４４の配置および使用は、要素１２０ｃ、２４２、および２４４の上記の配置および使用に類似し得る。要素１２０ｇ、２６２、および２４４も同じである。したがって、要素１２０ｆ／２５２／２４４および１２０ｇ／２６２／２４４のさらなる説明は必要ではない。
【００２５】
別の隣接するＤＳＰブロック１００のｍｕｘ２４８に戻って実質的に直接ルーティング可能であることに加えて、ＣＰＡ２６０によって出力される、最終的な最大３８ビット信号の積は、通常、図１に示す代表的なＤＳＰブロック１００を含む、列ＲＮの他の回路２０に印加される。
【００２６】
これから、１つ以上のＤＳＰブロック１００が補助することができる、種々の操作モードの例の考察に移る。
【００２７】
Ａ．  １８ｘ１８および１８ｘ１８複合体
１８ｘ１８の乗算、および１８ｘ１８の虚数乗法（例えば、（ａ＋ｂｉ）ｘ（ｃ＋ｄｉ））のような比較的単純なモードは、１つのＤＳＰブロック１００内で行うことができる。例えば、どちらの乗算器２００も、１８ｘ１８の乗算から和および桁上げ信号ベクトルを形成するように使用することができ、それらのベクトルは、後続の構成要素を通って、ＣＰＡ２６０へと下へ渡すことができ、これによって、乗算の最終積を形成する。
【００２８】
Ｂ．  ４つの１８ｘ１８の和
４つの１８ｘ１８の乗算の積の和は、２つの隣接するＤＳＰブロックを使用して形成することができる。（「隣接する」は、冗長回路の演算によって非稼働となっている介在する列がない場合には、直接隣接することか、または代替として、そのような介在する非稼働の列を別とすれば、隣接することを意味する。）以下などの議論において、Ａ、Ｂ、Ｃなどの各文字は、１８ビットの入力を示すかまたは表し、ＡＢ、ＣＤなどの各文字の対は、その対の文字で識別される、２つの１８ビットの入力の乗算に対する乗算の結果である。そのような文字の対は、乗算結果に対する中間和および桁上げベクトル、または最終の乗算の積のいずれかを表してもよい。したがって、ＡＢ＋ＣＤ＋ＥＦ＋ＧＨは、８つの対を成す１８ビット入力の４つの積の和である。
【００２９】
第１のＤＳＰブロック１００の乗算器２００ａは、ＡＢを形成するように使用してもよい。そのＤＳＰブロックの乗算器２００ｂは、ＣＤを形成するように使用してもよい。第１のＤＳＰブロックの圧縮器２１０は、ＡＢ＋ＣＤを形成する。ｍｕｘ２２０ｂは、隣接するＤＳＰブロック１００のｍｕｘ２３２および圧縮器２４０へ、ＡＢ＋ＣＤをルーティングするように使用することができる。隣接するＤＳＰブロックの乗算器２００ａは、ＥＦを形成するように使用することができる。その隣接するブロックの乗算器２００ｂは、ＧＨを形成するように使用することができる。その隣接するブロックの圧縮器２１０は、ＥＦ＋ＧＨを形成する。その隣接するブロックの圧縮器２４０は、その同じブロックのＣＰＡ２６０が最終積の形態で出力する、ＡＢ＋ＣＤ＋ＥＦ＋ＧＨを形成する。ＡＢ＋ＣＤを形成するブロックは、ＥＦ＋ＧＨおよびＡＢ＋ＣＤ＋ＥＦ＋ＧＨを形成するブロックのいずれかの側のブロックであり得ることに留意すべきである。
【００３０】
Ｃ．  ２つの３６ｘ１８の和
以下などの議論において、Ａ、Ｂ、Ｃなどのような文字は前と同じ意味を有し、ＡＣ、ＢＣなどのような文字の対は前と同じ意味を有し、（Ａ，Ｂ）のような文字の対は、左の文字が１８より上位のビットを指し、右の文字が１８より下位のビットを指す、３６ビットのデータワードを示し、（Ａ，Ｂ）＊Ｃのような文字の組み合わせは、１８ビットのデータワード（例えば、Ｃ）が乗じられる、３６ビットのデータワード（例えば、（Ａ，Ｂ））の乗算に対する乗算の結果を示す。したがって、本明細書で議論しているモードの目的は、（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆを生成することである。
【００３１】
図５は、上記の結果がどのように作り上げられるかを（算術的に）示している。図５のパート１は、実施される３６ｘ１８の乗算のうちの１つを示している（すなわち、（Ａ，Ｂ）＊Ｃ）。パート２は、実施される３６ｘ１８の乗算のうちの他方を示している（すなわち、（Ｄ，Ｅ）＊Ｆ）。パート３は、（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆを生成するように、種々の部分積を生成し、その後加算に対して垂直方向に整列させる方法を示している。具体的には、２つの部分積（Ａ，Ｂ）＊Ｃは、ＡＣおよびＢＣとして生成され、ＡＣは、ＢＣに対して１８ビット位置分左へシフトする。同様に、２つの部分積（Ｄ，Ｅ）＊Ｆは、ＤＦおよびＥＦとして生成され、ＤＦは、ＥＦに対して１８ビット位置分左へシフトする。ＢＣ、ＡＣ、ＥＦ、およびＤＦの全ては、図５のパート３に示す通りに加算される。
【００３２】
図６は、２つの隣接するＤＳＰブロック１００が、上の演算を形成するようにどのように構成され得るのかを示している。図６は、冗長回路の図示を省略し、２つの直接隣接するＤＳＰブロック１００ａおよび１００ｂが使用されると仮定して、単純化している。（前に図示および記載した冗長回路の全ては、図６回路に実際に存在し、この冗長回路は、使用することができない介在ＤＳＰブロックによって、互いから分離している２つのＤＳＰブロックと共に、効果的に置くように使用することができることは、理解されるであろう。）図６に示す通り、ＤＳＰブロック１００ａの乗算器２００ａはＡＣを形成し、ＤＳＰブロック１００ａの乗算器２００ｂはＤＦを形成し、ＤＳＰブロック１００ｂの乗算器２００ａはＢＣを形成し、ＤＳＰブロック１００ｂの乗算器２００ｂはＥＦを形成する。ブロック１００ａの圧縮器２１０は、ＡＣおよびＤＦを圧縮（加算）する。ブロック１００ｂの圧縮器２１０は、ＢＣおよびＥＦを圧縮（加算）する。ブロック１００ａの圧縮器２１０の出力のより下位の１８ビットは、要素２２０ｂ（ブロック１００ａ）および２３２（ブロック１００ｂ）を介して、ブロック１００ｂの圧縮器２４０へルーティングされる。（このルーティングの経路は、図６の点線２１１によって強調されている。）これによって、ブロック１００ｂは、図５のパート３において、最終積の一部分を点線の右に形成することができる。図５のパート３における点線の左のデータは、ブロック１００ａに残り、最終和のその部分として、そのブロックによって出力される。
【００３３】
より具体的には、ブロック１００ａで、シフタ２３０は、ブロック１００ｂへ転送されない、圧縮器２１０のより上位の出力が、ブロック１００ａの圧縮器２４０のより下位の部分にシフトされるよう、圧縮器２１０の出力を１８ビット位置分右へシフトするように使用される。ブロック１００ｂでは、シフタ２３０が、圧縮器２１０から１８ビット位置分左へデータをシフトさせ、ブロック１００ｂのｍｕｘ回路２３２を通過するデータは、そのｍｕｘ回路２３２と関連付けられる圧縮器２４０へのより上位の入力に印加される。したがって、ブロック１００ｂの圧縮器２４０は、図５のパート３において、点線の右に示す加算の終了を開始することができる。ブロック１００ｂの圧縮器２４０の最大有効の末端からの任意の桁上げまたはオーバーフローは、ブロック１００ａのｍｕｘ２４２によって、ブロック１００ａの圧縮器２４０の最小有効の末端に適用される。これによって、圧縮器２４０の両方が、１つのさらにより長い圧縮器として、効果的に共に作動することができる。
【００３４】
圧縮器２４０の各々によって出力されるデータは、それぞれ関連付けられる圧縮器２５０を通って、それぞれ関連付けられる桁上げ伝播加算器（「ＣＰＡ」）２６０へ流れ、（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆに対する最終和の出力データが生成される。また一方、ブロック１００ｂのＣＰＡ２６０の最大有効の末端からの任意の桁上げオーバーフローは、ブロック１００ａのｍｕｘ２６２を介して、ブロック１００ａのＣＰＡ２６０の最小有効の末端に適用される。これによって、再び、ＣＰＡ２６０の両方が、１つのさらにより長いＣＰＡとして、効果的に共に作動することができる。したがって、ブロック１００ａが、最終積（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆの１８より上位のビットを出力する一方で、ブロック１００ｂは、その最終積の３６より下位のビットを出力する。
【００３５】
Ｄ．  ２つのＤＳＰブロックを使用する３６ｘ３６モード
以下などの議論において、（Ａ，Ｂ）のような文字の対は、再び３６ビットのデータワードを示し、左の文字が１８より上位のビットを指し、右の文字が１８より下位のビットを指す。また、ＢＤのような文字の対も、基本的には前と同じ意味を有する（ここでは、そのような文字の対は、通常、２つの異なる３６ビットのデータワードのうちの２つの１８ビット部分の積を指す）。したがって、本セクションで議論している作業の目的は、（Ａ，Ｂ）および（Ｃ，Ｄ）の積、または（Ａ，Ｂ）＊（Ｃ，Ｄ）を生成することである。
図７は、上記の結果がどのように作り上げられるかを算術的に示している。図７のパート１は、行われる乗算を示している。パート２は、形成される４つの部分積、およびこれらの４つの部分積が、垂直方向に加算することができるよう、相対的な演算の有効を調整するように、互いに対して左から右にどのように位置づけられるかを示している。具体的には、最大有効の部分積ＢＤは、被乗数（Ａ，Ｂ）および乗数（Ｃ，Ｄ）の各々の１８ビットより下位のビットの積である。次の部分積ＡＤは、被乗数（Ａ，Ｂ）の１８より上位のビット、および乗数（Ｃ，Ｄ）の１８より下位のビットの積である。部分積ＣＢは、被乗数（Ａ，Ｂ）の１８より下位のビット、および乗数（Ｃ，Ｄ）の１８より上位のビットの積である。部分積ＡＣは、被乗数および乗数の各々の１８より上位のビットの積である。既に言及してきた通り、図７のパート２もまた、部分積ＡＤおよびＣＢが、部分積ＢＤに対して１８ビット位置分左へどのようにシフトするのか、ならびに部分積ＡＣが、部分積ＡＤおよびＣＢに対して１８より大きいビット位置分左へどのようにシフトするのかを示している。そのようなシフトの後、図７のパート２に示す４つの部分積は、（Ａ，Ｂ）および（Ｃ，Ｄ）の所望の最終積、すなわち（Ａ，Ｂ）＊（Ｃ，Ｄ）を生成するように、垂直方向に加算することができる。
【００３６】
２つの隣接するＤＳＰブロック１００は、図７によって図示する算術的機能を実施するように使用することができる。（再び、「隣接する」は、介在する列の中に非稼働中になっているものがない場合は直接隣接すること、または非稼働中になっている介在する列の反対側に隣接することのいずれかの意味である。）図８は、これが２つの隣接するＤＳＰブロック１００ａおよび１００ｂを使用して（かつ、再び、図を極度に複雑化するのを避けるために、冗長マルチプレクサおよび他の冗長接続の図示を省略して）、どのように行うことができるのかを示している。
【００３７】
図８に示す通り、ＤＳＰブロック１００ａの乗算器２００ａは、部分積ＡＣを形成する。ＤＳＰブロック１００ａの乗算器２００ｂは、部分積ＣＢを形成する。ＤＳＰブロック１００ｂの乗算器２００ａおよび２００ｂは、それぞれ部分積ＡＤおよびＢＤを形成する。ＤＳＰブロック１００ａのシフタ２０２は、部分積ＡＣを部分積ＣＢに対して、１８ビット位置分左にシフトさせ、そのＤＳＰブロックの圧縮器２１０が、互いに対してそのようにシフトするように、それら２つの部分積を加算する。ＤＳＰブロック１００ｂのシフタ２０２は、部分積ＡＤを部分積ＢＤに対して、１８ビット位置分左にシフトさせ、そのＤＳＰブロックの圧縮器２１０が、互いに対してそのようにシフトするように、それら２つの部分積を加算する。
【００３８】
ＤＳＰブロック１００ａの圧縮器２１０によって出力される、１８の最小有効ビットは、ブロック１００ａの要素２２０ｂおよびブロック１００ｂの要素２３２を介して、ブロック１００ｂの圧縮器２４０にルーティングされ、これらのビットは、関連付けられる圧縮器２４０の入力のより上位の末端へルーティングされる。（点線２１３によってこのルーティングを強調している。）ＤＳＰブロック１００ｂの圧縮器２１０によって出力される、１８の最大有効ビットは、ブロック１００ｂの要素２２０ａおよびブロック１００ａの要素２３２を介して、ブロック１００ａの圧縮器２４０にルーティングされ、これらのビットは、関連付けられる圧縮器の入力のより下位の末端へルーティングされる。（点線２１５によってこのルーティングを強調している。）ＤＳＰブロック１００ａのシフタ２３０は、ブロック１００ａからブロック１００ｂへ転送されていた、より下位のビットが、ブロック１００ａの圧縮器２４０に印加されるのを防止するように、そのブロックの圧縮器２１０によって出力されるデータを、１８ビット右へシフトさせる。ＤＳＰブロック１００ｂのシフタ２３０は、ブロック１００ｂからブロック１００ａへ転送されていた、より上位のビットが、ブロック１００ｂの圧縮器２４０に印加されるのを防止するように、そのブロックの圧縮器２１０によって出力されるデータを、１８ビット左へシフトさせる。
【００３９】
ＤＳＰブロック１００ａおよび１００ｂの圧縮器２４０は、それらに印加される部分積の情報を加算するように連動する（ブロック１００ａの要素２４２は、ブロック１００ｂの圧縮器２４０の最高位（最大有効）のビット位置から、ブロック１００ａの圧縮器２４０の最低位（最小有効）のビット位置へ、任意のオーバーフローを印加する）。したがって、ブロック１００ａの圧縮器２４０は、図７のパート２において、垂直な点線の左のデータを加算する結果の形成を開始している一方で、ブロック１００ｂの圧縮器２４０は、同様にその点線の右のデータに対して行っている。
【００４０】
圧縮器２４０の各々によって出力されるデータは、それぞれの圧縮器２５０を通って、それぞれの桁上げ伝播加算器（「ＣＰＡ」）２６０に流れる。また一方、ブロック１００ａの要素２６２は、ブロック１００ｂのＣＰＡ２６０の最大有効の末端から、ブロック１００ａのＣＰＡ２６０の最小有効の末端へ、任意の桁上げ出力を印加する。これら２つのＣＰＡ２６０の最終出力は、最終積（Ａ，Ｂ）＊（Ｃ，Ｄ）を一括して備え、ブロック１００ａのＣＰＡ２６０の出力が、その最終積のより上位のビットを構成し、ブロック１００ｂのＣＰＡ２６０の出力が、その最終積のより下位のビットを構成する。
Ｅ．  ４つのＤＳＰブロックを使用する５４ｘ５４モード
本発明に従うＤＳＰブロック１００をどのように使用することができるかの別の例が、図９および１０によって図示されている。本議論では、（Ａ，Ｂ，Ｃ）のような文字の３つ揃いは、文字Ａが１８の最大有効ビットを示し、文字Ｂが１８ビットの中間の演算の有効を示し、文字Ｃが１８の最小有効ビットを示す、５４ビットのデータワードを指す。ＡＦのような文字の対は、１つの５４ビットのデータワードからの１８ビットＡかける別の５４ビットのデータワードからの１８Ｆの部分積を指す。本セクションで議論しているモードの目的は、２つの５４ビットのデータワードの積、すなわち（Ａ，Ｂ，Ｃ）かける（Ｄ，Ｅ，Ｆ）または（Ａ，Ｂ，Ｃ）＊（Ｄ，Ｅ，Ｆ）の積を生成することである。しかしながら、１０８ビットに対する正確な精度は、積には要求されないと推定される。したがって、最小有効の部分積ＣＦは算出されず、最終（略）積を生成するように使用もされない。
【００４１】
図９は、上記の積が、複数の部分積からどのように作り上げられるかを算術的に示している。図１０は、図９に示す通り、積を作り上げるために使用することができる、４つのＤＳＰブロック１００ａ〜１００ｄを示している。（また一方、便宜上、図１０では、この範囲のＤＳＰブロックは非稼働中ではないため、４つの直接隣接するＤＳＰブロック１００が使用可能であると推定している。したがって、図１０では、本明細書の他の場所に示し記載する、冗長回路の図示を省略している。しかし、ブロック１００ａ〜ｄのうちの１つが、非稼働中となっているはずの場合には、その冗長回路が好ましくは存在し、ＤＳＰブロック１００を、図１０との関係で記載した機能を行うのに役立つよう、使用することが可能となるように、使用することができる。）図９のパート１は、行われる乗算を示している。図９のパート２は、２つの左側のＤＳＰブロック１００ａおよび１００ｂにて形成され、適切に組み合わされる、部分積を示している。図９のパート３は、２つの右側のＤＳＰブロック１００ｃおよび１００ｄにて形成され、適切に組み合わされる部分積を示している。図９のパート３からの３６より上位のビット（すなわち、パート３における点線の左のビット）は、主にＤＳＰブロック１００ｂの最終段階において、図９のパート２からの３６より下位のビット（すなわち、パート２における点線の右のビット）に加算される。したがって、積の７２より上位のビットは、ＤＳＰブロック１００ａおよび１００ｂによって出力される。積の追加の１８より下位のビットは、ＤＳＰブロック１００ｄから利用可能である。先に言及した通り、積のなおもより下位のビットは、算出されず、利用可能でもない。したがって、この場合の「積」は、非常に高い精度での近似であるものの、単なる近似であるにすぎない。具体的には、これは、最小有効の部分積ＣＦが算出されず、図９および１０のどこにも使用されていないという事実による。
【００４２】
これよりより詳細に図９および１０を考慮する際には、ＤＳＰブロック１００ａおよび１００ｂで行われる作業（図９のパート２に示す通り）は、最初、図７および８に示し、それらの図と関連して記載することと同じであるに気づくであろう。具体的には、この作業には、２つの３６ビットのデータワードの積（この場合には、積（Ａ，Ｂ）＊（Ｄ，Ｅ））を形成するために、２つのＤＳＰブロック１００ａおよび１００ｂを使用する。２つのＤＳＰブロックの機能性のこの側面は、図７および８との関連で既に完全に記載してきたため、図９のパート２、または図１０のＤＳＰブロック１００ａおよび１００ｂとの関連で、再び詳細に記載する必要なないであろう。
【００４３】
これより図９のパート３、および図１０のＤＳＰブロック１００ｃおよび１００ｄに移ると、これら２つのＤＳＰブロックにて行われる作業は、最初、図５および６に示し、それらの図と関連して記載することに少々類似していることに気づくであろう。しかしながら、図９のパート３の点線は、図５のパート３の点線とは異なる場所にあり、そのため、図１０のＤＳＰブロック１００ｃおよび１００ｄがこの作業を行う手段は、図６用に上に記載した流れとは少々異なる。図１０で使用される少々異なる流れについては、次の段落に記載する。
【００４４】
ＤＳＰブロック１００ｃの乗算器２００ａおよび２００ｂは、部分積ＡＦおよびＤＣをそれぞれ形成する。ブロック１００ｃの圧縮器２１０は、これら２つの部分積を共に加算する。ＤＳＰブロック１００ｄの乗算器２００ａおよび２００ｂは部分積ＢＦおよびＥＣを形成し、そのブロックの圧縮器２１０は、これら２つの部分積を共に加算する。ブロック１００ｄの２２０ａ、およびブロック１００ｃの２３２のルーティングによって、ブロック１００ｄの圧縮器２１０によって出力される１８より上位のビットを、ブロック１００ｃの圧縮器２４０のより下位の末端に印加する。ブロック１００ｄのシフタ２３０は、そのブロックの圧縮器２１０の出力を、１８ビット位置分左へシフトさせる。ブロック１００ｃの圧縮器２４０は、それに印加される４つのベクトルを２つのベクトルにまで減らして圧縮し、ベクトルは、そのブロックの圧縮器２５０を通って、そのブロックのＣＰＡ２６０に至るまで流れる。（これは、基本的には、図９のパート３において、点線の左に必要とされる、最終加算作業である。）ブロック１００ｄの圧縮器２４０の出力は、同様に、そのブロックの圧縮器２５０を通って、そのブロックのＣＰＡ２６０へと下に流れる。（これは、図９のパート３において、点線の左にあるものに対応する。）ブロック１００ｃおよび１００ｄのＣＰＡ２６０は、図９のパート３に示す作業の最終和を生成するように連動する。ブロック１００ｂの要素２４８は、その結果の３８より上位のビット（ブロック１００ｃのＣＰＡ２６０によって出力される）を、ブロック１００ａおよび１００ｂで行われている作業への加算用のブロック１００ｂ（図９のパート２に示す通り）の中へルーティングするように使用する。したがって、最終結果は、（１）ブロック１００ａおよび１００ｂのＣＰＡ２６０によって出力されている、（Ａ，Ｂ，Ｃ）＊（Ｄ，Ｅ，Ｆ）の７２より上位のビット、および（２）ブロック１００ｄのＣＰＡ２６０によって出力されている、その（近似）積の１８より上位（より下位）のビットである。
【００４５】
前述のいくつかの側面を要約し、また論じてきたことを拡張するいくつかの点において、デジタル信号処理（「ＤＳＰ」）ブロック（例えば、１００）は、第１および第２のＮビット（例えば、１８ビット）乗算回路（例えば、２００ａおよび２００ｂ）を含んでもよい。ＤＳＰブロックは、（１）ゼロビット位置、および（２）より上位の演算の有効に向かったＮビット位置のうちの選択可能な１つによって、第１の乗算回路の出力をシフトするための第１のシフタ回路（例えば、２０２）をさらに含んでもよい。ＤＳＰブロックは、第１のシフタ回路と第２の乗算回路の出力とを加法的に組み合わせるための第１の圧縮回路（例えば、２１０）をなおもさらに含んでもよい。ＤＳＰブロックは、ＤＳＰ回路ブロックのそれぞれの反対側にある、第１および第２の他のＤＳＰ回路ブロックへ、第１の圧縮回路の出力を選択的にルーティングするための回路（例えば、２２０ａおよび２２０ｂ）をその上さらに含んでもよい。ＤＳＰブロックは、（１）ゼロビット位置、（２）より上位の演算の有効に向かったＮビット位置、および（３）より下位の演算の有効に向かったＮビット位置のうちの選択可能な１つによって、第１の圧縮回路の出力をシフトするための第２のシフタ回路（例えば、２３０）をなおもさらに含んでもよい。ＤＳＰブロックは、第１および第２の他のＤＳＰ回路ブロックのうちのいずれかで、第１の圧縮回路から受信される任意の出力を加法的に組み合わせるための第２の圧縮回路（例えば、２４０）をその上さらに含んでもよい。
【００４６】
上に記載したＤＳＰ回路ブロックでは、ルーティング回路（例えば、２２０ａおよび／または２２０ｂ）は、第１の圧縮回路（例えば、２１０）の出力の複数のサブセットのうちのいずれか１つをルーティングするために選択するように制御可能であってもよい。これらの選択可能なサブセットは、（１）第１の圧縮回路の最大有効出力ビット位置を含むサブセット、および（２）第１の圧縮回路の最小有効出力ビット位置を含むサブセットを含んでもよい。
【００４７】
上に記載したＤＳＰ回路ブロックでは、第２の圧縮回路（例えば、２４０）は、第２の圧縮回路のオーバーフロー出力信号を、第１の他のＤＳＰ回路ブロックに印加するためのオーバーフロー出力回路（例えば、圧縮器２４０の最大有効の末端から、隣接するＤＳＰブロックへの出力リード線）と、第２の他のＤＳＰ回路ブロックで第２の圧縮回路のオーバーフロー出力信号を選択的に受信するためのオーバーフロー入力回路（例えば、２４２）とを含んでもよい。
【００４８】
上に記載したＤＳＰ回路ブロックは、第２の圧縮回路の出力と、第２の他のＤＳＰ回路ブロックから受信される任意のさらなる出力とを、加法的に組み合わせるための第３の圧縮回路（例えば、２５０）と、さらなる出力として、第１の他のＤＳＰ回路ブロックへ、第３の圧縮回路の出力を選択的にルーティングするためのさらなるルーティング回路（例えば、２４８）とをさらに含んでもよい。そのようなＤＳＰ回路ブロックでは、第３の圧縮回路（例えば、２５０）は、第３の圧縮回路のオーバーフロー出力信号を、第１の他のＤＳＰ回路ブロックに印加するためのオーバーフロー出力回路（例えば、圧縮器２５０の最大有効の末端から、隣接するＤＳＰブロックへの出力リード線）と、第２の他のＤＳＰ回路ブロックで第３の圧縮回路のオーバーフロー出力信号を選択的に受信するためのオーバーフロー入力回路（例えば、２５２）とを含んでもよい。
【００４９】
上記のさらなるルーティング回路（例えば、２４８）を含むＤＳＰ回路では、そのさらなるルーティング回路は、さらなる出力を生成するように、第３の圧縮回路（例えば、２５０）の出力に作用するための桁上げ伝播加算器（「ＣＰＡ」）回路（例えば、２６０）を含んでもよい。ＣＰＡ回路は、ＣＰＡ回路の桁上げ出力信号を、第１の他のＤＳＰ回路ブロックに印加するための桁上げ出力回路（例えば、ＣＰＡ２６０の最大有効の末端から、隣接するＤＳＰブロックへの出力リード線）と、第２の他のＤＳＰ回路ブロックでＣＰＡ回路の桁上げ出力信号を選択的に受信するための桁上げ入力回路（例えば、２６２）を含んでもよい。
【００５０】
上に記載したＤＳＰ回路ブロックは、第１の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、別のＤＳＰ回路ブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、さらに別のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、冗長回路（例えば、１１０および／または１２０）をさらに含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第１の他のＤＳＰブロックは、（１）列Ｒ８内または（２）列Ｒ９内のいずれかにあり得る。そのような配置では、さらに別のＤＳＰ回路ブロック（例えば、列Ｒ９の中のブロック）は、別のＤＳＰ回路ブロック（例えば、列Ｒ８の中のブロック）に直接隣接する。
【００５１】
上に記載したＤＳＰ回路ブロックはまた、第２の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、なおも別のＤＳＰ回路ブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、なおもさらに他のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路（例えば、１１０および／または１２０）を含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第２の他のＤＳＰブロックは、（１）列Ｒ６内または（２）列Ｒ５内のいずれかにあり得る。そのような配置では、なおもさらに他のＤＳＰ回路ブロック（例えば、列Ｒ５の中のブロック）は、なおも別のＤＳＰ回路ブロック（例えば、列Ｒ６の中のブロック）に直接隣接する。
【００５２】
本発明の他の可能な側面に従い、ＤＳＰ回路（例えば、１０）は、複数のＤＳＰ回路ブロック（例えば、１００）を備えてもよく、それらの各々は、その回路ブロック（例えば、Ａ、Ｂ、Ｃなど）に印加される信号に関するＤＳＰ演算（例えば、２００、２０２、２１０、２３０、２４０など）を行うことができ、ＤＳＰ回路ブロックの各々は、ＤＳＰ回路ブロックのそれぞれの反対側にある、第１および第２の他のＤＳＰ回路ブロックへ、ＤＳＰ演算のうちの少なくともいくつかの出力を選択的にルーティングするための回路（例えば、２２０、２３２、２４２など）を含んでもよい。そのような場合、選択的にルーティングするための回路は、ＤＳＰ回路ブロック用の第１の他のＤＳＰ回路ブロックが、（１）そのＤＳＰ回路ブロックに直接隣接する、別のＤＳＰ回路ブロック、および（２）そのＤＳＰ回路ブロックに直接隣接しない、さらに別のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、冗長回路（例えば、１１０および／または１２０）を含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第１の他のＤＳＰブロックは、（１）列Ｒ８内または（２）列Ｒ９内のいずれかにあり得る。そのような配置では、さらに別のＤＳＰ回路ブロック（例えば、列Ｒ９の中のブロック）は、別のＤＳＰ回路ブロック（例えば、列Ｒ８の中のブロック）に直接隣接する。
【００５３】
上に記載したＤＳＰ回路で選択的にルーティングするための回路は、ＤＳＰ回路ブロック用の第２の他のＤＳＰ回路ブロックが、（１）そのＤＳＰ回路ブロックに直接隣接する、なおも別のＤＳＰ回路ブロック、および（２）そのＤＳＰ回路ブロックに直接隣接しない、なおもさらに他のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路（例えば、１１０および／または１２０）をさらに含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第２の他のＤＳＰブロックは、（１）列Ｒ６内または（２）列Ｒ５内のいずれかにあり得る。そのような配置では、なおもさらに他のＤＳＰ回路ブロック（例えば、列Ｒ５の中のブロック）は、なおも別のＤＳＰ回路ブロック（例えば、列Ｒ６の中のブロック）に直接隣接する。
【００５４】
上に記載したＤＳＰ回路では、ＤＳＰ回路ブロックの各々の選択的ルーティング用の回路は、ＤＳＰ回路ブロックのうちの第１および第２の他の回路が、行うことができる全てのＤＳＰ演算ではないが、いくつかより下流にある、ＤＳＰ回路ブロックのうちの第１および第２の他の回路の入力へ、出力を選択的にルーティングしてもよい。例えば、選択的ルーティング回路２２０は、１つのＤＳＰブロックの圧縮器２１０の出力を、別のＤＳＰブロックの圧縮器２４０の入力へルーティングすることができ、圧縮器２４０は、他のＤＳＰブロックのいくつかの（全てではないが）他のＤＳＰ演算より下流にある（例えば、演算部２００、２０２、２１０、および２３０より下流にあるが、演算部２５０および２６０より上流にある）。
【００５５】
本発明のなおも他の可能な側面に従い、ＤＳＰ回路（例えば、１０）は、複数のＤＳＰ回路ブロック（例えば、１００）を含んでもよく、それらの各々は、次々に連続して複数のＤＳＰ演算（例えば、２００、２０２、２１０、２３０、２４０など）を行うことができる。ＤＳＰ回路ブロックの各々は、そのＤＳＰ回路ブロックのＤＳＰ演算（例えば、２１０）の少なくとも１つの出力を、そのＤＳＰ回路ブロックのそれぞれの反対側にある、ＤＳＰ回路ブロックのうちの第１および第２の他のブロックへ選択的にルーティングするための、回路（例えば、２２０）をさらに含んでもよい。各ＤＳＰ回路ブロックで選択的にルーティングするための回路は、それら他のＤＳＰ回路ブロックにおいてＤＳＰ演算が連続する中の中間にある、第１および第２の他のＤＳＰ回路ブロックのＤＳＰ演算への入力へ、出力のうちの少なくともいくつかを選択的にルーティングしてもよい。例えば、ルーティング回路２２０は、ＤＳＰブロックの出力を、別のＤＳＰブロックの圧縮器２４０の入力へルーティングすることができ、圧縮器２４０は、ＤＳＰ演算が連続する中の中間にある（すなわち、２００および２０２のようなＤＳＰ演算が先行し、２５０および２６０のようなＤＳＰ演算が続く）。
【００５６】
上に記載したＤＳＰ回路では、入力の少なくともいくつかは、選択的にルーティングするための回路が、それら少なくともいくつかの入力へ選択的にルーティングされる出力を受信した、その送信元のＤＳＰ回路ブロックが連続する中のポイントとは異なる、ＤＳＰブロックが連続する中のポイントでの、ＤＳＰ演算への入力であってもよい。例えば、ルーティング要素２２０が、別のＤＳＰブロックで圧縮器２４０に印加するように、そこから出力を獲得する圧縮器２１０は、圧縮器２４０が第２の言及したＤＳＰブロックでＤＳＰ演算が連続する中にあるポイントとは異なる、第１の言及したＤＳＰブロックのＤＳＰ演算が連続する中のポイントにある。
【００５７】
上に記載したＤＳＰ回路では、各ＤＳＰ回路ブロックは、そのＤＳＰ回路ブロックのＤＳＰ演算の第２の出力を、第１の他のＤＳＰ回路ブロックの同じＤＳＰ演算の入力へ選択的にルーティングするための、第２の回路（例えば、圧縮器２４０の最大有効の末端から、隣接するＤＳＰブロックへのリード線）をさらに含んでもよい。例えば、直前に言及したリード線および要素２４２によって、オーバーフロー信号は、１つのＤＳＰブロックの圧縮器２４０から、別のＤＳＰブロックの圧縮器２４０へ進むことができる。
【００５８】
上に記載したＤＳＰ回路では、各ＤＳＰ回路ブロックは、そのＤＳＰ回路ブロックの最終的なＤＳＰ演算（例えば、２６０）の出力を、その他のＤＳＰ回路ブロックが連続する中の中間ポイントにある、第１の他のＤＳＰ回路のＤＳＰ演算（例えば、２５０）への入力へ選択的にルーティングするための、第３の回路（例えば、２４８）をさらに含んでもよい。
【００５９】
上に記載したＤＳＰ回路は、ＤＳＰ回路ブロックの各々の第１の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、ＤＳＰ回路ブロックの別のブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、ＤＳＰ回路ブロックのさらに別のブロックのうちの選択可能な１つであることを可能にするための、冗長回路（例えば、１１０および／または１２０）をさらに含んでもよい。例えば、ＤＳＰブロック１００が図１の列Ｒ７の中にある場合、別のＤＳＰブロックは列Ｒ８の中にあってもよく、さらに別のＤＳＰブロックは列Ｒ９の中にあってもよい。加えて、さらに別のＤＳＰブロック（例えば、列Ｒ９の中のブロック）は、別のＤＳＰブロック（例えば、列Ｒ８の中のブロック）に直接隣接してもよい。
【００６０】
また、上に記載したＤＳＰ回路は、ＤＳＰ回路ブロックの各々の第２の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、ＤＳＰ回路ブロックのなおも別のブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、ＤＳＰ回路ブロックのなおもさらに別のブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路（例えば、１１０および／または１２０）をも含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７の中にある場合、なおも別のＤＳＰブロックは列Ｒ６の中にあってもよく、なおもさらに別のＤＳＰブロックは列Ｒ５の中にあってもよい。ＤＳＰ回路ブロックのうちのなおもさらなる別のブロック（例えば、列Ｒ５の中のブロック）は、ＤＳＰ回路ブロックのなおも別のブロック（例えば、列Ｒ６の中のブロック）に直接隣接してもよい。
【００６１】
本発明の回路によって、ＤＳＰ回路ブロック間における二方向のシフトによって、総和を行うことが可能になる。例えば、値は、第１のＤＳＰブロックから第２のＤＳＰブロックに、第１のブロックの右へシフトし、第２のブロックで別の信号と組み合わせる（例えば、圧縮する）ことができる。その後、この組み合わせの結果は、左へ戻るように（すなわち、第１のブロックへ）シフトし、第１のブロックで他の信号と組み合わせることができる。このようなシフトの戻しは、（例えば）（１）圧縮器から圧縮器へ（圧縮器２４０または圧縮器２５０）の桁上げベクトル、（２）ＣＰＡ２６０の桁上げビット、または（３）３−２圧縮器２５０へのＣＰＡ２６０の出力によって発生することができる。
【００６２】
本発明のＤＳＰ回路で採用するマルチプレクサのいずれも、ゼロ（０）のデータを選択的に（すなわち、制御可能なように）出力することができる、タイプのうちの１つであり得る。これはまた、本明細書で採用する制御可能なシフタのいずれも含む。
【００６３】
（追加実施形態）
追加実施形態１。デジタル信号処理（「ＤＳＰ」）回路は、複数のＤＳＰ回路ブロックを備え、その各々が、そのＤＳＰ回路ブロックに印加される信号に関するＤＳＰ演算を行うことができ、ＤＳＰ回路ブロックの各々が、ＤＳＰ演算のうちの少なくともいくつかの出力を、そのＤＳＰ回路ブロックのそれぞれの反対側にある、ＤＳＰ回路ブロックの第１および第２の他のブロックへ、選択的にルーティングするための回路を含み、ＤＳＰ回路ブロックの各々を選択的にルーティングするための回路は、そのＤＳＰ回路ブロック用の第１の他のＤＳＰ回路ブロックが、（１）そのＤＳＰ回路ブロックに直接隣接する別のＤＳＰ回路ブロック、および（２）そのＤＳＰ回路ブロックに直接隣接しない、さらに別のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、冗長回路を備える。
【００６４】
追加実施形態２。追加実施形態１に定義されるＤＳＰ回路であって、さらに別のＤＳＰ回路ブロックは、別のＤＳＰ回路ブロックに直接隣接する。
【００６５】
追加実施形態３。追加実施形態１に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックの各々を選択的にルーティングするための回路は、そのＤＳＰ回路ブロック用の第２の他のＤＳＰ回路ブロックが、（１）そのＤＳＰ回路ブロックに直接隣接する、なおも別のＤＳＰ回路ブロック、および（２）そのＤＳＰ回路ブロックに直接隣接しない、なおもさらに他のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路をさらに備える。
【００６６】
追加実施形態４。追加実施形態３に定義されるＤＳＰ回路であって、なおもさらに他のＤＳＰ回路ブロックは、なおも別のＤＳＰ回路ブロックに直接隣接する。
【００６７】
追加実施形態５。追加実施形態１に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックの各々を選択的にルーティングするための回路は、ＤＳＰ回路ブロックのうちの第１および第２の他の回路が、行うことができる全てのＤＳＰ演算ではないが、いくつかより下流にある、ＤＳＰ回路ブロックのうちの第１および第２の他の回路の入力へ、出力を選択的にルーティングする。
【００６８】
追加実施形態６。追加実施形態１に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックの各々は、他の回路も含む複数の列のうちのそれぞれの列の中に配置され、列の各々の中の他の回路は、他の隣接する列間に最大幅Ｗを有し、列の各々の中のＤＳＰ回路ブロックも、他の隣接する列間に最大幅Ｗを有する。
【００６９】
追加実施形態７。デジタル信号処理（「ＤＳＰ」）回路は、複数のＤＳＰ回路ブロックを備え、それらの各々は、次々に連続して複数のＤＳＰ演算を行うことができ、ＤＳＰ回路ブロックの各々は、そのＤＳＰ回路ブロックのＤＳＰ演算の少なくとも１つの出力を、そのＤＳＰ回路ブロックのそれぞれの反対側にある、ＤＳＰ回路ブロックのうちの第１および第２の他のブロックへ選択的にルーティングするための回路を含み、各ＤＳＰ回路ブロックの選択的なルーティング用の回路は、それら他のＤＳＰ回路ブロックにおいてＤＳＰ演算が連続する中の中間にある、第１および第２の他のＤＳＰ回路ブロックのＤＳＰ演算への入力へ、出力のうちの少なくともいくつかを選択的にルーティングする。
【００７０】
追加実施形態８。追加実施形態７に定義されるＤＳＰ回路であって、入力の少なくともいくつかは、選択的にルーティングするための回路が、それら少なくともいくつかの入力へ選択的にルーティングされる出力を受信した、その送信元であるＤＳＰ回路ブロックが連続する中のポイントとは異なる、他のＤＳＰ回路ブロックが連続する中のポイントでの、ＤＳＰ演算への入力である。
【００７１】
追加実施形態９。追加実施形態８に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックは、そのＤＳＰ回路ブロックのＤＳＰ演算の第２の出力を、第１の他のＤＳＰ回路ブロックの同じＤＳＰ演算の出力へ選択的にルーティングするための、第２の回路をさらに備える。
【００７２】
追加実施形態１０。追加実施形態９に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックの各々は、そのＤＳＰ回路ブロックの最終的なＤＳＰ演算の出力を、その他のＤＳＰ回路ブロックが連続する中の中間ポイントにある、第１の他のＤＳＰ回路ブロックのＤＳＰ演算への入力へ選択的にルーティングするための、第３の回路をさらに備える。
【００７３】
追加実施形態１１。追加実施形態７に定義されるＤＳＰ回路は、ＤＳＰ回路ブロックの各々の第１の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、ＤＳＰ回路ブロックの別のブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、ＤＳＰ回路ブロックのさらに別のブロックのうちの選択可能な１つであることを可能にするための、冗長回路をさらに備える。
【００７４】
追加実施形態１２。追加実施形態１１に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックのうちのさらに別のブロックは、ＤＳＰ回路ブロックのうちの別のブロックに直接隣接する。
【００７５】
追加実施形態１３。追加実施形態１１に定義されるＤＳＰ回路は、ＤＳＰ回路ブロックの各々の第２の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、ＤＳＰ回路ブロックのなおも別のブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、ＤＳＰ回路ブロックのなおもさらに別のブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路をさらに備える。
【００７６】
追加実施形態１４。追加実施形態１３に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックのうちのなおもさらに別のブロックは、ＤＳＰ回路ブロックのうちのなおも別のブロックに直接隣接する。
【００７７】
追加実施形態１５。デジタル信号処理（「ＤＳＰ」）回路は、複数のＤＳＰ回路ブロックを備え、それらの各々は、次々に連続して複数のＤＳＰ演算を行うことができ、ＤＳＰ回路ブロックの各々は、第２のブロックで別の信号と組み合わせるために、そのブロック（第１のブロックとして続いて識別される）の第１のＤＳＰ演算の結果が、第１のブロック（第２のブロックとして続いて識別される、その別のブロック）に隣接するＤＳＰ回路ブロックの別のブロックへシフトすることを可能にするための第１のルーティング回路を含み、ＤＳＰ回路ブロックの各々は、第１のブロックでなおも他の信号との組み合わせるために、第２のブロックでの組み合わせの結果が、第１のブロックへ戻ってシフトすることを可能にするための第２のルーティング回路を含む。
【００７８】
追加実施形態１６。追加実施形態１５に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックの各々は、圧縮回路を含み、第２のルーティング回路は、第２のブロックの圧縮回路から第１のブロックの圧縮回路へ、桁上げベクトルを伝える。
【００７９】
追加実施形態１７。追加実施形態１５に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックの各々は、桁上げ伝播加算器（「ＣＰＡ」）回路を含み、第２のルーティング回路は、第２のブロックのＣＰＡ回路から第１のブロックのＣＰＡ回路へ、桁上げビットを伝える。
【００８０】
追加実施形態１８。追加実施形態１５に定義されるＤＳＰ回路であって、ＤＳＰ回路ブロックの各々は、桁上げ伝播加算器（「ＣＰＡ」）回路に出力する圧縮回路を含み、第２のルーティング回路は、第２のブロックのＣＰＡ回路の出力信号を、第１のブロックの圧縮回路へ伝える。
【００８１】
前述は、本発明の原理の説明のみであり、本発明の範囲および精神から逸脱しない限り、当業者によって種々の変形がなされ得ることは理解されるであろう。例えば、１８ｘ１８乗算器２００の使用は実例でしかなく、所望の場合には、代わりに他のサイズの乗算器を使用することができる。また、図１〜４、６、８、および１０のような本明細書の図は電子回路を示しており、回路要素（２００、２０２、２１０、２２０、２６０など）の大部分または全ては別個の要素（通常、集積回路上で共に統合される）であり、要素の各々は、他の電気出力信号を生成するよう、電気入力信号に作用することによって、本明細書にそのために記載した機能を行うように設けられている（例えば、少なくとも有意な程度まで配線で接続される）ことも理解されるであろう。これらの電気信号は、時には、データ、ビット、ベクトル、「１」、「０」、値、被乗数、乗算器、積、部分積、和などと称されてもよいが、全ての場合において、実際には、特定の情報を表す実際の電気信号である。同様に、本明細書に示す電気回路要素の中のいくつかは、時には、実施する演算によって称されてもよい（例えば、「乗算器  ２００ａ」）が、全ての場合において、これらの要素は、それらの演算を行う実際の電気回路（例えば、乗算回路）である。ＤＳＰ回路、ＤＳＰ演算などへの参照も同じである。全てのそのような演算は、上記の通り、電気信号に作用する電気回路によって行われる。
【図１】
0005564520.tif 000002
【図２】
0005564520.tif 000003
【図３】
0005564520.tif 000004
【図４】
0005564520.tif 000005
【図５】
0005564520.tif 000006
【図６】
0005564520.tif 000007
【図７】
0005564520.tif 000008
【図８】
0005564520.tif 000009
【図９】
0005564520.tif 000010
【図１０】
0005564520.tif 000011