(57)【特許請求の範囲】
【請求項１】
デジタル信号処理（「ＤＳＰ」）回路ブロックであって、
第１のＮビット掛けるＮビット（「ＮｘＮ」）の乗算を行うことができる第１の乗算回路と、
第２のＮｘＮ乗算を行うことができる第２の乗算回路と、
（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の乗算回路の出力をシフトする第１のシフタ回路と、
該第１のシフタ回路と該第２の乗算回路の出力とを加法的に組み合わせる第１の圧縮回路と、
該ＤＳＰ回路ブロックに隣接する第１の他のＤＳＰ回路ブロックに、該第１の圧縮回路の出力をルーティングする回路と、
該第１の圧縮回路の出力と、該ＤＳＰ回路ブロックに隣接する第２の他のＤＳＰ回路ブロックから受信された出力とを加法的に組み合わせる第２の圧縮回路と
を備える、ＤＳＰ回路ブロック。
【請求項２】
前記第２の圧縮回路の出力を加法的に組み合わせる加算回路をさらに備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項３】
前記加算回路は、桁上げ伝播加算回路を備える、請求項２に記載のＤＳＰ回路ブロック。
【請求項４】
前記加算回路の出力を登録するための第１のレジスタ回路をさらに備える、請求項２に記載のＤＳＰ回路ブロック。
【請求項５】
前記第１の乗算回路および前記第２の乗算回路によって処理するために入力を供給する第１、第２、第３、および第４の複数のデータ信号入力リード線と、
該複数のデータ信号入力リード線のうちの少なくとも２つからの前記入力を加法的に組み合わせる事前加算回路と
をさらに備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項６】
前記第１の乗算回路および前記第２の乗算回路のうちの少なくとも１つによって処理するために、前記複数のデータ信号入力リード線のうちの少なくとも１つからの入力の代替として、前記事前加算回路の出力を選択する回路をさらに備える、請求項５に記載のＤＳＰ回路ブロック。
【請求項７】
前記第１の乗算回路および前記第２の乗算回路のうちの１つへの入力データ信号経路において、選択的に使用可能なシストリックレジスタ回路をさらに備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項８】
前記第２の圧縮回路によって出力されるデータ用の出力データ信号経路において、選択的に使用可能なシストリックレジスタ回路をさらに備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項９】
前記第２の圧縮回路の出力を示す信号を登録する回路と、
前記第１の圧縮回路の前記出力との該第２の圧縮回路による加法的組み合わせのために、該第２の圧縮回路の入力に登録する該回路の出力を選択的に印加する回路と
をさらに備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項１０】
前記ルーティングする回路は、
（１）ゼロビット位置および（２）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、前記第１の乗算回路の前記出力をシフトする第２のシフタ回路を備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項１１】
前記ルーティングする回路は、
前記第２の他のＤＳＰ回路ブロックにおいて選択的にルーティングする回路によって出力される信号を、前記第１の他のＤＳＰ回路ブロックにルーティングする代替ルーティング回路を備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項１２】
前記ルーティングする回路は、
前記第２の圧縮回路の出力を示す信号を、前記第１の他のＤＳＰ回路ブロックにルーティングする代替ルーティング回路を備える、請求項１に記載のＤＳＰ回路ブロック。
【請求項１３】
前記代替ルーティング回路は、
前記第２の圧縮回路の出力を示す前記信号に対して選択的に使用可能であるシストリックレジスタ回路を備える、請求項１２に記載のＤＳＰ回路ブロック。
【請求項１４】
前記第２の乗算回路は、（１）０．５Ｎビット掛けるＭビット（「０．５ＮｘＭ」）の乗算、および（２）０．５Ｎビット掛けるＮビット（「０．５ＮｘＮ」）の乗算を代替として行うことができ、Ｍは、１．５Ｎに等しい、請求項１に記載のＤＳＰ回路ブロック。
【請求項１５】
Ｍビットの被乗数データワードおよびＭビットの乗数データワードのビットを、前記第１および第２の乗算回路に選択的にルーティングする回路であって、それにより、該第１の乗算回路が、第１の部分積データワードを生成するように、該被乗数データワードの前記Ｎの最大有効ビットに、該乗数データワードの前記Ｎの最大有効ビットを乗じることができ、ならびに該第２の乗算回路が、（１）第２の部分積データワードを生成するように、該被乗数データワードの該Ｍビットに、該乗数データワードの前記０．５Ｎの最小有効ビットを、および（２）第３の部分積データワードを生成するように、該乗数データワードの該Ｎの最大有効ビットに、該被乗数データワードの該０．５Ｎの最小有効ビットを乗じることができる、回路をさらに備える、請求項１４に記載のＤＳＰ回路ブロック。
【請求項１６】
前記第２の乗算回路は、
前記第２と第３の部分積データワードとを加法的に組み合わせる第３の圧縮回路を備え、該第３の部分積データワードのビットは、該第２の部分積データワードのビットに対して０．５Ｎビット位置だけ演算の有効を増加させられる、請求項１５に記載のＤＳＰ回路ブロック。
【請求項１７】
前記ルーティングする回路は、前記ＤＳＰ回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている、請求項１に記載のＤＳＰ回路ブロック。
【請求項１８】
第２の他のＤＳＰブロックから受信された前記出力は、前記ＤＳＰ回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている回路を介して受信される、請求項１に記載のＤＳＰ回路ブロック。
【請求項１９】
（１）１つのＭビット掛けるＭビット（「ＭｘＭ」）の乗算および（２）２つのＮビット掛けるＮビット（「ＮｘＮ」）の乗算のうちの選択可能な１つを行うために使用可能であり、Ｍが１．５Ｎに等しい回路であって、該回路は、
ＮｘＮ乗算回路と、
０．５ＮｘＭ乗算回路と、
０．５ＮｘＮ乗算回路と、
該０．５ＮｘＭ乗算回路の出力と、該０．５ＮｘＮ乗算回路の出力とを加法的に組み合わせる第１の回路と、
（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該ＮｘＮ乗算回路の出力をシフトするシフタ回路と、
該シフタ回路の出力と該第１の回路の出力とを加法的に組み合わせる第２の回路と
を備える、回路。
【請求項２０】
Ｎは、１８に等しく、Ｍは、２７に等しい、請求項１９に記載の回路。
【請求項２１】
第１、第２、第３、および第４の複数のデータ信号入力リード線と、
該複数の各々から、前記ＮｘＮ乗算回路への入力および前記０．５ＮｘＭ乗算回路への入力および前記０．５ＮｘＮ乗算回路への入力のうちの選択可能な入力へ、信号を制御可能にルーティングするルーティング回路と
をさらに備える、請求項１９に記載の回路。
【請求項２２】
前記複数の各々は、Ｎデータ信号入力リード線から成る、請求項２１に記載の回路。
【請求項２３】
前記ルーティング回路は、
第１、第２、第３、および第４のＮビットマルチプレクサであって、その各々は、前記複数のうちのいずれか１つから、（１）前記ＮｘＮ乗算回路への被乗数入力、（２）該ＮｘＮ乗算回路への乗数入力、（３）前記０．５ＮｘＭ乗算回路へのＮより下位の被乗数入力、および（４）前記０．５ＮｘＮ乗算回路への被乗数入力のうちのそれぞれの１つに、Ｎビットをルーティングするように制御可能である、Ｎビットマルチプレクサと、
第１、第２、および第３の０．５Ｎビットマルチプレクサであって、その各々は、該複数のうちの少なくともいくつかのうちのいずれかから、（１）該０．５ＮｘＭ乗算回路への０．５Ｎより上位の被乗数入力、（２）該０．５ＮｘＭ乗算回路への乗数入力、および（３）該０．５ＮｘＮ乗算回路への乗数入力のうちのそれぞれの１つに、０．５Ｎビットをルーティングするように制御可能である、０．５Ｎビットマルチプレクサと
を備える、請求項２２に記載の回路。
【請求項２４】
デジタル信号処理（「ＤＳＰ」）回路ブロックであって、
第１のＮビット掛けるＮビット（「ＮｘＮ」）の乗算を行う第１の手段と、
（１）第２のＮｘＮ乗算、ならびに（２）０．５Ｎビット掛けるＭビット（「０．５ＮｘＭ」）の乗算および０．５Ｎビット掛けるＮビット（「０．５ＮｘＮ」）の乗算のうちの選択可能な１つを行う第２の手段であって、Ｍは、１．５Ｎに等しい、第２の手段と、
（１）ゼロビット位置、および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の手段の出力をシフトする第３の手段と、
該第２と第３の手段の出力とを加法的に組み合わせる第４の手段と、
該第４の手段の出力を、第１の他のＤＳＰ回路ブロックにルーティングする第５の手段と、
該第４の手段の出力と、第２の他のＤＳＰ回路ブロックから受信された出力とを加法的に組み合わせる第６の手段と
を含む、ＤＳＰ回路ブロック。
【請求項２５】
前記第２の手段は、
前記０．５ＮｘＭ乗算を行う第７の手段と、
前記０．５ＮｘＮ乗算を行う第８の手段と、
該第７と該第８の手段の出力とを加法的に組み合わせる第９の手段であって、該第８の手段の該出力のビットは、該第７の手段の該出力のビットに対して０．５Ｎビット位置だけ、演算の有効を増加させられる、第９の手段と
を含む、請求項２４に記載のＤＳＰ回路ブロック。
【請求項２６】
Ｍビットの被乗数データワードの前記Ｎの最大有効ビットを、前記第１の手段への被乗数入力に選択的にルーティングする第１０の手段と、
Ｍビットの乗数データワードの前記Ｎの最大有効ビットを、該第１の手段への乗数入力に選択的にルーティングする第１１の手段と、
該Ｍビットの被乗数を、前記第７の手段への前記被乗数入力に選択的にルーティングするための第１２の手段と、
該乗数データワードの前記０．５Ｎの最小有効ビットを、前記第７の手段への乗数入力へ選択的にルーティングする第１３の手段と、
該乗数データワードの該Ｎの最大有効ビットを、前記第８の手段への被乗数入力に選択的にルーティングする第１４の手段と、
該被乗数データワードの該０．５Ｎの最小有効ビットを、該第８の手段への該乗数入力に選択的にルーティングする第１５の手段と
をさらに含む、請求項２５に記載のＤＳＰ回路ブロック。
【請求項２７】
前記第１および第２の手段への入力として使用するために、複合的な複数のデータ入力信号を受信する第１６の手段と、
該データ入力信号のうちの少なくともいくつかを、選択的に事前加算する第１７の手段と、
該第１７の手段の出力を、該第１および第２の手段のうちの少なくとも１つへの選択された入力に選択的に印加する第１８の手段と、
をさらに含む、請求項２４に記載のＤＳＰ回路ブロック。
【請求項２８】
前記第２の手段への入力に、シストリックレジスタの遅延を選択的に与える第１９の手段をさらに含む、請求項２４に記載のＤＳＰ回路ブロック。
【請求項２９】
前記第５の手段は、
（１）ゼロビット位置、および（２）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、前記第４の手段の前記出力をシフトする第２０の手段を含む、請求項２４に記載のＤＳＰ回路ブロック。
【請求項３０】
前記第５の手段は、
前記第１の他のＤＳＰ回路ブロックへの前記第６の手段の出力を示す出力信号を、選択的に代替としてルーティングする第２１の手段を含む、請求項２４に記載のＤＳＰ回路ブロック。
【請求項３１】
前記第２１の手段は、
前記第６の手段の出力を示す前記出力信号に、シストリックレジスタの遅延を選択的に与える第２２の手段を含む、請求項３０に記載のＤＳＰ回路ブロック。
【請求項３２】
前記第５の手段は、
前記第２の他のＤＳＰ回路ブロックから前記第１の他のＤＳＰ回路ブロックへ、信号を代替としてルーティングする第２３の手段を含む、請求項２４に記載のＤＳＰ回路ブロック。
【請求項３３】
前記第６の手段は、
該第６の手段の出力を示す出力信号を登録する第２４の手段と、
該第２４の手段の出力を、該第６の手段への入力に印加する第２５の手段と
を含む、請求項２４に記載のＤＳＰ回路ブロック。
【発明の詳細な説明】
【背景技術】
【０００１】
本発明は、デジタル信号処理（「ＤＳＰ」）回路に関し、より具体的には、より複雑なおよび／またははより数学的精度もしくは演算精度の高いＤＳＰ演算を行うように、任意で連動することができ、およびこのように連動する必要があるときに、回路欠陥によってＤＳＰブロックが使用不可能になる場合がある可能性に適応することができる、ＤＳＰ回路モジュールまたはブロックのアレイに関する。
【０００２】
種々の状況では、ＤＳＰ回路のブロックまたはモジュールの複数のインスタンスで製作される、集積回路が要求される場合がある。そのような集積回路の例には、プログラム可能論理回路（「ＰＬＤ」）またはフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）がある。そのようなデバイスは、比較的一般的なプログラム可能論理など、複数列の種々の種類の回路を有する場合がある。また、そのような各列は、ＤＳＰ回路（すなわち、特定のＤＳＰ機能またはＤＳＰ機能の特定のセットを実施するように、少なくともある程度まで配線で接続される回路）のブロックを含んでもよい。そのような状態では、列の中の他方の回路の（列）境界内に嵌合するように、ＤＳＰブロックの大きさを合わせて作ることが望ましい場合があり得る。これは、ＤＳＰブロックが単独では小さすぎて、集積回路が行うのが望ましい場合がある、いくつかのＤＳＰ機能を行うことができないことを意味する場合がある。そのような場合には、２つ以上のＤＳＰブロックで、より大きなＤＳＰ機能を効率的に行うことができるように、種々の手段で複数のＤＳＰブロックの任意の「つなぎ合わせ（ｓｔｉｔｃｈｉｎｇ  ｔｏｇｅｔｈｅｒ）」を促進することが望ましいであろう。しかしながら、対抗する懸念として、つなぎ合わせる必要があるＤＳＰブロックと関連付けられる回路のいずれの部分も使用できない場合（例えば、集積回路の製造欠陥のため）、それらのＤＳＰブロックをつなぎ合わせることが、さらにより困難または不可能になり得る場合がある。これによって、一部に欠陥がある集積回路が全く使用できない機会が、非常に増加する場合がある。
【発明の概要】
【課題を解決するための手段】
【０００３】
本発明のある可能な側面に従い、所望の場合に、より大きな（例えば、より複雑なおよび／またはより演算上正確な）ＤＳＰ演算を行うために、より簡単に連動することができるＤＳＰ回路ブロックを提供する。例えば、そのようなＤＳＰブロックは、各ブロックのどちらかの側にある他のＤＳＰブロックへ、信号を任意にまたは選択的にルーティングするルーティング回路を含んでもよい。
【０００４】
本発明の他の可能な側面に従い、ＤＳＰブロック間のルーティング回路はまた、アウトバウンド信号が、２つの他のＤＳＰブロックのうちのどちらかから、各ＤＳＰブロックの片側へ行くことを可能にし、インバウンド信号が、２つのＤＳＰブロックのうちのいずれかから、各ＤＳＰブロックの片側に来ることを可能にする冗長能力を含んでもよい。別のＤＳＰブロックにつなげることが望ましい、あるＤＳＰブロックが使用できない場合（例えば、回路の欠陥のため）、この冗長能力によって欠陥のあるＤＳＰブロックを効果的に飛ばすことによって、ＤＳＰブロックのつなぎ合わせを行うことができる。
【０００５】
本開示のなおも他の可能な特徴に従い、ＤＳＰ回路ブロックは、２つの乗算回路（「乗算器」）を含んでもよい。これらの乗算器は、種々の方法で、互いに独立して、または少なくとも一部独立して作動してもよい。代替として、これらの乗算器は種々の方法で共に作動してもよい。これらの乗算器のうちの１つは、どちらかの乗算器のみによって行うことが可能な基数乗算より著しく大きい１つの乗算を行うように、２つの乗算器を共に使用して容易にすることができるいくつかの任意に使用可能な拡張された能力を有してもよい。
【０００６】
本開示のさらに他の可能な特徴に従い、ＤＳＰブロックは、ＤＳＰブロックがシストリック型の有限インパルス応答（「ＦＩＲ」）デジタルフィルタの機能を行うことに役立つように、種々のポイントにシストリックレジスタを含んでもよい。
【０００７】
その本質および種々の利点である、本発明のさらなる特徴は、添付の図面および続く詳細な説明から、より明らかとなるであろう。
例えば、本発明は、以下を提供する。
（項目１）
デジタル信号処理（「ＤＳＰ」）回路ブロックであって、
第１のＮビット掛けるＮビット（「ＮｘＮ」）の乗算を行うことができる第１の乗算回路と、
第２のＮｘＮ乗算を行うことができる第２の乗算回路と、
（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の乗算回路の出力をシフトする第１のシフタ回路と、
該第１のシフタ回路と該第２の乗算回路の出力とを加法的に組み合わせる第１の圧縮回路と、
該ＤＳＰ回路ブロックに隣接する第１の他のＤＳＰ回路ブロックに、該第１の圧縮回路の出力をルーティングする回路と、
該第１の圧縮回路の出力と、該ＤＳＰ回路ブロックに隣接する第２の他のＤＳＰ回路ブロックから受信された出力とを加法的に組み合わせる第２の圧縮回路と
を備える、ＤＳＰ回路ブロック。
（項目２）
前記第２の圧縮回路の出力を加法的に組み合わせる加算回路をさらに備える、項目１に記載のＤＳＰ回路ブロック。
（項目３）
前記加算回路は、桁上げ伝播加算回路を備える、項目２に記載のＤＳＰ回路ブロック。
（項目４）
前記加算回路の出力を登録するための第１のレジスタ回路をさらに備える、項目２に記載のＤＳＰ回路ブロック。
（項目５）
前記乗算回路によって処理するために入力を供給する第１、第２、第３、および第４の複数のデータ信号入力リード線と、
該複数のデータ信号入力リード線のうちの少なくとも２つからの前記入力を加法的に組み合わせる事前加算回路と
をさらに備える、項目１に記載のＤＳＰ回路ブロック。
（項目６）
前記乗算回路のうちの少なくとも１つによって処理するために、前記複数のデータ信号入力リード線のうちの少なくとも１つからの入力の代替として、前記事前加算回路の出力を選択する回路をさらに備える、項目５に記載のＤＳＰ回路ブロック。
（項目７）
前記乗算回路のうちの１つへの入力データ信号経路において、選択的に使用可能なシストリックレジスタ回路をさらに備える、項目１に記載のＤＳＰ回路ブロック。
（項目８）
前記第２の圧縮回路によって出力されるデータ用の出力データ信号経路において、選択的に使用可能なシストリックレジスタ回路をさらに備える、項目１に記載のＤＳＰ回路ブロック。
（項目９）
前記第２の圧縮回路の出力を示す信号を登録する回路と、
前記第１の圧縮回路の前記出力との該第２の圧縮回路による加法的組み合わせのために、該第２の圧縮回路の入力に登録する該回路の出力を選択的に印加する回路と
をさらに備える、項目１に記載のＤＳＰ回路ブロック。
（項目１０）
前記ルーティングする回路は、
（１）ゼロビット位置および（２）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、前記第１の乗算回路の前記出力をシフトする第２のシフタ回路を備える、項目１に記載のＤＳＰ回路ブロック。
（項目１１）
前記ルーティングする回路は、
前記第２の他のＤＳＰ回路ブロックにおいて選択的にルーティングする回路によって出力される信号を、前記第１の他のＤＳＰ回路ブロックにルーティングする代替ルーティング回路を備える、項目１に記載のＤＳＰ回路ブロック。
（項目１２）
前記ルーティングする回路は、
前記第２の圧縮回路の出力を示す信号を、前記第１の他のＤＳＰ回路ブロックにルーティングする代替ルーティング回路を備える、項目１に記載のＤＳＰ回路ブロック。
（項目１３）
前記代替ルーティング回路は、
前記第２の圧縮回路の出力を示す前記信号に対して選択的に使用可能であるシストリックレジスタ回路を備える、項目１２に記載のＤＳＰ回路ブロック。
（項目１４）
前記第２の乗算回路は、（１）０．５Ｎビット掛けるＭビット（「０．５ＮｘＭ」）の乗算、および（２）０．５Ｎビット掛けるＮビット（「０．５ＮｘＮ」）の乗算を代替として行うことができ、Ｍは、１．５Ｎに等しい、項目１に記載のＤＳＰ回路ブロック。
（項目１５）
Ｍビットの被乗数データワードおよびＭビットの乗数データワードのビットを、前記第１および第２の乗算回路に選択的にルーティングする回路であって、それにより、該第１の乗算回路が、第１の部分積データワードを生成するように、該被乗数データワードの前記Ｎの最大有効ビットに、該乗数データワードの前記Ｎの最大有効ビットを乗じることができ、ならびに該第２の乗算回路が、（１）第２の部分積データワードを生成するように、該被乗数データワードの該Ｍビットに、該乗数データワードの前記０．５Ｎの最小有効ビットを、および（２）第３の部分積データワードを生成するように、該乗数データワードの該Ｎの最大有効ビットに、該被乗数データワードの該０．５Ｎの最小有効ビットを乗じることができる、回路をさらに備える、項目１４に記載のＤＳＰ回路ブロック。
（項目１６）
前記第２の乗算回路は、
前記第２と第３の部分積データワードとを加法的に組み合わせる第３の圧縮回路を備え、該第３の部分積データワードのビットは、該第２の部分積データワードのビットに対して０．５Ｎビット位置だけ演算の有効を増加させられる、項目１５に記載のＤＳＰ回路ブロック。
（項目１７）
前記ルーティングする回路は、前記ＤＳＰ回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている、項目１に記載のＤＳＰ回路ブロック。
（項目１８）
第２の他のＤＳＰブロックから受信された前記出力は、前記ＤＳＰ回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている回路を介して受信される、項目１に記載のＤＳＰ回路ブロック。
（項目１９）
（１）１つのＭビット掛けるＭビット（「ＭｘＭ」）の乗算および（２）２つのＮビット掛けるＮビット（「ＮｘＮ」）の乗算のうちの選択可能な１つを行うために使用可能であり、Ｍが１．５Ｎに等しい回路であって、該回路は、
ＮｘＮ乗算回路と、
０．５ＮｘＭ乗算回路と、
０．５ＮｘＮ乗算回路と、
該０．５ＮｘＭ乗算回路の出力と、該０．５ＮｘＮ乗算回路の出力とを加法的に組み合わせる第１の回路と、
（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該ＮｘＮ乗算回路の出力をシフトするシフタ回路と、
該シフタ回路の出力と該第１の回路の出力とを加法的に組み合わせる第２の回路と
を備える、回路。
（項目２０）
Ｎは、１８に等しく、Ｍは、２７に等しい、項目１９に記載の回路。
（項目２１）
第１、第２、第３、および第４の複数のデータ信号入力リード線と、
該複数の各々から、前記乗算回路への入力のうちの選択可能な入力へ、信号を制御可能にルーティングするルーティング回路と
をさらに備える、項目１９に記載の回路。
（項目２２）
前記複数の各々は、Ｎデータ信号入力リード線から成る、項目２１に記載の回路。
（項目２３）
前記ルーティング回路は、
第１、第２、第３、および第４のＮビットマルチプレクサであって、その各々は、前記複数のうちのいずれか１つから、（１）前記ＮｘＮ乗算回路への被乗数入力、（２）該ＮｘＮ乗算回路への乗数入力、（３）前記０．５ＮｘＭ乗算回路へのＮより下位の被乗数入力、および（４）前記０．５ＮｘＮ乗算回路への被乗数入力のうちのそれぞれの１つに、Ｎビットをルーティングするように制御可能である、Ｎビットマルチプレクサと、
第１、第２、および第３の０．５Ｎビットマルチプレクサであって、その各々は、該複数のうちの少なくともいくつかのうちのいずれかから、（１）該０．５ＮｘＭ乗算回路への０．５Ｎより上位の被乗数入力、（２）該０．５ＮｘＭ乗算回路への乗数入力、および（３）該０．５ＮｘＮ乗算回路への乗数入力のうちのそれぞれの１つに、０．５Ｎビットをルーティングするように制御可能である、０．５Ｎビットマルチプレクサと
を備える、項目２２に記載の回路。
（項目２４）
デジタル信号処理（「ＤＳＰ」）回路ブロックであって、
第１のＮビット掛けるＮビット（「ＮｘＮ」）の乗算を行う第１の手段と、
（１）第２のＮｘＮ乗算、ならびに（２）０．５Ｎビット掛けるＭビット（「０．５ＮｘＭ」）の乗算および０．５Ｎビット掛けるＮビット（「０．５ＮｘＮ」）の乗算のうちの選択可能な１つを行う第２の手段であって、Ｍは、１．５Ｎに等しい、第２の手段と、
（１）ゼロビット位置、および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、該第１の手段の出力をシフトする第３の手段と、
該第２と第３の手段の出力とを加法的に組み合わせる第４の手段と、
該第４の手段の出力を、第１の他のＤＳＰ回路ブロックにルーティングする第５の手段と、
該第４の手段の出力と、第２の他のＤＳＰ回路ブロックから受信された出力とを加法的に組み合わせる第６の手段と
を含む、ＤＳＰ回路ブロック。
（項目２５）
前記第２の手段は、
前記０．５ＮｘＭ乗算を行う第７の手段と、
前記０．５ＮｘＮ乗算を行う第８の手段と、
該第７と該第８の手段の出力とを加法的に組み合わせる第９の手段であって、該第８の手段の該出力のビットは、該第７の手段の該出力のビットに対して０．５Ｎビット位置だけ、演算の有効を増加させられる、第９の手段と
を含む、項目２４に記載のＤＳＰ回路ブロック。
（項目２６）
Ｍビットの被乗数データワードの前記Ｎの最大有効ビットを、前記第１の手段への被乗数入力に選択的にルーティングする第１０の手段と、
Ｍビットの乗数データワードの前記Ｎの最大有効ビットを、該第１の手段への乗数入力に選択的にルーティングする第１１の手段と、
該Ｍビットの被乗数を、前記第７の手段への前記被乗数入力に選択的にルーティングするための第１２の手段と、
該乗数データワードの前記０．５Ｎの最小有効ビットを、前記第７の手段への乗数入力へ選択的にルーティングする第１３の手段と、
該乗数データワードの該Ｎの最大有効ビットを、前記第８の手段への被乗数入力に選択的にルーティングする第１４の手段と、
該被乗数データワードの該０．５Ｎの最小有効ビットを、該第８の手段への該乗数入力に選択的にルーティングする第１５の手段と
をさらに含む、項目２５に記載のＤＳＰ回路ブロック。
（項目２７）
前記第１および第２の手段への入力として使用するために、複合的な複数のデータ入力信号を受信する第１６の手段と、
該データ入力信号のうちの少なくともいくつかを、選択的に事前加算する第１７の手段と、
該第１７の手段の出力を、該第１および第２の手段のうちの少なくとも１つへの選択された入力に選択的に印加する第１８の手段と、
をさらに含む、項目２４に記載のＤＳＰ回路ブロック。
（項目２８）
前記第２の手段への入力に、シストリックレジスタの遅延を選択的に与える第１９の手段をさらに含む、項目２４に記載のＤＳＰ回路ブロック。
（項目２９）
前記第５の手段は、
（１）ゼロビット位置、および（２）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、前記第４の手段の前記出力をシフトする第２０の手段を含む、項目２４に記載のＤＳＰ回路ブロック。
（項目３０）
前記第５の手段は、
前記第１の他のＤＳＰ回路ブロックへの前記第６の手段の出力を示す出力信号を、選択的に代替としてルーティングする第２１の手段を含む、項目２４に記載のＤＳＰ回路ブロック。
（項目３１）
前記第２１の手段は、
前記第６の手段の出力を示す前記出力信号に、シストリックレジスタの遅延を選択的に与える第２２の手段を含む、項目３０に記載のＤＳＰ回路ブロック。
（項目３２）
前記第５の手段は、
前記第２の他のＤＳＰ回路ブロックから前記第１の他のＤＳＰ回路ブロックへ、信号を代替としてルーティングする第２３の手段を含む、項目２４に記載のＤＳＰ回路ブロック。
（項目３３）
前記第６の手段は、
該第６の手段の出力を示す出力信号を登録する第２４の手段と、
該第２４の手段の出力を、該第６の手段への入力に印加する第２５の手段と
を含む、項目２４に記載のＤＳＰ回路ブロック。
【図面の簡単な説明】
【０００８】
【図１】図１は、本発明に従う、代表的な回路の例示的実施形態の、単純化した概略ブロック図である。
【図２】図２は、本発明に従い、図１タイプの回路で使用することができる、回路の例示的実施形態の単純化した概略ブロック図である。
【図３】図３は、本発明に従う、図１に示すタイプの回路の代表的な部分の例示的実施形態の、より詳細であるがなおも単純化した概略ブロック図である。
【図４】図４は、その回路についての議論のいくつかの側面を容易にするために、時計回りに９０°回転した図３の回路を示す。
【図５】図５は、本発明に従い、特定のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図６】図６は、本発明に従い、図５の演算を行うための、ＤＳＰ回路の例示的実施形態を示す、単純化された概略ブロック図である。
【図７】図７は、本発明に従う、別のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図８】図８は、本発明に従い、図７の演算を行うための、ＤＳＰ回路の例示的実施形態を示す、単純化された概略ブロック図である。
【図９】図９は、本発明に従う、さらに別のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図１０】図１０は、本発明に従い、図９の演算を行うための、ＤＳＰ回路の例示的実施形態を示す、単純化された概略ブロック図である。
【図１１】図１１は、本開示のあるさらなる可能な側面に従う、ＤＳＰ回路ブロックの別の例示的実施形態の、単純化した概略ブロック図である。
【図１２】図１２は、本開示のある可能な側面に従う、図１１に示すような回路の代表的な部分の、例示的実施形態の単純化した概略ブロック図である。
【図１３】図１３は、本開示のある可能な側面に従う、図１１に示すような回路の別の代表的な部分の、例示的実施形態の単純化した概略ブロック図である。
【図１４】図１４は、本開示のある可能な側面に従う、図１１に示すような回路のなおも別の部分の、例示的実施形態の単純化した概略ブロック図である。
【図１５】図１５は、本開示のある可能な側面に従う、図１４に示すような回路の例示的実施形態の、より詳細であるがなおも単純化した概略ブロック図である。
【図１６】図１６は、本開示のある可能な側面に従う、図１１に示すような回路のなおも別の代表的な部分の、例示的実施形態の単純化した概略ブロック図である。
【図１７】図１７は、本開示のある可能な側面に従う、図１１に示すような回路のさらなる部分の、例示的実施形態の単純化した概略ブロック図である。図１７は、図１８に示すようなＤＳＰ演算を行う、回路の構成を示す。
【図１８】図１８は、本開示のある可能な側面に従う、ＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図１９】図１９は、本開示のある他の可能な側面に従う、図１７の回路の複数部分の別の例示的構成を示す。図１９は、図２０に示すようなＤＳＰ演算を行う、回路の構成を示す。
【図２０】図２０は、本開示のある可能な側面に従う、別のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図２１】図２１は、本開示のある可能な側面に従う、図１１に示すような回路のなおもさらなる部分の、例示的実施形態の単純化した概略ブロック図である。
【図２２】図２２は、本開示のある可能な側面に従う、さらに別のＤＳＰ演算の性能のある側面を示す、単純化した図である。
【図２３】図２３は、本開示のある可能な側面に従う、集積回路上の図１１に示すような回路の２つのインスタンスの、例示的実施形態の単純化したブロック図である。
【図２４】図２４は図２３に類似し、本開示に従う、集積回路上の図１１タイプの回路の３つのインスタンスがない場合である。
【図２５】図２５は、既知のタイプのデジタルフィルタ機能に対する既知の式を示す。
【図２６】図２６は、図２５のフィルタ機能を実装するための既知の回路を示す。
【図２７】図２７は、図２５のフィルタ機能を実装するための代替の「シストリック」回路を示す。
【図２８】図２８は、本明細書の他の図とよりうまく相関するように、基本的には図２７の再描画である。
【図２９】図２９は、図２８に示す機能が、本開示のある可能な側面に従い実装することができる、別の方法を示す。
【図３０】図３０は、本開示のある可能な側面に従う、図２１に示すような回路の２つの隣接するインスタンス（集積回路上の）を示す。
【図３１】図３１は、本開示のある可能な側面に従い、図３０の回路で行うことができるＤＳＰ演算の例を示す。
【図３２】図３２は、本明開示のある可能な側面に従う、図１１に示すような回路の複数の隣接するインスタンス（集積回路上の）を示す。
【図３３】図３３は、本開示のある可能な側面に従う、例示的回路の代表的な部分の単純化した概略ブロック図である。
【発明を実施するための形態】
【０００９】
本発明に従う、集積回路（「ＩＣ」または「デバイス」）１０の例示的実施形態の代表的な部分が、図１に示されている。図１に示す回路は、一部の代表的な回路の列Ｒ４〜Ｒ９の代表的な部分を含む。これらの列のうちのいずれもが、概して、列ＲＮと称され得る。
【００１０】
各列ＲＮは、デジタル信号処理またはＤＳＰ回路１００のブロックを含む。各列ＲＮはまた、他の回路２０の領域から、その列のＤＳＰブロックの左右までを含む。その他の回路２０は、列の間だけでなく、その列のＤＳＰブロックからおよびその列のＤＳＰブロックへ、およびその列の論理および他の回路から、その列の論理および他の回路へ、ならびにその列の論理および他の回路の間で信号を伝えるための、論理回路および相互接続導体のような構成要素を含んでもよい。この回路のいくつかまたは全ての種々の側面は、例えば、一般的なデバイス１０を、いくつかの異なる形で使用することができるように、プログラム可能であってもよい。例えば、ＤＳＰブロック１００の回路は、通常、あるＤＳＰ機能を行うように、ある程度まで配線で接続されるが、その回路もまた、行われるＤＳＰ演算のある側面が、各ユーザの特定の必要性および要件に合致するよう、デバイスの異なるユーザによって変更することができるように、ある程度までプログラム可能であってもよい。そのようなプログラミングは、集積回路上のメモリセルにおける制御データの記憶、集積回路上のヒューズ断、集積回路のマスクプリグラミング、またはいずれか他の好適なプログラミング方法もしくは技術の結果であってもよい。
【００１１】
デバイス１０は、列が冗長となるように構成されてもよい。これは、例えば、各列ＲＮが、全ての他の列と同一、または実質的に同一であることを意味する。加えて、デバイス１０は、任意の列ＲＮに欠陥がある場合、その列のすぐ上方または下方の列が、効果的に欠陥のある列の代わりをすることができるように、構成されてもよい。加えて、効果的に欠陥のある列の代わりをしている列の上方または下方の全ての他の列は、効果的に他の隣接する列に取って代わる。このように、ある欠陥のある回路で不注意に製作される多くのデバイス１０を、なおも使用することができ、それによって、製造過程の生産量は著しく増加する。図１は、ＤＳＰブロック領域１００でこの冗長性を達成するための、代表的な回路を示している。追加の冗長回路が、各列ＲＮの他の部分に提供されるが、図表を過度に複雑にすることを避けるために（また、列のそれらの他の部分は、本発明の主要な焦点ではないため）、図１には示していない。ＤＳＰブロック冗長回路については、次のいくつかの段落で一般論として記載する。
【００１２】
本発明に従い、ＤＳＰブロック１００は、隣接する１つのＤＳＰブロックまたは複数のＤＳＰブロックへある信号を送信する、および／または隣接する１つのＤＳＰブロックもしくは複数のＤＳＰブロックからある信号を受信することによって、その機能性を拡張することができる。これらは、隣接するＤＳＰブロック１００間の比較的直接的な接続である。これらのＤＳＰブロック間接続は、回路２０の一部を形成する相互接続資源など、デバイス１０の他のより一般的な相互接続資源には依存しない。むしろ、これらのＤＳＰブロック間信号が、その列における１つ以上の欠陥のために非稼働となっている列を、効果的に「飛び越える」ことができるように、これから記載する冗長回路が採用される可能性がある場合にのみ、これらのＤＳＰブロック間接続は、１つのＤＳＰブロック１００から別の隣接するＤＳＰブロック１００へ直接進む。
【００１３】
代表的な列Ｒ７を例に取ると、（本発明に従い）列Ｒ７のＤＳＰブロック１００から、別のＤＳＰブロックへ進む必要がある信号は、列Ｒ７のＤＳＰブロックのノードＡから発生してもよい。この信号は、そのＤＳＰブロックのマルチプレクサ回路（「ｍｕｘ」）１１０の１つの選択可能な入力端子、およびまた列Ｒ７上方の列Ｒ６の中のＤＳＰブロック１００の類似のｍｕｘ１１０の１つの選択可能な入力端子に印加される。列Ｒ７のｍｕｘ１１０の出力信号は、列Ｒ６のＤＳＰブロック１００の中の宛先に向かう。列Ｒ６のｍｕｘ１１０の出力は、列Ｒ５のＤＳＰブロック１００の中の宛先に向かう。列Ｒ６に欠陥がなく、そのため使用中である場合、列Ｒ７のｍｕｘ１１０は、列Ｒ６への適用のため、ノードＡからの信号を選択するように制御される。しかし、列Ｒ６に欠陥があり、そのためデバイス１０の回路から効果的に切り離されている場合、列Ｒ６のｍｕｘ１１０は、列Ｒ５への適用のため、ノードＡからの信号を選択するように制御される。この例は、任意の列のＤＳＰブロック１００からの信号を、すぐ上方の列のＤＳＰブロック１００に、または源となる列の２列上方のＤＳＰブロック１００に印加するために、冗長ｍｕｘ１１０をどのように使用することができるかを示している。
【００１４】
冗長ｍｕｘ１２０は、同様に、任意のＤＳＰブロック１００から、すぐ下方のＤＳＰブロック１００または２列下方のＤＳＰブロック１００のどちらかへ、信号をルーティングするために使用することができる。例えば、列Ｒ５のＤＳＰブロック１００の中のノードＢから発生する信号は、列Ｒ６およびＲ７の各々のｍｕｘ１２０の１つの選択可能な入力に印加される。列Ｒ６が使用中の場合、列Ｒ６のｍｕｘ１２０は、ノードＢからの信号を、列Ｒ６の中の宛先へ印加するように制御される。一方で、列Ｒ６が使用中でない場合、列Ｒ７のｍｕｘ１２０は、ノードＢからの信号を、列Ｒ７の中の宛先へ印加するように制御される。
【００１５】
図２は、代表的な冗長ｍｕｘ１１０または１２０を制御し得る方法に関する例示的実施形態を示している。ｍｕｘ１１０／１２０は、その選択制御入力信号Ｋの論理状態に基づいて、その出力信号Ｊとなるように、その主要なまたは選択可能な入力ＨまたはＩのどちらかを選択することができる。例えば、Ｋがゼロである場合、ＪはＨであってもよく、Ｋが１の場合、ＪはＩであってもよい。Ｋは、デバイス（Ｆ）１０上のヒューズ（Ｆ）１３０、デバイス上のメモリセル（Ｍ）１３０、またはデバイス上の任意の他のプログラム可能な特徴１３０に由来してもよい。そのようなヒューズ、メモリセルなど１３０は、（もしあれば）列ＲＮのどこに欠陥があるかが決定され、そのためデバイスを通常通り使用するために、デバイス１０から効果的に切り離されなくてはならない後に、そのような各要素１３０に対して適切な状態にプログラムすることが可能であってもよい。
【００１６】
図１に関連して留意すべきことは、各列の幅Ｗ（隣接する列の間）は、（１）その列のＤＳＰブロック１００、および（２）その列の他方の回路２０に対してほぼ同じであることである。現在のような、各列が他の列と実質的に同一であり、および任意の列も、（欠陥がある場合には）完全に非稼働となり、途切れなく別の列によって取って代わられてもよい状況では、これによって、デバイス１０上の領域の効率的な使用が促進される。したがって、列が非稼働となり、別の列によって取って代わられる時に、好ましくは、元の列の全機能は、代わりの列に自動的に再び割り当てられる。デバイスのユーザは、どの列が使用されているか、およびどの列が使用されていないかを心配する必要はなく、知る必要さえもない。
【００１７】
各ＤＳＰブロック１００の高さを、列の他の回路２０の高さと同じにすると、起こり得る結果には、各ＤＳＰブロックのサイズまたは機能的能力を、そのＤＳＰブロックを含む列の隣接する他の回路２０のサイズおよび能力と釣り合わせる傾向がある。例えば、ＤＳＰブロック１００は、そのＤＳＰブロックを含む列の隣接する回路２０から、一定数の入力信号を取得することができてもよい。これによって、ＤＳＰブロックが行うことができる、ＤＳＰ演算（例えば、乗算）の数および／またはサイズが制限されてもよい。しかしながら、デバイス１０の一部のユーザは、１つのそのような限定されたＤＳＰブロックで行うことができるよりも、大きな乗算を行うことを望む場合がある。そのため、本発明は、例えば、大きな乗算および／または他のＤＳＰ演算のいくつかの部分または側面を、別の隣接するＤＳＰブロック１００で行うことができるようにすることによって、１つのＤＳＰブロック１００の乗算および他の能力の拡張を提供する。本発明に従い、これは、概して図１の１１０および１２０に示すように、冗長回路を介して隣接するＤＳＰブロック間に、実質的に直接信号を送信することによってなされる。実質直接的なＤＳＰブロック間接続は、このように、代わりに他の回路２０のより一般的な相互接続資源を使用する試みに起因する場合がある、遅延および起こり得る他の資源の枯渇を避けるために使用される。１１０および１２０のような冗長性は、列が非稼働にならなくてはならない場合に、１つのＤＳＰブロック１００から別のブロックへ行く必要がある信号が、非稼働となっている列の、機能していないＤＳＰブロック１００を迂回することができるように、これらのＤＳＰブロック間の相互接続で使用される。
【００１８】
図３は、本発明に従う、ＤＳＰブロック１００の例示的実施形態を示している。ＤＳＰブロック１００の種々の要素は、以下で早期に識別されるであろう。これらの要素を使用する方法に関するより多くの詳細は、後で提供されるであろう。図３は、図１に示すのと同じ配向にある、代表的なＤＳＰブロック１００を示している。しかしながら、ＤＳＰブロックの種々の構成要素によって行われる算術演算を説明し、いつこの配向になるかについて議論するのは困難であり得るため、図３の実体は、図４においては異なる配向で正確に再生成される。具体的には、図４は、図３に対して時計回りに９０°回転している。したがって、図４の「左」などは、図３の「底部」、「下」、「下方」などと同じであり、図４の「右」などは、図３の「最上部」、「上」、「上方」などと同じである。図１および３によって、上記の隣接するＤＳＰブロック１００間の実質的な直接接続が、デバイス１０において列から列へ進むことが明確になる。図４のような図は、９０°回転した代表的なＤＳＰブロック１００を図示しているが、この種の図によって、右または左に移動する信号が、回路の別の列ではなく、むしろ回路の別の縦列へと進んでいることが示されるにもかかわらず、図４のような図に関する以下の議論で、１つの「列」から別の「列」へ進む、そのようなＤＳＰブロック間信号になおも言及することになる。
【００１９】
これから図３または図４のどちらかに示すような、代表的なＤＳＰブロック１００の基本構造に移ると、ブロック１００は、２つの１８掛ける１８（「１８ｘ１８」）の乗算回路２００ａおよび２００ｂを含む。乗算器２００の各々は、２つの１８ビットのデータワード（考慮中のＤＳＰブロック１００を含む列の他方の回路２０からの電気データ信号によって表される）を共に乗じ、冗長形式（例えば、１つの３６ビットの和ベクトルおよび１つの３６ビットの桁上げベクトル（乗算器は、通常の積の最終値を生成するための、最終桁上げ伝播加算器（「ＣＰＡ」）を含まないため））で、２つの積のベクトル（再び電気信号によって表される）を生成することができる。制御可能なシフタ回路２０２は、乗算器２００ａによって出力される和および桁上げ信号ベクトルを、（１）１８ビット位置から左（数値または演算の有効の増加）、または（２）全くなし（すなわち、左へのシフトはなく、そのため数値または演算の有効の変化もなし）のどちらかにシフトするように、制御可能である。要素２０２に対する別の可能な出力条件は、全てゼロであるデータ信号を出力することであってもよい。図２の場合のように、１３０のような１つ以上のヒューズまたはメモリセルは、上に記載した通り、乗算器２００ａの出力を左へシフトするべきかどうか（または、第３の可能性として、上記の通り、０のデータを出力）について、要素２０２を制御するようにプログラムされてもよい。別の可能な代替として、要素２０２は、実行する機能に対してマスクプログラミング可能であってもよい。本明細書中の全ての場合において、「シフト」は、通常、そうでなければ次の下流回路要素へそれらの信号を伝える（シフトされない場合）ために使用されるであろう導線のセットとは異なる、次の下流回路要素に進む導線のセットへ、信号をルーティングすることを意味する。ビット信号の「演算の有効」、「ビット位置」、「位」などは、通常、信号はいくつかの導線のうちのどれに存在するのかの結果である。
【００２０】
代表的なＤＳＰブロック１００における次の要素は、４から２への（「４〜２」）圧縮回路２１０である。圧縮器２１０は、シフタ２０２および乗算器２００ｂから受信する、２つの和および桁上げ信号ベクトル（すなわち、そのような４つの信号ベクトルの合計）を組み合わせて、そのような２つの信号ベクトルにすることができる。シフタ２０２からのベクトルは、１８ビット位置だけ、数値の有効が増加する場合があるため、圧縮器２１０の「幅」は、５７ビットにまで増加する必要がある。故に、圧縮器２１０は、５７ビット位置（すなわち、［５７：１］）を有するように示されている。
【００２１】
圧縮器２１０によって出力される和および桁上げベクトル（５７ビットもの数を含み得る各ベクトル）は、ｍｕｘ２２０ａおよび２２０ｂ、ならびにまた制御可能なシフタ回路２３０にも印加される。ｍｕｘ回路２２０ａは、図４に見られる通り、左に隣接するＤＳＰブロックへの適用のために、圧縮器２１０によって出力される５７ビットの信号ベクトルの種々の３８ビットのサブセットのうちのいずれか１つを選択することができる。（本議論中、全てのそのような３８ビットのデータ値またはサブセットの中のビットは、連続する数字上有効がある。例えば、５７ビット源からの比較的低位のビットであってもよいか、またはその源から比較的高位のビットであってもよい。しかし、どちらの場合でも、全て連続ビットの有効を有する。そのようなサブセットを選択することは、通常、いくつかのグループの導線のうちのどの１つが、選択されたサブセットにおける信号の源として選択されるかの結果である。）同様に、ｍｕｘ回路２２０ｂは、図４に見られる通り、左に隣接するＤＳＰブロックへの適用のために、圧縮器２１０によって出力される５７ビットの信号ベクトルの種々の３８ビットのサブセットのうちのいずれか１つを選択することができる。Ｍた、ｍｕｘ２２０ａおよび２２０ｂは、所望の場合には、全てゼロであるデータを出力する能力を有することもできる。これは、本開示中に示し記載する、ｍｕｘ（例えば、２２０、２３２、２４２、２４８など）のいずれか、および制御可能なシフタ（例えば、２０２、２３０など）のいずれかが有してもよい能力である。いくつかのｍｕｘ（例えば、２４２、２５２、および２６２）は、明示するこの能力（例えば、これらのｍｕｘへの選択可能な入力の１セットの接地２４４）を伴い図示されている。この回路は、それを含んでもよい全ての他の要素（例えば、２０２、２２０、２３０、２３２、２４８など）の図示のためには繰り返されず（図表を過度に複雑にすることを避けるため）、またはこの能力は、これらの他の要素の全てに関する議論においてもはっきりとは言及されないが、これらの一般的な種類の全要素が、この能力を有してもよいことは理解されるであろう。
【００２２】
制御可能なシフタ２３０は、それに印加されるビットを１８ビット左へ（それによって、それらのビットの数値の有効が増加する）、または１８ビット右へ（それによって、それらのビットの数値の有効が減少する）シフトすることができる。第３の代替として、シフタ２３０は、それに印加されるデータへのシフトを適用しなくてもよい。要素２２０および２３０の全ては、それらの種々の可能な機能のどれを行うべきかを選択するように、図２の１３０のような、プログラム可能なヒューズまたはメモリ回路要素によって制御されてもよい（またはマスクプログラミング可能であってもよい）。
【００２３】
図３および４に示す代表的なＤＳＰブロック１００から出るためには、ｍｕｘ２２０ｂの出力は、冗長ｍｕｘ１１０ａおよび１１０ｂ（より一般的にまたは一般的には、図１および２に示す冗長ｍｕｘ１１０の特定のインスタンスである）によって選択されなくてはならないことに留意すること。ｍｕｘ１１０ａおよび１１０ｂへの代替入力は、図３では一部のみ点線で示し、図４には全く示していない（図３および４を過度に複雑にすることを避けるため）。しかし、これらの点線の入力は、ＤＳＰブロック１００のｍｕｘ２２０ｂから、図３のＤＳＰブロックの下方（または図４のＤＳＰブロックの左）へ来ることは、図１から明らかであろう。
【００２４】
ｍｕｘ２３２は、冗長ｍｕｘ１２０ａおよび１２０ｂから、３８ビットの和および桁上げベクトルを受信する。また一方、冗長ｍｕｘ１２０ａおよび１２０ｂは、より一般的にまたは一般的に、図１の１２０に示す冗長ｍｕｘのタイプの特定のインスタンスである。ｍｕｘ１２０ａおよび１２０ｂへの実線の入力は、ＤＳＰブロック１００のｍｕｘ２２０ａから、図３のＤＳＰブロックのすぐ上方（または、図４のＤＳＰブロックのすぐ右）へ来ている。ｍｕｘ１２０ａおよび１２０ｂへの代替の点線の入力（図３および図４を過度に複雑にすることを避けるために、図３では一部のみを示し、図４には全く示していない）は、ＤＳＰブロック１００のｍｕｘ２２０ａから、図３のＤＳＰブロックの上方に２つ（または、図４のＤＳＰブロックの右に２つ）来ている。また、ｍｕｘ２３２は、３８ビットの和および桁上げ信号ベクトルを、ＤＳＰブロック１００の冗長ｍｕｘ１１０ａおよび１１０ｂから、図３のＤＳＰブロックのすぐ下方（または、図４のＤＳＰブロックのすぐ左）へ来るリード線から受信する。ｍｕｘ２３２は、ｍｕｘ１２０ａおよび１２０ｂからのベクトル、またはｍｕｘ２３２が受信する他のベクトルのどちらかを選択することができる。ｍｕｘ２３２の制御は、ｍｕｘ２２０のような、他の種々の要素の制御と類似し得る。
【００２５】
図３および４に示す代表的なＤＳＰブロック１００の中の次の要素は、４−２圧縮回路２４０である。サイズが異なるものの、圧縮器２４０は圧縮器２１０に類似し得る。言い換えると、圧縮器２４０は、受信する４つの３８ビットの和および桁上げ信号ベクトルを、２つのさらに３８ビットの和および桁上げ信号ベクトルに組み合わせることができる。より大きな乗算が行われている場合には、圧縮器２４０は、別の隣接するＤＳＰブロック１００で、類似する圧縮器２４０と鎖のように連動して作動する必要がある場合がある。したがって、圧縮器２４０は加えて、ｍｕｘ２４２から、より低位の（すなわち、数値の有効がより低い）信号ビットを受信することができる。実際のより低位の源から中での連鎖（ｃｈａｉｎｉｎｇ−ｉｎ）がない場合、ｍｕｘ２４２は、接地電位２４４の源から、これらのより低位ビットを選択することができる。代替として、そのような中での連鎖がある場合には、ｍｕｘ２４２は冗長ｍｕｘ１２０ｃからそれらの出力を手に入れる。ｍｕｘ１２０ｃは、１２０ａおよび１２０ｂのような、ｍｕｘの別のインスタンスである。ｍｕｘ１２０ｃへの実線の入力は、ＤＳＰブロック１００の圧縮器２４０から、図３のブロックのすぐ上方（または、図４のＤＳＰブロックのすぐ右）へ来ている。ｍｕｘ１２０ｃへの点線の入力（図示の過度の複雑性避けるために、図３には一部のみ示し、図４からは完全に省略）は、ＤＳＰブロック１００の圧縮器２４０から、図３のブロックの上方に２つ（または、図４のブロックの右に２つ）の２つの出力である。圧縮器２４０の底部（図３）または左（図４）から落ちてくる２つの出力は、圧縮器２４０によって行う演算に起因する、最大有効の、最高位の、またはオーバーフロー出力信号のビットである。また一方、より大きな乗算が行われている場合、これらのオーバーフロービットは、ｍｕｘ１２０ｃおよび２４２を介して、隣接するＤＳＰブロックの圧縮器２４０の最低位の入力に連鎖することができる。ＤＳＰブロックの連鎖がない場合、ｍｕｘ２３２は、０のデータ信号を出力するように制御することができる。
【００２６】
圧縮器２４０によって出力される、３８ビットの和および桁上げベクトルは、３から２（「３−２」）の圧縮回路２５０に印加される。また、隣接するＤＳＰブロック１００によって出力される最終積も、冗長ｍｕｘ１２０ｄおよび１２０ｅ、ならびにｍｕｘ２４８を介して、３−２圧縮器２５０に印加することができる。また一方、このＤＳＰブロック間ルーティングの特徴は、あるより複雑なＤＳＰ演算を行うべきときに、使用することができる。ｍｕｘ１２０ｄおよび１２０ｅの配置および使用は、１２０ａおよび１２０ｂなどのその他のｍｕｘの配置および使用に類似する。したがって、ｍｕｘ１２０ｄおよび１２０ｅへの実線の入力は、ＤＳＰブロック１００の桁上げ伝播加算器（ＣＰＡ）回路２６０の主要な出力から、図３および４に示すブロックの上方（図３）または右（図４）へ来ている。冗長ｍｕｘ１２０ｄおよび１２０ｅへの代替の点線の入力（再び、図３にのみ一部のみを示す）は、ＤＳＰブロック１００のＣＰＡ２６０の主要な出力から、図３および４のブロックの上方に２つ（図３）、または右に２つ（図４）へ来ている。（ＤＳＰブロックの連鎖がない場合、ｍｕｘ２４８は、０のデータ信号を出力するように制御される。）３−２圧縮器２５０は、最終桁上げ伝播加算器（「ＣＰＡ」）２６０に印加される、さらなる和および桁上げ信号ベクトルを生成するように、圧縮器２４０からの和および桁上げ信号ベクトルを、ｍｕｘ２４８によって出力されるデータと組み合わせることができる。代表的なＤＳＰブロック１００が、３８ビットより大きな算術演算に関与する場合、より低位の信号ビットを、隣接するＤＳＰブロック１００から、圧縮器２５０およびＣＰＡ２６０に印加することができ、圧縮器２５０の場合にはｍｕｘ１２０ｆおよび２５２を介して、ならびにＣＰＡ２６０の場合にはｍｕｘ１２０ｇおよび２６２を介する。同様に、より長い算術演算のために、複数の要素２５０および複数の要素２６０を連鎖させる必要がある場合には、より高位の信号ビットは、要素２５０および２６０から、隣接するＤＳＰブロック１００の要素１２０ｆ／２５２／２５０および１２０ｇ／２６２／２６０へ出力することができる。要素１２０ｆ、２５２、および２４４の配置および使用は、要素１２０ｃ、２４２、および２４４の上記の配置および使用に類似し得る。要素１２０ｇ、２６２、および２４４も同じである。したがって、要素１２０ｆ／２５２／２４４および１２０ｇ／２６２／２４４のさらなる説明は必要ではない。
【００２７】
別の隣接するＤＳＰブロック１００のｍｕｘ２４８に戻って実質的に直接ルーティング可能であることに加えて、ＣＰＡ２６０によって出力される、最終的な最大３８ビット信号の積は、通常、図１に示す代表的なＤＳＰブロック１００を含む、列ＲＮの他方の回路２０に印加される。
【００２８】
これから、１つ以上のＤＳＰブロック１００が補助することができる、種々の操作モードの例の考察に移る。
【００２９】
Ａ．  １８ｘ１８および１８ｘ１８複素数
１８ｘ１８の乗算、および１８ｘ１８の虚数乗法（例えば、（ａ＋ｂｉ）ｘ（ｃ＋ｄｉ））のような比較的単純なモードは、１つのＤＳＰブロック１００内で行うことができる。例えば、どちらかの乗算器２００も、１８ｘ１８の乗算から和および桁上げ信号ベクトルを形成するように使用することができ、それらのベクトルは、後続の構成要素を通って、ＣＰＡ２６０へと下に渡すことができ、これによって、乗算の最終積を形成する。
【００３０】
Ｂ．  ４つの１８ｘ１８の和
４つの１８ｘ１８の乗算の積の和は、２つの隣接するＤＳＰブロックを使用して形成することができる。（「隣接する」は、冗長回路の演算によって非稼働となっている、介在する列がない場合には、直接隣接するか、または代替として、そのような介在する非稼働の列を別とすれば、隣接することを意味する。）以下などの議論において、Ａ、Ｂ、Ｃなどの各文字は、１８ビット入力を示すかまたは表し、ＡＢ、ＣＤなどの各文字の対は、その対の文字で識別される、２つの１８ビット入力の乗算に対する乗算の結果である。そのような文字の対は、乗算結果に対する中間和および桁上げベクトル、または最終の乗算の積のどちらかを表してもよい。したがって、ＡＢ＋ＣＤ＋ＥＦ＋ＧＨは、８つの対を成す１８ビット入力の４つの積の和である。
【００３１】
第１のＤＳＰブロック１００の乗算器２００ａは、ＡＢを形成するように使用してもよい。そのＤＳＰブロックの乗算器２００ｂは、ＣＤを形成するように使用してもよい。第１のＤＳＰブロックの圧縮器２１０は、ＡＢ＋ＣＤを形成する。ｍｕｘ２２０ｂは、隣接するＤＳＰブロック１００のｍｕｘ２３２および圧縮器２４０へ、ＡＢ＋ＣＤをルーティングするように使用することができる。隣接するＤＳＰブロックの乗算器２００ａは、ＥＦを形成するように使用することができる。その隣接するブロックの乗算器２００ｂは、ＧＨを形成するように使用することができる。その隣接するブロックの圧縮器２１０は、ＥＦ＋ＧＨを形成する。その隣接するブロックの圧縮器２４０は、その同じブロックのＣＰＡ２６０が最終積の形態で出力する、ＡＢ＋ＣＤ＋ＥＦ＋ＧＨを形成する。ＡＢ＋ＣＤを形成するブロックは、ＥＦ＋ＧＨおよびＡＢ＋ＣＤ＋ＥＦ＋ＧＨを形成するブロックのどちらかの側のブロックであり得ることに留意すべきである。
【００３２】
Ｃ．  ２つの３６ｘ１８の和
以下などの議論において、Ａ、Ｂ、Ｃなどのような文字は前と同じ意味を有し、ＡＣ、ＢＣなどのような文字の対は前と同じ意味を有し、（Ａ，Ｂ）のような文字の対は、左の文字が１８より上位のビットを指し、右の文字が１８より下位のビットを指す３６ビットのデータワードを示し、（Ａ，Ｂ）＊Ｃのような文字の組み合わせは、１８ビットのデータワード（例えば、Ｃ）が乗じられる３６ビットのデータワード（例えば、（Ａ，Ｂ））の乗算に対する乗算の結果を示す。したがって、本明細書で議論しているモードの目的は、（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆ生成することである。
【００３３】
図５は、上記の結果がどのように作り上げられるかを（算術的に）示している。図５のパート１は、実施される３６ｘ１８の乗算のうちの１つを示している（すなわち、（Ａ，Ｂ）＊Ｃ）。パート２は、実施される３６ｘ１８の乗算のうちの他方を示している（すなわち、（Ｄ，Ｅ）＊Ｆ）。パート３は、（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆを生成するように、種々の部分積を生成し、その後、加算のために垂直方向に整列させる方法を示している。具体的には、２つの部分積（Ａ，Ｂ）＊Ｃは、ＡＣおよびＢＣとして生成され、ＡＣは、ＢＣに対して１８ビット位置だけ左へシフトする。同様に、２つの部分積（Ｄ，Ｅ）＊Ｆは、ＤＦおよびＥＦとして生成され、ＤＦは、ＥＦに対して１８ビット位置だけ左へシフトする。ＢＣ、ＡＣ、ＥＦ、およびＤＦの全ては、図５のパート３に示す通りに加算される。
【００３４】
図６は、２つの隣接するＤＳＰブロック１００が、上の演算を形成するようにどのように構成され得るのかを示している。図６は、冗長回路の図示を省略し、２つの直接隣接するＤＳＰブロック１００ａおよび１００ｂが使用されると仮定して、単純化している。（前に図示および記載した冗長回路の全ては、図６の回路に実際に存在し、この冗長回路は、使用することができない介在ＤＳＰブロックによって、互いから分離している２つのＤＳＰブロックと共に、効果的に置くように使用することができることは、理解されるであろう。）図６に示す通り、ＤＳＰブロック１００ａの乗算器２００ａはＡＣを形成し、ＤＳＰブロック１００ａの乗算器２００ｂはＤＦを形成し、ＤＳＰブロック１００ｂの乗算器２００ａはＢＣを形成し、ＤＳＰブロック１００ｂの乗算器２００ｂはＥＦを形成する。ブロック１００ａの圧縮器２１０は、ＡＣおよびＤＦを圧縮（加算）する。ブロック１００ｂの圧縮器２１０は、ＢＣおよびＥＦを圧縮（加算）する。ブロック１００ａの圧縮器２１０の出力のより下位の１８ビットは、要素２２０ｂ（ブロック１００ａ）および２３２（ブロック１００ｂ）を介して、ブロック１００ｂの圧縮器２４０にルーティングされる。（このルーティングの経路は、図６の点線２１１によって強調されている。）これによって、ブロック１００ｂは、図５のパート３において、最終積の一部分を点線の右に形成することができる。図５のパート３における点線の左のデータは、ブロック１００ａに残り、最終和のその部分として、そのブロックによって出力される。
【００３５】
より具体的には、ブロック１００ａにおいて、シフタ２３０は、ブロック１００ｂへ転送されない、圧縮器２１０のより上位の出力が、ブロック１００ａの圧縮器２４０のより下位の部分にシフトされるよう、圧縮器２１０の出力を１８ビット位置だけ右へシフトするように使用される。ブロック１００ｂでは、シフタ２３０が、圧縮器２１０から１８ビット位置だけ左へデータをシフトさせ、ブロック１００ｂのｍｕｘ回路２３２を通過するデータは、そのｍｕｘ回路２３２と関連付けられる圧縮器２４０へのより上位の入力に印加される。したがって、ブロック１００ｂの圧縮器２４０は、図５のパート３において、点線の右に示す加算の終了を開始することができる。ブロック１００ｂの圧縮器２４０の最大有効の末端からの任意の桁上げまたはオーバーフローは、ブロック１００ａのｍｕｘ２４２によって、ブロック１００ａの圧縮器２４０の最小有効の末端に適用される。これによって、圧縮器２４０の両方が、１つのさらにより長い圧縮器として、効果的に共に作動することができる。
【００３６】
圧縮器２４０の各々によって出力されるデータは、それぞれ関連付けられる圧縮器２５０を通って、それぞれ関連付けられる桁上げ伝播加算器（「ＣＰＡ」）２６０へ流れ、（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆに対する最終和の出力データが生成される。また一方、ブロック１００ｂのＣＰＡ２６０の最大有効の末端からの任意の桁上げオーバーフローは、ブロック１００ａのｍｕｘ２６２を介して、ブロック１００ａのＣＰＡ２６０の最小有効の末端に適用される。これによって、再び、ＣＰＡ２６０の両方が、１つのさらにより長いＣＰＡとして、効果的に共に作動することができる。したがって、ブロック１００ａが、最終積（Ａ，Ｂ）＊Ｃ＋（Ｄ，Ｅ）＊Ｆの１８より上位のビットを出力する一方で、ブロック１００ｂは、その最終積の３６より下位のビットを出力する。
【００３７】
Ｄ．  ２つのＤＳＰブロックを使用する３６ｘ３６モード
以下などの議論において、（Ａ，Ｂ）のような文字の対は、再び３６ビットのデータワードを示し、左の文字が１８より上位のビットを指し、右の文字が１８より下位のビットを指す。Ｌまた、ＢＤのような文字の対も、基本的には前と同じ意味を有する（ここでは、そのような文字の対は、通常、２つの異なる３６ビットのデータワードのうちの２つの１８ビット部分の積を指す）。したがって、本セクションで議論している動作の目的は、（Ａ，Ｂ）および（Ｃ，Ｄ）の積、または（Ａ，Ｂ）＊（Ｃ，Ｄ）を生成することである。
【００３８】
図７は、上記の結果がどのように作り上げられるかを算術的に示している。図７のパート１は、行われる乗算を示している。パート２は、形成される４つの部分積、およびこれらの４つの部分積が、垂直方向に加算することができるよう、相対的な演算の有効を調整するために、互いに対して左から右に位置づけられる方法を示している。具体的には、最大有効の部分積ＢＤは、被乗数（Ａ，Ｂ）および乗数（Ｃ，Ｄ）の各々の１８ビットより下位のビットの積である。次の部分積ＡＤは、被乗数（Ａ，Ｂ）の１８より上位のビット、および乗数（Ｃ，Ｄ）の１８より下位のビットの積である。部分積ＣＢは、被乗数（Ａ，Ｂ）の１８より下位のビット、および乗数（Ｃ，Ｄ）の１８より上位のビットの積である。部分積ＡＣは、被乗数および乗数の各々の１８より上位のビットの積である。既に言及してきた通り、図７のパート２もまた、部分積ＡＤおよびＣＢが、部分積ＢＤに対して１８ビット位置だけ左へどのようにシフトするのか、ならびに部分積ＡＣが、部分積ＡＤおよびＣＢに対して１８より大きいビット位置だけ左へどのようにシフトするのかを示している。そのようなシフトの後、図７のパート２に示す４つの部分積は、（Ａ，Ｂ）および（Ｃ，Ｄ）の所望の最終積、すなわち（Ａ，Ｂ）＊（Ｃ，Ｄ）を生成するように、垂直方向に加算することができる。
【００３９】
２つの隣接するＤＳＰブロック１００は、図７によって図示する算術的機能を実施するように使用することができる。（再び、「隣接する」は、介在する列の中に非稼働になっているものがない場合は直接隣接するか、または非稼働になっている介在する列の対向側に隣接するかのいずれかの意味である。）図８は、これが２つの隣接するＤＳＰブロック１００ａおよび１００ｂを使用して（および、再び、図を極度に複雑化するのを避けるために、冗長マルチプレクサおよび他の冗長接続の図示を省略して）、どのように行うことができるのかを示している。
【００４０】
図８に示す通り、ＤＳＰブロック１００ａの乗算器２００ａは、部分積ＡＣを形成する。ＤＳＰブロック１００ａの乗算器２００ｂは、部分積ＣＢを形成する。ＤＳＰブロック１００ｂの乗算器２００ａおよび２００ｂは、それぞれ部分積ＡＤおよびＢＤを形成する。ＤＳＰブロック１００ａのシフタ２０２は、部分積ＡＣを部分積ＣＢに対して、１８ビット位置だけ左にシフトさせ、そのＤＳＰブロックの圧縮器２１０が、互いに対してそのようにシフトするように、それら２つの部分積を加算する。ＤＳＰブロック１００ｂのシフタ２０２は、部分積ＡＤを部分積ＢＤに対して、１８ビット位置だけ左にシフトさせ、そのＤＳＰブロックの圧縮器２１０が、互いに対してそのようにシフトするように、それら２つの部分積を加算する。
【００４１】
ＤＳＰブロック１００ａの圧縮器２１０によって出力される、１８の最小有効ビットは、ブロック１００ａの要素２２０ｂおよびブロック１００ｂの要素２３２を介して、ブロック１００ｂの圧縮器２４０にルーティングされ、これらのビットは、関連付けられる圧縮器２４０の入力のより上位の末端へルーティングされる。（点線２１３によってこのルーティングを強調している。）ＤＳＰブロック１００ｂの圧縮器２１０によって出力される、１８の最大有効ビットは、ブロック１００ｂの要素２２０ａおよびブロック１００ａの要素２３２を介して、ブロック１００ａの圧縮器２４０にルーティングされ、これらのビットは、関連付けられる圧縮器の入力のより下位の末端へルーティングされる。（点線２１５によってこのルーティングを強調している。）ＤＳＰブロック１００ａのシフタ２３０は、ブロック１００ａからブロック１００ｂへ転送されていた、より下位のビットが、ブロック１００ａの圧縮器２４０に印加されるのを防止するように、そのブロックの圧縮器２１０によって出力されるデータを、１８ビット右へシフトさせる。ＤＳＰブロック１００ｂのシフタ２３０は、ブロック１００ｂからブロック１００ａへ転送されていた、より上位のビットが、ブロック１００ｂの圧縮器２４０に印加されるのを防止するように、そのブロックの圧縮器２１０によって出力されるデータを、１８ビット左へシフトさせる。
【００４２】
ＤＳＰブロック１００ａおよび１００ｂの圧縮器２４０は、それらに印加される部分積の情報を加算するように連動する（ブロック１００ａの要素２４２は、ブロック１００ｂの圧縮器２４０の最高位（最大有効）のビット位置から、ブロック１００ａの圧縮器２４０の最低位（最小有効）のビット位置へ、任意のオーバーフローを印加する）。したがって、ブロック１００ａの圧縮器２４０は、図７のパート２において、垂直な点線の左のデータを加算する結果の形成を開始している一方で、ブロック１００ｂの圧縮器２４０は、同様にその点線の右のデータに対して行っている。
【００４３】
圧縮器２４０の各々によって出力されるデータは、それぞれの圧縮器２５０を通って、それぞれの桁上げ伝播加算器（「ＣＰＡ」）２６０に流れる。また一方、ブロック１００ａの要素２６２は、ブロック１００ｂのＣＰＡ２６０の最大有効の末端から、ブロック１００ａのＣＰＡ２６０の最小有効の末端へ、任意の桁上げ出力を印加する。これら２つのＣＰＡ２６０の最終出力は、最終積（Ａ，Ｂ）＊（Ｃ，Ｄ）を一括して備え、ブロック１００ａのＣＰＡ２６０の出力が、その最終積のより上位のビットを構成し、ブロック１００ｂのＣＰＡ２６０の出力が、その最終積のより下位のビットを構成する。
【００４４】
Ｅ．  ４つのＤＳＰブロックを使用する５４ｘ５４モード
本発明に従うＤＳＰブロック１００をどのように使用することができるかの別の例が、図９および１０によって図示されている。本議論では、（Ａ，Ｂ，Ｃ）のような文字の３つ揃いは、文字Ａが１８の最大有効ビットを示し、文字Ｂが１８ビットの中間の演算の有効を示し、文字Ｃが１８の最小有効ビットを示す、５４ビットのデータワードを指す。ＡＦのような文字の対は、１つの５４ビットのデータワードからの１８ビットＡ掛ける別の５４ビットのデータワードからの１８Ｆの部分積を指す。本セクションで議論しているモードの目的は、２つの５４ビットのデータワードの積、すなわち（Ａ，Ｂ，Ｃ）掛ける（Ｄ，Ｅ，Ｆ）または（Ａ，Ｂ，Ｃ）＊（Ｄ，Ｅ，Ｆ）の積を生成することである。しかしながら、１０８ビットに対する正確な精度は、積には要求されないと推定される。したがって、最小有効の部分積ＣＦは算出されず、最終（略）積を生成するように使用もされない。
【００４５】
図９は、上記の積が、複数の部分積からどのように作り上げられるかを算術的に示している。図１０は、図９に示す通り、積を作り上げるために使用することができる、４つのＤＳＰブロック１００ａ〜１００ｄを示している。（また一方、便宜上、図１０では、この範囲のＤＳＰブロックは非稼働ではないため、４つの直接隣接するＤＳＰブロック１００が使用可能であると推定している。したがって、図１０では、本明細書の他の場所に示し記載する、冗長回路の図示を省略している。しかし、ブロック１００ａ〜ｄのうちの１つが、非稼働となっているはずの場合には、その冗長回路が好ましくは存在し、ＤＳＰブロック１００を、図１０との関係で記載した機能を行うのに役立つよう、使用することが可能となるように、使用することができる。）図９のパート１は、行われる乗算を示している。図９のパート２は、２つの左側のＤＳＰブロック１００ａおよび１００ｂにて形成され、適切に組み合わされる、部分積を示している。図９のパート３は、２つの右側のＤＳＰブロック１００ｃおよび１００ｄにおいて形成され、適切に組み合わされる部分積を示している。図９のパート３からの３６より上位のビット（すなわち、パート３における点線の左のビット）は、主にＤＳＰブロック１００ｂの最終段階において、図９のパート２からの３６より下位のビット（すなわち、パート２における点線の右のビット）に加算される。したがって、積の７２より上位のビットは、ＤＳＰブロック１００ａおよび１００ｂによって出力される。積の追加の１８より下位のビットは、ＤＳＰブロック１００ｄから利用可能である。先に言及した通り、積のなおもより下位のビットは、算出されず、利用可能でもない。したがって、この場合の「積」は、非常に高い精度での近似であるものの、単なる近似であるにすぎない。具体的には、これは、最小有効の部分積ＣＦが算出されず、図９および１０のどこにも使用されていないという事実による。
【００４６】
これよりより詳細に図９および１０を考慮する際には、ＤＳＰブロック１００ａおよび１００ｂで行われる動作（図９のパート２に示す通り）は、最初、図７および８に示し、それらの図と関連して記載することと同じであるに気づくであろう。具体的には、この動作には、２つの３６ビットのデータワードの積（この場合には、積（Ａ，Ｂ）＊（Ｄ，Ｅ））を形成するために、２つのＤＳＰブロック１００ａおよび１００ｂを使用する。２つのＤＳＰブロックの機能性のこの側面は、図７および８との関連で既に完全に記載してきたため、図９のパート２、または図１０のＤＳＰブロック１００ａおよび１００ｂと関連して、再び詳細に記載する必要はないであろう。
【００４７】
これより図９のパート３、および図１０のＤＳＰブロック１００ｃおよび１００ｄに移ると、これら２つのＤＳＰブロックにて行われる動作は、最初、図５および６に示し、それらの図と関連して記載することに少々類似していることに気づくであろう。しかしながら、図９のパート３の点線は、図５のパート３の点線とは異なる場所にあり、そのため、図１０のＤＳＰブロック１００ｃおよび１００ｄがこの動作を行う手段は、図６用に上に記載した流れとは少々異なる。図１０で使用される少々異なる流れについては、次の段落に記載する。
【００４８】
ＤＳＰブロック１００ｃの乗算器２００ａおよび２００ｂは、部分積ＡＦおよびＤＣをそれぞれ形成する。ブロック１００ｃの圧縮器２１０は、これら２つの部分積を共に加算する。ＤＳＰブロック１００ｄの乗算器２００ａおよび２００ｂは部分積ＢＦおよびＥＣを形成し、そのブロックの圧縮器２１０は、これら２つの部分積を共に加算する。ブロック１００ｄの２２０ａ、およびブロック１００ｃの２３２のルーティングによって、ブロック１００ｄの圧縮器２１０によって出力される１８より上位のビットを、ブロック１００ｃの圧縮器２４０のより下位の末端に印加する。ブロック１００ｄのシフタ２３０は、そのブロックの圧縮器２１０ｉの出力を、１８ビット位置だけ左へシフトさせる。ブロック１００ｃの圧縮器２４０は、それに印加される４つのベクトルを２つのベクトルにまで減らして圧縮し、ベクトルは、そのブロックの圧縮器２５０を通って、そのブロックのＣＰＡ２６０に至るまで流れる。（これは、基本的には、図９のパート３において、点線の左に必要とされる、最終加算動作である。）ブロック１００ｄの圧縮器２４０の出力は、同様に、そのブロックの圧縮器２５０を通って、そのブロックのＣＰＡ２６０へと下に流れる。（これは、図９のパート３において、点線の左にあるものに対応する。）ブロック１００ｃおよび１００ｄのＣＰＡ２６０は、図９のパート３に示す動作の最終和を生成するように連動する。ブロック１００ｂの要素２４８は、その結果の３８より上位のビット（ブロック１００ｃのＣＰＡ２６０によって出力される）を、ブロック１００ａおよび１００ｂで行われている動作への加算用のブロック１００ｂ（図９のパート２に示す通り）の中へルーティングするように使用される。したがって、最終結果は、（１）ブロック１００ａおよび１００ｂのＣＰＡ２６０によって出力されている、（Ａ，Ｂ，Ｃ）＊（Ｄ，Ｅ，Ｆ）の７２より上位のビット、および（２）ブロック１００ｄのＣＰＡ２６０によって出力されている、その（近似）積の１８より上位（より下位）のビットである。
【００４９】
前述のいくつかの側面を要約し、また論じてきたことを拡張するいくつかの点において、デジタル信号処理（「ＤＳＰ」）ブロック（例えば、１００）は、第１および第２のＮビット（例えば、１８ビット）乗算回路（例えば、２００ａおよび２００ｂ）を含んでもよい。ＤＳＰブロックは、（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、第１の乗算回路の出力をシフトするための第１のシフタ回路（例えば、２０２）をさらに含んでもよい。ＤＳＰブロックは、第１のシフタ回路および第２の乗算回路の出力を加法的に組み合わせるための第１の圧縮回路（例えば、２１０）をなおもさらに含んでもよい。ＤＳＰブロックは、ＤＳＰ回路ブロックのそれぞれの対向側にある、第１および第２の他のＤＳＰ回路ブロックへ、第１の圧縮回路の出力を選択的にルーティングするための回路（例えば、２２０ａおよび２２０ｂ）をその上さらに含んでもよい。ＤＳＰブロックは、（１）ゼロビット位置、（２）より上位の演算の有効に向かうＮビット位置、および（３）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、第１の圧縮回路の出力をシフトするための第２のシフタ回路（例えば、２３０）をなおもさらに含んでもよい。ＤＳＰブロックは、第１および第２の他のＤＳＰ回路ブロックのうちのどちらかで、第１の圧縮回路から受信される任意の出力を加法的に組み合わせるための第２の圧縮回路（例えば、２４０）をその上さらに含んでもよい。
【００５０】
上に記載したＤＳＰ回路ブロックでは、ルーティング回路（例えば、２２０ａおよび／または２２０ｂ）は、第１の圧縮回路（例えば、２１０）の出力の複数のサブセットのうちのいずれか１つをルーティングするために選択するように制御可能であってもよい。これらの選択可能なサブセットは、（１）第１の圧縮回路の最大有効出力ビット位置を含むサブセット、および（２）第１の圧縮回路の最小有効出力ビット位置を含むサブセットを含んでもよい。
【００５１】
上に記載したＤＳＰ回路ブロックでは、第２の圧縮回路（例えば、２４０）は、第２の圧縮回路のオーバーフロー出力信号を、第１の他のＤＳＰ回路ブロックに印加するためのオーバーフロー出力回路（例えば、圧縮器２４０の最大有効の末端から、隣接するＤＳＰブロックへの出力リード線）と、第２の他のＤＳＰ回路ブロックで第２の圧縮回路のオーバーフロー出力信号を選択的に受信するためのオーバーフロー入力回路（例えば、２４２）とを含んでもよい。
【００５２】
上に記載したＤＳＰ回路ブロックは、第２の圧縮回路の出力と、第２の他のＤＳＰ回路ブロックから受信される任意のさらなる出力とを、加法的に組み合わせるための第３の圧縮回路（例えば、２５０）と、さらなる出力として、第１の他のＤＳＰ回路ブロックへ、第３の圧縮回路の出力を選択的にルーティングするためのさらなるルーティング回路（例えば、２４８）とをさらに含んでもよい。そのようなＤＳＰ回路ブロックでは、第３の圧縮回路（例えば、２５０）は、第３の圧縮回路のオーバーフロー出力信号を、第１の他のＤＳＰ回路ブロックに印加するためのオーバーフロー出力回路（例えば、圧縮器２５０の最大有効の末端から、隣接するＤＳＰブロックへの出力リード線）と、第２の他のＤＳＰ回路ブロックで第３の圧縮回路のオーバーフロー出力信号を選択的に受信するためのオーバーフロー入力回路（例えば、２５２）とを含んでもよい。
【００５３】
上記のさらなるルーティング回路（例えば、２４８）を含むＤＳＰ回路では、そのさらなるルーティング回路は、さらなる出力を生成するように、第３の圧縮回路（例えば、２５０）の出力に作用するための桁上げ伝播加算器（「ＣＰＡ」）回路（例えば、２６０）を含んでもよい。ＣＰＡ回路は、ＣＰＡ回路の桁上げ出力信号を、第１の他のＤＳＰ回路ブロックに印加するための桁上げ出力回路（例えば、ＣＰＡ２６０の最大有効の末端から、隣接するＤＳＰブロックへの出力リード線）と、第２の他のＤＳＰ回路ブロックでＣＰＡ回路の桁上げ出力信号を選択的に受信するための桁上げ入力回路（例えば、２６２）を含んでもよい。
【００５４】
上に記載したＤＳＰ回路ブロックは、第１の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、別のＤＳＰ回路ブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、さらに別のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、冗長回路（例えば、１１０および／または１２０）をさらに含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第１の他のＤＳＰブロックは、（１）列Ｒ８内または（２）列Ｒ９内のどちらかにあり得る。そのような配置では、さらに別のＤＳＰ回路ブロック（例えば、列Ｒ９の中のブロック）は、別のＤＳＰ回路ブロック（例えば、列Ｒ８の中のブロック）に直接隣接する。
【００５５】
上に記載したＤＳＰ回路ブロックはまた、第２の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、なおも別のＤＳＰ回路ブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、なおもさらに他のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路（例えば、１１０および／または１２０）を含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第２の他のＤＳＰブロックは、（１）列Ｒ６内または（２）列Ｒ５内のどちらかにあり得る。そのような配置では、なおもさらに他のＤＳＰ回路ブロック（例えば、列Ｒ５の中のブロック）は、なおも別のＤＳＰ回路ブロック（例えば、列６の中のブロック）に直接隣接する。
【００５６】
本発明の他の可能な側面に従い、ＤＳＰ回路（例えば、１０）は、複数のＤＳＰ回路ブロック（例えば、１００）を備えてもよく、それらの各々は、その回路ブロック（例えば、Ａ、Ｂ、Ｃなど）に印加される信号に関するＤＳＰ演算（例えば、２００、２０２、２１０、２３０、２４０など）を行うことができ、ＤＳＰ回路ブロックの各々は、ＤＳＰ回路ブロックのそれぞれの対向側にある、第１および第２の他のＤＳＰ回路ブロックへ、ＤＳＰ演算のうちの少なくともいくつかの出力を選択的にルーティングするための回路（例えば、２２０、２３２、２４２など）を含んでもよい。そのような場合、選択的にルーティングするための回路は、ＤＳＰ回路ブロック用の第１の他のＤＳＰ回路ブロックが、（１）そのＤＳＰ回路ブロックに直接隣接する、別のＤＳＰ回路ブロック、および（２）そのＤＳＰ回路ブロックに直接隣接しない、さらに別のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、冗長回路（例えば、１１０および／または１２０）を含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第１の他のＤＳＰブロックは、（１）列Ｒ８内または（２）列Ｒ９内のどちらかにあり得る。そのような配置では、さらに別のＤＳＰ回路ブロック（例えば、列Ｒ９の中のブロック）は、別のＤＳＰ回路ブロック（例えば、列Ｒ８の中のブロック）に直接隣接する。
【００５７】
上に記載したＤＳＰ回路で選択的にルーティングするための回路は、ＤＳＰ回路ブロック用の第２の他のＤＳＰ回路ブロックが、（１）そのＤＳＰ回路ブロックに直接隣接する、なおも別のＤＳＰ回路ブロック、および（２）そのＤＳＰ回路ブロックに直接隣接しない、なおもさらに他のＤＳＰ回路ブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路（例えば、１１０および／または１２０）をさらに含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７にある場合、第２の他のＤＳＰブロックは、（１）列Ｒ６内または（２）列Ｒ５内のどちらかにあり得る。そのような配置では、なおもさらに他のＤＳＰ回路ブロック（例えば、列Ｒ５の中のブロック）は、なおも別のＤＳＰ回路ブロック（例えば、列６の中のブロック）に直接隣接する。
【００５８】
上に記載したＤＳＰ回路では、ＤＳＰ回路ブロックの各々の選択的ルーティング用の回路は、ＤＳＰ回路ブロックのうちの第１および第２の他の回路が、行うことができる全てのＤＳＰ演算ではないが、いくつかより下流にある、ＤＳＰ回路ブロックのうちの第１および第２の他の回路の入力へ、出力を選択的にルーティングしてもよい。例えば、選択的ルーティング回路２２０は、１つのＤＳＰブロックの圧縮器２１０の出力を、別のＤＳＰブロックの圧縮器２４０の入力へルーティングすることができ、圧縮器２４０は、他方のＤＳＰブロックのいくつかの（全てではないが）他のＤＳＰ演算より下流にある（例えば、演算部２００、２０２、２１０、および２３０より下流にあるが、演算部２５０および２６０より上流にある）。
【００５９】
本発明のなおも他の可能な側面に従い、ＤＳＰ回路（例えば、１０）は、複数のＤＳＰ回路ブロック（例えば、１００）を含んでもよく、それらの各々は、次々に連続して複数のＤＳＰ演算（例えば、２００、２０２、２１０、２３０、２４０など）を行うことができる。ＤＳＰ回路ブロックの各々は、そのＤＳＰ回路ブロックのＤＳＰ演算（例えば、２１０）の少なくとも１つの出力を、そのＤＳＰ回路ブロックのそれぞれの対向側にある、ＤＳＰ回路ブロックのうちの第１および第２の他のブロックへ選択的にルーティングするための、回路（例えば、２２０）をさらに含んでもよい。各ＤＳＰ回路ブロックで選択的にルーティングするための回路は、それら他のＤＳＰ回路ブロックにおいてＤＳＰ演算が連続する中の中間にある、第１および第２の他のＤＳＰ回路ブロックのＤＳＰ演算への入力へ、出力のうちの少なくともいくつかを選択的にルーティングしてもよい。例えば、ルーティング回路２２０は、ＤＳＰブロックの出力を、別のＤＳＰブロックの圧縮器２４０の入力へルーティングすることができ、圧縮器２４０は、ＤＳＰ演算が連続する中の中間にある（すなわち、２００および２０２のようなＤＳＰ演算が先行し、２５０および２６０のようなＤＳＰ演算が続く）。
【００６０】
上に記載したＤＳＰ回路では、入力の少なくともいくつかは、選択的にルーティングするための回路が、それら少なくともいくつかの入力へ選択的にルーティングされる出力を受信した、その送信元のＤＳＰ回路ブロックが連続する中のポイントとは異なる、ＤＳＰブロックが連続する中のポイントでの、ＤＳＰ演算への入力であってもよい。例えば、ルーティング要素２２０が、別のＤＳＰブロックで圧縮器２４０に印加するように、そこから出力を獲得する圧縮器２１０は、圧縮器２４０が第２の言及したＤＳＰブロックでＤＳＰ演算が連続する中にあるポイントとは異なる、第１の言及したＤＳＰブロックのＤＳＰ演算が連続する中のポイントにある。
【００６１】
上に記載したＤＳＰ回路では、各ＤＳＰ回路ブロックは、そのＤＳＰ回路ブロックのＤＳＰ演算の第２の出力を、第１の他のＤＳＰ回路ブロックの同じＤＳＰ演算の入力へ選択的にルーティングするための、第２の回路（例えば、圧縮器２４０の最大有効の末端から、隣接するＤＳＰブロックへのリード線）をさらに含んでもよい。例えば、直前に言及したリード線および要素２４２によって、オーバーフロー信号は、１つのＤＳＰブロックの圧縮器２４０から、別のＤＳＰブロックの圧縮器２４０へ進むことができる。
【００６２】
上に記載したＤＳＰ回路では、各ＤＳＰ回路ブロックは、そのＤＳＰ回路ブロックの最終的なＤＳＰ演算（例えば、２６０）の出力を、その他のＤＳＰ回路ブロックが連続する中の中間ポイントにある、第１の他のＤＳＰ回路のＤＳＰ演算（例えば、２５０）への入力へ選択的にルーティングするための、第３の回路（例えば、２４８）をさらに含んでもよい。
【００６３】
上に記載したＤＳＰ回路は、ＤＳＰ回路ブロックの各々の第１の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、ＤＳＰ回路ブロックの別のブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、ＤＳＰ回路ブロックのさらに別のブロックのうちの選択可能な１つであることを可能にするための、冗長回路（例えば、１１０および／または１２０）をさらに含んでもよい。えば、ＤＳＰブロック１００が図１の列Ｒ７の中にある場合、別のＤＳＰブロックは列Ｒ８の中にあってもよく、さらに別のＤＳＰブロックは列Ｒ９の中にあってもよい。加えて、さらに別のＤＳＰブロック（例えば、列Ｒ９の中のブロック）は、別のＤＳＰブロック（例えば、列Ｒ８の中のブロック）に直接隣接してもよい。
【００６４】
また、上に記載したＤＳＰ回路は、ＤＳＰ回路ブロックの各々の第２の他のＤＳＰ回路ブロックが、（１）ＤＳＰ回路ブロックに直接隣接する、ＤＳＰ回路ブロックのなおも別のブロック、および（２）ＤＳＰ回路ブロックに直接隣接しない、ＤＳＰ回路ブロックのなおもさらに別のブロックのうちの選択可能な１つであることを可能にするための、さらなる冗長回路（例えば、１１０および／または１２０）をも含んでもよい。例えば、ＤＳＰ回路ブロックが図１の列Ｒ７の中にある場合、なおも別のＤＳＰブロックは列６の中にあってもよく、なおもさらに別のＤＳＰブロックは列Ｒ５の中にあってもよい。ＤＳＰ回路ブロックのうちのなおもさらなる別のブロック（例えば、列Ｒ５の中のブロック）は、ＤＳＰ回路ブロックのなおも別のブロック（例えば、列６の中のブロック）に直接隣接してもよい。
【００６５】
本発明の回路によって、ＤＳＰ回路ブロック間における双方向のシフトによって、総和を行うことが可能になる。例えば、値は、第１のＤＳＰブロックから第２のＤＳＰブロックに、第１のブロックの右へシフトし、第２のブロックで別の信号と組み合わせる（例えば、圧縮する）ことができる。その後、この組み合わせの結果は、左へ戻るように（すなわち、第１のブロックへ）シフトし、第１のブロックで他の信号と組み合わせることができる。このようなシフトの戻しは、（例えば）（１）圧縮器から圧縮器へ（圧縮器２４０または圧縮器２５０）の桁上げベクトル、（２）ＣＰＡ２６０の桁上げビット、または（３）３−２圧縮器２５０へのＣＰＡ２６０の出力によって発生することができる。
【００６６】
本発明のＤＳＰ回路で採用するマルチプレクサのいずれも、ゼロ（０）のデータを選択的に（すなわち、制御可能なように）出力することができる、タイプのうちの１つであり得る。これはまた、本明細書で採用する制御可能なシフタのいずれも含む。
【００６７】
本開示のある可能な側面に従う、ＤＳＰ回路ブロック５００の別の例示的実施形態が、図１１に示されている。ＤＳＰブロック５００への入力は動的であり得る（例えば、ＤＳＰブロックを含む集積回路（例えば、１０）の通常（ユーザモード）演算中、時変であるデジタル（２進）数値を表す電気信号）。代替として、ＤＳＰブロック５００への入力のうちのいくつかは静的であり得る（例えば、集積回路の通常の演算中、時間を経ても一定または比較的一定である、デジタル（２進）数値を表す電気信号）。例えば、入力ａｘ、ａｙ、ｂｘ、およびｂｙは動的な入力であってもよく、入力ｃおよびｄは静的な入力であってもよい。静的な入力は、ＩＣの演算の初期設定（構成または初期化）段階（ＩＣの後続の通常またはユーザモード演算の前）中に、プログラムされるＩＣ上のメモリ（例えば、いわゆる構成ランダムアクセスメモリまたはＣＲＡＭ）から来ていてもよい（静的な信号源の実例は、図２の要素１３０である。そのような源の別の実例は、図１２の要素６０２である）。
【００６８】
図１１に示す例示的実施形態では、入力ａｘ、ｂｘ、ａｙ、ｂｙ、ｃ、およびｄの各々は、並行して供給（印加）される、１セット（複数）の１８個の信号を備える。現在１８が非常に望ましいと考えられているが、所望の場合、この数字はより大きくまたはより小さくなり得ることが理解されるであろう。この基本入力バス幅は、本明細書の後続の議論において、時にＮと称される。したがって、Ｎは、図１１に示す実施形態、および類似のサイズの実施形態で１８である。しかし、本開示に従う他の実施形態では、Ｎは１８より大きいか、または小さくなり得ることが理解されるであろう。
【００６９】
図１１に示す例示的実施形態では、動的な入力には、入力レジスタ５０１（例えば、クロック信号によってクロックされるフリップフロップ回路）によって登録される選択肢がある。また、一般的な入力ａｙが、一般的なレジスタ５０１ａｙへ、およびまたマルチプレクサ（「ｍｕｘ」）回路６０１への入力の選択可能な１セットにどのように印加できるのかを示している、図１２も参照のこと。レジスタ５０１ａｙは、印加されるクロック信号に応答および同期してレジスタに印加されるａｙ信号を登録する。そのように登録された後、登録されたａｙ信号は、ｍｕｘ６０１への入力の第２の選択可能なセットに印加される。ｍｕｘ６０１は、回路要素６０２から印加される選択制御入力信号の論理状態（例えば、２値の１または２値の０）によって、その出力信号になるように、その選択可能なセットの入力のどちらかを選択することができる。例えば、要素６０２は、ＣＲＡＭ要素（例えば、図２の要素１３０のような要素に類似）であってもよい。したがって、図１２は、ｍｕｘ６０１の出力がどのようにして登録済みまたは未登録の信号ａｙのどちらかになり得るのかを示している。図１２は、レジスタ５０１の全てが、レジスタを使用するかまたは迂回するかのどちらかを可能にする回路によって増強されてもよいことを示している。
【００７０】
ある入力は、所望の場合には、入力カスケードチェーンを介してルーティングすることができる。例えば、１セットの入力は、類似のＤＳＰブロック５００から図示するＤＳＰブロックの右へと中に転送することができる。そのようなカスケード入力は、入力の１つの選択可能なセットから、ｍｕｘ５１５ｂｘへと進む（図１３も参照）。図示する入力ｂｘは、ｍｕｘ５１５ｂｘへの入力の他方の選択可能なセットに印加される。ｍｕｘ５１５ｂｘは、その出力になるよう、その選択可能な入力セットのうちのどちらかを選択する（選択制御入力信号の論理状態による）ように、選択制御入力信号（例えば、ＣＲＡＭ６１０からの）によって制御される。このカスケードチェーンは、（選択的に迂回可能な）レジスタ５０１ｂｘ、ｍｕｘ５１５ａｘ、（選択的に迂回可能な）レジスタ５０１ａｘを通って、カスケード出力リード線へと続き、次の隣接するＤＳＰブロック５００から図示するＤＳＰブロックの左へと進む。図示するカスケード出力リード線は、左へのＤＳＰブロックのカスケード入力リード線になる。したがって、各モジュールまたはブロック５００からのｘ入力（すなわち、ａｘおよびｂｘ）の全てによって、カスケードチェーンが形成される。
【００７１】
すぐ前に記載したカスケードチェーンを使用してもよい回路の応用例は、有限インパルス応答（「ＦＩＲ」）デジタルフィルタの実装である。そのようなフィルタについて、この明細書の後ろでより詳細に議論する。しかしながら、ここでは、図２６は、入力信号の連続サンプルｘ［ｎ］が、連続サンプル遅延要素８２０−１、８２０−２などの各々において、１つのサンプル時間周期で連続的に遅延するような、フィルタの１つの形態を示していることに留意することで十分であろう。各サンプル時間周期では、各サンプルまたは遅延サンプルが、乗算器８１０−１、８１０−２などのうちのそれぞれ１つにおいて、それぞれのフィルタ係数ｃ１、ｃ２などが乗じられる。すぐ前に記載したカスケードチェーンは、図２６の底部の線に沿って示す入力サンプル遅延チェーンを提供するように使用することができる。１つ以上のＤＳＰブロック５００の乗算器５０５および５０６は、図２６の中央に渡って示す通り、種々に遅延する入力サンプルの乗算（係数ｃ１、ｃ２などによる）を提供することができる。これらのＤＳＰブロックの乗算器５０５および５０６から下流の回路は、図２６の最上部の線に沿って示す、乗算の積の加算のいくつかまたは全てを提供することができる。また一方、ＦＩＲフィルタの追加の議論は、本明細書の後方に見られるであろう。
【００７２】
回路５０２は事前加算回路である。動的な入力のうちの２つ（例えば、ａｘおよびａｙ、またはｂｘおよびｂｙ）を加算することができる。次いで、事前加算器の結果は、下流の乗算器（後述）への可能な入力のいくつかのセットのうちの２つになるように、制御可能なルーティング回路５０３に進む。事前加算器５０２によって、上記の加算をＤＳＰブロック５００の外側で行う、より費用効率が高くおよびより迅速な代替案を提供してもよい。ルーティング回路５０３への入力の８つの可能なセットは、ａｘ、ｂｘ、ａｙ、ｂｙ、ｃ、ｄ、（ａｘ＋ａｙ）、および（ｂｘ＋ｂｙ）である。
【００７３】
ルーティング回路５０３（図１４も参照）は、そのセットの入力のうちのいずれかから、その出力信号グループのうちの種々のグループへ、信号をルーティングするように制御可能である（例えば、ＣＲＡＭビット６２０からの信号によって）。具体的には、回路５０３によって行われる入力から出力へのルーティングは、回路５０３に印加される（例えば、ＣＲＡＭビット６２０から）制御信号の論理状態によって選択（選ばれ、制御）される。そのような可能な信号ルーティングのたった１つの例として、回路５０３は、最終的に乗算回路５０５に進むその出力のグループのうちの１つへ、そのｃ入力を、および最終的に乗算回路５０５に進むその出力のグループのうちの他方へ、そのｂｙ入力（レジスタ５０１ｂｙによって登録されていてもよい）をルーティングしてもよい。同時に、上のルーティングが提供されているように、回路５０３は、乗算回路５０６に進む出力のそのグループのうちの１つへ、そのｄ入力をルーティングしてもよく、その一方で、乗算器５０６に進む出力のそのグループのうちの他方へ、そのａｙ出力（レジスタ５０１ａｙによって登録されていてもよい）をルーティングしてもよい。再び、前述は回路５０３が提供してもよい、多くの可能な入力から出力への信号ルーティングの１つの例であるにすぎない。他の可能なルーティングは、本開示の後続の段落で構成され、使用される通り、乗算器５０５および５０６について記載する、種々の方法から明らかであろう。具体的には、ルーティング回路５０３は、以下に記載する、任意の乗算機能を遂行するために、その入力信号を受信する必要がある任意の乗数入力へ、任意の入力信号をルーティングすることができる。例えば、乗算器５０５が、２７「ｘ」ビット掛ける２７「ｙ」ビットである、以下に記載する２７ｘ２７乗算のその一部を行うことを可能にするように、回路５０３は、３６ａｘおよびｂｘ入力から２７ビットを、および３６ａｙおよびｂｙ入力から２７ビットを、乗算器５０５へルーティングすることができる。同時に、乗算器５０６が、この２７ｘ２７乗算のその一部を行うことを可能にするように、回路５０３は、上記の２７「ｘ」ビットの１８より上位のビット、および上記の「ｙ」ビットの１８より上位のビットを、乗算器５０６へルーティングすることができる。
【００７４】
図１１で単一のマルチプレクサ（「ｍｕｘ」）のように図示されているが、回路５０３は、実際には、いくつかのマルチプレクサ（「ｍｕｘ」）のアレイまたはネットワークであってもよい。例えば、図１５は、回路５０３が、独立して、または少なくとも一部独立して選択することができることが望ましい出力の各グループに対して、別個のｍｕｘ６３０ｒ、６３０ｓ、６３０ｔなどを含んでもよいことを示している。そのような各ｍｕｘは、その選択可能な入力として、ｍｕｘがそこから出力する信号を選択する必要がある場合がある、全ての種々の入力信号グループ（またはサブグループ）を有する。各ｍｕｘ６３０は、その出力となるように、その入力の所望のグループを選択するように制御される（例えば、ＣＲＡＭビット６２０（ｍｕｘ６３０ｒを制御するサブセット６２０ｒなど）の関連サブセットによって）。入力のあるグループが、回路５０３からの特定のグループの出力として全く必要とされない場合には、その入力グループは、そのグループの出力を選択し提供する、ｍｕｘ６３０に対して利用可能である入力グループから省略することができる。同様に、図１１に示すいくつかの出力グループは、実際には、２つの入力グループからの信号の合成物であってもよい（例えば、直前の段落で言及した、２７ビットの出力グループを参照）。そのような合成出力グループは、２つのｍｕｘ６３０（例えば、そのような合成出力グループの１８ビット部分を提供する１つのｍｕｘ６３０、およびそのような合成出力グループの９ビット部を提供する別のｍｕｘ６３０）を使用することによって最も便利に提供されてもよい。基本のＮビットグループ（例えば、ちょうど言及したばかりの９ビットグループ）のサブセットのみを扱う必要があるｍｕｘ６３０は、Ｎより小さい入力ビットおよび出力ビットグループサイズを有する（例えば、９ビットまたは０．５Ｎ入力および出力グループ）。さらに、これらのより小さな入力ビットグループの各々は、より大きな（Ｎビット）入力グループの所定の部分から来ていてもよい。例えば、そのような所定の部分は、１８ビットの入力グループａｙの９より下位のビット、または１８ビットの入力グループａｙの９より上位のビットであってもよい。したがって、図１５は、１８個の信号のグループを各々受信し出力する、代表的なｍｕｘ６３０ｒおよび６３０ｓを示す一方で、９個の信号のより小さなグループを受信し出力する、代表的なｍｕｘ６３０ｔも示している。
【００７５】
前述から、回路５０３は、好ましくは、その種々の選択可能な入力信号グループ（またはそのようなグループのサブセット）のうちのいずれかを、本開示の後ろに記載する乗算機能のうちのいずれかを補助するように、それらの入力を必要としてもよい、その出力信号グループの種々のグループに接続することができる、非常に柔軟なルーティング回路であると考えられるであろう。
【００７６】
図１１に戻ると、乗算回路５０６に進む回路５０３からの出力信号グループは、その乗算器へ直接進むように示されている。しかしながら、乗算回路５０５に進む回路５０３からの出力信号グループは、シストリック遅延レジスタ５０４を任意に通過するように示されている。図１６により詳細を示す通り、代表的なシストリック遅延レジスタ５０４ｐへの入力はまた、マルチプレクサ（「ｍｕｘ」）回路６４０ｐへの入力の１つの選択可能なセットに印加される。シストリックレジスタ５０４ｐの出力は、ｍｕｘ６４０ｐへの入力の他方の選択可能なセットに印加される。選択制御入力信号（例えば、ＣＲＡＭ６４２ｐからの）は、ｍｕｘ６４０ｐが、その選択可能な入力のどのセットを出力するかを制御する。シストリックレジスタ５０４ｐは、シストリックレジスタを通過するいずれの信号も、１つのクロックサイクルによって遅延するように、印加されたクロック信号によってクロックされる。代表的なｍｕｘ６４０ｐによって、代表的なシストリックレジスタ５０４ｐに印加される信号が、それらのレジスタを通過すること（それによって、１つのクロックサイクルによってそれらの信号を遅延させる）、またはそれらのレジスタを迂回すること（それによって、それらの信号は遅延されない）のどちらかが可能になる。シストリックレジスタ５０４が使用されてもよい場合の目的については、本明細書の後ろに記載する。
【００７７】
乗算器５０５および５０６のデフォルト条件は、２つの１８ｘ１８乗数としてである。概して（すなわち、演算の全てのモードでは）、乗算器５０５および５０６の各々は、冗長形式で２つの積のベクトル（例えば、他の実施形態に対して前により詳細に記載した通り、１つの和ベクトルおよび１つの桁上げベクトル）を生成する。したがって、１８ｘ１８モードでは、各乗算器５０５および５０６は、３６ビットの和ベクトルおよび３６ビットの桁上げベクトルを生成する。乗算器５０５および５０６から下流の回路は、本明細書の後ろに完全に記載する通り、１つ以上の最終積（または積の最終和）を生成するよう、種々の方法でこれらのベクトルをさらに処理する（例えば、加法的に組み合わせる）ように使用することができる。しかしながら、予め最初に乗算器５０５について述べる。
【００７８】
乗算器５０５は、乗算器５０５および５０６が２７ｘ２７乗算を共に行うことができるように修正される（例えば、乗算器５０６と比較して）。図１７および１８は、これを行うための例示的実施形態を示している（図１７では、ＤＳＰブロック５００が２７ｘ２７乗算を行っている時に、シストリックレジスタ５０４は使用されない（すなわち、迂回される）ためその図示を省略していることに留意すること）。
【００７９】
図１７に示す通り、乗算器５０５は、９ｘ２７乗算回路部６５０ａおよび９ｘ１８乗算回路部６５０ｂを含む。乗算器５０６には、修正されていない１８ｘ１８の構造がある。２７ビットの被乗数（ｘ３、ｘ２、ｘ１）に２７ビットの乗数（ｙ３、ｙ２、ｙ１）を乗じることが望ましいと仮定する。（図１８の第１の２つの線も参照。）これらの２７ビットのデータワードの各々の各セグメント（すなわち、ｘ３、ｘ２、ｘ１、ｙ３、ｙ２、およびｙ１の各々）は９ビットを有する。これらのワードの各々における演算上最大有効の９ビットのセグメントは、ｘ３またはｙ３セグメントである。これらのワードの各々における演算上最小有効の９ビットのセグメントは、ｘ１またはｙ１セグメントである。
【００８０】
ルーティング回路５０３は、セグメントｘ３およびｘ２を、乗算器５０６の１つの軸（例えば、被乗数の軸または入力）にルーティングする。ルーティング回路５０３は、セグメントｙ３およびｙ２を、乗算器５０６の他方の軸（例えば、乗数の軸または入力）にルーティングする。ルーティング回路５０３は、セグメントｘ３、ｘ２、およびｘ１を、乗算器６５０ａの被乗数の軸または入力にルーティングする。ルーティング回路５０３は、セグメントｙ１を、乗算器６５０ａの乗数の軸または入力にルーティングする。ルーティング回路５０３は、セグメントｙ３およびｙ２を、乗算器６５０ｂの被乗数の軸または入力にルーティングする。ルーティング回路５０３は、セグメントｘ１を、乗算器６５０ｂの乗数の軸または入力にルーティングする。各乗算回路５０６、６５０ａ、および６５０ｂは、その被乗数の軸に印加されるデータに、その乗数の軸に印加されるデータを乗じる。（当然ながら、乗算の被乗数および乗数は相互転換可能であるため、どのデータが被乗数として供給されるかまたは呼ばれるか、あるいはそのデータが乗数として供給されるかまたは呼ばれるかは、問題ではないことは理解されるであろう。そのため、用語の被乗数および乗数は、本明細書では恣意的におよび相互転換可能に使用される。被乗数または乗数としてのあるデータへの参照は、いずれの点でも制限することを意図しておらず、他の実施形態では、本開示の範囲または精神に逸脱しない限りにおいて、対照的な用語が採用され得る。）各乗算器５０６、６５０ａ、および６５０ｂは、その乗算器によって形成される乗算の積を一括して示す、冗長形式の和出力ベクトル、および冗長形式の桁上げ出力ベクトルを生成する（また一方、この冗長形式（すなわち、和ベクトルおよび桁上げベクトル）の積の形成は、本明細書の前に記載した通りである）。
【００８１】
この時点で、図１７の回路によって行われている、２７ｘ２７乗算を示す図１８を考慮するために、図１７の議論を中断するのが有益である場合がある。図１８の第１の２つの線は、行われる乗算（すなわち、線１の２７ビットの被乗数ｘ３、ｘ２、ｘ１、および線２の２７ビットの乗数ｙ３、ｙ２、ｙ１）を示している。図１８の線３は、乗算器６５０ａによって行われる、９ｘ２７乗算の結果を示している。図１８の線４は、乗算器６５０ｂによって行われる、９ｘ１８乗算の結果を示している。６５０ｂの乗算に由来する部分積は、この部分積のビットが、乗算器６５０ａの部分積において、同じ演算の有効を有するビットと（垂直に）一列に揃うように、９ビット分左へシフトされなくてはならないことに留意すること。このシフトは、乗算器６５０ａおよび６５０ｂの出力リード線が、互いに対する４：２の圧縮回路６５２に進入する方法によって、遂行することができる。４：２の圧縮器６５２（本明細書の前に記載した、そのような圧縮回路に類似し得る）は、乗算器６５０ａおよび６５０ｂによって出力される和および桁上げベクトルを受信し、図１８の線３および４の和である、さらなる部分積を示す、さらなる冗長形式の和および桁上げベクトルを生成する。これらのさらなる和および桁上げベクトルが、乗算器５０５の最終出力である。
【００８２】
２７ｘ２７乗算を考慮するのに必要な、最後の主要な部分積は、図１８の線５に示す１８ｘ１８乗算に起因する部分積である。この部分積は、図１７の乗算器５０６によって形成される。図１８が示す通り、この部分積は、図１８の線３に示す部分積に対して、１８ビット分左へシフト（演算の有効を増加）する必要がある。このシフトは、制御可能なシフタ回路５０７ｓ（乗算器５０６によって出力される冗長形式の和ベクトル用）および５０７ｃ（乗算器５０６によって出力される冗長形式の桁上げベクトル用）によって形成される。ＣＲＡＭビット６５４は、要素５０７がそれらを通過するデータの演算の有効を変更するかどうかを制御する。本開示を通して使用される他の類似の回路要素に関して、５０７ｓまたは５０７ｃのようなシフタ回路は、そのデータビットがシフタ回路に供給された入力リード線の演算の有効とは異なる（より大きいか、またはより小さい）演算の有効（いくつかの並行するデータリード線を有するバスの中の関連位置）を有するシフタの出力リード線に、そのビットを制御可能にルーティングすることによって、シフタ回路に印加されるデータビットの演算の有効をシフトさせることができる。演算の有効の変更が必要ない場合、シフタ回路は、そのデータビットを供給するシフタの入力リード線と同じ演算の有効を有するシフタの出力リード線に、入力データをルーティングするように制御される。２７ｘ２７乗算を行う場合、シフタ回路５０７ｓおよび５０７ｃは、乗算器５０６の出力を１８ビット分左へシフトするように制御される（それによって、これらの出力の各ビットの演算の有効が、１８ビット位置だけ増加する）。
【００８３】
乗算器５０５および５０６の出力は、４：２圧縮回路５０８に印加される。この回路は再び、本明細書の前に記載した他の圧縮回路に類似し得る。したがって、回路５０８は、それに印加される２つの和ベクトルおよび２つの桁上げベクトルを、１つのさらなる和ベクトルおよび１つのさらなる桁上げベクトルにまで圧縮する。これらのさらなるベクトルは、行われる２７ｘ２７乗算の最終積を示している。具体的には、これらのさらなるベクトル（圧縮器５０８によって出力される）は、図１８の線６に示す結果を示している。その実際の最終結果は、図１１の圧縮器５０８から下流にあり、本明細書の後ろにさらに記載する、ＤＳＰブロックのさらなる要素によって、ＤＳＰブロック５００から生成および出力することができる。これは、１つのＤＳＰブロック５００が、どのように１つの完全な２７ｘ２７乗算を行うことができるのかを示している。
【００８４】
図１８に示す演算が、「符号付き」オペランド（すなわち、正の数または負の数のどちらかであり得る、ｘおよび／またはｙのような値）で正しく行われるためには、（例えば、線３および４に）示す実際のデータから、（例えば、線６の）結果の最大有効の位置まで、「符号拡張」が存在することが必要である場合があることに留意すること。これは、図１８の線３および４に示すデータの左に、全ての０（例えば、任意の正の数に対して）または全ての１（例えば、任意の負の数に対して）の１８より大きな最高次ビットを含むことを意味してもよい。一般的な事柄として、符号拡張は、当業者にはよく知られている従来の技術である。したがって、任意で必要とされる符号拡張は、概して、本明細書では存在するものとして想定し、不必要に図面を複雑化し、および／または本開示を曖昧にすることを避けるために、実際に図１８（または、一般的に類似の性質を持つ、本明細書のいずれの他の図）には示していない。本明細書に実際には示されていないが、符号拡張が採用されてもよい他の図の例は、図５、７、９、２２、および３１である。また、符号拡張は図２０のある領域に対して採用してもよいが、図２０のその側面については、本明細書の後ろでより具体的に議論する。
【００８５】
完全を期すために、図１９は、その乗算器５０５の回路が、（例えば、ｘ２およびｘ１掛けるｙ２およびｙ１の）１８ｘ１８乗算のみを行う必要があるときに、図１７の回路の乗算器５０５部分を、どのように使用することができるかを示している。この場合、ルーティング回路５０３のｍｕｘ６３０ｕは、乗算器６５０ｂの１８ビットの軸への適用に対して、９ビットのセグメントｘ２およびｘ１を選択する。また、ｍｕｘ６３０ｗは、乗算器６５０ａの２７ビットの軸への１８より低位の入力への適用に対して、ｘ２およびｘ１を選択する。ｍｕｘ６３０ｔは、乗算器６５０ｂの９ビットの軸への適用に対して、９ビットのセグメントｙ２を選択する。ｍｕｘ６３０ｘは、乗算器６５０ａの９ビットの軸への適用に対して、９ビットのセグメントｙ１を選択する。空値データは、乗算器６５０ａの２７ビットの軸への、９より上位の入力に印加される。（関連オペランド（すなわち、オペランドｘ）が「符号なし」の数字の場合、直前に言及した「空値データ」は２値の０であってもよい。「符号付き」オペランドについて、２７ビット入力の最大有効の９ビットは、より低位（より下位）の１８ビットからの「符号拡張」であるはずである。したがって（符号付きオペランドについては）、上記の「空値データ」は、全ての１（例えば、負のオペランドに対して）または全ての０（例えば、正のオペランドに対して）のどちらかであり得る。本明細書における便宜上、用語「空値」、「空値データ」などは、この括弧内、すなわち、（ａ）符号付きオペランドに対する「符号拡張」データ、または（ｂ）符号なしのオペランドに対する最高次の０のどちらかで称される、種々の種類のデータの全てに使用される）。
【００８６】
図２０は、先行する段落に記載したデータルーティングに起因する演算を示している。具体的には、図２０の線３に示す乗算の結果は、乗算回路６５０ａによって生成される。（再び、図２０の線３の「空値」は、その線のより低位の２７ビットからの「符号拡張」データを指す場合があることに留意すること。）図２０の線４に示す乗算の結果は、乗算回路６５０ｂによって生成される。圧縮器６５２は、図２０の線５に示す結果（たとえ冗長形式であっても）を生成する。このように、乗算回路５０５は、２７ｘ２７乗算の一部を行うことの代替として、１８ｘ１８乗算を行うことができる。
【００８７】
図２１は、ある程度より詳細に図１１の低部を示している。図１７との関係で既に言及している通り、回路５０８は、１つの冗長形式の出力和ベクトルおよび１つの冗長形式の出力桁上げベクトルを生成するように、（本開示中の他の類似する４：２の圧縮回路のように、）２つの印加された冗長形式の和ベクトル、および２つの印加された冗長形式の桁上げベクトルを組み合わせる、４：２の圧縮器である。乗算器５０５および５０６によって行われる乗算の結果は、互いに独立している場合には、ブロック５０８および５１０を迂回することができる。例えば、乗算器５０５からのベクトルの２７より下位のビットは、図２１に示すＡＣおよびＡＳを介して、ブロック５０８および５１０を迂回することができる。（図２１では、上部円ＡＣは下部円ＡＣに接続され、上部円ＡＳは下部円ＡＳに接続され、上部円ＢＣは下部円ＢＣに接続され、上部円ＢＳは下部円ＢＳに接続される。これらの接続は、このように、図面の中の込み合いを減少するように、また図表の中の起こり得る紛らわしい線の重複部分の量を減少するように示されている。）同様に、乗算器５０６からのベクトルの２７より下位のビットは、図２１に示すＢＣおよびＢＳリンクを介して、ブロック５０８および５１０を迂回することができる。ＡＣリンクの出力は、マルチプレクサ回路（「ｍｕｘ」）６６０ｃへの入力の１つの選択可能なセットに印加される。ブロック５１０によって出力される、桁上げベクトルの２７より下位のビットは、ｍｕｘ６６０ｃへの入力の他方の選択可能なセットに印加される。ＡＳリンクの出力は、ｍｕｘ６６０ｓへの入力の１つの選択可能なセットに印加される。ブロック５１０によって出力される、和ベクトルの２７より下位のビットは、ｍｕｘ６６０ｓへの入力の他方の選択可能なセットに印加される。ＢＣリンクの出力は、ｍｕｘ６６２ｃへの入力の１つの選択可能なセットに印加される。ブロック５１０によって出力される、桁上げベクトルの２７より上位のビットは、ｍａｘ６６２ｃへの入力の他方の選択可能なセットに印加される。ＢＳリンクの出力は、ｍｕｘ６６２ｓへの入力の１つの選択可能なセットに印加される。ブロック５１０によって出力される、和ベクトルの２７より上位のビットは、ｍｕｘ６６２ｓへの入力の他方の選択可能なセットに印加される。ＣＲＡＭ６６４は、ｍｕｘ６６０および６６２の各々が、どの選択可能なセットの入力を、その出力として選択するか（すなわち、ｍｕｘ６６０および６６２は、ＡＣ、ＡＳ、ＢＣ、およびＢＳ入力のいずれかを出力する、またはブロック５１０からそれらの入力を出力する）を制御する）。加加算器５１１は、２つの別個の（通常）２７ビット加算器（図２１に示す点線で分離されている）、または１つの（通常）５４ビット加算器（点線で分離されていない）のどちらかとして作動するように制御することができる。加算器５１１の２つの部分へのそのような分離は、点線に渡る右から左への演算の桁上げが無効であることを単に意味している。そのような分離が所望されない場合、点線に渡る演算の桁上げは有効である。ＣＲＡＭ６６６は、点線に渡る桁上げが有効または無効であるのか、およびそのため加算器５１１が１つの大きな加算器、または２つの別個のより小さな加算器として作動するのかを制御する。したがって、明細書のこの部分は、加算器５０５および５０６が、別個に出力することができる、２つの乗算の結果を生成するために、どのように作動する場合があるのかについて記載する（しかしながら、本実施形態では、それらの別個の積の各々は、２７ビットに限定されている）。ＡＣ、ＡＳ、ＢＣ、およびＢＳリンクは、演算のこのモードでは、ブロック５０８および５１０を迂回するように使用される。
【００８８】
むしろ別個であるままよりも、乗算器５０５および５０６によって行われる乗算の結果が、加算される必要がある場合、それらの結果は、好ましくは、さらに下流の最終加算段階に進む前に、圧縮器５０８を通って進む。乗算器５０６からの結果は、（任意に）ブロック５０８の中へ進む前に、要素５０７を通って進み、１８ビット位置だけ左にシフトすることができる。この制御可能に選択可能な左へのシフトの選択肢によって、異なる乗算構成の柔軟性が提供される。上に記載した２７ｘ２７乗算は、圧縮器５０８が、乗算器５０５および５０６からの結果を加算するのに使用され、乗算器５０６からの結果が、要素５０７の演算によって１８ビット位置だけ左へ第１にシフトされる、１つの例である。圧縮器５０８（および要素５０７）の使用の別の例は、次の段落の最初に記載する通り、３６ｘ１８乗算である。
【００８９】
図２２の線１および２は、行われる３６ｘ１８乗算を示している。これは、２つの１８ビットデータワードｘ２およびｘ１に、１８ビットデータワードｙ１を掛ける乗算である。ｘ１掛けるｙ１の部分乗算（図２２の線３）は、上に記載した１８ｘ１８乗算モードで作動する、乗算器５０５によって行われる。ｘ２掛けるｙ１の他方の部分乗算（図２２の線４）は、直前に言及した乗算器５０５を含むのと同じＤＳＰブロック５００の乗算器５０６で行われる。図２２の線４に示す１８ビット位置だけの左へのシフトは、乗算器５０６の出力に作用する、制御可能なシフト要素５０７によって行われる。圧縮器５０８は、図２２の線５に示す結果を示す、冗長形式の和および桁上げベクトルを生成するように、乗算器５０５および要素５０７の出力を組み合わせる。当然ながら、この結果は、ｘ２およびｘ１掛けるｙ１の３６ｘ１８乗算の５４の積となる。
【００９０】
さらなる演算が圧縮器５０８の出力に作用する必要がない場合、さらなる４：２の圧縮回路５１０は迂回される／無効であることができ、最終桁上げ伝播加算器（「ＣＰＡ」）回路５１１のみが、最終結果を出力レジスタ回路５１２に送信するために有効である。
【００９１】
図１１〜２２の設計の利点は、より複雑な演算を行うために、複数のＤＳＰブロックまたはモジュール５００を効率的に組み合わせることである。４：２の圧縮回路５１０の目的は、別のＤＳＰモジュールからの１つまたは２つのベクトルに加えて、圧縮器５０８からの２つの出力を取り、およびそのデータの全てを２つの冗長形式ベクトルに圧縮することであり、それは最終ＣＰＡ５１２への入力になる。ＤＳＰモジュール５００が、モジュール間接続ｓｕｍ＿ｉｎ／ｓｕｍ＿ｏｕｔおよびｃａｒ＿ｉｎ／ｃａｒ＿ｏｕｔ（ｃａｒはｃａｒｒｙ（桁上げ）の省略形）を活用することによって、共に組み合わせることができる２つのシナリオについて、これから記載する。
【００９２】
第１のシナリオでは、マルチプレクサ回路５１６（ＣＲＡＭ回路６７０によって制御される）は、出力連鎖経路を通って結果「出力（ｏｕｔ）」を選択するように使用される。（この経路は、出力レジスタ５１２から、ｍｕｘ６８０（ＣＲＡＭ６８２によって制御される）、ｍｕｘ５１６、およびｍｕｘ５１７ｃ（ＣＲＡＭ６７２ｃによって制御される）を通って延在する。）このように、２つ以上のＤＳＰモジュール５００は、それらのモジュール５００のうちの隣接するモジュール間のｃａｒ＿ｉｎ／ｃａｒ＿ｏｕｔ接続を通って、共に連鎖させることができる。例えば、図２３に見られる通り、左のモジュール５００は、それ自体の内部で生成された結果に、その図の右にある他方の隣接するモジュール５００からの結果を加算するように使用することができる。
【００９３】
隣接するＤＳＰブロック５００間のｓｕｍ＿ｉｎ／ｓｕｍ＿ｏｕｔおよびｃａｒ＿ｉｎ／ｃａｒ＿ｏｕｔのような、直接的な専用ＤＳＰブロック間接続の使用に関わる第２のシナリオは、以下の通りである。このシナリオでは、１つのＤＳＰブロックの要素５０８からの和および桁上げベクトル（そのブロックの出力レジスタ５１２を含む、出力連鎖からの最終結果の代わりに）は、隣接するブロック５００間のｓｕｍ＿ｉｎ／ｓｕｍ＿ｏｕｔおよびｃａｒ＿ｉｎ／ｃａｒ＿ｏｕｔトラックを通って接続される。また一方、これによって、ＤＳＰブロック５００（例えば、図２３の左のブロックのような）が、それ自体の内部で生成した結果、および別のＤＳＰブロック（例えば、図２３の右のＤＳＰブロック）からの結果を組み合わせる（例えば、加算する）ことが可能になる。しかしながら、データは、次のＤＳＰブロック５００（例えば、図２３の左にあるブロック）のデータと組み合わせる前に、１つのＤＳＰブロック５００（例えば、図２３の右にあるブロック）のブロック５１０、５１１、および５１２の遅延を通って進む必要がないため、この第２のシナリオは、より優れたＦＭＡＸ性能（演算の最大速度）をもたらすことができる。しかしながら、このタイプの接続は、比較的少数（例えば、２つ）のＤＳＰブロック５００のみを共に連鎖させるように限定される場合がある。そのような少数のＤＳＰブロック５００（例えば、２つのそのようなブロック）のみを利用するいずれの用途でも、この方法でより良い結果を達成することができる場合がある。制御可能なシフト要素５０９ｓおよび５０９ｃ（本開示中の他の類似のシフト要素のようで、およびＣＲＡＭ要素６７４ｓおよび６７４ｃによってそれぞれ制御される）によって、現行のＤＳＰブロック５００（例えば、図２３の右にある）から、次のＤＳＰブロック５００（例えば、図２３の左にある）へ、正しいデータを誘導（選択）するように、データにシフト能力が提供される。
【００９４】
また一方、ｍｕｘ５１７ｓおよび５１７ｃ（ＣＲＡＭビット６７２ｓおよび６７２ｃによってそれぞれ（または、場合によっては１つのそのようなＣＲＡＭビットによって相前後して）制御される）は、いわゆる冗長ｍｕｘであることが思い出されるであろう。簡潔に思い起こさせるものとして、これらのｍｕｘは、データが、ｓｕｍ＿ｉｎ／ｓｕｍ＿ｏｕｔおよびｃａｒ＿ｉｎ／ｃａｒ＿ｏｕｔトラックを介して、（ａ）受信ＤＳＰブロック５００にすぐ隣接するＤＳＰブロック５００、または（ｂ）受信ＤＳＰブロックから１ブロック離れている、ＤＳＰブロック５００のどちらかから流れることを可能にする（例えば、直接隣接するＤＳＰブロックに欠陥があり、それ故、わずかにより離れたＤＳＰブロックで機能的に置き換えなくてはならない場合）。図２４に示す代表的な構成では、この冗長能力は、「受信」ＤＳＰブロック５００ｃが、直接隣接するＤＳＰブロック５００ｂのｓｕｍ＿ｏｕｔおよびｃａｒ＿ｏｕｔ信号、またはわずかにより離れたＤＳＰブロック５００ｃのｓｕｍ＿ｏｕｔおよびｃａｒ＿ｏｕｔ信号のどちらかから、そのｓｕｍ＿ｉｎおよびｃａｒ＿ｉｎ信号を受信することができることを意味する。
【００９５】
既に明らかであるはずのことを明示的に述べるために、図２３および２４（図１、６、８、１０、３０、および３２のような）は、本開示に従う集積回路が、ＤＳＰ回路ブロックまたはモジュール（例えば、１００、５００など）の複数のインスタンス（すなわち、複数の同一または実質的に同一の繰り返し）を含むというポイントを示している。したがって、本明細書で使用される、「ＤＳＰ回路ブロック」、「ＤＳＰブロック」、「ＤＳＰモジュール」などのような用語は、集積回路上での同一または実質的に同一の繰り返しに好適な回路要素のアセンブリを指す。そのようなＤＳＰ回路ブロックの回路の少なくともいくつかは、好ましくは、乗算、冗長形式の和および桁上げベクトルの圧縮、加算など、特定の機能を行うように設けられている（すなわち、配線で接続される、または少なくとも一部配線で接続される）。これらのＤＳＰ回路ブロックのうちの隣接する（または少なくともすぐ近くの）ブロックは、それらの間に「専用」接続を有してもよい。そのような専用ＤＳＰブロック間接続の例は、隣接するブロック間のｓｕｍ＿ｏｕｔ／ｓｕｍ＿ｉｎおよびｃａｒ＿ｏｕｔ／ｃａｒ＿ｉｎ接続である。そのような専用ＤＳＰ間接続は、好ましくは、ＤＳＰブロック間で信号を伝えるためのみに使用可能である。
【００９６】
図１１または図２４に再度戻ると、ｍｕｘ回路５１４（ＣＲＡＭ要素６７６によって制御される）は、前に作動していた（クロック）サイクルからの結果を選択し、およびそれを現在作動している（クロック）サイクルの結果と組み合わせる（例えば、加算する）ように、使用することができる。（各作動サイクルは、通常、回路で採用されるレジスタをクロックするように使用される、クロック信号の１つのそれぞれのサイクル中に起こる。）この蓄積経路は、全てのＤＳＰモジュール５００で任意である。
【００９７】
要素５０４および５１３は、シストリック遅延レジスタである。それらは、例えば、１８ビットのシストリック有限インパルス応答（「ＦＩＲ」）のデジタルフィルタ用途に使用することができる。シストリックＦＩＲフィルタの原理については、次のいくつかの段落に記載する。
【００９８】
ＦＩＲフィルタは、ＤＳＰ用途で幅広く使用される。ＦＩＲフィルタの基本構造は、結果生じる積の加算との、複数の並行した乗算である。ＦＩＲフィルタ演算は、図２５に示す式によって表すことができる。図２５では、式ｘ［ｎ−ｉ−１］は、入力デジタルデータサンプル（例えば、並行して表される１８ビットの２進ワードである各サンプル）のシーケンス（連続）を表し、ｃ［ｉ］は、フィルタ係数（例えば、並行して表される１８ビットの２進ワードである各係数）を表し、ｋ−１は、フィルタが有するタップの数である。
【００９９】
図２５に示すＦＩＲフィルタ式を実装する（いわゆる直接型）ための回路８００が、図２６に示されている。この図では、要素８１０は乗算回路であり、要素８２０は遅延回路（その各々は、各々に印加されるデータサンプルを、入力サンプルストリームｘ［ｎ］のいずれの１つのサンプルの時間分だけ遅延させる）であり、要素８３０は加算回路である。（また、直前に言及した「時間分」は、通常、回路中に渡って使用されるレジスタをクロックするために使用される、クロック信号の「期間」でもある。）
図２６は、直接型であるＦＩＲフィルタ８００が、加算器８３０を連鎖させることによって形成される、大きな加算器ツリーを含むことを示している。タップの数（乗算器の数マイナス１に等しい）、および入力サンプルサイズ（各入力サンプルｘ［ｎ］におけるビットの数）によって、加算器８３０を通る遅延は非常に大きくなり得る。この起こり得る性能問題を克服するために、図２７に示すフィルタのシストリック型８００’を使用することができる。具体的には、図２７は、追加遅延回路要素８１２および８２２が、たとえ待ち時間（すなわち、入力ｘ［ｎ］から出力ｙ［ｎ］への回路を通る遅延全体）を犠牲にしてでも、回路全体の性能を増加するように、タップごとに配置されることを示している。より具体的には、図２７は、各タップ間のサンプルストリームにおける追加遅延要素８２２、およびまた各タップ間の積集計ストリームにおける整合する追加遅延要素８１２を示している。言い換えると、追加遅延要素８１２−１は、追加遅延要素８２２−１に「整合」または「対応」し、追加遅延要素８１２−２は、追加遅延要素８２２−２に整合または一致するなどする。遅延要素８１２、８２０、および８２２の全てには、好ましくは、同じ遅延がある（例えば、回路中のレジスタをクロックするように使用される、クロック信号の中の１つのサイクルの期間であって、その「期間」はまた、好ましくは、入力の同じストリームｘ［ｎ］における各連続サンプルの持続時間と等しい）。
【０１００】
追加遅延要素８１２および８２２は、時には、シストリックレジスタと称されてもよい。遅延要素８１２は、加算器８３０の他の場合なら長い連鎖を個々の加算器に細分化する。そのため、各加算器８３０に続いて、その和を次の加算器に渡す前に、その加算器によって生成された和を登録するレジスタ８１２が来る。これによって、そうでなければ、回路の１つの作動する（クロック）サイクルにおいて、データが長い加算連鎖を通って最後まで伝播することを必要とするであろう比較的遅い速度で、回路を作動させる必要があることを避ける。各加算器８３０が、その加算演算を比較的迅速に完了することができるため、シストリックフィルタ８００’によって、より速いクロックを使用することができ、その加算の結果は、次のクロックサイクルまでは、次の加算器によって必要または使用されない。遅延要素８２２は、積和蓄積経路を通る積和の伝播の遅延と同期される、データサンプル経路を通るデータサンプルの伝播を保持するように加算される。
【０１０１】
シストリックフィルタ８００’には、同数のタップを有する直接型フィルタ８００より大きな待ち時間（フィルタを通る入力ｘ［ｎ］から対応する出力ｙ［ｎ］の可用性への遅延全体）がある傾向がある（フィルタ８００’の追加遅延８１２および８２２のため）が、他の回路（例えば、ＦＩＲフィルタを伴う集積回路上の）は、フィルタ８００’によって回路が有することが可能な、より速いクロック信号を有することから大きな恩恵を受ける（作動速度の点において）ことができる。
【０１０２】
図２７の８００’のようなシストリックＦＩＲフィルタに関する直前の議論を、５００のようなＤＳＰブロックに関するより前の議論と、より上手く関連させることに役立つように、図２７を図２８に再度図示している（いくつかの小さな変更を伴う）。図２８と図２７との違いは、（１）図２８が図１１のような他の図とより良く相関するように再配向され、（２）図２８は、乗算器８１０−２および８１０−（ｋ−１）間の可能な追加タップの図２７の図示を省略し、４つの直接隣接するタップのみを示すことによって、より一般的でなくなり、（３）図２８は、右下の角に別の加算器８３０−１を示すことによって、より一般的（またはよりモジュール式）となっている点のみである。
【０１０３】
図２８の乗算器８１０の各々は、１８ｘ１８乗算器（例えば、図１１の乗算器５０５または５０６のような）であると仮定する。例えば、図１１に示す通りに構築される１つのＤＳＰブロック５００において、図２８の２つの隣接するタップの各対と関連付けられる演算を行うことは、効率的であり得る。以下の議論は、これがどのように行われ得るかを示している。
【０１０４】
図２９は、図２８の回路８００’と同じ能力を有する回路８００’’を示している。言い換えると、図２９は、図２８の回路と機能的に同等である、図２８の回路の代替の実装である。図２９では、シストリックレジスタ８１２−１（図２８）の機能は、シストリックレジスタ５０４ｐ−１、５０４ｑ−１、および５１３−１（しかしながら、図２９の例では、シストリックレジスタ５１３−１は使用されない）によって実行される。基本的には、図２８の加算器８３０−１および８３０−２の間のシストリックレジスタ８１２−１によって生成される遅延は、加算器８３０−１によって行われる加算を送り込む、全ての経路に沿って上流に移動する（図２９）。これによって、図２８の加算器８３０−１および８３０−２によって行われる加算を、図２９の１つの組み合わされた加算器５０８／５１０／５１１−１で行うことを可能にする（すなわち、８１２−１のようなシストリック遅延は、合成加算器５０８／５１０／５１１−１内では必要ではない）。同様に、図２８のシストリックレジスタ８１２−３によって生成される遅延は、図２９のシストリックレジスタ５０４ｐ−３、５０４ｑ−３、および５１３−３へ上流へと移動する。再び、これによって、図２８の加算器８３０−３および８３０−４によって行われる加算を、図２９の１つの組み合わされた加算器５０８／５１０／５１１−３で行うことを可能にする（すなわち、再び８１２−３のようなシストリック遅延は、合成加算器５０８／５１０／５１１−３内では必要ではない）。
【０１０５】
前述を開始地点として、ここで図２９の連鎖の点線５００ｅおよび５００ｆについて説明することができる。連鎖の点線５００ｅは、例えば、図１１に示す構造を有する、１つのＤＳＰブロック５００の回路によって実装することができる、図２９の要素を囲んでいる。具体的には、以下の参照番号の同等物は、要素内側線５００ｅが、図１１におけるような、代表的なＤＳＰブロック５００の要素によって、どのように実装されるかを示している：８１０−２＝５０６；５０４ｐ−１＝５０４ｐ；５０４ｑ−１＝５０４ｑ；８１０−１＝５０５；５０８／５１０／５１１−１＝５０８、５１０、および５１１；５１２−１＝５１２；５１３−３＝５１３。
【０１０６】
連鎖の点線５００ｆは、別の（１つの）ＤＳＰブロック５００の回路によって実装され、例えば、図１１に示す構造を再び有し、そのｃａｒ＿ｉｎ入力を介して、ＤＳＰブロック５００ｅのシストリックレジスタ５１３の出力を直接受信することができる、図２９の要素を囲んでいる。また一方、以下の参照番号の同等物は、要素内側線５００ｆが、図１１のＤＳＰブロック回路５００の第２の（「別の」）インスタンスの要素によって、どのように実装されるかを示している：８１０−４＝５０６；５０４ｐ−３＝５０４ｐ；５０４ｑ−３＝５０４ｑ；８１０−３＝５０５；５０８／５１０／５１１−３＝５０８、５１０、および５１１；５１２−３＝５１２；５１３−５＝５１３。
【０１０７】
図２９の要素８２０および８２２によって行われる遅延は、５００ｅおよび５００ｆのようなＤＳＰブロックの外側にあり、ＤＳＰブロック５００ｅおよび５００ｆへの、連続入力データワードｘ［ｎ］の種々の入力の印加を適切に遅らせることができるレジスタ回路によって行われてもよい。（代替として、いくつかまたは全ての要素８２０および８２２は、そうでなければブロック５００ｅおよび５００ｆのようである、ＤＳＰブロックの中に含まれるレジスタによって実装されてもよい）。
【０１０８】
先行する段落は、例えば、図１１に示す通りに構築されたＤＳＰブロック５００が、所望の場合、シストリックＦＩＲフィルタを効率的に実装するように、どのように使用することができるのかを実証している。図２９は、２つの隣接するＤＳＰブロック５００ｅおよび５００ｆに４つのタップを有する、シストリックＦＩＲフィルタの実装を示しているが、いずれの所望の数のタップを有するシストリックＦＩＲフィルタも、適切な数の隣接するＤＳＰブロック５００に、同じ一般的な方法で実装することができることは、理解されるであろう。例えば、６つのタップのシストリックＦＩＲフィルタは、３つの隣接するＤＳＰブロック５００に実装することができ、８つのタップのシストリックＦＩＲフィルタは、４つの隣接するＤＳＰブロック５００に実装することができるなどする。それぞれの場合、シストリックＦＩＲフィルタの２つの隣接するタップ（「１対の隣接するタップ」または「２つの隣接するタップの１対」）は、１つのＤＳＰブロック５００に実装され、各ＤＳＰブロック５００は、そのような手動による排他的な対のタップのそれぞれの１対を実装する。ＤＳＰブロックは、対の中のタップが順序付けられるのと同じ方法で順序付けられ、タップのその対形成および順序付け（１から４まで）、ならびにＤＳＰブロック５００（ｅからｆまで）の類似の順序付けの全てが、図２９に実例として示されている。
【０１０９】
ここで、ＤＳＰブロック５００の能力のより広い範囲の考察に戻る。以下は、単一のＤＳＰブロックまたはモジュール５００が補助することができる、主要な特徴のリストである。
１．３つの９ｘ９乗算
２．１つの１８ｘ１８乗算
３．２つの部分的な１８ｘ１８乗算
４．１つの２７ｘ２７乗算
５．蓄積による１つの２７ｘ２７乗算
６．１つの２５ビットの事前加算器による１つの２６ｘ２２乗算
７．１つの３６ｘ１８乗算
８．２つの１８ｘ１８乗算の１つの和
９．蓄積による２つの１８ｘ１８乗算の１つの和
１０．事前加算器による２つの１８ｘ１８乗算の１つの和
１１．１つの二乗誤差和
１２．（ａ＊ｂ）＋ｃ、（ａ、ｂ＝各々１８ビット、ｃ＝３６ビット）
１３．２つの１８ビットシストリックＦＩＲフィルタタップの１つの和
１４．事前加算器による１８ビットシストリックＦＩＲフィルタタップの１つの和。
【０１１０】
３つの９ｘ９乗算（上の項目１）の場合、２つの１８ｘ１８乗算器（ブロック５０５および５０６）は、４つの９ｘ９乗算器として構成することができる。しかしながら、出力の数（５６）は、３つの９ｘ９乗算の結果（１８ビット＋１８ビット＋１８ビット＝５４）ビット）を補助するのに単に十分である。同じ制限が、上の２つの部分的な１８ｘ１８乗算（項目３）の場合に適用され、各１８ビット乗算の結果の２８ビットのみ（３６ビットからの）が、ＤＳＰモジュールの（からの）出力へルーティングされることができる。
【０１１１】
１つの２５ビット事前加算器による１つの２６ｘ２２乗算（上の項目６）の適用では、制限は、ＤＳＰブロック５００への入力の数に由来する。ＤＳＰブロック５００は、最大２７ビット乗算まで補助することができるものの、動的な入力の数は７２のみであり、（２５＋２５）＊２２を補助するのに十分なだけである。
【０１１２】
１つの二乗誤差和（上の項目１１）は、事前加算器５０２を有効にし、事前加算器の結果を乗算器（５０５および５０６）の両入力に印加することによって、実装することができる。したがって、この場合、（ａｘ−ａｙ）２＋（ｂｘ−ｂｙ）２の結果を、出力で得ることができる。
【０１１３】
以下は、複数のＤＳＰブロックまたはモジュール５００が共に組み合わされる時に、補助することができる特徴のリストである。
ａ．  ２つのＤＳＰモジュールにおける３つの１８ｘ１８乗算
ｂ．  ４つの１８ｘ１８乗算の和
ｃ．  ２つの２７ｘ２７乗算の和
ｄ．  ２つの３６ｘ１８乗算の和
ｅ．  複素数の１８ｘ１８乗算（すなわち、（ａ＋ｂｉ）＊（ｃ＋ｄｉ）であって、ａ、ｂ、ｃ、およびｄは、各１８ビット）
ｆ．  ３６ｘ３６乗算
ｇ．  ７２ｘ１８乗算
ｈ．  ３つのＤＳＰモジュールにおける複素数の１８ｘ２５乗算（すなわち、（ａ＋ｂｉ）＊（ｃ＋ｄｉ）であって、ａおよびｂは各１８ビットであり、ｃおよびｄは各２５ビット）
ｉ．  複素数の２７ｘ２７乗算（すなわち、ａ、ｂ、ｃ、およびｄが各２７ビットビットである以外は、上の項目に類似）
ｊ．  ５４ｘ５４乗算
ｋ．  出力連鎖による２つの１８ｘ１８乗算の和
ｌ．  出力連鎖による１つの２７ｘ２７乗算。
【０１１４】
１つのＤＳＰモジュール５００では、２つの１８ｘ１８乗算の出力を補助するのに十分ではない。しかしながら、２つのＤＳＰモジュール５００は、３つの１８ｘ１８乗算の出力を補助するのに十分であり、１つの結果が、２つのモジュール間に分配される。
【０１１５】
２つの３６ｘ１８乗算の和（上の項目ｄ）、および７２ｘ１８乗算（上の項目ｇ）などの適用に対して、２つのＤＳＰブロック５００は、専用の直接的なモジュール間の和および桁上げトラックを通って接続される。以下の議論は、これらの接続がどのように機能するかについて、より多くの情報を含有する。
【０１１６】
図３０は、２つの隣接するＤＳＰブロック５００ｈおよび５００ｉを示している。これらのＤＳＰブロックの各々は、例えば、図１１に示すような、回路のそれぞれのインスタンスであり得る。図３０に示す接続のいくつかは、より太い（より濃い）線を使用して描くことによって強調されている。これらは、２つの図示するＤＳＰブロックが、１つのＤＳＰブロック５００のみの能力を超える、ある機能を行うように共に使用されている時に使用される、直接的な専用のＤＳＰブロック間接続を含む。例には、上の３６ｘ３６乗算（項目ｆ）がある。図３１は、そのような乗算が、図３０回路を使用してどのように行うことができるかを示している。図３０および３１で、図３１に示す３６ｘ３６乗算の例について、これからさらに記載する。
【０１１７】
図３１の線１は、３６ｘ３６乗算用の３６ビットの被乗数を示している。図３１の線２は、その乗算用の３６ビットの乗数を示している。被乗数のより下位の１８ビットのサブワードｘ１、および乗数のより下位の１８ビットのサブワードｙ１は、図３１の線３に示す部分積を生成するように、その乗数によって乗算のために、ＤＳＰブロック５００ｈの乗算器５０５に印加される。被乗数のより上位の１８ビットのサブワードｘ２、およびｙ１は、図３１の線４に示す部分積を生成するように、その乗数によって乗算のために、ＤＳＰブロック５００ｈの乗算器５０６に印加される。ＤＳＰブロック５００ｈの要素５０７ｓおよび５０７ｃは、ＤＳＰブロック５００ｈの乗算器５０６によって出力される、冗長形式の和および桁上げベクトルを、左に１８ビットシフトするように使用される（それらの演算の有効を、ブロック５００ｈの乗算器５０５によって出力される、冗長形式の和および桁上げベクトルに対して、１８ビット位置だけ増加させるように）。部分積ｘ２＊ｙ１のこの１８ビット左へのシフトは、図３１の線４として図で示している。ＤＳＰブロック５００ｈの圧縮器５０８は、受信する４つの冗長形式のベクトルを、２つの冗長形式のベクトル、すなわち、図３１の線５に示す５４ビットの和ベクトル、および図３１の線６に示す５４ビットの桁上げベクトルにまで圧縮する。
【０１１８】
図３１の中の垂直な点線の右への、その図の線５および６におけるデータの１８ビット部分は、ＤＳＰブロック５００ｈの中に残っている。具体的には、これらの１８の最小有効ビットは、ブロック５００ｈの圧縮器５１０を通って下へ、そのブロックのＣＰＡ５１１へと通過する。ブロック５００ｈのＣＰＡ５１１は、この冗長形式データを、図３１の線９に示す非冗長形式（または通常形態）の最終結果の最小有効１８ビットへと変換する。ＤＳＰブロック５００ｈは、これらの１８の最終結果ビットを、その出力リード線を介して出力することができる。
【０１１９】
図３１の線５および６（垂直な点線の左）のより上位の３６ビット部分は、ＤＳＰブロック５００ｈの圧縮器５０８の出力からＤＳＰブロック５００ｉへルーティングされる。具体的には、ブロック５００ｈの圧縮器５０８によって出力される３６より上位の和のビットは、ブロック５００ｈからブロック５００ｉへの直接的な専用のｓｕｍ＿ｏｕｔ／ｓｕｍ＿ｉｎ接続（導体またはトラック）を介して、ＤＳＰブロック５００ｉに進入する時に、その量の分、データの演算の有効を減少させるよう、そのデータの１８ビット位置を右へシフトさせるように、ブロック５００ｈの制御可能なシフタ要素５０９ｓを通過する。（ブロック５００ｈのｍｕｘ回路５１７ｓは、このルーティングの一部である。）同様に、ブロック５００ｈの圧縮器５０８によって出力される３６より上位の桁上げビットは、ブロック５００ｈからブロック５００ｉへのｃａｒ＿ｏｕｔ／ｃａｒ＿ｉｎ接続（導体またはトラック）を介して、ＤＳＰブロック５００ｉに進入する時に、その有効を減少させるよう、そのデータの１８ビット位置を右へシフトさせるように、ブロック５００ｈの制御可能なシフタ５０９ｃを通過する。（ブロック５００ｈのｍｕｘ回路５１７ｃは、このルーティングの一部である。）ＤＳＰブロック５００ｉがそのようにＤＳＰブロック５００ｈから受信する冗長形式のデータは、ブロック５００ｉの圧縮回路５１０にルーティングされる（ブロック５００ｉのｍｕｘ回路５１４は、このルーティングの一部である）。
【０１２０】
乗数のより上位の１８ビットのサブワードｙ２、およびｘ１は、図３１の線７に示す部分積を生成するように、その乗数によって乗算のために、ＤＳＰブロック５００ｉの乗算器５０５に印加される。同様に、ｙ２およびｘ２は、図３１の線８に示す部分積を生成するように、その乗数によって乗算のために、ＤＳＰブロック５００ｉの乗算器５０６に印加される。ＤＳＰブロック５００ｉの制御可能なシフタ回路要素５０７ｓおよび５０７ｃは、ＤＳＰブロック５００ｉの乗算回路５０６によって出力される、冗長形式の和および桁上げベクトル信号を、左に１８ビットシフトするように使用される（それらの演算の有効を、ブロック５００ｉの乗算器５０５によって出力される冗長形式の和および桁上げベクトル信号に対して、１８ビット位置だけ増加させるように）。部分積ｙ２＊ｘ１に対する、部分積ｘ２＊ｙ２のこの１８ビット左へのシフトは、図３１の線８として図で示している。
【０１２１】
ＤＳＰブロック５００ｉの圧縮器５０８は、ブロック５００ｉの要素５０５、５０６、および５０７から受信する、４つの冗長形式の部分積ベクトルを、部分積ｙ２＊ｘ１およびｘ２＊ｙ２の和を示す２つの冗長形式のベクトルに減少させる。ＤＳＰブロック５００ｉの圧縮器５０８からのこれら２つの冗長形式のベクトルは、ブロック５００ｉの圧縮器５１０に印加される。ブロック５００ｉの圧縮器５１０は、受信する４つの冗長形式ベクトル（ブロック５００ｉの圧縮器５０８から２つ、および前に記載した通り、ブロック５００ｈからブロック５００ｉへのｓｕｍ＿ｏｕｔ／ｓｕｍ＿ｉｎおよびｃａｒ＿ｏｕｔ／ｃａｒ＿ｉｎトラックを介して、ブロック５００ｈから２つ）を、（１）部分積ｙ２＊ｘ１、（２）部分積ｘ２＊ｙ２、および（３）（ａ）部分積ｘ１＊ｙ１および（ｂ）部分積ｘ２＊ｙ１の和の３６より上位ビットの和を示す、２つの冗長形式のベクトルにまで圧縮する。ＤＳＰブロック５００ｉの圧縮器５１０によって出力される、２つの冗長形式のベクトルは、ブロック５００ｉのＣＰＡ５１１に印加され、それによって、それら２つのベクトルを、図３１の線９の点線の左に示す、非冗長形式（または通常形態）の最終結果の５４より上位ビットに組み合わせる。これらの５４より上位の最終結果ビットは、その出力リード線を介して、ＤＳＰブロック５００ｉによって出力することができる。
【０１２２】
前述では、２つのＤＳＰブロック５００ｈおよび５００ｉが、完全な３６ｘ３６乗算を行うようにどのように使用することができるのかを実証しており、最終積の１８より下位のビットを、ＤＳＰブロック５００ｈによって出力し、最終積の５４より上位ビットをＤＳＰブロック５００ｉによって出力している。
【０１２３】
４つの１８ｘ１８乗算の和（上の項目ｂ）および２つの２７ｘ２７乗算の和（上の項目ｃ）などの適用に対して、結果は、図３０および３１と関連して図で上に示し記載した、和および桁上げの直接的な専用のＤＳＰモジュール間接続（すなわち、ｓｕｍ＿ｏｕｔ／ｓｕｍ＿ｉｎおよびｃａｒ＿ｏｕｔ／ｃａｒ＿ｉｎ）、または図３２に図で示し、下に記載する通りの出力連鎖接続のどちらかを通して、２つのＤＳＰモジュール５００を組み合わせることによって、達成することができる。
【０１２４】
図３２は、好ましくは、集積回路上で互いに隣接する（例えば、図３２に示す、互いに関連する位置において）、いくつかのＤＳＰブロック５００−１から５００−７を示している。これらのＤＳＰブロックの各々は、例えば、図１１に示すような、回路のそれぞれのインスタンスであり得る。図３２に示す接続のいくつかは、より太い（より濃い）線を使用して描くことによって強調されている。これらは、第２の（「別の」または「受信」）ＤＳＰブロックで進行中である、信号処理と組み合わせるために、別の隣接するＤＳＰブロックの中間回路へ直接的に、１つのＤＳＰブロック５００の最終出力（出力）を連鎖させることが望ましい時に使用することができる、隣接するＤＳＰブロック５００間の接続を含む。前に記載したｓｕｍ＿ｏｕｔ／ｓｕｍ＿ｉｎおよびｃａｒ＿ｏｕｔ／ｃａｒ＿ｉｎ接続のように、これらの出力連鎖接続は、好ましくは、直接的な専用のＤＳＰブロック間接続である。これは、例えば、これらの直接的な専用の接続が、ＤＳＰブロックを含む集積回路上で、より汎用の信号ルーティング回路を活用しないことを意味する。言い換えると、これらの接続は、ＤＳＰ回路ブロック（例えば、ＤＳＰブロック５００）のインスタンス間で信号を伝えるためにのみ設けられている。記載している例示的実施形態では、直接的な専用の出力連鎖接続が、各ＤＳＰブロック５００から次の隣接するＤＳＰブロック５００への、前に記載したｃａｒ＿ｏｕｔ／ｃａｒ＿ｉｎ接続を介して、（一部）作成される。
【０１２５】
図３２に示す例示的実施形態では、ＤＳＰブロック５００−１からＤＳＰブロック５００−２への、強調される出力連鎖のルーティングは、ブロック５００−１の出力レジスタ５１２から、信号を受信することができる、ブロック５００−１のノードから延在する。（これは、ブロック５００−１の出力ノードと称されてもよい。）このルーティングは、ブロック５００−１の（任意に使用可能な）シストリックレジスタ５１３、ブロック５００−１のｍｕｘ回路５１６および５１７ｃを通って、ブロック５００−２のｃａｒ＿ｉｎリード線へ接続する、ブロック５００−１のｃａｒ＿ｏｕｔリード線上へ延在する。前に記載した通り、ＤＳＰブロック５００のｃａｒ＿ｉｎリード線上の信号は、そのＤＳＰブロックの圧縮回路５１０に（とりわけ）印加される。したがって、ＤＳＰブロック５００−１からＤＳＰブロック５００−２への出力連鎖ルーティングは、ブロック５００−１からブロック５００−２の圧縮器５１０への、ブロック５００−２によって受信されるｃａｒ＿ｉｎ信号の印加を含む。したがって、ブロック５００−２の圧縮器５１０は、ブロック５００−２の圧縮器５１０から上流にある要素によって、ブロック５００−２で行われる他の信号処理の結果と組み合わせるために、ブロック５００−２へ連鎖されるブロック５００−１の出力を受信することができる、ブロック５００−２の「中間回路」である。この出力連鎖は、源のブロック５００−１から、受信ブロック５００−２の最も上流の入力（例えば、ａｘ、ａｙ、ｂｘ、ｂｙ）へは、出力を伝えないことに留意すること。それどころか、源のブロック５００−１からの出力連鎖は、受信ブロック５００−２の回路の中間ポイントから、受信ブロック５００−２に進入する。これによって、受信ブロック５００−２の最も上流の入力（ａｘ、ａｙ、ｂｘ、ｂｙ）の全てが、他の（出力が連鎖されない）入力に対して利用可能なままとなる。また、受信ブロック５００−２の他の上流の回路（例えば、要素５０１、５０２、５０３、５０４、５０５、５０６、５０７、および５０８）も、それら他の（出力が連鎖されない）入力を処理するために利用可能なままとなる。次いで、受信ブロック５００−２の上流にある要素による、他の入力の処理の結果は、ブロック５００−２（すなわち、ＤＳＰブロック５００−２の中間回路要素圧縮器５１０で開始）のより下流にある要素において、出力が連鎖される入力（ブロック５００−１からブロック５００−２へのｃａｒ＿ｏｕｔ／ｃａｒ＿ｉｎを介して、源のブロック５００−１の出力ノードから受信される）と組み合わせることができる。
【０１２６】
図３２は、（追加の強調された（より太い）接続線によって）出力連鎖が、ＤＳＰブロック５００−２から次の隣接するＤＳＰブロック５００−３（図３２に実際には図示せず）へ続くことができることを示している。ブロック５００−２では、この継続する出力連鎖は、（通常）ブロック５００−２の出力ノードから始まり、そのブロックの要素５１３、５１６、および５１７ｃを通って、ブロック５００−２のｃａｒ＿ｏｕｔ出力リード線（ブロック５００−３へのｃａｒ＿ｉｎ入力へ直接接続される）へと通過する。
【０１２７】
図３２は、（ＤＳＰブロック５００−７の例示的な例を使用して、）出力連鎖が、連続する結果の蓄積（回路の連続クロックサイクルでそれぞれ生成される）を含んでもよいことを、なおもさらに示している。したがって、ブロック５００−７では、出力ノード信号は、（ｍｕｘ回路５１４を介して）ブロック５００−７の圧縮器５１０に戻ってルーティングされる。これによって、ブロック５００−７の要素５１０、５１１、および５１２が、各クロックサイクルから次のクロックサイクルまで、（１）ブロック５００−７のより上流の回路（例えば、５０５および５０６）の出力、（２）別の隣接する「源の」ＤＳＰブロック５００−６（実際には図示せず）からの中で連鎖する出力、および（３）直前のクロックサイクル中にＤＳＰブロック５００−７によって生成される最終出力を、組み合わせ（例えば、加算し）蓄積することを可能にする。また、図３２は、ブロック５００−７によるそのようなアキュムレータ演算の結果が、ブロック５００−７の要素５１３、５１６、および５１７ｃを介して、次の隣接するＤＳＰブロック５００−８（図示せず）へ「出力を連鎖」することができることも示している。
【０１２８】
図３２は、各ＤＳＰブロック５００のシストリックレジスタ５１３を通って進む出力連鎖を示しているが、それらのレジスタは、回路のユーザに所望される通り、連鎖される信号を遅延させるために使用されるか、または使用されないかのどちらかであることができることを強調しておく。言い換えると、追加される信号遅延用のレジスタ５１３の実際の使用は任意である（再び、図１６を参照）。
【０１２９】
図３２に示し強調するような回路配置の使用の例として、４つの１８ｘ１８乗算の和（上の項目ｂ）が、ＤＳＰブロック５００−２の出力で得ることができ、ＤＳＰブロック５００−１および５００−２の各々が、２つの１８ｘ１８乗算の和を計算するように設定される。
【０１３０】
一般的に（続けて図３２を参照して）、いずれの数の「隣接する」ＤＳＰモジュール５００も、出力連鎖経路を介して共に接続することができる。（「隣接する」は、各ＤＳＰモジュール５００の冗長ｍｕｘ５１７によって、モジュールを飛ばすか、または迂回することができるため（例えば、適切に機能していない場合）先行する文では引用符が付けられている。この原理は、本開示中の「隣接する」ＤＳＰブロックまたはモジュールへの全ての参照に当てはまる。）全ての結果の総和は、連鎖の最後にある、最後のＤＳＰモジュール５００で得ることができる。ＤＳＰブロック５００−７の出力ノードおよびｍｕｘ回路５１４間の経路は、（例えば）出力連鎖を伴う蓄積の特徴を組み込むことを可能にすることができることに、再び留意すること。
【０１３１】
なおも図３２を参照すると、複素数の１８ｘ１８乗算（上の項目ｅ）または複素数の２７ｘ２７乗算（上の項目ｉ）は、２つの１８ｘ１８または２７ｘ２７乗算（上の項目ｂまたは項目ｃ）の和の２つのセットを使用して、実装することができ、１つのセットは加算（すなわち、複素数の積の虚数部ａｄｉ＋ｂｃｉの中のａｄおよびｂｃの加算）を行い、他方のセットは減算（すなわち、複素数の実数部のａｃ−ｂｄ）を行う。複素数の１８ｘ２５乗算（上の項目ｈ）は、複素数の２７ｘ２７乗算と同じ設定を伴う、４つのＤＳＰモジュール５００を使用することによって実装することができる。５４ｘ５４乗算（上の項目ｊ）は、和および桁上げの直接接続、並びに出力連鎖直接接続の両方を利用して、４つのＤＳＰモジュール５００を伴い実装することができる。
【０１３２】
図１１および図２１のような図は、ＤＳＰブロック５００の出力またはその近くに、５１７ｓおよび５１７ｃのような冗長マルチプレクサを示しているが、そのような冗長ｍｕｘは、代わりにそのようなＤＳＰブロックへの出力またはその近くにあり得る。例えば、図３３は、この可能な変形を示す、２つの隣接するＤＳＰブロック５００ａ’および５００ｂ’の部分を示している。具体的には、冗長ｍｕｘ５１７ｓおよび５１７ｃが、ＤＳＰブロック５００ａ’の出力またはその近くにある代わりに、それらのｍｕｘは、ＤＳＰブロック５００ｂ’の入力側に移動している。全ての他の事項において、５００ａ’および５００ｂ’のようなＤＳＰブロックは、本明細書の他の場所に示し記載する、ＤＳＰブロック５００のようであり得る。
【０１３３】
本開示の範囲および精神から逸脱しない範囲で、種々の要素の場所および／順序が、どのように変化し得るかの別の実例として、シストリックレジスタ回路５１３は、（例えば）図２１の出力連鎖経路に沿って、いずれの他の好適なポイントに移動することができる。例えば、シストリックレジスタ回路５１３、ならびに関連付けられる要素６８０および６８２は、次の下流のＤＳＰブロックに進入するその経路のちょうど前の出力連鎖経路に沿って、ポイントに移動することができる。
【０１３４】
前述のいくつかの側面を要約し、また述べてきたことの延長となるいくつかの事柄において、デジタル信号処理（「ＤＳＰ」）回路ブロック（例えば、図１１の５００、図２４の５００ｂ）は、第１のＮビット掛けるＮビット（「ＮｘＮ」）乗算（例えば、１８ｘ１８乗算）を行うことができる第１の乗算回路（例えば、５０６）、第２のＮｘＮ乗算を行うことができる第２の乗算回路（例えば、５０５）、（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、第１の乗算回路の出力をシフトするための第１のシフタ回路（例えば、５０７ｃ／５０７ｓ）、第１のシフタ回路および第２の乗算回路の出力を加法的に組み合わせるための第１の圧縮回路（例えば、５０８）、第１の圧縮回路の出力を、ＤＳＰ回路ブロックに隣接する第１の他のＤＳＰ回路ブロック（例えば、図２４の５００ｃ）へルーティングするための回路（例えば、ｓｕｍ＿ｏｕｔ／ｃａｒ＿ｏｕｔリード線）、ならびに第１の圧縮回路の出力、およびＤＳＰ回路ブロックに隣接する、第２の他のＤＳＰ回路ブロック（例えば、図２４の５００ａ）から受信される出力を加法的に組み合わせるための、第２の圧縮回路（例えば、５１０）を含んでもよい。
【０１３５】
上に要約したようなＤＳＰ回路ブロックは、第２の圧縮回路の出力を加法的に組み合わせるための、加算回路（例えば、５１１）をさらに含んでもよい。そのような加算回路は、桁上げ伝播加算回路を備えてもよい。
【０１３６】
上に要約したようなＤＳＰ回路ブロックは、加算回路の出力を登録するための第１のレジスタ回路（例えば、５１２）をさらに含んでもよい。
【０１３７】
上に要約したようなＤＳＰ回路ブロックは、乗算回路によって処理するために、入力を供給するための第１、第２、第３、および第４の複数のデータ信号入力リード線（例えば、ａｘ、ａｙ、ｂｘ、ｂｙ）と、複数のデータ信号入力リード線のうちの少なくとも２つからの入力とを加法的に組み合わせるための事前加算回路（例えば、５０２）とをさらに含んでもよい。
【０１３８】
上に要約したようなＤＳＰ回路ブロックは、乗算回路のうちの少なくとも１つによって処理するために、複数のデータ信号入力リード線のうちの少なくとも１つからの入力の代替として、事前加算回路の出力を選択するための回路（例えば、５０３）をさらに含んでもよい。
【０１３９】
上に要約したようなＤＳＰ回路ブロックは、乗算回路のうちの１つへの入力データ信号経路において、選択的に使用可能なシストリックレジスタ回路（例えば、５０４ｐ、５０４ｑ）をさらに含んでもよい。
【０１４０】
上に要約したようなＤＳＰ回路ブロックは、第２の圧縮回路によって出力されるデータ用の出力データ信号経路において、選択的に使用可能なシストリックレジスタ回路（例えば、５１３）をさらに含んでもよい。
【０１４１】
上に要約したようなＤＳＰ回路ブロックは、第２の圧縮回路の出力を示す信号を登録するための回路（例えば、５１２）と、第１の圧縮回路の出力との第２の圧縮回路による加法的組み合わせのために、第２の圧縮回路の入力に登録するための回路の出力を選択的に印加するための回路（例えば、５１４）とをさらに含んでもよい。
【０１４２】
上に要約したようなＤＳＰ回路ブロックでは、ルーティングするための回路は、（１）ゼロビット位置および（２）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、第１の乗算回路の出力をシフトするための第２のシフタ回路（例えば、５０９ｓ／５０９ｃ）を含んでもよい。
【０１４３】
上に要約したようなＤＳＰ回路ブロックでは、ルーティングするための回路は、第２の他のＤＳＰ回路ブロックにおいてルーティングするための回路によって出力される信号を、第１の他のＤＳＰ回路ブロックにルーティングするための代替ルーティング回路（例えば、ｓｕｍ＿ｉｎ／ｃａｒ＿ｉｎリード線）を含んでもよい。
【０１４４】
上に要約したようなＤＳＰ回路ブロックでは、ルーティングするための回路は、第２の圧縮回路の出力を示す信号を、第１の他のＤＳＰ回路ブロックにルーティングするための代替ルーティング回路（例えば、出力連鎖リード線）を含んでもよい。
【０１４５】
すぐ上に要約したようなＤＳＰ回路ブロックでは、代替ルーティング回路は、第２の圧縮回路の出力を示す信号に選択的に使用可能である、シストリックレジスタ回路（例えば、５１３）を含んでもよい。
【０１４６】
上に要約したようなＤＳＰ回路ブロックでは、第２の乗算回路は、（１）０．５Ｎビット掛けるＭビット（「０．５ＮｘＭ」）乗算（例えば、９ｘ２７乗算）および（２）０．５Ｎビット掛けるＮビット（「０．５ＮｘＮ」）乗算（例えば、９ｘ１８乗算）を代替として行うことがでてもよく、Ｍは、１．５Ｎに等しい（例えば、Ｎが１８の時に、Ｍは２７である）。
【０１４７】
すぐ上に要約したようなＤＳＰ回路ブロックは、第１の乗算回路が、第１の部分積データワードを生成するように、被乗数データワードのＮの最大有効ビットに、乗数データワードのＮの最大有効ビットを乗じることができ、および第２の乗算回路が、（１）第２の部分積データワードを生成するように、被乗数データワードのＭビットに、乗数データワードの０．５Ｎの最小有効ビットを、および（２）第３の部分積データワードを生成するように、乗数データワードのＮの最大有効ビットに、被乗数データワードの０．５Ｎの最小有効ビットを乗じることができるように、Ｍビットの被乗数データワードおよびＭビットの乗数データワードのビットを、第１および第２の乗算回路に選択的にルーティングするための回路（例えば、５０３）をさらに含んでもよい。
【０１４８】
すぐ上に要約したようなＤＳＰ回路ブロックでは、第２の乗算回路は、第２および第３の部分積データワードを加法的に組み合わせるための第３の圧縮回路（例えば、６５２）を含んでもよく、第３の部分積データワードのビットは、第２の部分積データワードのビットに対して０．５Ｎビット位置だけ、演算の有効を増加させられる。
【０１４９】
上に要約したようなＤＳＰ回路ブロックでは、ルーティングするための回路は、ＤＳＰ回路ブロックのインスタンス間で信号を伝えるためにのみ設けられていてもよい。
【０１５０】
上に要約したようなＤＳＰ回路ブロックでは、第２の他のＤＳＰブロックから受信された出力は、ＤＳＰ回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている、回路（例えば、ｓｕｍ＿ｉｎ／ｃａｒ＿ｉｎリード線）を介して受信されてもよい。
【０１５１】
前述のいくつかの他の側面を要約し、また論じてきたことを拡張するいくつかの点において、（１）１つのＭビット掛けるＭビット（「ＭｘＭ」）乗算および（例えば、２７ｘ２７乗算）および（２）２つのＮビット掛けるＮビット（「ＮｘＮ」）乗算（例えば、２つの１８ｘ１８乗算）のうちの選択可能な１つを行うために使用可能である回路（例えば、図１７）であって、Ｍが、１．５Ｎに等しい回路は、ＮｘＮ乗算回路（例えば、５０６）、０．５ＮｘＭ乗算回路（例えば、６５０ａ）、０．５ＮｘＮ乗算回路（例えば、６５０ｂ）、０．５ＮｘＭ乗算回路の出力、および０．５ＮｘＮ乗算回路の出力を加法的に組み合わせるための第１の回路（例えば、６５２）、（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、ＮｘＮ乗算回路の出力をシフトするためのシフタ回路（例えば、５０７ｃ／５０７ｓ）、ならびにシフタ回路の出力および第１の回路の出力を、加法的に組み合わせるための第２の回路（例えば、５０８）を含んでもよい。
【０１５２】
上に要約したような回路では、Ｎは１８に等しくてもよく、Ｍは２７に等しくてもよい。
【０１５３】
上に要約したような回路は、第１、第２、第３、および第４の複数のデータ信号入力リード線（例えば、図１１のｄ、ｃ、ａｘ、ａｙ、ｂｘ、ｂｙのうちのいずれか４つ）、および複数の各々から、乗算回路への入力のうちの選択可能な入力へ、信号を制御可能にルーティングするためのルーティング回路（例えば、５０３）をさらに含んでもよい。複数の各々は、Ｎ個のデータ信号入力リード線から成ってもよい。
【０１５４】
すぐ上に要約したような回路では、ルーティング回路は、その各々は、複数のうちのいずれか１つから、（１）ＮｘＮ乗算回路への被乗数入力、（２）ＮｘＮ乗算回路への乗数入力、（３）０．５ＮｘＭ乗算回路へのＮより下位の被乗数入力、および（４）０．５ＮｘＮ乗算回路への被乗数入力のうちのそれぞれの１つへ、Ｎビットをルーティングするように制御可能である、第１、第２、第３、および第４のＮビットマルチプレクサ（例えば、６３０ｒ、６３０ｓ、６３０ｕ、６３０ｗ）と、その各々は、複数の少なくともいくつかのうちのいずれから、（１）０．５ＮｘＭ乗算回路への０．５Ｎより上位の被乗数入力、（２）０．５ＮｘＭ乗算回路への乗数入力、および（３）０．５ＮｘＮ乗算回路への乗数入力のうちのそれぞれの１つへ、０．５Ｎビットをルーティングするように制御可能である、第１、第２、および第３の０．５Ｎビットマルチプレクサ（例えば、６３０ｔ、６３０ｖ、６３０ｘ）とを含んでもよい。
【０１５５】
前述のいくつかのなおも他の側面を要約し、また論じてきたことを拡張するいくつかの点において、デジタル信号処理（「ＤＳＰ」）回路ブロック（例えば、図１１の５００、図２４の５００ｂ）は、第１のＮビット掛けるＮビット（「ＮｘＮ」）乗算（例えば、１８ｘ１８乗算）を行うための第１の手段（例えば、５０６）と、（１）第２のＮｘＮ乗算、ならびに（２）０．５Ｎビット掛けるＭビット（「０．５ＮｘＭ」）乗算および０．５Ｎビット掛けるＮビット（「０．５ＮｘＮ」）乗算のうちの選択可能な１つを行うための第２の手段（例えば、図１１、図１７の５０５）であって、Ｍは、１．５Ｎに等しい（例えば、Ｎが１８の時に、Ｍは２７である）第２の手段と、（１）ゼロビット位置および（２）より上位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、第１の手段の出力をシフトするための第３の手段（例えば、５０７ｃ／５０７ｓ）と、第２および第３の手段の出力を加法的に組み合わせるための第４の手段（例えば、５０８）と、第４の手段の出力を、第１の他のＤＳＰ回路ブロック（例えば、図２４の５００ｃ）へルーティングするための第５の手段（例えば、ｓｕｍ＿ｏｕｔ／ｃａｒ＿ｏｕｔリード線）と、第４の手段の出力および第２の他のＤＳＰ回路ブロック（例えば、図２４の５００ａから受信された出力を、加法的に組み合わせるための第６の手段（例えば、５１０）とを含んでもよい。
【０１５６】
そのようなＤＳＰ回路ブロックでは、第２の手段は、０．５ＮｘＭ乗算を行うための第７の手段（例えば、６５０ａ）と、０．５ＮｘＮ乗算を行うための第８の手段（例えば、６５０ｂ）と、第８の手段の出力のビットは、第７の手段の出力のビットに対して０．５Ｎビット位置だけ、演算の有効を増加させられる、第７および第８の手段の出力を加法的に組み合わせるための第９の手段（例えば、６５２）とを含んでもよい。
【０１５７】
ここで要約しているようなＤＳＰ回路ブロックは、Ｍビットの被乗数データワードのＮの最大有効ビットを、第１の手段への被乗数入力へ選択的にルーティングするための第１０の手段（例えば、６３０ｓ）と、Ｍビットの乗数データワードのＮの最大有効ビットを、第１の手段への乗数入力へ選択的にルーティングするための第１１の手段（例えば、６３０ｒ）と、Ｍビットの被乗数を、第７の手段への被乗数入力へ選択的にルーティングするための第１２の手段（例えば、６３０ｖおよび６３０ｗ）と、乗数データワードの０．５Ｎの最小有効ビットを、第７の手段への乗数入力へ選択的にルーティングするための第１３の手段（例えば、６３０ｘ）と、乗数データワードのＮの最大有効ビットを、第８の手段への被乗数入力へ選択的にルーティングするための第１４の手段（例えば、６３０ｕ）と、被乗数データワードの０．５Ｎの最小有効ビットを、第８の手段への乗数入力へ選択的にルーティングするための第１５の手段（例えば、６３０ｔ）とをさらに含んでもよい。
【０１５８】
ここで要約しているようなＤＳＰ回路ブロックは、第１および第２の手段への入力として使用するために、複合的な複数のデータ入力信号を受信するための第１６の手段（例えば、ａｘ、ａｙ、ｂｘ、およびｂｙリード線）と、データ入力信号のうちの少なくともいくつかを、選択的に事前加算するための第１７の手段（例えば、５０２）と、第１７の手段の出力を、第１および第２の手段のうちの少なくとも１つへの選択された入力へ、選択的に印加するための第１８の手段（例えば、５０３）とをさらに含んでもよい。
【０１５９】
ここで要約しているようなＤＳＰ回路ブロックは、第２の手段への入力に、シストリックレジスタの遅延を選択的に与えるための第１９の手段（例えば、５０４ｐ、５０４ｑ）をさらに含んでもよい。
【０１６０】
ここで要約しているようなＤＳＰ回路ブロックでは、第５の手段は、（１）ゼロビット位置および（２）より下位の演算の有効に向かうＮビット位置のうちの選択可能な１つによって、第４の手段の出力をシフトするための第１２の手段（例えば、５０９ｓ／５０９ｃ）を含んでもよい。
【０１６１】
ここで要約しているようなＤＳＰ回路ブロックでは、第５の手段は、第１の他のＤＳＰ回路ブロックへの第６の手段の出力を示す出力信号を、選択的に代替としてルーティングするための第２１の手段（例えば、５１６）を含んでもよい。
【０１６２】
ここで要約しているようなＤＳＰ回路ブロックでは、第２１の手段は、第６の手段の出力を示す出力信号に、シストリックレジスタの遅延を選択的に与えるための第２２の手段（例えば、５１３）を含んでもよい。
【０１６３】
ここで要約しているようなＤＳＰ回路ブロックでは、第５の手段は、第２の他のＤＳＰ回路ブロックから第１の他のＤＳＰ回路ブロックへ、信号を代替としてルーティングするための第２３の手段（例えば、ｓｕｍ＿ｉｎ／ｃａｒ＿ｉｎリード線）を含んでもよい。
【０１６４】
ここで要約しているようなＤＳＰ回路ブロックでは、第６の手段は、第６の手段の出力を示す出力信号を登録するための第２４の手段（例えば、５１２）と、第２４の手段の出力を、第６の手段への入力に印加するための第２５の手段（例えば、５１４）とを含んでもよい。
【０１６５】
前述は、本発明の原理の説明のみであり、本発明の範囲および精神から逸脱しない限り、当業者によって種々の変形がなされ得ることは理解されるであろう。例えば、１８ｘ１８乗算器２００の使用は実例でしかなく、所望の場合には、代わりに他のサイズの乗算器を使用することができる。また、図１〜４、６、８、および１０のような本明細書の図は電子回路を示しており、回路要素（２００、２０２、２１０、２２０、２６０など）の大部分または全ては別個の要素（通常、集積回路上で共に統合される）であり、要素の各々は、他の電気出力信号を生成するよう、電気入力信号に作用することによって、本明細書にそのために記載した機能を行うように設けられている（例えば、少なくとも有意な程度まで配線で接続される）ことも理解されるであろう。これらの電気信号は、時には、データ、ビット、ベクトル、「１」、「０」、値、被乗数、乗算器、積、部分積、和などと称されてもよいが、全ての場合において、実際には、特定の情報を表す実際の電気信号である。同様に、本明細書に示す電気回路要素の中のいくつかは、時には、実施する演算によって称されてもよい（例えば、「乗算器２００ａ」）が、全ての場合において、これらの要素は、それらの演算を行う実際の電気回路（例えば、乗算回路）である。ＤＳＰ回路、ＤＳＰ演算などへの参照も同じである。全てのそのような演算は、上記の通り、電気信号に作用する電気回路によって行われる。
【０１６６】
添付の特許請求の範囲のうちのいくつかでは、第１、第２、第３、第４などのような言葉が使用される場合がある。これは、種々の請求の要素に対して独自の識別子を提供するためのみに行われ、いずれの他の目的のためではない。例えば、これらの言葉は、要素がどのように順序づけられるか、または使用されるかについて何かを暗示することを意図していない。また、より高い番号のついた要素（例えば、「第４の」要素）への参照は、それ自体で、全てのより低い番号の付いた要素（例えば、第１から第３の要素）もまた、特定の請求項に存在することを意図するものではない。
【図１】
0005657580.tif 000002
【図２】
0005657580.tif 000003
【図３】
0005657580.tif 000004
【図４】
0005657580.tif 000005
【図５】
0005657580.tif 000006
【図６】
0005657580.tif 000007
【図７】
0005657580.tif 000008
【図８】
0005657580.tif 000009
【図９】
0005657580.tif 000010
【図１０】
0005657580.tif 000011
【図１１】
0005657580.tif 000012
【図１２】
0005657580.tif 000013
【図１３】
0005657580.tif 000014
【図１４】
0005657580.tif 000015
【図１５】
0005657580.tif 000016
【図１６】
0005657580.tif 000017
【図１７】
0005657580.tif 000018
【図１８】
0005657580.tif 000019
【図１９】
0005657580.tif 000020
【図２０】
0005657580.tif 000021
【図２１】
0005657580.tif 000022
【図２２】
0005657580.tif 000023
【図２３】
0005657580.tif 000024
【図２４】
0005657580.tif 000025
【図２５】
0005657580.tif 000026
【図２６】
0005657580.tif 000027
【図２７】
0005657580.tif 000028
【図２８】
0005657580.tif 000029
【図２９】
0005657580.tif 000030
【図３０】
0005657580.tif 000031
【図３１】
0005657580.tif 000032
【図３２】
0005657580.tif 000033
【図３３】
0005657580.tif 000034