説明

回路のモジュール間に選択的に使用可能な専用連結を有するモジュール式デジタル信号処理回路

所望の場合に、より大きな(例えば、より複雑および/またはより演算上正確な)DSP演算を行うように、より簡単に連動することができるデジタル信号処理(「DSP」)回路ブロックを提供する。これらのDSPブロックはまた、あるブロックを使用できないにもかかわらず(例えば、回路欠陥のために)、複数のそのようなブロックをつなぎ合わせることを容易にする冗長回路を含んでもよい。シストリックレジスタが、シストリック型の有限インパルス応答(「FIR」)デジタルフィルタを実装するよう、ブロックの使用を容易にするために、DSPブロックの中の種々のポイントに含まれてもよい。

【発明の詳細な説明】
【背景技術】
【0001】
本発明は、デジタル信号処理(「DSP」)回路に関し、より具体的には、より複雑なおよび/またははより数学的精度もしくは演算精度の高いDSP演算を行うように、任意で連動することができ、およびこのように連動する必要があるときに、回路欠陥によってDSPブロックが使用不可能になる場合がある可能性に適応することができる、DSP回路モジュールまたはブロックのアレイに関する。
【0002】
種々の状況では、DSP回路のブロックまたはモジュールの複数のインスタンスで製作される、集積回路が要求される場合がある。そのような集積回路の例には、プログラム可能論理回路(「PLD」)またはフィールドプログラマブルゲートアレイ(「FPGA」)がある。そのようなデバイスは、比較的一般的なプログラム可能論理など、複数列の種々の種類の回路を有する場合がある。また、そのような各列は、DSP回路(すなわち、特定のDSP機能またはDSP機能の特定のセットを実施するように、少なくともある程度まで配線で接続される回路)のブロックを含んでもよい。そのような状態では、列の中の他方の回路の(列)境界内に嵌合するように、DSPブロックの大きさを合わせて作ることが望ましい場合があり得る。これは、DSPブロックが単独では小さすぎて、集積回路が行うのが望ましい場合がある、いくつかのDSP機能を行うことができないことを意味する場合がある。そのような場合には、2つ以上のDSPブロックで、より大きなDSP機能を効率的に行うことができるように、種々の手段で複数のDSPブロックの任意の「つなぎ合わせ(stitching together)」を促進することが望ましいであろう。しかしながら、対抗する懸念として、つなぎ合わせる必要があるDSPブロックと関連付けられる回路のいずれの部分も使用できない場合(例えば、集積回路の製造欠陥のため)、それらのDSPブロックをつなぎ合わせることが、さらにより困難または不可能になり得る場合がある。これによって、一部に欠陥がある集積回路が全く使用できない機会が、非常に増加する場合がある。
【発明の概要】
【課題を解決するための手段】
【0003】
本発明のある可能な側面に従い、所望の場合に、より大きな(例えば、より複雑なおよび/またはより演算上正確な)DSP演算を行うために、より簡単に連動することができるDSP回路ブロックを提供する。例えば、そのようなDSPブロックは、各ブロックのどちらかの側にある他のDSPブロックへ、信号を任意にまたは選択的にルーティングするルーティング回路を含んでもよい。
【0004】
本発明の他の可能な側面に従い、DSPブロック間のルーティング回路はまた、アウトバウンド信号が、2つの他のDSPブロックのうちのどちらかから、各DSPブロックの片側へ行くことを可能にし、インバウンド信号が、2つのDSPブロックのうちのいずれかから、各DSPブロックの片側に来ることを可能にする冗長能力を含んでもよい。別のDSPブロックにつなげることが望ましい、あるDSPブロックが使用できない場合(例えば、回路の欠陥のため)、この冗長能力によって欠陥のあるDSPブロックを効果的に飛ばすことによって、DSPブロックのつなぎ合わせを行うことができる。
【0005】
本開示のなおも他の可能な特徴に従い、DSP回路ブロックは、2つの乗算回路(「乗算器」)を含んでもよい。これらの乗算器は、種々の方法で、互いに独立して、または少なくとも一部独立して作動してもよい。代替として、これらの乗算器は種々の方法で共に作動してもよい。これらの乗算器のうちの1つは、どちらかの乗算器のみによって行うことが可能な基数乗算より著しく大きい1つの乗算を行うように、2つの乗算器を共に使用して容易にすることができるいくつかの任意に使用可能な拡張された能力を有してもよい。
【0006】
本開示のさらに他の可能な特徴に従い、DSPブロックは、DSPブロックがシストリック型の有限インパルス応答(「FIR」)デジタルフィルタの機能を行うことに役立つように、種々のポイントにシストリックレジスタを含んでもよい。
【0007】
その本質および種々の利点である、本発明のさらなる特徴は、添付の図面および続く詳細な説明から、より明らかとなるであろう。
【図面の簡単な説明】
【0008】
【図1】図1は、本発明に従う、代表的な回路の例示的実施形態の、単純化した概略ブロック図である。
【図2】図2は、本発明に従い、図1タイプの回路で使用することができる、回路の例示的実施形態の単純化した概略ブロック図である。
【図3】図3は、本発明に従う、図1に示すタイプの回路の代表的な部分の例示的実施形態の、より詳細であるがなおも単純化した概略ブロック図である。
【図4】図4は、その回路についての議論のいくつかの側面を容易にするために、時計回りに90°回転した図3の回路を示す。
【図5】図5は、本発明に従い、特定のDSP演算の性能のある側面を示す、単純化した図である。
【図6】図6は、本発明に従い、図5の演算を行うための、DSP回路の例示的実施形態を示す、単純化された概略ブロック図である。
【図7】図7は、本発明に従う、別のDSP演算の性能のある側面を示す、単純化した図である。
【図8】図8は、本発明に従い、図7の演算を行うための、DSP回路の例示的実施形態を示す、単純化された概略ブロック図である。
【図9】図9は、本発明に従う、さらに別のDSP演算の性能のある側面を示す、単純化した図である。
【図10】図10は、本発明に従い、図9の演算を行うための、DSP回路の例示的実施形態を示す、単純化された概略ブロック図である。
【図11】図11は、本開示のあるさらなる可能な側面に従う、DSP回路ブロックの別の例示的実施形態の、単純化した概略ブロック図である。
【図12】図12は、本開示のある可能な側面に従う、図11に示すような回路の代表的な部分の、例示的実施形態の単純化した概略ブロック図である。
【図13】図13は、本開示のある可能な側面に従う、図11に示すような回路の別の代表的な部分の、例示的実施形態の単純化した概略ブロック図である。
【図14】図14は、本開示のある可能な側面に従う、図11に示すような回路のなおも別の部分の、例示的実施形態の単純化した概略ブロック図である。
【図15】図15は、本開示のある可能な側面に従う、図14に示すような回路の例示的実施形態の、より詳細であるがなおも単純化した概略ブロック図である。
【図16】図16は、本開示のある可能な側面に従う、図11に示すような回路のなおも別の代表的な部分の、例示的実施形態の単純化した概略ブロック図である。
【図17】図17は、本開示のある可能な側面に従う、図11に示すような回路のさらなる部分の、例示的実施形態の単純化した概略ブロック図である。図17は、図18に示すようなDSP演算を行う、回路の構成を示す。
【図18】図18は、本開示のある可能な側面に従う、DSP演算の性能のある側面を示す、単純化した図である。
【図19】図19は、本開示のある他の可能な側面に従う、図17の回路の複数部分の別の例示的構成を示す。図19は、図20に示すようなDSP演算を行う、回路の構成を示す。
【図20】図20は、本開示のある可能な側面に従う、別のDSP演算の性能のある側面を示す、単純化した図である。
【図21】図21は、本開示のある可能な側面に従う、図11に示すような回路のなおもさらなる部分の、例示的実施形態の単純化した概略ブロック図である。
【図22】図22は、本開示のある可能な側面に従う、さらに別のDSP演算の性能のある側面を示す、単純化した図である。
【図23】図23は、本開示のある可能な側面に従う、集積回路上の図11に示すような回路の2つのインスタンスの、例示的実施形態の単純化したブロック図である。
【図24】図24は図23に類似し、本開示に従う、集積回路上の図11タイプの回路の3つのインスタンスがない場合である。
【図25】図25は、既知のタイプのデジタルフィルタ機能に対する既知の式を示す。
【図26】図26は、図25のフィルタ機能を実装するための既知の回路を示す。
【図27】図27は、図25のフィルタ機能を実装するための代替の「シストリック」回路を示す。
【図28】図28は、本明細書の他の図とよりうまく相関するように、基本的には図27の再描画である。
【図29】図29は、図28に示す機能が、本開示のある可能な側面に従い実装することができる、別の方法を示す。
【図30】図30は、本開示のある可能な側面に従う、図21に示すような回路の2つの隣接するインスタンス(集積回路上の)を示す。
【図31】図31は、本開示のある可能な側面に従い、図30の回路で行うことができるDSP演算の例を示す。
【図32】図32は、本明開示のある可能な側面に従う、図11に示すような回路の複数の隣接するインスタンス(集積回路上の)を示す。
【図33】図33は、本開示のある可能な側面に従う、例示的回路の代表的な部分の単純化した概略ブロック図である。
【発明を実施するための形態】
【0009】
本発明に従う、集積回路(「IC」または「デバイス」)10の例示的実施形態の代表的な部分が、図1に示されている。図1に示す回路は、一部の代表的な回路の列R4〜R9の代表的な部分を含む。これらの列のうちのいずれもが、概して、列RNと称され得る。
【0010】
各列RNは、デジタル信号処理またはDSP回路100のブロックを含む。各列RNはまた、他の回路20の領域から、その列のDSPブロックの左右までを含む。その他の回路20は、列の間だけでなく、その列のDSPブロックからおよびその列のDSPブロックへ、およびその列の論理および他の回路から、その列の論理および他の回路へ、ならびにその列の論理および他の回路の間で信号を伝えるための、論理回路および相互接続導体のような構成要素を含んでもよい。この回路のいくつかまたは全ての種々の側面は、例えば、一般的なデバイス10を、いくつかの異なる形で使用することができるように、プログラム可能であってもよい。例えば、DSPブロック100の回路は、通常、あるDSP機能を行うように、ある程度まで配線で接続されるが、その回路もまた、行われるDSP演算のある側面が、各ユーザの特定の必要性および要件に合致するよう、デバイスの異なるユーザによって変更することができるように、ある程度までプログラム可能であってもよい。そのようなプログラミングは、集積回路上のメモリセルにおける制御データの記憶、集積回路上のヒューズ断、集積回路のマスクプリグラミング、またはいずれか他の好適なプログラミング方法もしくは技術の結果であってもよい。
【0011】
デバイス10は、列が冗長となるように構成されてもよい。これは、例えば、各列RNが、全ての他の列と同一、または実質的に同一であることを意味する。加えて、デバイス10は、任意の列RNに欠陥がある場合、その列のすぐ上方または下方の列が、効果的に欠陥のある列の代わりをすることができるように、構成されてもよい。加えて、効果的に欠陥のある列の代わりをしている列の上方または下方の全ての他の列は、効果的に他の隣接する列に取って代わる。このように、ある欠陥のある回路で不注意に製作される多くのデバイス10を、なおも使用することができ、それによって、製造過程の生産量は著しく増加する。図1は、DSPブロック領域100でこの冗長性を達成するための、代表的な回路を示している。追加の冗長回路が、各列RNの他の部分に提供されるが、図表を過度に複雑にすることを避けるために(また、列のそれらの他の部分は、本発明の主要な焦点ではないため)、図1には示していない。DSPブロック冗長回路については、次のいくつかの段落で一般論として記載する。
【0012】
本発明に従い、DSPブロック100は、隣接する1つのDSPブロックまたは複数のDSPブロックへある信号を送信する、および/または隣接する1つのDSPブロックもしくは複数のDSPブロックからある信号を受信することによって、その機能性を拡張することができる。これらは、隣接するDSPブロック100間の比較的直接的な接続である。これらのDSPブロック間接続は、回路20の一部を形成する相互接続資源など、デバイス10の他のより一般的な相互接続資源には依存しない。むしろ、これらのDSPブロック間信号が、その列における1つ以上の欠陥のために非稼働となっている列を、効果的に「飛び越える」ことができるように、これから記載する冗長回路が採用される可能性がある場合にのみ、これらのDSPブロック間接続は、1つのDSPブロック100から別の隣接するDSPブロック100へ直接進む。
【0013】
代表的な列R7を例に取ると、(本発明に従い)列R7のDSPブロック100から、別のDSPブロックへ進む必要がある信号は、列R7のDSPブロックのノードAから発生してもよい。この信号は、そのDSPブロックのマルチプレクサ回路(「mux」)110の1つの選択可能な入力端子、およびまた列R7上方の列R6の中のDSPブロック100の類似のmux110の1つの選択可能な入力端子に印加される。列R7のmux110の出力信号は、列R6のDSPブロック100の中の宛先に向かう。列R6のmux110の出力は、列R5のDSPブロック100の中の宛先に向かう。列R6に欠陥がなく、そのため使用中である場合、列R7のmux110は、列R6への適用のため、ノードAからの信号を選択するように制御される。しかし、列R6に欠陥があり、そのためデバイス10の回路から効果的に切り離されている場合、列R6のmux110は、列R5への適用のため、ノードAからの信号を選択するように制御される。この例は、任意の列のDSPブロック100からの信号を、すぐ上方の列のDSPブロック100に、または源となる列の2列上方のDSPブロック100に印加するために、冗長mux110をどのように使用することができるかを示している。
【0014】
冗長mux120は、同様に、任意のDSPブロック100から、すぐ下方のDSPブロック100または2列下方のDSPブロック100のどちらかへ、信号をルーティングするために使用することができる。例えば、列R5のDSPブロック100の中のノードBから発生する信号は、列R6およびR7の各々のmux120の1つの選択可能な入力に印加される。列R6が使用中の場合、列R6のmux120は、ノードBからの信号を、列R6の中の宛先へ印加するように制御される。一方で、列R6が使用中でない場合、列R7のmux120は、ノードBからの信号を、列R7の中の宛先へ印加するように制御される。
【0015】
図2は、代表的な冗長mux110または120を制御し得る方法に関する例示的実施形態を示している。mux110/120は、その選択制御入力信号Kの論理状態に基づいて、その出力信号Jとなるように、その主要なまたは選択可能な入力HまたはIのどちらかを選択することができる。例えば、Kがゼロである場合、JはHであってもよく、Kが1の場合、JはIであってもよい。Kは、デバイス(F)10上のヒューズ(F)130、デバイス上のメモリセル(M)130、またはデバイス上の任意の他のプログラム可能な特徴130に由来してもよい。そのようなヒューズ、メモリセルなど130は、(もしあれば)列RNのどこに欠陥があるかが決定され、そのためデバイスを通常通り使用するために、デバイス10から効果的に切り離されなくてはならない後に、そのような各要素130に対して適切な状態にプログラムすることが可能であってもよい。
【0016】
図1に関連して留意すべきことは、各列の幅W(隣接する列の間)は、(1)その列のDSPブロック100、および(2)その列の他方の回路20に対してほぼ同じであることである。現在のような、各列が他の列と実質的に同一であり、および任意の列も、(欠陥がある場合には)完全に非稼働となり、途切れなく別の列によって取って代わられてもよい状況では、これによって、デバイス10上の領域の効率的な使用が促進される。したがって、列が非稼働となり、別の列によって取って代わられる時に、好ましくは、元の列の全機能は、代わりの列に自動的に再び割り当てられる。デバイスのユーザは、どの列が使用されているか、およびどの列が使用されていないかを心配する必要はなく、知る必要さえもない。
【0017】
各DSPブロック100の高さを、列の他の回路20の高さと同じにすると、起こり得る結果には、各DSPブロックのサイズまたは機能的能力を、そのDSPブロックを含む列の隣接する他の回路20のサイズおよび能力と釣り合わせる傾向がある。例えば、DSPブロック100は、そのDSPブロックを含む列の隣接する回路20から、一定数の入力信号を取得することができてもよい。これによって、DSPブロックが行うことができる、DSP演算(例えば、乗算)の数および/またはサイズが制限されてもよい。しかしながら、デバイス10の一部のユーザは、1つのそのような限定されたDSPブロックで行うことができるよりも、大きな乗算を行うことを望む場合がある。そのため、本発明は、例えば、大きな乗算および/または他のDSP演算のいくつかの部分または側面を、別の隣接するDSPブロック100で行うことができるようにすることによって、1つのDSPブロック100の乗算および他の能力の拡張を提供する。本発明に従い、これは、概して図1の110および120に示すように、冗長回路を介して隣接するDSPブロック間に、実質的に直接信号を送信することによってなされる。実質直接的なDSPブロック間接続は、このように、代わりに他の回路20のより一般的な相互接続資源を使用する試みに起因する場合がある、遅延および起こり得る他の資源の枯渇を避けるために使用される。110および120のような冗長性は、列が非稼働にならなくてはならない場合に、1つのDSPブロック100から別のブロックへ行く必要がある信号が、非稼働となっている列の、機能していないDSPブロック100を迂回することができるように、これらのDSPブロック間の相互接続で使用される。
【0018】
図3は、本発明に従う、DSPブロック100の例示的実施形態を示している。DSPブロック100の種々の要素は、以下で早期に識別されるであろう。これらの要素を使用する方法に関するより多くの詳細は、後で提供されるであろう。図3は、図1に示すのと同じ配向にある、代表的なDSPブロック100を示している。しかしながら、DSPブロックの種々の構成要素によって行われる算術演算を説明し、いつこの配向になるかについて議論するのは困難であり得るため、図3の実体は、図4においては異なる配向で正確に再生成される。具体的には、図4は、図3に対して時計回りに90°回転している。したがって、図4の「左」などは、図3の「底部」、「下」、「下方」などと同じであり、図4の「右」などは、図3の「最上部」、「上」、「上方」などと同じである。図1および3によって、上記の隣接するDSPブロック100間の実質的な直接接続が、デバイス10において列から列へ進むことが明確になる。図4のような図は、90°回転した代表的なDSPブロック100を図示しているが、この種の図によって、右または左に移動する信号が、回路の別の列ではなく、むしろ回路の別の縦列へと進んでいることが示されるにもかかわらず、図4のような図に関する以下の議論で、1つの「列」から別の「列」へ進む、そのようなDSPブロック間信号になおも言及することになる。
【0019】
これから図3または図4のどちらかに示すような、代表的なDSPブロック100の基本構造に移ると、ブロック100は、2つの18掛ける18(「18x18」)の乗算回路200aおよび200bを含む。乗算器200の各々は、2つの18ビットのデータワード(考慮中のDSPブロック100を含む列の他方の回路20からの電気データ信号によって表される)を共に乗じ、冗長形式(例えば、1つの36ビットの和ベクトルおよび1つの36ビットの桁上げベクトル(乗算器は、通常の積の最終値を生成するための、最終桁上げ伝播加算器(「CPA」)を含まないため))で、2つの積のベクトル(再び電気信号によって表される)を生成することができる。制御可能なシフタ回路202は、乗算器200aによって出力される和および桁上げ信号ベクトルを、(1)18ビット位置から左(数値または演算の有効の増加)、または(2)全くなし(すなわち、左へのシフトはなく、そのため数値または演算の有効の変化もなし)のどちらかにシフトするように、制御可能である。要素202に対する別の可能な出力条件は、全てゼロであるデータ信号を出力することであってもよい。図2の場合のように、130のような1つ以上のヒューズまたはメモリセルは、上に記載した通り、乗算器200aの出力を左へシフトするべきかどうか(または、第3の可能性として、上記の通り、0のデータを出力)について、要素202を制御するようにプログラムされてもよい。別の可能な代替として、要素202は、実行する機能に対してマスクプログラミング可能であってもよい。本明細書中の全ての場合において、「シフト」は、通常、そうでなければ次の下流回路要素へそれらの信号を伝える(シフトされない場合)ために使用されるであろう導線のセットとは異なる、次の下流回路要素に進む導線のセットへ、信号をルーティングすることを意味する。ビット信号の「演算の有効」、「ビット位置」、「位」などは、通常、信号はいくつかの導線のうちのどれに存在するのかの結果である。
【0020】
代表的なDSPブロック100における次の要素は、4から2への(「4〜2」)圧縮回路210である。圧縮器210は、シフタ202および乗算器200bから受信する、2つの和および桁上げ信号ベクトル(すなわち、そのような4つの信号ベクトルの合計)を組み合わせて、そのような2つの信号ベクトルにすることができる。シフタ202からのベクトルは、18ビット位置だけ、数値の有効が増加する場合があるため、圧縮器210の「幅」は、57ビットにまで増加する必要がある。故に、圧縮器210は、57ビット位置(すなわち、[57:1])を有するように示されている。
【0021】
圧縮器210によって出力される和および桁上げベクトル(57ビットもの数を含み得る各ベクトル)は、mux220aおよび220b、ならびにまた制御可能なシフタ回路230にも印加される。mux回路220aは、図4に見られる通り、左に隣接するDSPブロックへの適用のために、圧縮器210によって出力される57ビットの信号ベクトルの種々の38ビットのサブセットのうちのいずれか1つを選択することができる。(本議論中、全てのそのような38ビットのデータ値またはサブセットの中のビットは、連続する数字上有効がある。例えば、57ビット源からの比較的低位のビットであってもよいか、またはその源から比較的高位のビットであってもよい。しかし、どちらの場合でも、全て連続ビットの有効を有する。そのようなサブセットを選択することは、通常、いくつかのグループの導線のうちのどの1つが、選択されたサブセットにおける信号の源として選択されるかの結果である。)同様に、mux回路220bは、図4に見られる通り、左に隣接するDSPブロックへの適用のために、圧縮器210によって出力される57ビットの信号ベクトルの種々の38ビットのサブセットのうちのいずれか1つを選択することができる。Mた、mux220aおよび220bは、所望の場合には、全てゼロであるデータを出力する能力を有することもできる。これは、本開示中に示し記載する、mux(例えば、220、232、242、248など)のいずれか、および制御可能なシフタ(例えば、202、230など)のいずれかが有してもよい能力である。いくつかのmux(例えば、242、252、および262)は、明示するこの能力(例えば、これらのmuxへの選択可能な入力の1セットの接地244)を伴い図示されている。この回路は、それを含んでもよい全ての他の要素(例えば、202、220、230、232、248など)の図示のためには繰り返されず(図表を過度に複雑にすることを避けるため)、またはこの能力は、これらの他の要素の全てに関する議論においてもはっきりとは言及されないが、これらの一般的な種類の全要素が、この能力を有してもよいことは理解されるであろう。
【0022】
制御可能なシフタ230は、それに印加されるビットを18ビット左へ(それによって、それらのビットの数値の有効が増加する)、または18ビット右へ(それによって、それらのビットの数値の有効が減少する)シフトすることができる。第3の代替として、シフタ230は、それに印加されるデータへのシフトを適用しなくてもよい。要素220および230の全ては、それらの種々の可能な機能のどれを行うべきかを選択するように、図2の130のような、プログラム可能なヒューズまたはメモリ回路要素によって制御されてもよい(またはマスクプログラミング可能であってもよい)。
【0023】
図3および4に示す代表的なDSPブロック100から出るためには、mux220bの出力は、冗長mux110aおよび110b(より一般的にまたは一般的には、図1および2に示す冗長mux110の特定のインスタンスである)によって選択されなくてはならないことに留意すること。mux110aおよび110bへの代替入力は、図3では一部のみ点線で示し、図4には全く示していない(図3および4を過度に複雑にすることを避けるため)。しかし、これらの点線の入力は、DSPブロック100のmux220bから、図3のDSPブロックの下方(または図4のDSPブロックの左)へ来ることは、図1から明らかであろう。
【0024】
mux232は、冗長mux120aおよび120bから、38ビットの和および桁上げベクトルを受信する。また一方、冗長mux120aおよび120bは、より一般的にまたは一般的に、図1の120に示す冗長muxのタイプの特定のインスタンスである。mux120aおよび120bへの実線の入力は、DSPブロック100のmux220aから、図3のDSPブロックのすぐ上方(または、図4のDSPブロックのすぐ右)へ来ている。mux120aおよび120bへの代替の点線の入力(図3および図4を過度に複雑にすることを避けるために、図3では一部のみを示し、図4には全く示していない)は、DSPブロック100のmux220aから、図3のDSPブロックの上方に2つ(または、図4のDSPブロックの右に2つ)来ている。また、mux232は、38ビットの和および桁上げ信号ベクトルを、DSPブロック100の冗長mux110aおよび110bから、図3のDSPブロックのすぐ下方(または、図4のDSPブロックのすぐ左)へ来るリード線から受信する。mux232は、mux120aおよび120bからのベクトル、またはmux232が受信する他のベクトルのどちらかを選択することができる。mux232の制御は、mux220のような、他の種々の要素の制御と類似し得る。
【0025】
図3および4に示す代表的なDSPブロック100の中の次の要素は、4−2圧縮回路240である。サイズが異なるものの、圧縮器240は圧縮器210に類似し得る。言い換えると、圧縮器240は、受信する4つの38ビットの和および桁上げ信号ベクトルを、2つのさらに38ビットの和および桁上げ信号ベクトルに組み合わせることができる。より大きな乗算が行われている場合には、圧縮器240は、別の隣接するDSPブロック100で、類似する圧縮器240と鎖のように連動して作動する必要がある場合がある。したがって、圧縮器240は加えて、mux242から、より低位の(すなわち、数値の有効がより低い)信号ビットを受信することができる。実際のより低位の源から中での連鎖(chaining−in)がない場合、mux242は、接地電位244の源から、これらのより低位ビットを選択することができる。代替として、そのような中での連鎖がある場合には、mux242は冗長mux120cからそれらの出力を手に入れる。mux120cは、120aおよび120bのような、muxの別のインスタンスである。mux120cへの実線の入力は、DSPブロック100の圧縮器240から、図3のブロックのすぐ上方(または、図4のDSPブロックのすぐ右)へ来ている。mux120cへの点線の入力(図示の過度の複雑性避けるために、図3には一部のみ示し、図4からは完全に省略)は、DSPブロック100の圧縮器240から、図3のブロックの上方に2つ(または、図4のブロックの右に2つ)の2つの出力である。圧縮器240の底部(図3)または左(図4)から落ちてくる2つの出力は、圧縮器240によって行う演算に起因する、最大有効の、最高位の、またはオーバーフロー出力信号のビットである。また一方、より大きな乗算が行われている場合、これらのオーバーフロービットは、mux120cおよび242を介して、隣接するDSPブロックの圧縮器240の最低位の入力に連鎖することができる。DSPブロックの連鎖がない場合、mux232は、0のデータ信号を出力するように制御することができる。
【0026】
圧縮器240によって出力される、38ビットの和および桁上げベクトルは、3から2(「3−2」)の圧縮回路250に印加される。また、隣接するDSPブロック100によって出力される最終積も、冗長mux120dおよび120e、ならびにmux248を介して、3−2圧縮器250に印加することができる。また一方、このDSPブロック間ルーティングの特徴は、あるより複雑なDSP演算を行うべきときに、使用することができる。mux120dおよび120eの配置および使用は、120aおよび120bなどのその他のmuxの配置および使用に類似する。したがって、mux120dおよび120eへの実線の入力は、DSPブロック100の桁上げ伝播加算器(CPA)回路260の主要な出力から、図3および4に示すブロックの上方(図3)または右(図4)へ来ている。冗長mux120dおよび120eへの代替の点線の入力(再び、図3にのみ一部のみを示す)は、DSPブロック100のCPA260の主要な出力から、図3および4のブロックの上方に2つ(図3)、または右に2つ(図4)へ来ている。(DSPブロックの連鎖がない場合、mux248は、0のデータ信号を出力するように制御される。)3−2圧縮器250は、最終桁上げ伝播加算器(「CPA」)260に印加される、さらなる和および桁上げ信号ベクトルを生成するように、圧縮器240からの和および桁上げ信号ベクトルを、mux248によって出力されるデータと組み合わせることができる。代表的なDSPブロック100が、38ビットより大きな算術演算に関与する場合、より低位の信号ビットを、隣接するDSPブロック100から、圧縮器250およびCPA260に印加することができ、圧縮器250の場合にはmux120fおよび252を介して、ならびにCPA260の場合にはmux120gおよび262を介する。同様に、より長い算術演算のために、複数の要素250および複数の要素260を連鎖させる必要がある場合には、より高位の信号ビットは、要素250および260から、隣接するDSPブロック100の要素120f/252/250および120g/262/260へ出力することができる。要素120f、252、および244の配置および使用は、要素120c、242、および244の上記の配置および使用に類似し得る。要素120g、262、および244も同じである。したがって、要素120f/252/244および120g/262/244のさらなる説明は必要ではない。
【0027】
別の隣接するDSPブロック100のmux248に戻って実質的に直接ルーティング可能であることに加えて、CPA260によって出力される、最終的な最大38ビット信号の積は、通常、図1に示す代表的なDSPブロック100を含む、列RNの他方の回路20に印加される。
【0028】
これから、1つ以上のDSPブロック100が補助することができる、種々の操作モードの例の考察に移る。
【0029】
A. 18x18および18x18複素数
18x18の乗算、および18x18の虚数乗法(例えば、(a+bi)x(c+di))のような比較的単純なモードは、1つのDSPブロック100内で行うことができる。例えば、どちらかの乗算器200も、18x18の乗算から和および桁上げ信号ベクトルを形成するように使用することができ、それらのベクトルは、後続の構成要素を通って、CPA260へと下に渡すことができ、これによって、乗算の最終積を形成する。
【0030】
B. 4つの18x18の和
4つの18x18の乗算の積の和は、2つの隣接するDSPブロックを使用して形成することができる。(「隣接する」は、冗長回路の演算によって非稼働となっている、介在する列がない場合には、直接隣接するか、または代替として、そのような介在する非稼働の列を別とすれば、隣接することを意味する。)以下などの議論において、A、B、Cなどの各文字は、18ビット入力を示すかまたは表し、AB、CDなどの各文字の対は、その対の文字で識別される、2つの18ビット入力の乗算に対する乗算の結果である。そのような文字の対は、乗算結果に対する中間和および桁上げベクトル、または最終の乗算の積のどちらかを表してもよい。したがって、AB+CD+EF+GHは、8つの対を成す18ビット入力の4つの積の和である。
【0031】
第1のDSPブロック100の乗算器200aは、ABを形成するように使用してもよい。そのDSPブロックの乗算器200bは、CDを形成するように使用してもよい。第1のDSPブロックの圧縮器210は、AB+CDを形成する。mux220bは、隣接するDSPブロック100のmux232および圧縮器240へ、AB+CDをルーティングするように使用することができる。隣接するDSPブロックの乗算器200aは、EFを形成するように使用することができる。その隣接するブロックの乗算器200bは、GHを形成するように使用することができる。その隣接するブロックの圧縮器210は、EF+GHを形成する。その隣接するブロックの圧縮器240は、その同じブロックのCPA260が最終積の形態で出力する、AB+CD+EF+GHを形成する。AB+CDを形成するブロックは、EF+GHおよびAB+CD+EF+GHを形成するブロックのどちらかの側のブロックであり得ることに留意すべきである。
【0032】
C. 2つの36x18の和
以下などの議論において、A、B、Cなどのような文字は前と同じ意味を有し、AC、BCなどのような文字の対は前と同じ意味を有し、(A,B)のような文字の対は、左の文字が18より上位のビットを指し、右の文字が18より下位のビットを指す36ビットのデータワードを示し、(A,B)*Cのような文字の組み合わせは、18ビットのデータワード(例えば、C)が乗じられる36ビットのデータワード(例えば、(A,B))の乗算に対する乗算の結果を示す。したがって、本明細書で議論しているモードの目的は、(A,B)*C+(D,E)*F生成することである。
【0033】
図5は、上記の結果がどのように作り上げられるかを(算術的に)示している。図5のパート1は、実施される36x18の乗算のうちの1つを示している(すなわち、(A,B)*C)。パート2は、実施される36x18の乗算のうちの他方を示している(すなわち、(D,E)*F)。パート3は、(A,B)*C+(D,E)*Fを生成するように、種々の部分積を生成し、その後、加算のために垂直方向に整列させる方法を示している。具体的には、2つの部分積(A,B)*Cは、ACおよびBCとして生成され、ACは、BCに対して18ビット位置だけ左へシフトする。同様に、2つの部分積(D,E)*Fは、DFおよびEFとして生成され、DFは、EFに対して18ビット位置だけ左へシフトする。BC、AC、EF、およびDFの全ては、図5のパート3に示す通りに加算される。
【0034】
図6は、2つの隣接するDSPブロック100が、上の演算を形成するようにどのように構成され得るのかを示している。図6は、冗長回路の図示を省略し、2つの直接隣接するDSPブロック100aおよび100bが使用されると仮定して、単純化している。(前に図示および記載した冗長回路の全ては、図6の回路に実際に存在し、この冗長回路は、使用することができない介在DSPブロックによって、互いから分離している2つのDSPブロックと共に、効果的に置くように使用することができることは、理解されるであろう。)図6に示す通り、DSPブロック100aの乗算器200aはACを形成し、DSPブロック100aの乗算器200bはDFを形成し、DSPブロック100bの乗算器200aはBCを形成し、DSPブロック100bの乗算器200bはEFを形成する。ブロック100aの圧縮器210は、ACおよびDFを圧縮(加算)する。ブロック100bの圧縮器210は、BCおよびEFを圧縮(加算)する。ブロック100aの圧縮器210の出力のより下位の18ビットは、要素220b(ブロック100a)および232(ブロック100b)を介して、ブロック100bの圧縮器240にルーティングされる。(このルーティングの経路は、図6の点線211によって強調されている。)これによって、ブロック100bは、図5のパート3において、最終積の一部分を点線の右に形成することができる。図5のパート3における点線の左のデータは、ブロック100aに残り、最終和のその部分として、そのブロックによって出力される。
【0035】
より具体的には、ブロック100aにおいて、シフタ230は、ブロック100bへ転送されない、圧縮器210のより上位の出力が、ブロック100aの圧縮器240のより下位の部分にシフトされるよう、圧縮器210の出力を18ビット位置だけ右へシフトするように使用される。ブロック100bでは、シフタ230が、圧縮器210から18ビット位置だけ左へデータをシフトさせ、ブロック100bのmux回路232を通過するデータは、そのmux回路232と関連付けられる圧縮器240へのより上位の入力に印加される。したがって、ブロック100bの圧縮器240は、図5のパート3において、点線の右に示す加算の終了を開始することができる。ブロック100bの圧縮器240の最大有効の末端からの任意の桁上げまたはオーバーフローは、ブロック100aのmux242によって、ブロック100aの圧縮器240の最小有効の末端に適用される。これによって、圧縮器240の両方が、1つのさらにより長い圧縮器として、効果的に共に作動することができる。
【0036】
圧縮器240の各々によって出力されるデータは、それぞれ関連付けられる圧縮器250を通って、それぞれ関連付けられる桁上げ伝播加算器(「CPA」)260へ流れ、(A,B)*C+(D,E)*Fに対する最終和の出力データが生成される。また一方、ブロック100bのCPA260の最大有効の末端からの任意の桁上げオーバーフローは、ブロック100aのmux262を介して、ブロック100aのCPA260の最小有効の末端に適用される。これによって、再び、CPA260の両方が、1つのさらにより長いCPAとして、効果的に共に作動することができる。したがって、ブロック100aが、最終積(A,B)*C+(D,E)*Fの18より上位のビットを出力する一方で、ブロック100bは、その最終積の36より下位のビットを出力する。
【0037】
D. 2つのDSPブロックを使用する36x36モード
以下などの議論において、(A,B)のような文字の対は、再び36ビットのデータワードを示し、左の文字が18より上位のビットを指し、右の文字が18より下位のビットを指す。Lまた、BDのような文字の対も、基本的には前と同じ意味を有する(ここでは、そのような文字の対は、通常、2つの異なる36ビットのデータワードのうちの2つの18ビット部分の積を指す)。したがって、本セクションで議論している動作の目的は、(A,B)および(C,D)の積、または(A,B)*(C,D)を生成することである。
【0038】
図7は、上記の結果がどのように作り上げられるかを算術的に示している。図7のパート1は、行われる乗算を示している。パート2は、形成される4つの部分積、およびこれらの4つの部分積が、垂直方向に加算することができるよう、相対的な演算の有効を調整するために、互いに対して左から右に位置づけられる方法を示している。具体的には、最大有効の部分積BDは、被乗数(A,B)および乗数(C,D)の各々の18ビットより下位のビットの積である。次の部分積ADは、被乗数(A,B)の18より上位のビット、および乗数(C,D)の18より下位のビットの積である。部分積CBは、被乗数(A,B)の18より下位のビット、および乗数(C,D)の18より上位のビットの積である。部分積ACは、被乗数および乗数の各々の18より上位のビットの積である。既に言及してきた通り、図7のパート2もまた、部分積ADおよびCBが、部分積BDに対して18ビット位置だけ左へどのようにシフトするのか、ならびに部分積ACが、部分積ADおよびCBに対して18より大きいビット位置だけ左へどのようにシフトするのかを示している。そのようなシフトの後、図7のパート2に示す4つの部分積は、(A,B)および(C,D)の所望の最終積、すなわち(A,B)*(C,D)を生成するように、垂直方向に加算することができる。
【0039】
2つの隣接するDSPブロック100は、図7によって図示する算術的機能を実施するように使用することができる。(再び、「隣接する」は、介在する列の中に非稼働になっているものがない場合は直接隣接するか、または非稼働になっている介在する列の対向側に隣接するかのいずれかの意味である。)図8は、これが2つの隣接するDSPブロック100aおよび100bを使用して(および、再び、図を極度に複雑化するのを避けるために、冗長マルチプレクサおよび他の冗長接続の図示を省略して)、どのように行うことができるのかを示している。
【0040】
図8に示す通り、DSPブロック100aの乗算器200aは、部分積ACを形成する。DSPブロック100aの乗算器200bは、部分積CBを形成する。DSPブロック100bの乗算器200aおよび200bは、それぞれ部分積ADおよびBDを形成する。DSPブロック100aのシフタ202は、部分積ACを部分積CBに対して、18ビット位置だけ左にシフトさせ、そのDSPブロックの圧縮器210が、互いに対してそのようにシフトするように、それら2つの部分積を加算する。DSPブロック100bのシフタ202は、部分積ADを部分積BDに対して、18ビット位置だけ左にシフトさせ、そのDSPブロックの圧縮器210が、互いに対してそのようにシフトするように、それら2つの部分積を加算する。
【0041】
DSPブロック100aの圧縮器210によって出力される、18の最小有効ビットは、ブロック100aの要素220bおよびブロック100bの要素232を介して、ブロック100bの圧縮器240にルーティングされ、これらのビットは、関連付けられる圧縮器240の入力のより上位の末端へルーティングされる。(点線213によってこのルーティングを強調している。)DSPブロック100bの圧縮器210によって出力される、18の最大有効ビットは、ブロック100bの要素220aおよびブロック100aの要素232を介して、ブロック100aの圧縮器240にルーティングされ、これらのビットは、関連付けられる圧縮器の入力のより下位の末端へルーティングされる。(点線215によってこのルーティングを強調している。)DSPブロック100aのシフタ230は、ブロック100aからブロック100bへ転送されていた、より下位のビットが、ブロック100aの圧縮器240に印加されるのを防止するように、そのブロックの圧縮器210によって出力されるデータを、18ビット右へシフトさせる。DSPブロック100bのシフタ230は、ブロック100bからブロック100aへ転送されていた、より上位のビットが、ブロック100bの圧縮器240に印加されるのを防止するように、そのブロックの圧縮器210によって出力されるデータを、18ビット左へシフトさせる。
【0042】
DSPブロック100aおよび100bの圧縮器240は、それらに印加される部分積の情報を加算するように連動する(ブロック100aの要素242は、ブロック100bの圧縮器240の最高位(最大有効)のビット位置から、ブロック100aの圧縮器240の最低位(最小有効)のビット位置へ、任意のオーバーフローを印加する)。したがって、ブロック100aの圧縮器240は、図7のパート2において、垂直な点線の左のデータを加算する結果の形成を開始している一方で、ブロック100bの圧縮器240は、同様にその点線の右のデータに対して行っている。
【0043】
圧縮器240の各々によって出力されるデータは、それぞれの圧縮器250を通って、それぞれの桁上げ伝播加算器(「CPA」)260に流れる。また一方、ブロック100aの要素262は、ブロック100bのCPA260の最大有効の末端から、ブロック100aのCPA260の最小有効の末端へ、任意の桁上げ出力を印加する。これら2つのCPA260の最終出力は、最終積(A,B)*(C,D)を一括して備え、ブロック100aのCPA260の出力が、その最終積のより上位のビットを構成し、ブロック100bのCPA260の出力が、その最終積のより下位のビットを構成する。
【0044】
E. 4つのDSPブロックを使用する54x54モード
本発明に従うDSPブロック100をどのように使用することができるかの別の例が、図9および10によって図示されている。本議論では、(A,B,C)のような文字の3つ揃いは、文字Aが18の最大有効ビットを示し、文字Bが18ビットの中間の演算の有効を示し、文字Cが18の最小有効ビットを示す、54ビットのデータワードを指す。AFのような文字の対は、1つの54ビットのデータワードからの18ビットA掛ける別の54ビットのデータワードからの18Fの部分積を指す。本セクションで議論しているモードの目的は、2つの54ビットのデータワードの積、すなわち(A,B,C)掛ける(D,E,F)または(A,B,C)*(D,E,F)の積を生成することである。しかしながら、108ビットに対する正確な精度は、積には要求されないと推定される。したがって、最小有効の部分積CFは算出されず、最終(略)積を生成するように使用もされない。
【0045】
図9は、上記の積が、複数の部分積からどのように作り上げられるかを算術的に示している。図10は、図9に示す通り、積を作り上げるために使用することができる、4つのDSPブロック100a〜100dを示している。(また一方、便宜上、図10では、この範囲のDSPブロックは非稼働ではないため、4つの直接隣接するDSPブロック100が使用可能であると推定している。したがって、図10では、本明細書の他の場所に示し記載する、冗長回路の図示を省略している。しかし、ブロック100a〜dのうちの1つが、非稼働となっているはずの場合には、その冗長回路が好ましくは存在し、DSPブロック100を、図10との関係で記載した機能を行うのに役立つよう、使用することが可能となるように、使用することができる。)図9のパート1は、行われる乗算を示している。図9のパート2は、2つの左側のDSPブロック100aおよび100bにて形成され、適切に組み合わされる、部分積を示している。図9のパート3は、2つの右側のDSPブロック100cおよび100dにおいて形成され、適切に組み合わされる部分積を示している。図9のパート3からの36より上位のビット(すなわち、パート3における点線の左のビット)は、主にDSPブロック100bの最終段階において、図9のパート2からの36より下位のビット(すなわち、パート2における点線の右のビット)に加算される。したがって、積の72より上位のビットは、DSPブロック100aおよび100bによって出力される。積の追加の18より下位のビットは、DSPブロック100dから利用可能である。先に言及した通り、積のなおもより下位のビットは、算出されず、利用可能でもない。したがって、この場合の「積」は、非常に高い精度での近似であるものの、単なる近似であるにすぎない。具体的には、これは、最小有効の部分積CFが算出されず、図9および10のどこにも使用されていないという事実による。
【0046】
これよりより詳細に図9および10を考慮する際には、DSPブロック100aおよび100bで行われる動作(図9のパート2に示す通り)は、最初、図7および8に示し、それらの図と関連して記載することと同じであるに気づくであろう。具体的には、この動作には、2つの36ビットのデータワードの積(この場合には、積(A,B)*(D,E))を形成するために、2つのDSPブロック100aおよび100bを使用する。2つのDSPブロックの機能性のこの側面は、図7および8との関連で既に完全に記載してきたため、図9のパート2、または図10のDSPブロック100aおよび100bと関連して、再び詳細に記載する必要はないであろう。
【0047】
これより図9のパート3、および図10のDSPブロック100cおよび100dに移ると、これら2つのDSPブロックにて行われる動作は、最初、図5および6に示し、それらの図と関連して記載することに少々類似していることに気づくであろう。しかしながら、図9のパート3の点線は、図5のパート3の点線とは異なる場所にあり、そのため、図10のDSPブロック100cおよび100dがこの動作を行う手段は、図6用に上に記載した流れとは少々異なる。図10で使用される少々異なる流れについては、次の段落に記載する。
【0048】
DSPブロック100cの乗算器200aおよび200bは、部分積AFおよびDCをそれぞれ形成する。ブロック100cの圧縮器210は、これら2つの部分積を共に加算する。DSPブロック100dの乗算器200aおよび200bは部分積BFおよびECを形成し、そのブロックの圧縮器210は、これら2つの部分積を共に加算する。ブロック100dの220a、およびブロック100cの232のルーティングによって、ブロック100dの圧縮器210によって出力される18より上位のビットを、ブロック100cの圧縮器240のより下位の末端に印加する。ブロック100dのシフタ230は、そのブロックの圧縮器210iの出力を、18ビット位置だけ左へシフトさせる。ブロック100cの圧縮器240は、それに印加される4つのベクトルを2つのベクトルにまで減らして圧縮し、ベクトルは、そのブロックの圧縮器250を通って、そのブロックのCPA260に至るまで流れる。(これは、基本的には、図9のパート3において、点線の左に必要とされる、最終加算動作である。)ブロック100dの圧縮器240の出力は、同様に、そのブロックの圧縮器250を通って、そのブロックのCPA260へと下に流れる。(これは、図9のパート3において、点線の左にあるものに対応する。)ブロック100cおよび100dのCPA260は、図9のパート3に示す動作の最終和を生成するように連動する。ブロック100bの要素248は、その結果の38より上位のビット(ブロック100cのCPA260によって出力される)を、ブロック100aおよび100bで行われている動作への加算用のブロック100b(図9のパート2に示す通り)の中へルーティングするように使用される。したがって、最終結果は、(1)ブロック100aおよび100bのCPA260によって出力されている、(A,B,C)*(D,E,F)の72より上位のビット、および(2)ブロック100dのCPA260によって出力されている、その(近似)積の18より上位(より下位)のビットである。
【0049】
前述のいくつかの側面を要約し、また論じてきたことを拡張するいくつかの点において、デジタル信号処理(「DSP」)ブロック(例えば、100)は、第1および第2のNビット(例えば、18ビット)乗算回路(例えば、200aおよび200b)を含んでもよい。DSPブロックは、(1)ゼロビット位置および(2)より上位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、第1の乗算回路の出力をシフトするための第1のシフタ回路(例えば、202)をさらに含んでもよい。DSPブロックは、第1のシフタ回路および第2の乗算回路の出力を加法的に組み合わせるための第1の圧縮回路(例えば、210)をなおもさらに含んでもよい。DSPブロックは、DSP回路ブロックのそれぞれの対向側にある、第1および第2の他のDSP回路ブロックへ、第1の圧縮回路の出力を選択的にルーティングするための回路(例えば、220aおよび220b)をその上さらに含んでもよい。DSPブロックは、(1)ゼロビット位置、(2)より上位の演算の有効に向かうNビット位置、および(3)より下位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、第1の圧縮回路の出力をシフトするための第2のシフタ回路(例えば、230)をなおもさらに含んでもよい。DSPブロックは、第1および第2の他のDSP回路ブロックのうちのどちらかで、第1の圧縮回路から受信される任意の出力を加法的に組み合わせるための第2の圧縮回路(例えば、240)をその上さらに含んでもよい。
【0050】
上に記載したDSP回路ブロックでは、ルーティング回路(例えば、220aおよび/または220b)は、第1の圧縮回路(例えば、210)の出力の複数のサブセットのうちのいずれか1つをルーティングするために選択するように制御可能であってもよい。これらの選択可能なサブセットは、(1)第1の圧縮回路の最大有効出力ビット位置を含むサブセット、および(2)第1の圧縮回路の最小有効出力ビット位置を含むサブセットを含んでもよい。
【0051】
上に記載したDSP回路ブロックでは、第2の圧縮回路(例えば、240)は、第2の圧縮回路のオーバーフロー出力信号を、第1の他のDSP回路ブロックに印加するためのオーバーフロー出力回路(例えば、圧縮器240の最大有効の末端から、隣接するDSPブロックへの出力リード線)と、第2の他のDSP回路ブロックで第2の圧縮回路のオーバーフロー出力信号を選択的に受信するためのオーバーフロー入力回路(例えば、242)とを含んでもよい。
【0052】
上に記載したDSP回路ブロックは、第2の圧縮回路の出力と、第2の他のDSP回路ブロックから受信される任意のさらなる出力とを、加法的に組み合わせるための第3の圧縮回路(例えば、250)と、さらなる出力として、第1の他のDSP回路ブロックへ、第3の圧縮回路の出力を選択的にルーティングするためのさらなるルーティング回路(例えば、248)とをさらに含んでもよい。そのようなDSP回路ブロックでは、第3の圧縮回路(例えば、250)は、第3の圧縮回路のオーバーフロー出力信号を、第1の他のDSP回路ブロックに印加するためのオーバーフロー出力回路(例えば、圧縮器250の最大有効の末端から、隣接するDSPブロックへの出力リード線)と、第2の他のDSP回路ブロックで第3の圧縮回路のオーバーフロー出力信号を選択的に受信するためのオーバーフロー入力回路(例えば、252)とを含んでもよい。
【0053】
上記のさらなるルーティング回路(例えば、248)を含むDSP回路では、そのさらなるルーティング回路は、さらなる出力を生成するように、第3の圧縮回路(例えば、250)の出力に作用するための桁上げ伝播加算器(「CPA」)回路(例えば、260)を含んでもよい。CPA回路は、CPA回路の桁上げ出力信号を、第1の他のDSP回路ブロックに印加するための桁上げ出力回路(例えば、CPA260の最大有効の末端から、隣接するDSPブロックへの出力リード線)と、第2の他のDSP回路ブロックでCPA回路の桁上げ出力信号を選択的に受信するための桁上げ入力回路(例えば、262)を含んでもよい。
【0054】
上に記載したDSP回路ブロックは、第1の他のDSP回路ブロックが、(1)DSP回路ブロックに直接隣接する、別のDSP回路ブロック、および(2)DSP回路ブロックに直接隣接しない、さらに別のDSP回路ブロックのうちの選択可能な1つであることを可能にするための、冗長回路(例えば、110および/または120)をさらに含んでもよい。例えば、DSP回路ブロックが図1の列R7にある場合、第1の他のDSPブロックは、(1)列R8内または(2)列R9内のどちらかにあり得る。そのような配置では、さらに別のDSP回路ブロック(例えば、列R9の中のブロック)は、別のDSP回路ブロック(例えば、列R8の中のブロック)に直接隣接する。
【0055】
上に記載したDSP回路ブロックはまた、第2の他のDSP回路ブロックが、(1)DSP回路ブロックに直接隣接する、なおも別のDSP回路ブロック、および(2)DSP回路ブロックに直接隣接しない、なおもさらに他のDSP回路ブロックのうちの選択可能な1つであることを可能にするための、さらなる冗長回路(例えば、110および/または120)を含んでもよい。例えば、DSP回路ブロックが図1の列R7にある場合、第2の他のDSPブロックは、(1)列R6内または(2)列R5内のどちらかにあり得る。そのような配置では、なおもさらに他のDSP回路ブロック(例えば、列R5の中のブロック)は、なおも別のDSP回路ブロック(例えば、列6の中のブロック)に直接隣接する。
【0056】
本発明の他の可能な側面に従い、DSP回路(例えば、10)は、複数のDSP回路ブロック(例えば、100)を備えてもよく、それらの各々は、その回路ブロック(例えば、A、B、Cなど)に印加される信号に関するDSP演算(例えば、200、202、210、230、240など)を行うことができ、DSP回路ブロックの各々は、DSP回路ブロックのそれぞれの対向側にある、第1および第2の他のDSP回路ブロックへ、DSP演算のうちの少なくともいくつかの出力を選択的にルーティングするための回路(例えば、220、232、242など)を含んでもよい。そのような場合、選択的にルーティングするための回路は、DSP回路ブロック用の第1の他のDSP回路ブロックが、(1)そのDSP回路ブロックに直接隣接する、別のDSP回路ブロック、および(2)そのDSP回路ブロックに直接隣接しない、さらに別のDSP回路ブロックのうちの選択可能な1つであることを可能にするための、冗長回路(例えば、110および/または120)を含んでもよい。例えば、DSP回路ブロックが図1の列R7にある場合、第1の他のDSPブロックは、(1)列R8内または(2)列R9内のどちらかにあり得る。そのような配置では、さらに別のDSP回路ブロック(例えば、列R9の中のブロック)は、別のDSP回路ブロック(例えば、列R8の中のブロック)に直接隣接する。
【0057】
上に記載したDSP回路で選択的にルーティングするための回路は、DSP回路ブロック用の第2の他のDSP回路ブロックが、(1)そのDSP回路ブロックに直接隣接する、なおも別のDSP回路ブロック、および(2)そのDSP回路ブロックに直接隣接しない、なおもさらに他のDSP回路ブロックのうちの選択可能な1つであることを可能にするための、さらなる冗長回路(例えば、110および/または120)をさらに含んでもよい。例えば、DSP回路ブロックが図1の列R7にある場合、第2の他のDSPブロックは、(1)列R6内または(2)列R5内のどちらかにあり得る。そのような配置では、なおもさらに他のDSP回路ブロック(例えば、列R5の中のブロック)は、なおも別のDSP回路ブロック(例えば、列6の中のブロック)に直接隣接する。
【0058】
上に記載したDSP回路では、DSP回路ブロックの各々の選択的ルーティング用の回路は、DSP回路ブロックのうちの第1および第2の他の回路が、行うことができる全てのDSP演算ではないが、いくつかより下流にある、DSP回路ブロックのうちの第1および第2の他の回路の入力へ、出力を選択的にルーティングしてもよい。例えば、選択的ルーティング回路220は、1つのDSPブロックの圧縮器210の出力を、別のDSPブロックの圧縮器240の入力へルーティングすることができ、圧縮器240は、他方のDSPブロックのいくつかの(全てではないが)他のDSP演算より下流にある(例えば、演算部200、202、210、および230より下流にあるが、演算部250および260より上流にある)。
【0059】
本発明のなおも他の可能な側面に従い、DSP回路(例えば、10)は、複数のDSP回路ブロック(例えば、100)を含んでもよく、それらの各々は、次々に連続して複数のDSP演算(例えば、200、202、210、230、240など)を行うことができる。DSP回路ブロックの各々は、そのDSP回路ブロックのDSP演算(例えば、210)の少なくとも1つの出力を、そのDSP回路ブロックのそれぞれの対向側にある、DSP回路ブロックのうちの第1および第2の他のブロックへ選択的にルーティングするための、回路(例えば、220)をさらに含んでもよい。各DSP回路ブロックで選択的にルーティングするための回路は、それら他のDSP回路ブロックにおいてDSP演算が連続する中の中間にある、第1および第2の他のDSP回路ブロックのDSP演算への入力へ、出力のうちの少なくともいくつかを選択的にルーティングしてもよい。例えば、ルーティング回路220は、DSPブロックの出力を、別のDSPブロックの圧縮器240の入力へルーティングすることができ、圧縮器240は、DSP演算が連続する中の中間にある(すなわち、200および202のようなDSP演算が先行し、250および260のようなDSP演算が続く)。
【0060】
上に記載したDSP回路では、入力の少なくともいくつかは、選択的にルーティングするための回路が、それら少なくともいくつかの入力へ選択的にルーティングされる出力を受信した、その送信元のDSP回路ブロックが連続する中のポイントとは異なる、DSPブロックが連続する中のポイントでの、DSP演算への入力であってもよい。例えば、ルーティング要素220が、別のDSPブロックで圧縮器240に印加するように、そこから出力を獲得する圧縮器210は、圧縮器240が第2の言及したDSPブロックでDSP演算が連続する中にあるポイントとは異なる、第1の言及したDSPブロックのDSP演算が連続する中のポイントにある。
【0061】
上に記載したDSP回路では、各DSP回路ブロックは、そのDSP回路ブロックのDSP演算の第2の出力を、第1の他のDSP回路ブロックの同じDSP演算の入力へ選択的にルーティングするための、第2の回路(例えば、圧縮器240の最大有効の末端から、隣接するDSPブロックへのリード線)をさらに含んでもよい。例えば、直前に言及したリード線および要素242によって、オーバーフロー信号は、1つのDSPブロックの圧縮器240から、別のDSPブロックの圧縮器240へ進むことができる。
【0062】
上に記載したDSP回路では、各DSP回路ブロックは、そのDSP回路ブロックの最終的なDSP演算(例えば、260)の出力を、その他のDSP回路ブロックが連続する中の中間ポイントにある、第1の他のDSP回路のDSP演算(例えば、250)への入力へ選択的にルーティングするための、第3の回路(例えば、248)をさらに含んでもよい。
【0063】
上に記載したDSP回路は、DSP回路ブロックの各々の第1の他のDSP回路ブロックが、(1)DSP回路ブロックに直接隣接する、DSP回路ブロックの別のブロック、および(2)DSP回路ブロックに直接隣接しない、DSP回路ブロックのさらに別のブロックのうちの選択可能な1つであることを可能にするための、冗長回路(例えば、110および/または120)をさらに含んでもよい。えば、DSPブロック100が図1の列R7の中にある場合、別のDSPブロックは列R8の中にあってもよく、さらに別のDSPブロックは列R9の中にあってもよい。加えて、さらに別のDSPブロック(例えば、列R9の中のブロック)は、別のDSPブロック(例えば、列R8の中のブロック)に直接隣接してもよい。
【0064】
また、上に記載したDSP回路は、DSP回路ブロックの各々の第2の他のDSP回路ブロックが、(1)DSP回路ブロックに直接隣接する、DSP回路ブロックのなおも別のブロック、および(2)DSP回路ブロックに直接隣接しない、DSP回路ブロックのなおもさらに別のブロックのうちの選択可能な1つであることを可能にするための、さらなる冗長回路(例えば、110および/または120)をも含んでもよい。例えば、DSP回路ブロックが図1の列R7の中にある場合、なおも別のDSPブロックは列6の中にあってもよく、なおもさらに別のDSPブロックは列R5の中にあってもよい。DSP回路ブロックのうちのなおもさらなる別のブロック(例えば、列R5の中のブロック)は、DSP回路ブロックのなおも別のブロック(例えば、列6の中のブロック)に直接隣接してもよい。
【0065】
本発明の回路によって、DSP回路ブロック間における双方向のシフトによって、総和を行うことが可能になる。例えば、値は、第1のDSPブロックから第2のDSPブロックに、第1のブロックの右へシフトし、第2のブロックで別の信号と組み合わせる(例えば、圧縮する)ことができる。その後、この組み合わせの結果は、左へ戻るように(すなわち、第1のブロックへ)シフトし、第1のブロックで他の信号と組み合わせることができる。このようなシフトの戻しは、(例えば)(1)圧縮器から圧縮器へ(圧縮器240または圧縮器250)の桁上げベクトル、(2)CPA260の桁上げビット、または(3)3−2圧縮器250へのCPA260の出力によって発生することができる。
【0066】
本発明のDSP回路で採用するマルチプレクサのいずれも、ゼロ(0)のデータを選択的に(すなわち、制御可能なように)出力することができる、タイプのうちの1つであり得る。これはまた、本明細書で採用する制御可能なシフタのいずれも含む。
【0067】
本開示のある可能な側面に従う、DSP回路ブロック500の別の例示的実施形態が、図11に示されている。DSPブロック500への入力は動的であり得る(例えば、DSPブロックを含む集積回路(例えば、10)の通常(ユーザモード)演算中、時変であるデジタル(2進)数値を表す電気信号)。代替として、DSPブロック500への入力のうちのいくつかは静的であり得る(例えば、集積回路の通常の演算中、時間を経ても一定または比較的一定である、デジタル(2進)数値を表す電気信号)。例えば、入力ax、ay、bx、およびbyは動的な入力であってもよく、入力cおよびdは静的な入力であってもよい。静的な入力は、ICの演算の初期設定(構成または初期化)段階(ICの後続の通常またはユーザモード演算の前)中に、プログラムされるIC上のメモリ(例えば、いわゆる構成ランダムアクセスメモリまたはCRAM)から来ていてもよい(静的な信号源の実例は、図2の要素130である。そのような源の別の実例は、図12の要素602である)。
【0068】
図11に示す例示的実施形態では、入力ax、bx、ay、by、c、およびdの各々は、並行して供給(印加)される、1セット(複数)の18個の信号を備える。現在18が非常に望ましいと考えられているが、所望の場合、この数字はより大きくまたはより小さくなり得ることが理解されるであろう。この基本入力バス幅は、本明細書の後続の議論において、時にNと称される。したがって、Nは、図11に示す実施形態、および類似のサイズの実施形態で18である。しかし、本開示に従う他の実施形態では、Nは18より大きいか、または小さくなり得ることが理解されるであろう。
【0069】
図11に示す例示的実施形態では、動的な入力には、入力レジスタ501(例えば、クロック信号によってクロックされるフリップフロップ回路)によって登録される選択肢がある。また、一般的な入力ayが、一般的なレジスタ501ayへ、およびまたマルチプレクサ(「mux」)回路601への入力の選択可能な1セットにどのように印加できるのかを示している、図12も参照のこと。レジスタ501ayは、印加されるクロック信号に応答および同期してレジスタに印加されるay信号を登録する。そのように登録された後、登録されたay信号は、mux601への入力の第2の選択可能なセットに印加される。mux601は、回路要素602から印加される選択制御入力信号の論理状態(例えば、2値の1または2値の0)によって、その出力信号になるように、その選択可能なセットの入力のどちらかを選択することができる。例えば、要素602は、CRAM要素(例えば、図2の要素130のような要素に類似)であってもよい。したがって、図12は、mux601の出力がどのようにして登録済みまたは未登録の信号ayのどちらかになり得るのかを示している。図12は、レジスタ501の全てが、レジスタを使用するかまたは迂回するかのどちらかを可能にする回路によって増強されてもよいことを示している。
【0070】
ある入力は、所望の場合には、入力カスケードチェーンを介してルーティングすることができる。例えば、1セットの入力は、類似のDSPブロック500から図示するDSPブロックの右へと中に転送することができる。そのようなカスケード入力は、入力の1つの選択可能なセットから、mux515bxへと進む(図13も参照)。図示する入力bxは、mux515bxへの入力の他方の選択可能なセットに印加される。mux515bxは、その出力になるよう、その選択可能な入力セットのうちのどちらかを選択する(選択制御入力信号の論理状態による)ように、選択制御入力信号(例えば、CRAM610からの)によって制御される。このカスケードチェーンは、(選択的に迂回可能な)レジスタ501bx、mux515ax、(選択的に迂回可能な)レジスタ501axを通って、カスケード出力リード線へと続き、次の隣接するDSPブロック500から図示するDSPブロックの左へと進む。図示するカスケード出力リード線は、左へのDSPブロックのカスケード入力リード線になる。したがって、各モジュールまたはブロック500からのx入力(すなわち、axおよびbx)の全てによって、カスケードチェーンが形成される。
【0071】
すぐ前に記載したカスケードチェーンを使用してもよい回路の応用例は、有限インパルス応答(「FIR」)デジタルフィルタの実装である。そのようなフィルタについて、この明細書の後ろでより詳細に議論する。しかしながら、ここでは、図26は、入力信号の連続サンプルx[n]が、連続サンプル遅延要素820−1、820−2などの各々において、1つのサンプル時間周期で連続的に遅延するような、フィルタの1つの形態を示していることに留意することで十分であろう。各サンプル時間周期では、各サンプルまたは遅延サンプルが、乗算器810−1、810−2などのうちのそれぞれ1つにおいて、それぞれのフィルタ係数c1、c2などが乗じられる。すぐ前に記載したカスケードチェーンは、図26の底部の線に沿って示す入力サンプル遅延チェーンを提供するように使用することができる。1つ以上のDSPブロック500の乗算器505および506は、図26の中央に渡って示す通り、種々に遅延する入力サンプルの乗算(係数c1、c2などによる)を提供することができる。これらのDSPブロックの乗算器505および506から下流の回路は、図26の最上部の線に沿って示す、乗算の積の加算のいくつかまたは全てを提供することができる。また一方、FIRフィルタの追加の議論は、本明細書の後方に見られるであろう。
【0072】
回路502は事前加算回路である。動的な入力のうちの2つ(例えば、axおよびay、またはbxおよびby)を加算することができる。次いで、事前加算器の結果は、下流の乗算器(後述)への可能な入力のいくつかのセットのうちの2つになるように、制御可能なルーティング回路503に進む。事前加算器502によって、上記の加算をDSPブロック500の外側で行う、より費用効率が高くおよびより迅速な代替案を提供してもよい。ルーティング回路503への入力の8つの可能なセットは、ax、bx、ay、by、c、d、(ax+ay)、および(bx+by)である。
【0073】
ルーティング回路503(図14も参照)は、そのセットの入力のうちのいずれかから、その出力信号グループのうちの種々のグループへ、信号をルーティングするように制御可能である(例えば、CRAMビット620からの信号によって)。具体的には、回路503によって行われる入力から出力へのルーティングは、回路503に印加される(例えば、CRAMビット620から)制御信号の論理状態によって選択(選ばれ、制御)される。そのような可能な信号ルーティングのたった1つの例として、回路503は、最終的に乗算回路505に進むその出力のグループのうちの1つへ、そのc入力を、および最終的に乗算回路505に進むその出力のグループのうちの他方へ、そのby入力(レジスタ501byによって登録されていてもよい)をルーティングしてもよい。同時に、上のルーティングが提供されているように、回路503は、乗算回路506に進む出力のそのグループのうちの1つへ、そのd入力をルーティングしてもよく、その一方で、乗算器506に進む出力のそのグループのうちの他方へ、そのay出力(レジスタ501ayによって登録されていてもよい)をルーティングしてもよい。再び、前述は回路503が提供してもよい、多くの可能な入力から出力への信号ルーティングの1つの例であるにすぎない。他の可能なルーティングは、本開示の後続の段落で構成され、使用される通り、乗算器505および506について記載する、種々の方法から明らかであろう。具体的には、ルーティング回路503は、以下に記載する、任意の乗算機能を遂行するために、その入力信号を受信する必要がある任意の乗数入力へ、任意の入力信号をルーティングすることができる。例えば、乗算器505が、27「x」ビット掛ける27「y」ビットである、以下に記載する27x27乗算のその一部を行うことを可能にするように、回路503は、36axおよびbx入力から27ビットを、および36ayおよびby入力から27ビットを、乗算器505へルーティングすることができる。同時に、乗算器506が、この27x27乗算のその一部を行うことを可能にするように、回路503は、上記の27「x」ビットの18より上位のビット、および上記の「y」ビットの18より上位のビットを、乗算器506へルーティングすることができる。
【0074】
図11で単一のマルチプレクサ(「mux」)のように図示されているが、回路503は、実際には、いくつかのマルチプレクサ(「mux」)のアレイまたはネットワークであってもよい。例えば、図15は、回路503が、独立して、または少なくとも一部独立して選択することができることが望ましい出力の各グループに対して、別個のmux630r、630s、630tなどを含んでもよいことを示している。そのような各muxは、その選択可能な入力として、muxがそこから出力する信号を選択する必要がある場合がある、全ての種々の入力信号グループ(またはサブグループ)を有する。各mux630は、その出力となるように、その入力の所望のグループを選択するように制御される(例えば、CRAMビット620(mux630rを制御するサブセット620rなど)の関連サブセットによって)。入力のあるグループが、回路503からの特定のグループの出力として全く必要とされない場合には、その入力グループは、そのグループの出力を選択し提供する、mux630に対して利用可能である入力グループから省略することができる。同様に、図11に示すいくつかの出力グループは、実際には、2つの入力グループからの信号の合成物であってもよい(例えば、直前の段落で言及した、27ビットの出力グループを参照)。そのような合成出力グループは、2つのmux630(例えば、そのような合成出力グループの18ビット部分を提供する1つのmux630、およびそのような合成出力グループの9ビット部を提供する別のmux630)を使用することによって最も便利に提供されてもよい。基本のNビットグループ(例えば、ちょうど言及したばかりの9ビットグループ)のサブセットのみを扱う必要があるmux630は、Nより小さい入力ビットおよび出力ビットグループサイズを有する(例えば、9ビットまたは0.5N入力および出力グループ)。さらに、これらのより小さな入力ビットグループの各々は、より大きな(Nビット)入力グループの所定の部分から来ていてもよい。例えば、そのような所定の部分は、18ビットの入力グループayの9より下位のビット、または18ビットの入力グループayの9より上位のビットであってもよい。したがって、図15は、18個の信号のグループを各々受信し出力する、代表的なmux630rおよび630sを示す一方で、9個の信号のより小さなグループを受信し出力する、代表的なmux630tも示している。
【0075】
前述から、回路503は、好ましくは、その種々の選択可能な入力信号グループ(またはそのようなグループのサブセット)のうちのいずれかを、本開示の後ろに記載する乗算機能のうちのいずれかを補助するように、それらの入力を必要としてもよい、その出力信号グループの種々のグループに接続することができる、非常に柔軟なルーティング回路であると考えられるであろう。
【0076】
図11に戻ると、乗算回路506に進む回路503からの出力信号グループは、その乗算器へ直接進むように示されている。しかしながら、乗算回路505に進む回路503からの出力信号グループは、シストリック遅延レジスタ504を任意に通過するように示されている。図16により詳細を示す通り、代表的なシストリック遅延レジスタ504pへの入力はまた、マルチプレクサ(「mux」)回路640pへの入力の1つの選択可能なセットに印加される。シストリックレジスタ504pの出力は、mux640pへの入力の他方の選択可能なセットに印加される。選択制御入力信号(例えば、CRAM642pからの)は、mux640pが、その選択可能な入力のどのセットを出力するかを制御する。シストリックレジスタ504pは、シストリックレジスタを通過するいずれの信号も、1つのクロックサイクルによって遅延するように、印加されたクロック信号によってクロックされる。代表的なmux640pによって、代表的なシストリックレジスタ504pに印加される信号が、それらのレジスタを通過すること(それによって、1つのクロックサイクルによってそれらの信号を遅延させる)、またはそれらのレジスタを迂回すること(それによって、それらの信号は遅延されない)のどちらかが可能になる。シストリックレジスタ504が使用されてもよい場合の目的については、本明細書の後ろに記載する。
【0077】
乗算器505および506のデフォルト条件は、2つの18x18乗数としてである。概して(すなわち、演算の全てのモードでは)、乗算器505および506の各々は、冗長形式で2つの積のベクトル(例えば、他の実施形態に対して前により詳細に記載した通り、1つの和ベクトルおよび1つの桁上げベクトル)を生成する。したがって、18x18モードでは、各乗算器505および506は、36ビットの和ベクトルおよび36ビットの桁上げベクトルを生成する。乗算器505および506から下流の回路は、本明細書の後ろに完全に記載する通り、1つ以上の最終積(または積の最終和)を生成するよう、種々の方法でこれらのベクトルをさらに処理する(例えば、加法的に組み合わせる)ように使用することができる。しかしながら、予め最初に乗算器505について述べる。
【0078】
乗算器505は、乗算器505および506が27x27乗算を共に行うことができるように修正される(例えば、乗算器506と比較して)。図17および18は、これを行うための例示的実施形態を示している(図17では、DSPブロック500が27x27乗算を行っている時に、シストリックレジスタ504は使用されない(すなわち、迂回される)ためその図示を省略していることに留意すること)。
【0079】
図17に示す通り、乗算器505は、9x27乗算回路部650aおよび9x18乗算回路部650bを含む。乗算器506には、修正されていない18x18の構造がある。27ビットの被乗数(x3、x2、x1)に27ビットの乗数(y3、y2、y1)を乗じることが望ましいと仮定する。(図18の第1の2つの線も参照。)これらの27ビットのデータワードの各々の各セグメント(すなわち、x3、x2、x1、y3、y2、およびy1の各々)は9ビットを有する。これらのワードの各々における演算上最大有効の9ビットのセグメントは、x3またはy3セグメントである。これらのワードの各々における演算上最小有効の9ビットのセグメントは、x1またはy1セグメントである。
【0080】
ルーティング回路503は、セグメントx3およびx2を、乗算器506の1つの軸(例えば、被乗数の軸または入力)にルーティングする。ルーティング回路503は、セグメントy3およびy2を、乗算器506の他方の軸(例えば、乗数の軸または入力)にルーティングする。ルーティング回路503は、セグメントx3、x2、およびx1を、乗算器650aの被乗数の軸または入力にルーティングする。ルーティング回路503は、セグメントy1を、乗算器650aの乗数の軸または入力にルーティングする。ルーティング回路503は、セグメントy3およびy2を、乗算器650bの被乗数の軸または入力にルーティングする。ルーティング回路503は、セグメントx1を、乗算器650bの乗数の軸または入力にルーティングする。各乗算回路506、650a、および650bは、その被乗数の軸に印加されるデータに、その乗数の軸に印加されるデータを乗じる。(当然ながら、乗算の被乗数および乗数は相互転換可能であるため、どのデータが被乗数として供給されるかまたは呼ばれるか、あるいはそのデータが乗数として供給されるかまたは呼ばれるかは、問題ではないことは理解されるであろう。そのため、用語の被乗数および乗数は、本明細書では恣意的におよび相互転換可能に使用される。被乗数または乗数としてのあるデータへの参照は、いずれの点でも制限することを意図しておらず、他の実施形態では、本開示の範囲または精神に逸脱しない限りにおいて、対照的な用語が採用され得る。)各乗算器506、650a、および650bは、その乗算器によって形成される乗算の積を一括して示す、冗長形式の和出力ベクトル、および冗長形式の桁上げ出力ベクトルを生成する(また一方、この冗長形式(すなわち、和ベクトルおよび桁上げベクトル)の積の形成は、本明細書の前に記載した通りである)。
【0081】
この時点で、図17の回路によって行われている、27x27乗算を示す図18を考慮するために、図17の議論を中断するのが有益である場合がある。図18の第1の2つの線は、行われる乗算(すなわち、線1の27ビットの被乗数x3、x2、x1、および線2の27ビットの乗数y3、y2、y1)を示している。図18の線3は、乗算器650aによって行われる、9x27乗算の結果を示している。図18の線4は、乗算器650bによって行われる、9x18乗算の結果を示している。650bの乗算に由来する部分積は、この部分積のビットが、乗算器650aの部分積において、同じ演算の有効を有するビットと(垂直に)一列に揃うように、9ビット分左へシフトされなくてはならないことに留意すること。このシフトは、乗算器650aおよび650bの出力リード線が、互いに対する4:2の圧縮回路652に進入する方法によって、遂行することができる。4:2の圧縮器652(本明細書の前に記載した、そのような圧縮回路に類似し得る)は、乗算器650aおよび650bによって出力される和および桁上げベクトルを受信し、図18の線3および4の和である、さらなる部分積を示す、さらなる冗長形式の和および桁上げベクトルを生成する。これらのさらなる和および桁上げベクトルが、乗算器505の最終出力である。
【0082】
27x27乗算を考慮するのに必要な、最後の主要な部分積は、図18の線5に示す18x18乗算に起因する部分積である。この部分積は、図17の乗算器506によって形成される。図18が示す通り、この部分積は、図18の線3に示す部分積に対して、18ビット分左へシフト(演算の有効を増加)する必要がある。このシフトは、制御可能なシフタ回路507s(乗算器506によって出力される冗長形式の和ベクトル用)および507c(乗算器506によって出力される冗長形式の桁上げベクトル用)によって形成される。CRAMビット654は、要素507がそれらを通過するデータの演算の有効を変更するかどうかを制御する。本開示を通して使用される他の類似の回路要素に関して、507sまたは507cのようなシフタ回路は、そのデータビットがシフタ回路に供給された入力リード線の演算の有効とは異なる(より大きいか、またはより小さい)演算の有効(いくつかの並行するデータリード線を有するバスの中の関連位置)を有するシフタの出力リード線に、そのビットを制御可能にルーティングすることによって、シフタ回路に印加されるデータビットの演算の有効をシフトさせることができる。演算の有効の変更が必要ない場合、シフタ回路は、そのデータビットを供給するシフタの入力リード線と同じ演算の有効を有するシフタの出力リード線に、入力データをルーティングするように制御される。27x27乗算を行う場合、シフタ回路507sおよび507cは、乗算器506の出力を18ビット分左へシフトするように制御される(それによって、これらの出力の各ビットの演算の有効が、18ビット位置だけ増加する)。
【0083】
乗算器505および506の出力は、4:2圧縮回路508に印加される。この回路は再び、本明細書の前に記載した他の圧縮回路に類似し得る。したがって、回路508は、それに印加される2つの和ベクトルおよび2つの桁上げベクトルを、1つのさらなる和ベクトルおよび1つのさらなる桁上げベクトルにまで圧縮する。これらのさらなるベクトルは、行われる27x27乗算の最終積を示している。具体的には、これらのさらなるベクトル(圧縮器508によって出力される)は、図18の線6に示す結果を示している。その実際の最終結果は、図11の圧縮器508から下流にあり、本明細書の後ろにさらに記載する、DSPブロックのさらなる要素によって、DSPブロック500から生成および出力することができる。これは、1つのDSPブロック500が、どのように1つの完全な27x27乗算を行うことができるのかを示している。
【0084】
図18に示す演算が、「符号付き」オペランド(すなわち、正の数または負の数のどちらかであり得る、xおよび/またはyのような値)で正しく行われるためには、(例えば、線3および4に)示す実際のデータから、(例えば、線6の)結果の最大有効の位置まで、「符号拡張」が存在することが必要である場合があることに留意すること。これは、図18の線3および4に示すデータの左に、全ての0(例えば、任意の正の数に対して)または全ての1(例えば、任意の負の数に対して)の18より大きな最高次ビットを含むことを意味してもよい。一般的な事柄として、符号拡張は、当業者にはよく知られている従来の技術である。したがって、任意で必要とされる符号拡張は、概して、本明細書では存在するものとして想定し、不必要に図面を複雑化し、および/または本開示を曖昧にすることを避けるために、実際に図18(または、一般的に類似の性質を持つ、本明細書のいずれの他の図)には示していない。本明細書に実際には示されていないが、符号拡張が採用されてもよい他の図の例は、図5、7、9、22、および31である。また、符号拡張は図20のある領域に対して採用してもよいが、図20のその側面については、本明細書の後ろでより具体的に議論する。
【0085】
完全を期すために、図19は、その乗算器505の回路が、(例えば、x2およびx1掛けるy2およびy1の)18x18乗算のみを行う必要があるときに、図17の回路の乗算器505部分を、どのように使用することができるかを示している。この場合、ルーティング回路503のmux630uは、乗算器650bの18ビットの軸への適用に対して、9ビットのセグメントx2およびx1を選択する。また、mux630wは、乗算器650aの27ビットの軸への18より低位の入力への適用に対して、x2およびx1を選択する。mux630tは、乗算器650bの9ビットの軸への適用に対して、9ビットのセグメントy2を選択する。mux630xは、乗算器650aの9ビットの軸への適用に対して、9ビットのセグメントy1を選択する。空値データは、乗算器650aの27ビットの軸への、9より上位の入力に印加される。(関連オペランド(すなわち、オペランドx)が「符号なし」の数字の場合、直前に言及した「空値データ」は2値の0であってもよい。「符号付き」オペランドについて、27ビット入力の最大有効の9ビットは、より低位(より下位)の18ビットからの「符号拡張」であるはずである。したがって(符号付きオペランドについては)、上記の「空値データ」は、全ての1(例えば、負のオペランドに対して)または全ての0(例えば、正のオペランドに対して)のどちらかであり得る。本明細書における便宜上、用語「空値」、「空値データ」などは、この括弧内、すなわち、(a)符号付きオペランドに対する「符号拡張」データ、または(b)符号なしのオペランドに対する最高次の0のどちらかで称される、種々の種類のデータの全てに使用される)。
【0086】
図20は、先行する段落に記載したデータルーティングに起因する演算を示している。具体的には、図20の線3に示す乗算の結果は、乗算回路650aによって生成される。(再び、図20の線3の「空値」は、その線のより低位の27ビットからの「符号拡張」データを指す場合があることに留意すること。)図20の線4に示す乗算の結果は、乗算回路650bによって生成される。圧縮器652は、図20の線5に示す結果(たとえ冗長形式であっても)を生成する。このように、乗算回路505は、27x27乗算の一部を行うことの代替として、18x18乗算を行うことができる。
【0087】
図21は、ある程度より詳細に図11の低部を示している。図17との関係で既に言及している通り、回路508は、1つの冗長形式の出力和ベクトルおよび1つの冗長形式の出力桁上げベクトルを生成するように、(本開示中の他の類似する4:2の圧縮回路のように、)2つの印加された冗長形式の和ベクトル、および2つの印加された冗長形式の桁上げベクトルを組み合わせる、4:2の圧縮器である。乗算器505および506によって行われる乗算の結果は、互いに独立している場合には、ブロック508および510を迂回することができる。例えば、乗算器505からのベクトルの27より下位のビットは、図21に示すACおよびASを介して、ブロック508および510を迂回することができる。(図21では、上部円ACは下部円ACに接続され、上部円ASは下部円ASに接続され、上部円BCは下部円BCに接続され、上部円BSは下部円BSに接続される。これらの接続は、このように、図面の中の込み合いを減少するように、また図表の中の起こり得る紛らわしい線の重複部分の量を減少するように示されている。)同様に、乗算器506からのベクトルの27より下位のビットは、図21に示すBCおよびBSリンクを介して、ブロック508および510を迂回することができる。ACリンクの出力は、マルチプレクサ回路(「mux」)660cへの入力の1つの選択可能なセットに印加される。ブロック510によって出力される、桁上げベクトルの27より下位のビットは、mux660cへの入力の他方の選択可能なセットに印加される。ASリンクの出力は、mux660sへの入力の1つの選択可能なセットに印加される。ブロック510によって出力される、和ベクトルの27より下位のビットは、mux660sへの入力の他方の選択可能なセットに印加される。BCリンクの出力は、mux662cへの入力の1つの選択可能なセットに印加される。ブロック510によって出力される、桁上げベクトルの27より上位のビットは、max662cへの入力の他方の選択可能なセットに印加される。BSリンクの出力は、mux662sへの入力の1つの選択可能なセットに印加される。ブロック510によって出力される、和ベクトルの27より上位のビットは、mux662sへの入力の他方の選択可能なセットに印加される。CRAM664は、mux660および662の各々が、どの選択可能なセットの入力を、その出力として選択するか(すなわち、mux660および662は、AC、AS、BC、およびBS入力のいずれかを出力する、またはブロック510からそれらの入力を出力する)を制御する)。加加算器511は、2つの別個の(通常)27ビット加算器(図21に示す点線で分離されている)、または1つの(通常)54ビット加算器(点線で分離されていない)のどちらかとして作動するように制御することができる。加算器511の2つの部分へのそのような分離は、点線に渡る右から左への演算の桁上げが無効であることを単に意味している。そのような分離が所望されない場合、点線に渡る演算の桁上げは有効である。CRAM666は、点線に渡る桁上げが有効または無効であるのか、およびそのため加算器511が1つの大きな加算器、または2つの別個のより小さな加算器として作動するのかを制御する。したがって、明細書のこの部分は、加算器505および506が、別個に出力することができる、2つの乗算の結果を生成するために、どのように作動する場合があるのかについて記載する(しかしながら、本実施形態では、それらの別個の積の各々は、27ビットに限定されている)。AC、AS、BC、およびBSリンクは、演算のこのモードでは、ブロック508および510を迂回するように使用される。
【0088】
むしろ別個であるままよりも、乗算器505および506によって行われる乗算の結果が、加算される必要がある場合、それらの結果は、好ましくは、さらに下流の最終加算段階に進む前に、圧縮器508を通って進む。乗算器506からの結果は、(任意に)ブロック508の中へ進む前に、要素507を通って進み、18ビット位置だけ左にシフトすることができる。この制御可能に選択可能な左へのシフトの選択肢によって、異なる乗算構成の柔軟性が提供される。上に記載した27x27乗算は、圧縮器508が、乗算器505および506からの結果を加算するのに使用され、乗算器506からの結果が、要素507の演算によって18ビット位置だけ左へ第1にシフトされる、1つの例である。圧縮器508(および要素507)の使用の別の例は、次の段落の最初に記載する通り、36x18乗算である。
【0089】
図22の線1および2は、行われる36x18乗算を示している。これは、2つの18ビットデータワードx2およびx1に、18ビットデータワードy1を掛ける乗算である。x1掛けるy1の部分乗算(図22の線3)は、上に記載した18x18乗算モードで作動する、乗算器505によって行われる。x2掛けるy1の他方の部分乗算(図22の線4)は、直前に言及した乗算器505を含むのと同じDSPブロック500の乗算器506で行われる。図22の線4に示す18ビット位置だけの左へのシフトは、乗算器506の出力に作用する、制御可能なシフト要素507によって行われる。圧縮器508は、図22の線5に示す結果を示す、冗長形式の和および桁上げベクトルを生成するように、乗算器505および要素507の出力を組み合わせる。当然ながら、この結果は、x2およびx1掛けるy1の36x18乗算の54の積となる。
【0090】
さらなる演算が圧縮器508の出力に作用する必要がない場合、さらなる4:2の圧縮回路510は迂回される/無効であることができ、最終桁上げ伝播加算器(「CPA」)回路511のみが、最終結果を出力レジスタ回路512に送信するために有効である。
【0091】
図11〜22の設計の利点は、より複雑な演算を行うために、複数のDSPブロックまたはモジュール500を効率的に組み合わせることである。4:2の圧縮回路510の目的は、別のDSPモジュールからの1つまたは2つのベクトルに加えて、圧縮器508からの2つの出力を取り、およびそのデータの全てを2つの冗長形式ベクトルに圧縮することであり、それは最終CPA512への入力になる。DSPモジュール500が、モジュール間接続sum_in/sum_outおよびcar_in/car_out(carはcarry(桁上げ)の省略形)を活用することによって、共に組み合わせることができる2つのシナリオについて、これから記載する。
【0092】
第1のシナリオでは、マルチプレクサ回路516(CRAM回路670によって制御される)は、出力連鎖経路を通って結果「出力(out)」を選択するように使用される。(この経路は、出力レジスタ512から、mux680(CRAM682によって制御される)、mux516、およびmux517c(CRAM672cによって制御される)を通って延在する。)このように、2つ以上のDSPモジュール500は、それらのモジュール500のうちの隣接するモジュール間のcar_in/car_out接続を通って、共に連鎖させることができる。例えば、図23に見られる通り、左のモジュール500は、それ自体の内部で生成された結果に、その図の右にある他方の隣接するモジュール500からの結果を加算するように使用することができる。
【0093】
隣接するDSPブロック500間のsum_in/sum_outおよびcar_in/car_outのような、直接的な専用DSPブロック間接続の使用に関わる第2のシナリオは、以下の通りである。このシナリオでは、1つのDSPブロックの要素508からの和および桁上げベクトル(そのブロックの出力レジスタ512を含む、出力連鎖からの最終結果の代わりに)は、隣接するブロック500間のsum_in/sum_outおよびcar_in/car_outトラックを通って接続される。また一方、これによって、DSPブロック500(例えば、図23の左のブロックのような)が、それ自体の内部で生成した結果、および別のDSPブロック(例えば、図23の右のDSPブロック)からの結果を組み合わせる(例えば、加算する)ことが可能になる。しかしながら、データは、次のDSPブロック500(例えば、図23の左にあるブロック)のデータと組み合わせる前に、1つのDSPブロック500(例えば、図23の右にあるブロック)のブロック510、511、および512の遅延を通って進む必要がないため、この第2のシナリオは、より優れたFMAX性能(演算の最大速度)をもたらすことができる。しかしながら、このタイプの接続は、比較的少数(例えば、2つ)のDSPブロック500のみを共に連鎖させるように限定される場合がある。そのような少数のDSPブロック500(例えば、2つのそのようなブロック)のみを利用するいずれの用途でも、この方法でより良い結果を達成することができる場合がある。制御可能なシフト要素509sおよび509c(本開示中の他の類似のシフト要素のようで、およびCRAM要素674sおよび674cによってそれぞれ制御される)によって、現行のDSPブロック500(例えば、図23の右にある)から、次のDSPブロック500(例えば、図23の左にある)へ、正しいデータを誘導(選択)するように、データにシフト能力が提供される。
【0094】
また一方、mux517sおよび517c(CRAMビット672sおよび672cによってそれぞれ(または、場合によっては1つのそのようなCRAMビットによって相前後して)制御される)は、いわゆる冗長muxであることが思い出されるであろう。簡潔に思い起こさせるものとして、これらのmuxは、データが、sum_in/sum_outおよびcar_in/car_outトラックを介して、(a)受信DSPブロック500にすぐ隣接するDSPブロック500、または(b)受信DSPブロックから1ブロック離れている、DSPブロック500のどちらかから流れることを可能にする(例えば、直接隣接するDSPブロックに欠陥があり、それ故、わずかにより離れたDSPブロックで機能的に置き換えなくてはならない場合)。図24に示す代表的な構成では、この冗長能力は、「受信」DSPブロック500cが、直接隣接するDSPブロック500bのsum_outおよびcar_out信号、またはわずかにより離れたDSPブロック500cのsum_outおよびcar_out信号のどちらかから、そのsum_inおよびcar_in信号を受信することができることを意味する。
【0095】
既に明らかであるはずのことを明示的に述べるために、図23および24(図1、6、8、10、30、および32のような)は、本開示に従う集積回路が、DSP回路ブロックまたはモジュール(例えば、100、500など)の複数のインスタンス(すなわち、複数の同一または実質的に同一の繰り返し)を含むというポイントを示している。したがって、本明細書で使用される、「DSP回路ブロック」、「DSPブロック」、「DSPモジュール」などのような用語は、集積回路上での同一または実質的に同一の繰り返しに好適な回路要素のアセンブリを指す。そのようなDSP回路ブロックの回路の少なくともいくつかは、好ましくは、乗算、冗長形式の和および桁上げベクトルの圧縮、加算など、特定の機能を行うように設けられている(すなわち、配線で接続される、または少なくとも一部配線で接続される)。これらのDSP回路ブロックのうちの隣接する(または少なくともすぐ近くの)ブロックは、それらの間に「専用」接続を有してもよい。そのような専用DSPブロック間接続の例は、隣接するブロック間のsum_out/sum_inおよびcar_out/car_in接続である。そのような専用DSP間接続は、好ましくは、DSPブロック間で信号を伝えるためのみに使用可能である。
【0096】
図11または図24に再度戻ると、mux回路514(CRAM要素676によって制御される)は、前に作動していた(クロック)サイクルからの結果を選択し、およびそれを現在作動している(クロック)サイクルの結果と組み合わせる(例えば、加算する)ように、使用することができる。(各作動サイクルは、通常、回路で採用されるレジスタをクロックするように使用される、クロック信号の1つのそれぞれのサイクル中に起こる。)この蓄積経路は、全てのDSPモジュール500で任意である。
【0097】
要素504および513は、シストリック遅延レジスタである。それらは、例えば、18ビットのシストリック有限インパルス応答(「FIR」)のデジタルフィルタ用途に使用することができる。シストリックFIRフィルタの原理については、次のいくつかの段落に記載する。
【0098】
FIRフィルタは、DSP用途で幅広く使用される。FIRフィルタの基本構造は、結果生じる積の加算との、複数の並行した乗算である。FIRフィルタ演算は、図25に示す式によって表すことができる。図25では、式x[n−i−1]は、入力デジタルデータサンプル(例えば、並行して表される18ビットの2進ワードである各サンプル)のシーケンス(連続)を表し、c[i]は、フィルタ係数(例えば、並行して表される18ビットの2進ワードである各係数)を表し、k−1は、フィルタが有するタップの数である。
【0099】
図25に示すFIRフィルタ式を実装する(いわゆる直接型)ための回路800が、図26に示されている。この図では、要素810は乗算回路であり、要素820は遅延回路(その各々は、各々に印加されるデータサンプルを、入力サンプルストリームx[n]のいずれの1つのサンプルの時間分だけ遅延させる)であり、要素830は加算回路である。(また、直前に言及した「時間分」は、通常、回路中に渡って使用されるレジスタをクロックするために使用される、クロック信号の「期間」でもある。)
図26は、直接型であるFIRフィルタ800が、加算器830を連鎖させることによって形成される、大きな加算器ツリーを含むことを示している。タップの数(乗算器の数マイナス1に等しい)、および入力サンプルサイズ(各入力サンプルx[n]におけるビットの数)によって、加算器830を通る遅延は非常に大きくなり得る。この起こり得る性能問題を克服するために、図27に示すフィルタのシストリック型800’を使用することができる。具体的には、図27は、追加遅延回路要素812および822が、たとえ待ち時間(すなわち、入力x[n]から出力y[n]への回路を通る遅延全体)を犠牲にしてでも、回路全体の性能を増加するように、タップごとに配置されることを示している。より具体的には、図27は、各タップ間のサンプルストリームにおける追加遅延要素822、およびまた各タップ間の積集計ストリームにおける整合する追加遅延要素812を示している。言い換えると、追加遅延要素812−1は、追加遅延要素822−1に「整合」または「対応」し、追加遅延要素812−2は、追加遅延要素822−2に整合または一致するなどする。遅延要素812、820、および822の全てには、好ましくは、同じ遅延がある(例えば、回路中のレジスタをクロックするように使用される、クロック信号の中の1つのサイクルの期間であって、その「期間」はまた、好ましくは、入力の同じストリームx[n]における各連続サンプルの持続時間と等しい)。
【0100】
追加遅延要素812および822は、時には、シストリックレジスタと称されてもよい。遅延要素812は、加算器830の他の場合なら長い連鎖を個々の加算器に細分化する。そのため、各加算器830に続いて、その和を次の加算器に渡す前に、その加算器によって生成された和を登録するレジスタ812が来る。これによって、そうでなければ、回路の1つの作動する(クロック)サイクルにおいて、データが長い加算連鎖を通って最後まで伝播することを必要とするであろう比較的遅い速度で、回路を作動させる必要があることを避ける。各加算器830が、その加算演算を比較的迅速に完了することができるため、シストリックフィルタ800’によって、より速いクロックを使用することができ、その加算の結果は、次のクロックサイクルまでは、次の加算器によって必要または使用されない。遅延要素822は、積和蓄積経路を通る積和の伝播の遅延と同期される、データサンプル経路を通るデータサンプルの伝播を保持するように加算される。
【0101】
シストリックフィルタ800’には、同数のタップを有する直接型フィルタ800より大きな待ち時間(フィルタを通る入力x[n]から対応する出力y[n]の可用性への遅延全体)がある傾向がある(フィルタ800’の追加遅延812および822のため)が、他の回路(例えば、FIRフィルタを伴う集積回路上の)は、フィルタ800’によって回路が有することが可能な、より速いクロック信号を有することから大きな恩恵を受ける(作動速度の点において)ことができる。
【0102】
図27の800’のようなシストリックFIRフィルタに関する直前の議論を、500のようなDSPブロックに関するより前の議論と、より上手く関連させることに役立つように、図27を図28に再度図示している(いくつかの小さな変更を伴う)。図28と図27との違いは、(1)図28が図11のような他の図とより良く相関するように再配向され、(2)図28は、乗算器810−2および810−(k−1)間の可能な追加タップの図27の図示を省略し、4つの直接隣接するタップのみを示すことによって、より一般的でなくなり、(3)図28は、右下の角に別の加算器830−1を示すことによって、より一般的(またはよりモジュール式)となっている点のみである。
【0103】
図28の乗算器810の各々は、18x18乗算器(例えば、図11の乗算器505または506のような)であると仮定する。例えば、図11に示す通りに構築される1つのDSPブロック500において、図28の2つの隣接するタップの各対と関連付けられる演算を行うことは、効率的であり得る。以下の議論は、これがどのように行われ得るかを示している。
【0104】
図29は、図28の回路800’と同じ能力を有する回路800’’を示している。言い換えると、図29は、図28の回路と機能的に同等である、図28の回路の代替の実装である。図29では、シストリックレジスタ812−1(図28)の機能は、シストリックレジスタ504p−1、504q−1、および513−1(しかしながら、図29の例では、シストリックレジスタ513−1は使用されない)によって実行される。基本的には、図28の加算器830−1および830−2の間のシストリックレジスタ812−1によって生成される遅延は、加算器830−1によって行われる加算を送り込む、全ての経路に沿って上流に移動する(図29)。これによって、図28の加算器830−1および830−2によって行われる加算を、図29の1つの組み合わされた加算器508/510/511−1で行うことを可能にする(すなわち、812−1のようなシストリック遅延は、合成加算器508/510/511−1内では必要ではない)。同様に、図28のシストリックレジスタ812−3によって生成される遅延は、図29のシストリックレジスタ504p−3、504q−3、および513−3へ上流へと移動する。再び、これによって、図28の加算器830−3および830−4によって行われる加算を、図29の1つの組み合わされた加算器508/510/511−3で行うことを可能にする(すなわち、再び812−3のようなシストリック遅延は、合成加算器508/510/511−3内では必要ではない)。
【0105】
前述を開始地点として、ここで図29の連鎖の点線500eおよび500fについて説明することができる。連鎖の点線500eは、例えば、図11に示す構造を有する、1つのDSPブロック500の回路によって実装することができる、図29の要素を囲んでいる。具体的には、以下の参照番号の同等物は、要素内側線500eが、図11におけるような、代表的なDSPブロック500の要素によって、どのように実装されるかを示している:810−2=506;504p−1=504p;504q−1=504q;810−1=505;508/510/511−1=508、510、および511;512−1=512;513−3=513。
【0106】
連鎖の点線500fは、別の(1つの)DSPブロック500の回路によって実装され、例えば、図11に示す構造を再び有し、そのcar_in入力を介して、DSPブロック500eのシストリックレジスタ513の出力を直接受信することができる、図29の要素を囲んでいる。また一方、以下の参照番号の同等物は、要素内側線500fが、図11のDSPブロック回路500の第2の(「別の」)インスタンスの要素によって、どのように実装されるかを示している:810−4=506;504p−3=504p;504q−3=504q;810−3=505;508/510/511−3=508、510、および511;512−3=512;513−5=513。
【0107】
図29の要素820および822によって行われる遅延は、500eおよび500fのようなDSPブロックの外側にあり、DSPブロック500eおよび500fへの、連続入力データワードx[n]の種々の入力の印加を適切に遅らせることができるレジスタ回路によって行われてもよい。(代替として、いくつかまたは全ての要素820および822は、そうでなければブロック500eおよび500fのようである、DSPブロックの中に含まれるレジスタによって実装されてもよい)。
【0108】
先行する段落は、例えば、図11に示す通りに構築されたDSPブロック500が、所望の場合、シストリックFIRフィルタを効率的に実装するように、どのように使用することができるのかを実証している。図29は、2つの隣接するDSPブロック500eおよび500fに4つのタップを有する、シストリックFIRフィルタの実装を示しているが、いずれの所望の数のタップを有するシストリックFIRフィルタも、適切な数の隣接するDSPブロック500に、同じ一般的な方法で実装することができることは、理解されるであろう。例えば、6つのタップのシストリックFIRフィルタは、3つの隣接するDSPブロック500に実装することができ、8つのタップのシストリックFIRフィルタは、4つの隣接するDSPブロック500に実装することができるなどする。それぞれの場合、シストリックFIRフィルタの2つの隣接するタップ(「1対の隣接するタップ」または「2つの隣接するタップの1対」)は、1つのDSPブロック500に実装され、各DSPブロック500は、そのような手動による排他的な対のタップのそれぞれの1対を実装する。DSPブロックは、対の中のタップが順序付けられるのと同じ方法で順序付けられ、タップのその対形成および順序付け(1から4まで)、ならびにDSPブロック500(eからfまで)の類似の順序付けの全てが、図29に実例として示されている。
【0109】
ここで、DSPブロック500の能力のより広い範囲の考察に戻る。以下は、単一のDSPブロックまたはモジュール500が補助することができる、主要な特徴のリストである。
1.3つの9x9乗算
2.1つの18x18乗算
3.2つの部分的な18x18乗算
4.1つの27x27乗算
5.蓄積による1つの27x27乗算
6.1つの25ビットの事前加算器による1つの26x22乗算
7.1つの36x18乗算
8.2つの18x18乗算の1つの和
9.蓄積による2つの18x18乗算の1つの和
10.事前加算器による2つの18x18乗算の1つの和
11.1つの二乗誤差和
12.(a*b)+c、(a、b=各々18ビット、c=36ビット)
13.2つの18ビットシストリックFIRフィルタタップの1つの和
14.事前加算器による18ビットシストリックFIRフィルタタップの1つの和。
【0110】
3つの9x9乗算(上の項目1)の場合、2つの18x18乗算器(ブロック505および506)は、4つの9x9乗算器として構成することができる。しかしながら、出力の数(56)は、3つの9x9乗算の結果(18ビット+18ビット+18ビット=54)ビット)を補助するのに単に十分である。同じ制限が、上の2つの部分的な18x18乗算(項目3)の場合に適用され、各18ビット乗算の結果の28ビットのみ(36ビットからの)が、DSPモジュールの(からの)出力へルーティングされることができる。
【0111】
1つの25ビット事前加算器による1つの26x22乗算(上の項目6)の適用では、制限は、DSPブロック500への入力の数に由来する。DSPブロック500は、最大27ビット乗算まで補助することができるものの、動的な入力の数は72のみであり、(25+25)*22を補助するのに十分なだけである。
【0112】
1つの二乗誤差和(上の項目11)は、事前加算器502を有効にし、事前加算器の結果を乗算器(505および506)の両入力に印加することによって、実装することができる。したがって、この場合、(ax−ay)+(bx−by)の結果を、出力で得ることができる。
【0113】
以下は、複数のDSPブロックまたはモジュール500が共に組み合わされる時に、補助することができる特徴のリストである。
a. 2つのDSPモジュールにおける3つの18x18乗算
b. 4つの18x18乗算の和
c. 2つの27x27乗算の和
d. 2つの36x18乗算の和
e. 複素数の18x18乗算(すなわち、(a+bi)*(c+di)であって、a、b、c、およびdは、各18ビット)
f. 36x36乗算
g. 72x18乗算
h. 3つのDSPモジュールにおける複素数の18x25乗算(すなわち、(a+bi)*(c+di)であって、aおよびbは各18ビットであり、cおよびdは各25ビット)
i. 複素数の27x27乗算(すなわち、a、b、c、およびdが各27ビットビットである以外は、上の項目に類似)
j. 54x54乗算
k. 出力連鎖による2つの18x18乗算の和
l. 出力連鎖による1つの27x27乗算。
【0114】
1つのDSPモジュール500では、2つの18x18乗算の出力を補助するのに十分ではない。しかしながら、2つのDSPモジュール500は、3つの18x18乗算の出力を補助するのに十分であり、1つの結果が、2つのモジュール間に分配される。
【0115】
2つの36x18乗算の和(上の項目d)、および72x18乗算(上の項目g)などの適用に対して、2つのDSPブロック500は、専用の直接的なモジュール間の和および桁上げトラックを通って接続される。以下の議論は、これらの接続がどのように機能するかについて、より多くの情報を含有する。
【0116】
図30は、2つの隣接するDSPブロック500hおよび500iを示している。これらのDSPブロックの各々は、例えば、図11に示すような、回路のそれぞれのインスタンスであり得る。図30に示す接続のいくつかは、より太い(より濃い)線を使用して描くことによって強調されている。これらは、2つの図示するDSPブロックが、1つのDSPブロック500のみの能力を超える、ある機能を行うように共に使用されている時に使用される、直接的な専用のDSPブロック間接続を含む。例には、上の36x36乗算(項目f)がある。図31は、そのような乗算が、図30回路を使用してどのように行うことができるかを示している。図30および31で、図31に示す36x36乗算の例について、これからさらに記載する。
【0117】
図31の線1は、36x36乗算用の36ビットの被乗数を示している。図31の線2は、その乗算用の36ビットの乗数を示している。被乗数のより下位の18ビットのサブワードx1、および乗数のより下位の18ビットのサブワードy1は、図31の線3に示す部分積を生成するように、その乗数によって乗算のために、DSPブロック500hの乗算器505に印加される。被乗数のより上位の18ビットのサブワードx2、およびy1は、図31の線4に示す部分積を生成するように、その乗数によって乗算のために、DSPブロック500hの乗算器506に印加される。DSPブロック500hの要素507sおよび507cは、DSPブロック500hの乗算器506によって出力される、冗長形式の和および桁上げベクトルを、左に18ビットシフトするように使用される(それらの演算の有効を、ブロック500hの乗算器505によって出力される、冗長形式の和および桁上げベクトルに対して、18ビット位置だけ増加させるように)。部分積x2*y1のこの18ビット左へのシフトは、図31の線4として図で示している。DSPブロック500hの圧縮器508は、受信する4つの冗長形式のベクトルを、2つの冗長形式のベクトル、すなわち、図31の線5に示す54ビットの和ベクトル、および図31の線6に示す54ビットの桁上げベクトルにまで圧縮する。
【0118】
図31の中の垂直な点線の右への、その図の線5および6におけるデータの18ビット部分は、DSPブロック500hの中に残っている。具体的には、これらの18の最小有効ビットは、ブロック500hの圧縮器510を通って下へ、そのブロックのCPA511へと通過する。ブロック500hのCPA511は、この冗長形式データを、図31の線9に示す非冗長形式(または通常形態)の最終結果の最小有効18ビットへと変換する。DSPブロック500hは、これらの18の最終結果ビットを、その出力リード線を介して出力することができる。
【0119】
図31の線5および6(垂直な点線の左)のより上位の36ビット部分は、DSPブロック500hの圧縮器508の出力からDSPブロック500iへルーティングされる。具体的には、ブロック500hの圧縮器508によって出力される36より上位の和のビットは、ブロック500hからブロック500iへの直接的な専用のsum_out/sum_in接続(導体またはトラック)を介して、DSPブロック500iに進入する時に、その量の分、データの演算の有効を減少させるよう、そのデータの18ビット位置を右へシフトさせるように、ブロック500hの制御可能なシフタ要素509sを通過する。(ブロック500hのmux回路517sは、このルーティングの一部である。)同様に、ブロック500hの圧縮器508によって出力される36より上位の桁上げビットは、ブロック500hからブロック500iへのcar_out/car_in接続(導体またはトラック)を介して、DSPブロック500iに進入する時に、その有効を減少させるよう、そのデータの18ビット位置を右へシフトさせるように、ブロック500hの制御可能なシフタ509cを通過する。(ブロック500hのmux回路517cは、このルーティングの一部である。)DSPブロック500iがそのようにDSPブロック500hから受信する冗長形式のデータは、ブロック500iの圧縮回路510にルーティングされる(ブロック500iのmux回路514は、このルーティングの一部である)。
【0120】
乗数のより上位の18ビットのサブワードy2、およびx1は、図31の線7に示す部分積を生成するように、その乗数によって乗算のために、DSPブロック500iの乗算器505に印加される。同様に、y2およびx2は、図31の線8に示す部分積を生成するように、その乗数によって乗算のために、DSPブロック500iの乗算器506に印加される。DSPブロック500iの制御可能なシフタ回路要素507sおよび507cは、DSPブロック500iの乗算回路506によって出力される、冗長形式の和および桁上げベクトル信号を、左に18ビットシフトするように使用される(それらの演算の有効を、ブロック500iの乗算器505によって出力される冗長形式の和および桁上げベクトル信号に対して、18ビット位置だけ増加させるように)。部分積y2*x1に対する、部分積x2*y2のこの18ビット左へのシフトは、図31の線8として図で示している。
【0121】
DSPブロック500iの圧縮器508は、ブロック500iの要素505、506、および507から受信する、4つの冗長形式の部分積ベクトルを、部分積y2*x1およびx2*y2の和を示す2つの冗長形式のベクトルに減少させる。DSPブロック500iの圧縮器508からのこれら2つの冗長形式のベクトルは、ブロック500iの圧縮器510に印加される。ブロック500iの圧縮器510は、受信する4つの冗長形式ベクトル(ブロック500iの圧縮器508から2つ、および前に記載した通り、ブロック500hからブロック500iへのsum_out/sum_inおよびcar_out/car_inトラックを介して、ブロック500hから2つ)を、(1)部分積y2*x1、(2)部分積x2*y2、および(3)(a)部分積x1*y1および(b)部分積x2*y1の和の36より上位ビットの和を示す、2つの冗長形式のベクトルにまで圧縮する。DSPブロック500iの圧縮器510によって出力される、2つの冗長形式のベクトルは、ブロック500iのCPA511に印加され、それによって、それら2つのベクトルを、図31の線9の点線の左に示す、非冗長形式(または通常形態)の最終結果の54より上位ビットに組み合わせる。これらの54より上位の最終結果ビットは、その出力リード線を介して、DSPブロック500iによって出力することができる。
【0122】
前述では、2つのDSPブロック500hおよび500iが、完全な36x36乗算を行うようにどのように使用することができるのかを実証しており、最終積の18より下位のビットを、DSPブロック500hによって出力し、最終積の54より上位ビットをDSPブロック500iによって出力している。
【0123】
4つの18x18乗算の和(上の項目b)および2つの27x27乗算の和(上の項目c)などの適用に対して、結果は、図30および31と関連して図で上に示し記載した、和および桁上げの直接的な専用のDSPモジュール間接続(すなわち、sum_out/sum_inおよびcar_out/car_in)、または図32に図で示し、下に記載する通りの出力連鎖接続のどちらかを通して、2つのDSPモジュール500を組み合わせることによって、達成することができる。
【0124】
図32は、好ましくは、集積回路上で互いに隣接する(例えば、図32に示す、互いに関連する位置において)、いくつかのDSPブロック500−1から500−7を示している。これらのDSPブロックの各々は、例えば、図11に示すような、回路のそれぞれのインスタンスであり得る。図32に示す接続のいくつかは、より太い(より濃い)線を使用して描くことによって強調されている。これらは、第2の(「別の」または「受信」)DSPブロックで進行中である、信号処理と組み合わせるために、別の隣接するDSPブロックの中間回路へ直接的に、1つのDSPブロック500の最終出力(出力)を連鎖させることが望ましい時に使用することができる、隣接するDSPブロック500間の接続を含む。前に記載したsum_out/sum_inおよびcar_out/car_in接続のように、これらの出力連鎖接続は、好ましくは、直接的な専用のDSPブロック間接続である。これは、例えば、これらの直接的な専用の接続が、DSPブロックを含む集積回路上で、より汎用の信号ルーティング回路を活用しないことを意味する。言い換えると、これらの接続は、DSP回路ブロック(例えば、DSPブロック500)のインスタンス間で信号を伝えるためにのみ設けられている。記載している例示的実施形態では、直接的な専用の出力連鎖接続が、各DSPブロック500から次の隣接するDSPブロック500への、前に記載したcar_out/car_in接続を介して、(一部)作成される。
【0125】
図32に示す例示的実施形態では、DSPブロック500−1からDSPブロック500−2への、強調される出力連鎖のルーティングは、ブロック500−1の出力レジスタ512から、信号を受信することができる、ブロック500−1のノードから延在する。(これは、ブロック500−1の出力ノードと称されてもよい。)このルーティングは、ブロック500−1の(任意に使用可能な)シストリックレジスタ513、ブロック500−1のmux回路516および517cを通って、ブロック500−2のcar_inリード線へ接続する、ブロック500−1のcar_outリード線上へ延在する。前に記載した通り、DSPブロック500のcar_inリード線上の信号は、そのDSPブロックの圧縮回路510に(とりわけ)印加される。したがって、DSPブロック500−1からDSPブロック500−2への出力連鎖ルーティングは、ブロック500−1からブロック500−2の圧縮器510への、ブロック500−2によって受信されるcar_in信号の印加を含む。したがって、ブロック500−2の圧縮器510は、ブロック500−2の圧縮器510から上流にある要素によって、ブロック500−2で行われる他の信号処理の結果と組み合わせるために、ブロック500−2へ連鎖されるブロック500−1の出力を受信することができる、ブロック500−2の「中間回路」である。この出力連鎖は、源のブロック500−1から、受信ブロック500−2の最も上流の入力(例えば、ax、ay、bx、by)へは、出力を伝えないことに留意すること。それどころか、源のブロック500−1からの出力連鎖は、受信ブロック500−2の回路の中間ポイントから、受信ブロック500−2に進入する。これによって、受信ブロック500−2の最も上流の入力(ax、ay、bx、by)の全てが、他の(出力が連鎖されない)入力に対して利用可能なままとなる。また、受信ブロック500−2の他の上流の回路(例えば、要素501、502、503、504、505、506、507、および508)も、それら他の(出力が連鎖されない)入力を処理するために利用可能なままとなる。次いで、受信ブロック500−2の上流にある要素による、他の入力の処理の結果は、ブロック500−2(すなわち、DSPブロック500−2の中間回路要素圧縮器510で開始)のより下流にある要素において、出力が連鎖される入力(ブロック500−1からブロック500−2へのcar_out/car_inを介して、源のブロック500−1の出力ノードから受信される)と組み合わせることができる。
【0126】
図32は、(追加の強調された(より太い)接続線によって)出力連鎖が、DSPブロック500−2から次の隣接するDSPブロック500−3(図32に実際には図示せず)へ続くことができることを示している。ブロック500−2では、この継続する出力連鎖は、(通常)ブロック500−2の出力ノードから始まり、そのブロックの要素513、516、および517cを通って、ブロック500−2のcar_out出力リード線(ブロック500−3へのcar_in入力へ直接接続される)へと通過する。
【0127】
図32は、(DSPブロック500−7の例示的な例を使用して、)出力連鎖が、連続する結果の蓄積(回路の連続クロックサイクルでそれぞれ生成される)を含んでもよいことを、なおもさらに示している。したがって、ブロック500−7では、出力ノード信号は、(mux回路514を介して)ブロック500−7の圧縮器510に戻ってルーティングされる。これによって、ブロック500−7の要素510、511、および512が、各クロックサイクルから次のクロックサイクルまで、(1)ブロック500−7のより上流の回路(例えば、505および506)の出力、(2)別の隣接する「源の」DSPブロック500−6(実際には図示せず)からの中で連鎖する出力、および(3)直前のクロックサイクル中にDSPブロック500−7によって生成される最終出力を、組み合わせ(例えば、加算し)蓄積することを可能にする。また、図32は、ブロック500−7によるそのようなアキュムレータ演算の結果が、ブロック500−7の要素513、516、および517cを介して、次の隣接するDSPブロック500−8(図示せず)へ「出力を連鎖」することができることも示している。
【0128】
図32は、各DSPブロック500のシストリックレジスタ513を通って進む出力連鎖を示しているが、それらのレジスタは、回路のユーザに所望される通り、連鎖される信号を遅延させるために使用されるか、または使用されないかのどちらかであることができることを強調しておく。言い換えると、追加される信号遅延用のレジスタ513の実際の使用は任意である(再び、図16を参照)。
【0129】
図32に示し強調するような回路配置の使用の例として、4つの18x18乗算の和(上の項目b)が、DSPブロック500−2の出力で得ることができ、DSPブロック500−1および500−2の各々が、2つの18x18乗算の和を計算するように設定される。
【0130】
一般的に(続けて図32を参照して)、いずれの数の「隣接する」DSPモジュール500も、出力連鎖経路を介して共に接続することができる。(「隣接する」は、各DSPモジュール500の冗長mux517によって、モジュールを飛ばすか、または迂回することができるため(例えば、適切に機能していない場合)先行する文では引用符が付けられている。この原理は、本開示中の「隣接する」DSPブロックまたはモジュールへの全ての参照に当てはまる。)全ての結果の総和は、連鎖の最後にある、最後のDSPモジュール500で得ることができる。DSPブロック500−7の出力ノードおよびmux回路514間の経路は、(例えば)出力連鎖を伴う蓄積の特徴を組み込むことを可能にすることができることに、再び留意すること。
【0131】
なおも図32を参照すると、複素数の18x18乗算(上の項目e)または複素数の27x27乗算(上の項目i)は、2つの18x18または27x27乗算(上の項目bまたは項目c)の和の2つのセットを使用して、実装することができ、1つのセットは加算(すなわち、複素数の積の虚数部adi+bciの中のadおよびbcの加算)を行い、他方のセットは減算(すなわち、複素数の実数部のac−bd)を行う。複素数の18x25乗算(上の項目h)は、複素数の27x27乗算と同じ設定を伴う、4つのDSPモジュール500を使用することによって実装することができる。54x54乗算(上の項目j)は、和および桁上げの直接接続、並びに出力連鎖直接接続の両方を利用して、4つのDSPモジュール500を伴い実装することができる。
【0132】
図11および図21のような図は、DSPブロック500の出力またはその近くに、517sおよび517cのような冗長マルチプレクサを示しているが、そのような冗長muxは、代わりにそのようなDSPブロックへの出力またはその近くにあり得る。例えば、図33は、この可能な変形を示す、2つの隣接するDSPブロック500a’および500b’の部分を示している。具体的には、冗長mux517sおよび517cが、DSPブロック500a’の出力またはその近くにある代わりに、それらのmuxは、DSPブロック500b’の入力側に移動している。全ての他の事項において、500a’および500b’のようなDSPブロックは、本明細書の他の場所に示し記載する、DSPブロック500のようであり得る。
【0133】
本開示の範囲および精神から逸脱しない範囲で、種々の要素の場所および/順序が、どのように変化し得るかの別の実例として、シストリックレジスタ回路513は、(例えば)図21の出力連鎖経路に沿って、いずれの他の好適なポイントに移動することができる。例えば、シストリックレジスタ回路513、ならびに関連付けられる要素680および682は、次の下流のDSPブロックに進入するその経路のちょうど前の出力連鎖経路に沿って、ポイントに移動することができる。
【0134】
前述のいくつかの側面を要約し、また述べてきたことの延長となるいくつかの事柄において、デジタル信号処理(「DSP」)回路ブロック(例えば、図11の500、図24の500b)は、第1のNビット掛けるNビット(「NxN」)乗算(例えば、18x18乗算)を行うことができる第1の乗算回路(例えば、506)、第2のNxN乗算を行うことができる第2の乗算回路(例えば、505)、(1)ゼロビット位置および(2)より上位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、第1の乗算回路の出力をシフトするための第1のシフタ回路(例えば、507c/507s)、第1のシフタ回路および第2の乗算回路の出力を加法的に組み合わせるための第1の圧縮回路(例えば、508)、第1の圧縮回路の出力を、DSP回路ブロックに隣接する第1の他のDSP回路ブロック(例えば、図24の500c)へルーティングするための回路(例えば、sum_out/car_outリード線)、ならびに第1の圧縮回路の出力、およびDSP回路ブロックに隣接する、第2の他のDSP回路ブロック(例えば、図24の500a)から受信される出力を加法的に組み合わせるための、第2の圧縮回路(例えば、510)を含んでもよい。
【0135】
上に要約したようなDSP回路ブロックは、第2の圧縮回路の出力を加法的に組み合わせるための、加算回路(例えば、511)をさらに含んでもよい。そのような加算回路は、桁上げ伝播加算回路を備えてもよい。
【0136】
上に要約したようなDSP回路ブロックは、加算回路の出力を登録するための第1のレジスタ回路(例えば、512)をさらに含んでもよい。
【0137】
上に要約したようなDSP回路ブロックは、乗算回路によって処理するために、入力を供給するための第1、第2、第3、および第4の複数のデータ信号入力リード線(例えば、ax、ay、bx、by)と、複数のデータ信号入力リード線のうちの少なくとも2つからの入力とを加法的に組み合わせるための事前加算回路(例えば、502)とをさらに含んでもよい。
【0138】
上に要約したようなDSP回路ブロックは、乗算回路のうちの少なくとも1つによって処理するために、複数のデータ信号入力リード線のうちの少なくとも1つからの入力の代替として、事前加算回路の出力を選択するための回路(例えば、503)をさらに含んでもよい。
【0139】
上に要約したようなDSP回路ブロックは、乗算回路のうちの1つへの入力データ信号経路において、選択的に使用可能なシストリックレジスタ回路(例えば、504p、504q)をさらに含んでもよい。
【0140】
上に要約したようなDSP回路ブロックは、第2の圧縮回路によって出力されるデータ用の出力データ信号経路において、選択的に使用可能なシストリックレジスタ回路(例えば、513)をさらに含んでもよい。
【0141】
上に要約したようなDSP回路ブロックは、第2の圧縮回路の出力を示す信号を登録するための回路(例えば、512)と、第1の圧縮回路の出力との第2の圧縮回路による加法的組み合わせのために、第2の圧縮回路の入力に登録するための回路の出力を選択的に印加するための回路(例えば、514)とをさらに含んでもよい。
【0142】
上に要約したようなDSP回路ブロックでは、ルーティングするための回路は、(1)ゼロビット位置および(2)より下位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、第1の乗算回路の出力をシフトするための第2のシフタ回路(例えば、509s/509c)を含んでもよい。
【0143】
上に要約したようなDSP回路ブロックでは、ルーティングするための回路は、第2の他のDSP回路ブロックにおいてルーティングするための回路によって出力される信号を、第1の他のDSP回路ブロックにルーティングするための代替ルーティング回路(例えば、sum_in/car_inリード線)を含んでもよい。
【0144】
上に要約したようなDSP回路ブロックでは、ルーティングするための回路は、第2の圧縮回路の出力を示す信号を、第1の他のDSP回路ブロックにルーティングするための代替ルーティング回路(例えば、出力連鎖リード線)を含んでもよい。
【0145】
すぐ上に要約したようなDSP回路ブロックでは、代替ルーティング回路は、第2の圧縮回路の出力を示す信号に選択的に使用可能である、シストリックレジスタ回路(例えば、513)を含んでもよい。
【0146】
上に要約したようなDSP回路ブロックでは、第2の乗算回路は、(1)0.5Nビット掛けるMビット(「0.5NxM」)乗算(例えば、9x27乗算)および(2)0.5Nビット掛けるNビット(「0.5NxN」)乗算(例えば、9x18乗算)を代替として行うことがでてもよく、Mは、1.5Nに等しい(例えば、Nが18の時に、Mは27である)。
【0147】
すぐ上に要約したようなDSP回路ブロックは、第1の乗算回路が、第1の部分積データワードを生成するように、被乗数データワードのNの最大有効ビットに、乗数データワードのNの最大有効ビットを乗じることができ、および第2の乗算回路が、(1)第2の部分積データワードを生成するように、被乗数データワードのMビットに、乗数データワードの0.5Nの最小有効ビットを、および(2)第3の部分積データワードを生成するように、乗数データワードのNの最大有効ビットに、被乗数データワードの0.5Nの最小有効ビットを乗じることができるように、Mビットの被乗数データワードおよびMビットの乗数データワードのビットを、第1および第2の乗算回路に選択的にルーティングするための回路(例えば、503)をさらに含んでもよい。
【0148】
すぐ上に要約したようなDSP回路ブロックでは、第2の乗算回路は、第2および第3の部分積データワードを加法的に組み合わせるための第3の圧縮回路(例えば、652)を含んでもよく、第3の部分積データワードのビットは、第2の部分積データワードのビットに対して0.5Nビット位置だけ、演算の有効を増加させられる。
【0149】
上に要約したようなDSP回路ブロックでは、ルーティングするための回路は、DSP回路ブロックのインスタンス間で信号を伝えるためにのみ設けられていてもよい。
【0150】
上に要約したようなDSP回路ブロックでは、第2の他のDSPブロックから受信された出力は、DSP回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている、回路(例えば、sum_in/car_inリード線)を介して受信されてもよい。
【0151】
前述のいくつかの他の側面を要約し、また論じてきたことを拡張するいくつかの点において、(1)1つのMビット掛けるMビット(「MxM」)乗算および(例えば、27x27乗算)および(2)2つのNビット掛けるNビット(「NxN」)乗算(例えば、2つの18x18乗算)のうちの選択可能な1つを行うために使用可能である回路(例えば、図17)であって、Mが、1.5Nに等しい回路は、NxN乗算回路(例えば、506)、0.5NxM乗算回路(例えば、650a)、0.5NxN乗算回路(例えば、650b)、0.5NxM乗算回路の出力、および0.5NxN乗算回路の出力を加法的に組み合わせるための第1の回路(例えば、652)、(1)ゼロビット位置および(2)より上位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、NxN乗算回路の出力をシフトするためのシフタ回路(例えば、507c/507s)、ならびにシフタ回路の出力および第1の回路の出力を、加法的に組み合わせるための第2の回路(例えば、508)を含んでもよい。
【0152】
上に要約したような回路では、Nは18に等しくてもよく、Mは27に等しくてもよい。
【0153】
上に要約したような回路は、第1、第2、第3、および第4の複数のデータ信号入力リード線(例えば、図11のd、c、ax、ay、bx、byのうちのいずれか4つ)、および複数の各々から、乗算回路への入力のうちの選択可能な入力へ、信号を制御可能にルーティングするためのルーティング回路(例えば、503)をさらに含んでもよい。複数の各々は、N個のデータ信号入力リード線から成ってもよい。
【0154】
すぐ上に要約したような回路では、ルーティング回路は、その各々は、複数のうちのいずれか1つから、(1)NxN乗算回路への被乗数入力、(2)NxN乗算回路への乗数入力、(3)0.5NxM乗算回路へのNより下位の被乗数入力、および(4)0.5NxN乗算回路への被乗数入力のうちのそれぞれの1つへ、Nビットをルーティングするように制御可能である、第1、第2、第3、および第4のNビットマルチプレクサ(例えば、630r、630s、630u、630w)と、その各々は、複数の少なくともいくつかのうちのいずれから、(1)0.5NxM乗算回路への0.5Nより上位の被乗数入力、(2)0.5NxM乗算回路への乗数入力、および(3)0.5NxN乗算回路への乗数入力のうちのそれぞれの1つへ、0.5Nビットをルーティングするように制御可能である、第1、第2、および第3の0.5Nビットマルチプレクサ(例えば、630t、630v、630x)とを含んでもよい。
【0155】
前述のいくつかのなおも他の側面を要約し、また論じてきたことを拡張するいくつかの点において、デジタル信号処理(「DSP」)回路ブロック(例えば、図11の500、図24の500b)は、第1のNビット掛けるNビット(「NxN」)乗算(例えば、18x18乗算)を行うための第1の手段(例えば、506)と、(1)第2のNxN乗算、ならびに(2)0.5Nビット掛けるMビット(「0.5NxM」)乗算および0.5Nビット掛けるNビット(「0.5NxN」)乗算のうちの選択可能な1つを行うための第2の手段(例えば、図11、図17の505)であって、Mは、1.5Nに等しい(例えば、Nが18の時に、Mは27である)第2の手段と、(1)ゼロビット位置および(2)より上位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、第1の手段の出力をシフトするための第3の手段(例えば、507c/507s)と、第2および第3の手段の出力を加法的に組み合わせるための第4の手段(例えば、508)と、第4の手段の出力を、第1の他のDSP回路ブロック(例えば、図24の500c)へルーティングするための第5の手段(例えば、sum_out/car_outリード線)と、第4の手段の出力および第2の他のDSP回路ブロック(例えば、図24の500aから受信された出力を、加法的に組み合わせるための第6の手段(例えば、510)とを含んでもよい。
【0156】
そのようなDSP回路ブロックでは、第2の手段は、0.5NxM乗算を行うための第7の手段(例えば、650a)と、0.5NxN乗算を行うための第8の手段(例えば、650b)と、第8の手段の出力のビットは、第7の手段の出力のビットに対して0.5Nビット位置だけ、演算の有効を増加させられる、第7および第8の手段の出力を加法的に組み合わせるための第9の手段(例えば、652)とを含んでもよい。
【0157】
ここで要約しているようなDSP回路ブロックは、Mビットの被乗数データワードのNの最大有効ビットを、第1の手段への被乗数入力へ選択的にルーティングするための第10の手段(例えば、630s)と、Mビットの乗数データワードのNの最大有効ビットを、第1の手段への乗数入力へ選択的にルーティングするための第11の手段(例えば、630r)と、Mビットの被乗数を、第7の手段への被乗数入力へ選択的にルーティングするための第12の手段(例えば、630vおよび630w)と、乗数データワードの0.5Nの最小有効ビットを、第7の手段への乗数入力へ選択的にルーティングするための第13の手段(例えば、630x)と、乗数データワードのNの最大有効ビットを、第8の手段への被乗数入力へ選択的にルーティングするための第14の手段(例えば、630u)と、被乗数データワードの0.5Nの最小有効ビットを、第8の手段への乗数入力へ選択的にルーティングするための第15の手段(例えば、630t)とをさらに含んでもよい。
【0158】
ここで要約しているようなDSP回路ブロックは、第1および第2の手段への入力として使用するために、複合的な複数のデータ入力信号を受信するための第16の手段(例えば、ax、ay、bx、およびbyリード線)と、データ入力信号のうちの少なくともいくつかを、選択的に事前加算するための第17の手段(例えば、502)と、第17の手段の出力を、第1および第2の手段のうちの少なくとも1つへの選択された入力へ、選択的に印加するための第18の手段(例えば、503)とをさらに含んでもよい。
【0159】
ここで要約しているようなDSP回路ブロックは、第2の手段への入力に、シストリックレジスタの遅延を選択的に与えるための第19の手段(例えば、504p、504q)をさらに含んでもよい。
【0160】
ここで要約しているようなDSP回路ブロックでは、第5の手段は、(1)ゼロビット位置および(2)より下位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、第4の手段の出力をシフトするための第12の手段(例えば、509s/509c)を含んでもよい。
【0161】
ここで要約しているようなDSP回路ブロックでは、第5の手段は、第1の他のDSP回路ブロックへの第6の手段の出力を示す出力信号を、選択的に代替としてルーティングするための第21の手段(例えば、516)を含んでもよい。
【0162】
ここで要約しているようなDSP回路ブロックでは、第21の手段は、第6の手段の出力を示す出力信号に、シストリックレジスタの遅延を選択的に与えるための第22の手段(例えば、513)を含んでもよい。
【0163】
ここで要約しているようなDSP回路ブロックでは、第5の手段は、第2の他のDSP回路ブロックから第1の他のDSP回路ブロックへ、信号を代替としてルーティングするための第23の手段(例えば、sum_in/car_inリード線)を含んでもよい。
【0164】
ここで要約しているようなDSP回路ブロックでは、第6の手段は、第6の手段の出力を示す出力信号を登録するための第24の手段(例えば、512)と、第24の手段の出力を、第6の手段への入力に印加するための第25の手段(例えば、514)とを含んでもよい。
【0165】
前述は、本発明の原理の説明のみであり、本発明の範囲および精神から逸脱しない限り、当業者によって種々の変形がなされ得ることは理解されるであろう。例えば、18x18乗算器200の使用は実例でしかなく、所望の場合には、代わりに他のサイズの乗算器を使用することができる。また、図1〜4、6、8、および10のような本明細書の図は電子回路を示しており、回路要素(200、202、210、220、260など)の大部分または全ては別個の要素(通常、集積回路上で共に統合される)であり、要素の各々は、他の電気出力信号を生成するよう、電気入力信号に作用することによって、本明細書にそのために記載した機能を行うように設けられている(例えば、少なくとも有意な程度まで配線で接続される)ことも理解されるであろう。これらの電気信号は、時には、データ、ビット、ベクトル、「1」、「0」、値、被乗数、乗算器、積、部分積、和などと称されてもよいが、全ての場合において、実際には、特定の情報を表す実際の電気信号である。同様に、本明細書に示す電気回路要素の中のいくつかは、時には、実施する演算によって称されてもよい(例えば、「乗算器200a」)が、全ての場合において、これらの要素は、それらの演算を行う実際の電気回路(例えば、乗算回路)である。DSP回路、DSP演算などへの参照も同じである。全てのそのような演算は、上記の通り、電気信号に作用する電気回路によって行われる。
【0166】
添付の特許請求の範囲のうちのいくつかでは、第1、第2、第3、第4などのような言葉が使用される場合がある。これは、種々の請求の要素に対して独自の識別子を提供するためのみに行われ、いずれの他の目的のためではない。例えば、これらの言葉は、要素がどのように順序づけられるか、または使用されるかについて何かを暗示することを意図していない。また、より高い番号のついた要素(例えば、「第4の」要素)への参照は、それ自体で、全てのより低い番号の付いた要素(例えば、第1から第3の要素)もまた、特定の請求項に存在することを意図するものではない。

【特許請求の範囲】
【請求項1】
デジタル信号処理(「DSP」)回路ブロックであって、
第1のNビット掛けるNビット(「NxN」)の乗算を行うことができる第1の乗算回路と、
第2のNxN乗算を行うことができる第2の乗算回路と、
(1)ゼロビット位置および(2)より上位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、該第1の乗算回路の出力をシフトする第1のシフタ回路と、
該第1のシフタ回路と該第2の乗算回路の出力とを加法的に組み合わせる第1の圧縮回路と、
該DSP回路ブロックに隣接する第1の他のDSP回路ブロックに、該第1の圧縮回路の出力をルーティングする回路と、
該第1の圧縮回路の出力と、該DSP回路ブロックに隣接する第2の他のDSP回路ブロックから受信された出力とを加法的に組み合わせる第2の圧縮回路と
を備える、DSP回路ブロック。
【請求項2】
前記第2の圧縮回路の出力を加法的に組み合わせる加算回路をさらに備える、請求項1に記載のDSP回路ブロック。
【請求項3】
前記加算回路は、桁上げ伝播加算回路を備える、請求項2に記載のDSP回路ブロック。
【請求項4】
前記加算回路の出力を登録するための第1のレジスタ回路をさらに備える、請求項2に記載のDSP回路ブロック。
【請求項5】
前記乗算回路によって処理するために入力を供給する第1、第2、第3、および第4の複数のデータ信号入力リード線と、
該複数のデータ信号入力リード線のうちの少なくとも2つからの前記入力を加法的に組み合わせる事前加算回路と
をさらに備える、請求項1に記載のDSP回路ブロック。
【請求項6】
前記乗算回路のうちの少なくとも1つによって処理するために、前記複数のデータ信号入力リード線のうちの少なくとも1つからの入力の代替として、前記事前加算回路の出力を選択する回路をさらに備える、請求項5に記載のDSP回路ブロック。
【請求項7】
前記乗算回路のうちの1つへの入力データ信号経路において、選択的に使用可能なシストリックレジスタ回路をさらに備える、請求項1に記載のDSP回路ブロック。
【請求項8】
前記第2の圧縮回路によって出力されるデータ用の出力データ信号経路において、選択的に使用可能なシストリックレジスタ回路をさらに備える、請求項1に記載のDSP回路ブロック。
【請求項9】
前記第2の圧縮回路の出力を示す信号を登録する回路と、
前記第1の圧縮回路の前記出力との該第2の圧縮回路による加法的組み合わせのために、該第2の圧縮回路の入力に登録する該回路の出力を選択的に印加する回路と
をさらに備える、請求項1に記載のDSP回路ブロック。
【請求項10】
前記ルーティングする回路は、
(1)ゼロビット位置および(2)より下位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、前記第1の乗算回路の前記出力をシフトする第2のシフタ回路を備える、請求項1に記載のDSP回路ブロック。
【請求項11】
前記ルーティングする回路は、
前記第2の他のDSP回路ブロックにおいて選択的にルーティングする回路によって出力される信号を、前記第1の他のDSP回路ブロックにルーティングする代替ルーティング回路を備える、請求項1に記載のDSP回路ブロック。
【請求項12】
前記ルーティングする回路は、
前記第2の圧縮回路の出力を示す信号を、前記第1の他のDSP回路ブロックにルーティングする代替ルーティング回路を備える、請求項1に記載のDSP回路ブロック。
【請求項13】
前記代替ルーティング回路は、
前記第2の圧縮回路の出力を示す前記信号に対して選択的に使用可能であるシストリックレジスタ回路を備える、請求項12に記載のDSP回路ブロック。
【請求項14】
前記第2の乗算回路は、(1)0.5Nビット掛けるMビット(「0.5NxM」)の乗算、および(2)0.5Nビット掛けるNビット(「0.5NxN」)の乗算を代替として行うことができ、Mは、1.5Nに等しい、請求項1に記載のDSP回路ブロック。
【請求項15】
Mビットの被乗数データワードおよびMビットの乗数データワードのビットを、前記第1および第2の乗算回路に選択的にルーティングする回路であって、それにより、該第1の乗算回路が、第1の部分積データワードを生成するように、該被乗数データワードの前記Nの最大有効ビットに、該乗数データワードの前記Nの最大有効ビットを乗じることができ、ならびに該第2の乗算回路が、(1)第2の部分積データワードを生成するように、該被乗数データワードの該Mビットに、該乗数データワードの前記0.5Nの最小有効ビットを、および(2)第3の部分積データワードを生成するように、該乗数データワードの該Nの最大有効ビットに、該被乗数データワードの該0.5Nの最小有効ビットを乗じることができる、回路をさらに備える、請求項14に記載のDSP回路ブロック。
【請求項16】
前記第2の乗算回路は、
前記第2と第3の部分積データワードとを加法的に組み合わせる第3の圧縮回路を備え、該第3の部分積データワードのビットは、該第2の部分積データワードのビットに対して0.5Nビット位置だけ演算の有効を増加させられる、請求項15に記載のDSP回路ブロック。
【請求項17】
前記ルーティングする回路は、前記DSP回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている、請求項1に記載のDSP回路ブロック。
【請求項18】
第2の他のDSPブロックから受信された前記出力は、前記DSP回路ブロックのインスタンス間で信号を伝えるためにのみ設けられている回路を介して受信される、請求項1に記載のDSP回路ブロック。
【請求項19】
(1)1つのMビット掛けるMビット(「MxM」)の乗算および(2)2つのNビット掛けるNビット(「NxN」)の乗算のうちの選択可能な1つを行うために使用可能であり、Mが1.5Nに等しい回路であって、該回路は、
NxN乗算回路と、
0.5NxM乗算回路と、
0.5NxN乗算回路と、
該0.5NxM乗算回路の出力と、該0.5NxN乗算回路の出力とを加法的に組み合わせる第1の回路と、
(1)ゼロビット位置および(2)より上位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、該NxN乗算回路の出力をシフトするシフタ回路と、
該シフタ回路の出力と該第1の回路の出力とを加法的に組み合わせる第2の回路と
を備える、回路。
【請求項20】
Nは、18に等しく、Mは、27に等しい、請求項19に記載の回路。
【請求項21】
第1、第2、第3、および第4の複数のデータ信号入力リード線と、
該複数の各々から、前記乗算回路への入力のうちの選択可能な入力へ、信号を制御可能にルーティングするルーティング回路と
をさらに備える、請求項19に記載の回路。
【請求項22】
前記複数の各々は、Nデータ信号入力リード線から成る、請求項21に記載の回路。
【請求項23】
前記ルーティング回路は、
第1、第2、第3、および第4のNビットマルチプレクサであって、その各々は、前記複数のうちのいずれか1つから、(1)前記NxN乗算回路への被乗数入力、(2)該NxN乗算回路への乗数入力、(3)前記0.5NxM乗算回路へのNより下位の被乗数入力、および(4)前記0.5NxN乗算回路への被乗数入力のうちのそれぞれの1つに、Nビットをルーティングするように制御可能である、Nビットマルチプレクサと、
第1、第2、および第3の0.5Nビットマルチプレクサであって、その各々は、該複数のうちの少なくともいくつかのうちのいずれかから、(1)該0.5NxM乗算回路への0.5Nより上位の被乗数入力、(2)該0.5NxM乗算回路への乗数入力、および(3)該0.5NxN乗算回路への乗数入力のうちのそれぞれの1つに、0.5Nビットをルーティングするように制御可能である、0.5Nビットマルチプレクサと
を備える、請求項22に記載の回路。
【請求項24】
デジタル信号処理(「DSP」)回路ブロックであって、
第1のNビット掛けるNビット(「NxN」)の乗算を行う第1の手段と、
(1)第2のNxN乗算、ならびに(2)0.5Nビット掛けるMビット(「0.5NxM」)の乗算および0.5Nビット掛けるNビット(「0.5NxN」)の乗算のうちの選択可能な1つを行う第2の手段であって、Mは、1.5Nに等しい、第2の手段と、
(1)ゼロビット位置、および(2)より上位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、該第1の手段の出力をシフトする第3の手段と、
該第2と第3の手段の出力とを加法的に組み合わせる第4の手段と、
該第4の手段の出力を、第1の他のDSP回路ブロックにルーティングする第5の手段と、
該第4の手段の出力と、第2の他のDSP回路ブロックから受信された出力とを加法的に組み合わせる第6の手段と
を含む、DSP回路ブロック。
【請求項25】
前記第2の手段は、
前記0.5NxM乗算を行う第7の手段と、
前記0.5NxN乗算を行う第8の手段と、
該第7と該第8の手段の出力とを加法的に組み合わせる第9の手段であって、該第8の手段の該出力のビットは、該第7の手段の該出力のビットに対して0.5Nビット位置だけ、演算の有効を増加させられる、第9の手段と
を含む、請求項24に記載のDSP回路ブロック。
【請求項26】
Mビットの被乗数データワードの前記Nの最大有効ビットを、前記第1の手段への被乗数入力に選択的にルーティングする第10の手段と、
Mビットの乗数データワードの前記Nの最大有効ビットを、該第1の手段への乗数入力に選択的にルーティングする第11の手段と、
該Mビットの被乗数を、前記第7の手段への前記被乗数入力に選択的にルーティングするための第12の手段と、
該乗数データワードの前記0.5Nの最小有効ビットを、前記第7の手段への乗数入力へ選択的にルーティングする第13の手段と、
該乗数データワードの該Nの最大有効ビットを、前記第8の手段への被乗数入力に選択的にルーティングする第14の手段と、
該被乗数データワードの該0.5Nの最小有効ビットを、該第8の手段への該乗数入力に選択的にルーティングする第15の手段と
をさらに含む、請求項25に記載のDSP回路ブロック。
【請求項27】
前記第1および第2の手段への入力として使用するために、複合的な複数のデータ入力信号を受信する第16の手段と、
該データ入力信号のうちの少なくともいくつかを、選択的に事前加算する第17の手段と、
該第17の手段の出力を、該第1および第2の手段のうちの少なくとも1つへの選択された入力に選択的に印加する第18の手段と、
をさらに含む、請求項24に記載のDSP回路ブロック。
【請求項28】
前記第2の手段への入力に、シストリックレジスタの遅延を選択的に与える第19の手段をさらに含む、請求項24に記載のDSP回路ブロック。
【請求項29】
前記第5の手段は、
(1)ゼロビット位置、および(2)より下位の演算の有効に向かうNビット位置のうちの選択可能な1つによって、前記第4の手段の前記出力をシフトする第20の手段を含む、請求項24に記載のDSP回路ブロック。
【請求項30】
前記第5の手段は、
前記第1の他のDSP回路ブロックへの前記第6の手段の出力を示す出力信号を、選択的に代替としてルーティングする第21の手段を含む、請求項24に記載のDSP回路ブロック。
【請求項31】
前記第21の手段は、
前記第6の手段の出力を示す前記出力信号に、シストリックレジスタの遅延を選択的に与える第22の手段を含む、請求項30に記載のDSP回路ブロック。
【請求項32】
前記第5の手段は、
前記第2の他のDSP回路ブロックから前記第1の他のDSP回路ブロックへ、信号を代替としてルーティングする第23の手段を含む、請求項24に記載のDSP回路ブロック。
【請求項33】
前記第6の手段は、
該第6の手段の出力を示す出力信号を登録する第24の手段と、
該第24の手段の出力を、該第6の手段への入力に印加する第25の手段と
を含む、請求項24に記載のDSP回路ブロック。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate

【図29】
image rotate

【図30】
image rotate

【図31】
image rotate

【図32】
image rotate

【図33】
image rotate


【公表番号】特表2012−519914(P2012−519914A)
【公表日】平成24年8月30日(2012.8.30)
【国際特許分類】
【出願番号】特願2011−553075(P2011−553075)
【出願日】平成22年3月3日(2010.3.3)
【国際出願番号】PCT/US2010/026056
【国際公開番号】WO2010/102007
【国際公開日】平成22年9月10日(2010.9.10)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation